Сайт одного из клиентов был взломан, срок давности взлома установлен не был, а значит какие-то проблемные скрипты уже могли оказаться в бекапах. В ходе проверки выяснилось, что далеко не все заражённые скрипты находятся автоматикой. При этом выручила возможность создать собственные сигнатуры для ClamAV и проверить аккаунт после этого.
Допустим у нас есть два проблемных файла, которые не определяются антивирусом. Кроме того, мы знаем что похожие файлы разбросаны по всему аккаунту.
1. Берём файлы, которые не определились как малварь, например:
# ls -la /home/user/ | grep malware -rw-rw-r-- 1 user user 96 май 9 21:32 first.malware.php -rw-r--r-- 1 user user 109 май 9 21:37 second.malware.php
2. С помощью утилиты sigtool генерируем hex дампы файлов командами:
cat /home/user/first.malware.php | /usr/local/cpanel/3rdparty/bin/sigtool --hex-dump | head -c 2048 >> /home/user/ownsigs.ndb cat /home/user/second.malware.php | /usr/local/cpanel/3rdparty/bin/sigtool --hex-dump | head -c 2048 >> /home/user/ownsigs.ndb
3. Открываем файл ownsigs.ndb, выглядеть он будет примерно так:
3c3f706870200a247234323d222f602e... # здесь строка продолжается 3c3f706870200a2d3039716977706b70... # здесь строка продолжается
4. В начало каждой строки добавляем следующее:
{HEX}base64.first.malware:0:*:3c3f706870200a247234323d222f602e... # здесь строка продолжается {HEX}base64.second.malware:0:*:3c3f706870200a2d3039716977706b70... # здесь строка продолжается
5. Сохраняем файл, копируем его в директорию с другими сигнатурами антивируса:
# cp /home/user/ownsigs.ndb /usr/local/cpanel/3rdparty/share/clamav/
6. Проверяем аккаунт пользователя, и видим что оба наших файла оказались найдены антивирусом и удалены:
# /usr/local/cpanel/3rdparty/bin/clamscan -i --remove /home/user/first.malware.php: {HEX}base64.first.malware.UNOFFICIAL FOUND /home/user/first.malware.php: Removed. /home/user/second.malware.php: {HEX}base64.second.malware.UNOFFICIAL FOUND /home/user/second.malware.php: Removed. ----------- SCAN SUMMARY ----------- Known viruses: 6290254 Engine version: 0.99.2 Scanned directories: 1 Scanned files: 14 Infected files: 2 Data scanned: 0.11 MB Data read: 0.04 MB (ratio 2.64:1) Time: 8.887 sec (0 m 8 s)
Я работал на сервере с cPanel, здесь пути до нужных файлов и директорий отличаются от того что может быть в другой ОС или при наличии другой панели на сервере, однако алгоритм создания собственных сигнатур при этом абсолютно тот же.
В случае получения сообщения вида:
LibClamAV Error: Problem parsing database at line 2 LibClamAV Error: Can't load /usr/local/cpanel/3rdparty/share/clamav/ownsigs.ndb: Malformed database LibClamAV Error: cli_loaddbdir(): error loading database /usr/local/cpanel/3rdparty/share/clamav/ownsigs.ndb ERROR: Malformed database
Проверьте файл ownsigs.ndb и убедитесь что в нём не было допущено ошибки при вставке в начале строки (пункт 4 выше).