Ещё раз Об АВ-чекереПривет! Темы об ав-чекерах поднимались неоднократно: концепты, сырые и готовые реализации, размышления, а также всякая хуйня. Поэтому тут я сваливаю в одну кучу всё то, что касается рабочей схемы чекера. Только кое-что новое добавив, а кое-что лишнее выкинув. Итак, ав-чекер - это онлайн-сервис, проверяющий файлы/данные на вирусы/трояны/черви/etc (заранее подготовленными) различными антивирусными (АВ) сканерами. Для начала нам потребуется мощный выделенный сервак, многопроцессорный (чем больше ядер, частоты, кеша - тем лучше), с кучей оперативной памяти и поддерживающий аппаратную виртуализацию (для гипервизора). А также широкие сетевые каналы и безлимитный трафик в придачу (конкретные ТТХ намеренно не указываются, так что тут рулят только желание + возможность). Можно обойтись "обычным" компьютером с установленной виртуальной машиной (ВМ), но тогда скорость работы ав-чекера будет соответствующей. Ибо первое узкое место в производительности - это мощность оборудования и его настройка. Что касается языков программирования, то писать можно на чём угодно и как угодно. Например, Си (для движка системы) и php + html (для веб-морды). Далее, онлайн-сканер можно наделить следующими (популярными) фичами aka проверками:
Разберёмся с каждым из этих пунктов по порядку. Проверка файлов - статикаЗавуалировано говоря, чекер -> это веб-админка + движок системы, которые "общаются" между собой посредством базы данных (БД) и размещены на некоем охуенном железе. Технология реализации:
Основная писанина - это подпункты [2], [3] и [5] - так как для каждого АВ будет свой алгоритм. Поэтому эти поинты можно вынести в отдельный модуль (handler_n), который на входе будет иметь унифицированный интерфейс (task manager), а реализация, соответственно, будет заточена под каждый тип АВ. Схематично работу чекера можно представить так:
******************************<-***********************************
* *
* SERVER *
* *
* *
* *
* ************ *
* * * *
* 5. profit * * * 4. result *
* *<---------------------------* web-site *<----------------------------------+ *
* * * * * | *
* * 1. file * * * | *
* user *------------------------>* * | *
* * * ************ | *
************* * | | *
* | 2. file\task | *
* +---------------->******** ********** *
* * * 3. file\task * * *
* * DB *--------------->* engine * *
* * * * * *
* ******** ********** *
* *
* *
* *
******************************->***********************************
******************************<-***********************************
* *
* ENGINE *
* *
* *
* *
* ************* ******** *
* * * <-report * * *
* +------>* handler_1 *<------------>* AV_1 * *
* | * * file-> * * *
* *********** | ************* ******** *
* * * | *
3.2 result * * * | *
<--------------------------------* * | ************* ******** *
* * task * <-report * * <-report * * *
3.1 file/task * * manager *<----------->* handler_2 *<------------>* AV_2 * *
-------------------------------->* * file-> * * file-> * * *
* * * | ************* ******** *
* * * | *
* * * | *
* *********** | ************* ******** *
* | * * <-report * * *
* +------>* handler_n *<------------>* AV_n * *
* * * file-> * * *
* ************* ******** *
* *
* *
* *
******************************->***********************************
И вообще будет заебись, если замутить ещё:
Проверка связокВкратце, связка - она же связка/набор эксплоитов, выдающихся ротатором (+ имеется админка со статистикой и много чего другого). Ротатор - скрипт, который определяет различные характеристики машины (ОС, браузер и его версию, итд) и выдаёт подходящий сплоит. Связка юзается для тестирования софта на пробиваемость, заражения уязвимых машин с последующим распространением своего софта etc. Для движка ав-чекера проверка связок == проверке файлов, различия будут видны только админке. Принцип работы следующий:
Ещё можно позаботиться о том, с какими протоколами будет работать проверка связок, и что делать, если в связке включена блокировка по IP после каждого захода (хотя, это затруднение уже не чекера). Вот такие дела. Проверка доменовDNSBL (DNS BlockList/BlackList - ранее RBL - RealTime Blackhole List) - по сути, это чёрный список IP/доменов, рассылающих спам, и хранящийся с использованием системы архитектуры DNS. Ещё существует множество различных DNSBL-серверов, предоставляющих свои услуги (списки) для борьбы с негодной информацией. А отсюда следует, что всё уже построено - нам остаётся только прикрутить нужные сервисы в свой чекер и автоматизировать проверки (ага, всего то, блядь, прикрутить =)). На самом деле задача довольно лёгкая, и, на мой взгляд, её проще реализовать на скриптах в пределах одной ВМ. Общий каркас системы будет почти такой же, как и на чекере файлов (с диспетчером задач, обработчиками etc), но со своими нюансами, а именно (следуя нумерации ранее перечисленных подпунктов):
Проверка файлов - динамикаК данной категории относятся:
Как и в остальных случаях, есть несколько вариантов создания такой проверки (вышеперечисленные пункты, само собой, можно объединять в один большой или миксовать, как по кайфу =)):
0xВот такая получается картинка. В принципе, всё относительно просто. Разве что много рутины, очевидной и не очень, которая появится в процессе разработки. Но это всё фигня. Главное - найти мощный сервак :p. Так что, кому надо - делайте, и всё получится, ёба. Смотри также:
|