ClamAV

Материал из poiuty wiki
Перейти к: навигация, поиск

Консольный антивирус. Отлично помогает в поиске зловредного ПО на сервере. Установить можно с репозитория.

apt-get install clamav

База обновляется по крону. Но так же можно обновить и руками.

freshclam

Запустить проверку можно так.

clamscan --max-dir-recursion=200 -i -r /var/www > virus.log

В итоге получаем лог.

/var/www/user/data/www/site.ru/modules/mod_wp/list4ptS.php: PHP.Trojan.Spambot FOUND
/var/www/user/data/www/site.ru/modules/mod_joomcashe/joomcashe.php: Trojan.PHP-43 FOUND
/var/www/user/data/www/site.ru/modules/mod_youtube/mod_youtube.php: PHP.Shell-38 FOUND

Управление информационными сообщениями.

--verbose
--no-summary (не выдавать итоговый отчёт)
--infected (сообщать только об обнаруженных вирусах)
--quiet (об обнаруженных вирусах также не сообщается!)
--bell (звенеть при обнаружении вируса; звенит даже при --quiet)
--debug
--log=имя-файла (файл дополняется) - очень полезная штука, иначе вы не узнаете, что у вас заражено в принципе, если файлов много
--stdout

Действия при обнаружении вирусов.

--move=имя-каталога (перемещать инфицированные файлы в указанный каталог)
--copy=имя-каталога (копировать инфицированные файлы в указанный каталог)
--remove (удалять файлы с вирусами; не советую)

Повышение эффективности

С определением Malware (зловредное ПО) посредством ClamAV есть определенные проблемы - он его довольно посредственно ищет.
Поэтому я рекомендую использовать базы системы Maldet, которые ловят очень большое число заразы.
Базы находятся по адресу (в них порядка 11+ тысяч известной малвари).

http://www.rfxn.com/downloads/rfxn.ndb
http://www.rfxn.com/downloads/rfxn.hdb

Скачиваем базы, выставляем на них права, перезагружаем ClamAV.

wget http://www.rfxn.com/downloads/rfxn.ndb -O /var/lib/clamav/rfxn.ndb
wget http://www.rfxn.com/downloads/rfxn.hdb -O /var/lib/clamav/rfxn.hdb
chown clamav:clamav /var/lib/clamav/rfxn.ndb
chown clamav:clamav /var/lib/clamav/rfxn.hdb
/etc/init.d/clamav-daemon restart

Так же можно заметно увеличить скорость, запустив сканирование в многопоточном режиме через демона ClamD.

clamdscan --multiscan --fdpass /var/www/

Создание своих сигнатур

ClamAV не задетектил php spambot script. Нашел его в php mail.log

<?php
if(isset($_POST["mailto"]))
        $MailTo = base64_decode($_POST["mailto"]);
else
    {
    echo "indata_error";
    exit;
    }
if(isset($_POST["msgheader"]))
        $MessageHeader = base64_decode($_POST["msgheader"]);
else
    {
    echo "indata_error";
    exit;
    }
if(isset($_POST["msgbody"]))
        $MessageBody = base64_decode($_POST["msgbody"]);
else
    {
    echo "indata_error";
    exit;
    }
if(isset($_POST["msgsubject"]))
        $MessageSubject = base64_decode($_POST["msgsubject"]);
else
    {
    echo "indata_error";
    exit;
    }
if(mail($MailTo,$MessageSubject,$MessageBody,$MessageHeader))
    echo "sent_ok";
else
    echo "sent_error";
?>

Получим сигнатуру.

cat mailout.php | sigtool --hex-dump | head -c 2048 > new.ndb

Формат файла.

Name:Type:Offset:malware hex output

Параметры Type.

0 = any file
1 = Portable Executable (ie Windows exe)
2 = OLE2 component (e.g. a VBA script)
3 = HTML (normalised)
4 = Mail file
5 = Graphics
6 = ELF
7 = ASCII text file (normalised)

Отредактируем файл new.ndb => добавим в начало строчки

LEPUS.PHP.SPAMBOT-1:0:*:

Проверим.

clamscan -d new.ndb mailout.php
mailout.php: LEPUS.PHP.SPAMBOT-1.UNOFFICIAL FOUND

----------- SCAN SUMMARY -----------
Known viruses: 1
Engine version: 0.97.8
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.004 sec (0 m 0 s)

Теперь добавим в общую базу. Все новые сигнатуры добавляем в один общий файл /var/lib/clamav/lepus.ndb с новой строчки.

LEPUS.PHP.SPAMBOT-1:0:*:3c...
LEPUS.PHP.SPAMBOT-2:0:*:6a...

Снова проверим.

clamscan  mailout.php
mailout.php: LEPUS.PHP.SPAMBOT-1.UNOFFICIAL FOUND

----------- SCAN SUMMARY -----------
Known viruses: 3306559
Engine version: 0.97.8
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 4.122 sec (0 m 4 s)

Другое

Так же можно поискать подозрительные файлы так.

find . -type f -exec grep -l "eval(" {} \;

grep-eval.png

php clamav mail

Можно проверять php скрипты, которые пытаются выполнить php mail().
Для этого необходимо поменять sendmail_path

sendmail_path = "/usr/sbin/sendmail.php -t -i -f webmaster@poiuty.com"

Создать файл sendmail.php с содержимым (исходник на github).
Теперь, если скрипт есть в базе clamav, то он не сможет использовать функцию php mail().