LinuxForum.Fans
Тема

grep & sed & viruses

Автор: merlin_metso 8 сообщений 3249 просмотров
#259960

Доброго времени суток!

Столкнулся с бедой. Вирус поразил 180 .js файлов на хостинге. Анализ этих файлов показал, что строки вируса начинаются на
try{q=document.createElement

Вот стоит задача уничтожить эту дрянь.

Гугл, как мог, помогал мне, но лучшее что я нашел это удаление ЦЕЛИКОМ ФАЙЛОВ содержащих фрагмент вируса ( try{q=document.createElement ), а хотелось бы найти файлы содержащие описанный выше кусок и удалить в них ОДНУ СТОКУ (или более) но, только содержащие этот фрагмент.

Вот, то, что исправно удаляет целые файлы, но сами файлы нужны, поэтому скрипт бесполезен

text
 grep -rls "try{q=document.createElement" /path/to/directory/ | xargs rm -rf 

Вот, что, что попытался сделать я, читая МАН на заморском языке

text
 grep -rls "try{q=document.createElement" /path/to/directory/ | xargs sed -e 's/try{q=document.createElement//g' 

но, это не работает.

Может кто подскажет как оно делается. или даст ссыль на хороший МАН на русском языке?

#259970
"merlin.metso" написал:
но, это не работает.
"merlin.metso" написал:
grep -rls "try{q=document.createElement" /path/to/directory/ | xargs sed -e 's/try{q=document.createElement//g'

вот так попробуй :

text

sed -e 's/try{q=document\.createElement//g' "имя возвращённое grep"

но тут нужно построить целый скрипт который будет брать имя файла возвращенного grep скармливать его sed'у, то что возвращает sed сохранять во временный файл, который нужно будет переименовывать в оригинальное имя.

#259999

а чем вирус заканчивается?
если только эту стручку удалить, то достаточно только sed/bash
find /path/to/folder |while read FILE; do sed -i 's/try{q=document\.createElement//g' $FILE; done

"gramozeka" написал:
sed -e 's/try{q=document\.createElement//g' "имя возвращённое grep"

ключик -i забыл

#260066
"Fat-Zer" написал:
ключик -i забыл

да, бывает ... :)

#260097

Спасибо Gromozeka & Fat-Zer за участие.

"Fat-Zer" написал:
если только эту стручку удалить, то достаточно только sed/bash
find /path/to/folder |while read FILE; do sed -i 's/try{q=document\.createElement//g' $FILE; done

к сожалению скрипт указанный выше удаляет только try{q=document\.createElement , а хотелось бы удалить строчку содержащую это выражение просто каждая строка вируса стабильно содержит именно этот отрывок кода, а всё остальное это набор различных спец символов. Вот и хочется чтобы вырезались все строчки, содержащие бяку try{q=document\.createElement :)

text
grep -rls "try{q=document.createElement" /path/to/file/ | xargs sed -i -e 's/try{q=document\.createElement//g'

Виноват, а что такое "имя возвращенное grep" ?

Самое грустное это то, что ClamAV лечить не умеет, а DR-Web файлы содержащие это вирус лечить, почему то, отказывается и предлагает просто удалить, что не приемлемо, ибо сайт то работает, значит файлы рабочие и их бы просто вылечить, ну или покалечить код вируса так, чтобы он не шалил :)

#260098
"merlin.metso" написал:
к сожалению скрипт указанный выше удаляет только try{q=document\.createElement , а хотелось бы удалить строчку содержащую это выражение просто каждая строка вируса стабильно содержит именно этот отрывок кода, а всё остальное это набор различных спец символов. Вот и хочется чтобы вырезались все строчки, содержащие бяку try{q=document\.createElement

find /path/to/folder |while read FILE; do sed -i '/try{q=document\.createElement/d' $FILE; done

#260099
"merlin.metso" написал:
а хотелось бы удалить строчку содержащую это выражение

удали один слеш и делов :

text

find /path/to/folder |while read FILE; do sed -i 's/try{q=document\.createElement/g' $FILE; done

вот тебе мануал тыц

#260123

Спасибо, gtamozeka & Fat-Zer, за посильный вклад :) В итоге сработала следующая команда

text
find /path/to/files/ | while read FILE; do sed -i '/try{q=document\.createElement/d' $FILE; done

но, по всей видимости, sed не может работать с картинками и.т.д. по этому во время исполнения скрипт сыпал ошибками (но дело своё делал!). Поэтому в поиск был добавлен ключик -name

В итоге команда имеет следующий вид

text
find /путь/до/файлов/ -name *.js | while read FILE; do sed -i '/try{q=document\.createElement/d' $FILE; done

Теперь сайт здоров!!!!!!!!!!!

Тему можно закрыть

Войдите или зарегистрируйтесь, чтобы ответить.