Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #77, МАЙ 2005 г.

EXE в заложниках

Крис Касперски ака мыщъх

Хакер, номер #077, стр. 077-116-4


Запускаем зараженный notepad.exe, и в доказательство своего существования вирус тут же выбрасывает диалоговое окно. После нажатия на "ОК", правда, он передает управление оригинальному коду программы.

Чтобы у пользователя не случился инфаркт, из финальной версии вируса это диалоговое окно лучше всего удалить, заменив его своей собственной начинкой. Тут все зависит от наших намерений и фантазии. Можно перевернуть экран, свистнуть пароли или обложить пользователя трехэтажным матом – дело вкуса.

Зараженный файл, кстати, обладает всеми необходимыми репродуктивными способностями и может заражать другие исполняемые файлы. К примеру, «Пасьянс» мы можем инфицировать вот так: "notepad.exe * sol.exe". Естественно, заражать файлы через командную строку ни один нормальный пользователь не будет, и процедуру поиска очередной жертвы в вирусное тело мы должны добавить самостоятельно. Если, конечно, мы захотим ее искать. Ведь несанкционированное внедрение в чужие файлы это уже УК!

Так что лучше совершенствовать вирус в другом направлении. При повторном заражении файла текущая версия необратимо затирает оригинальный код своим телом, в результате чего файл отказывает в работе. Вот беда! Как ее побороть? Можно добавить проверку на зараженность перед копированием вируса в файл. Берем CreateFile, передаем ей имя файла вместе с потоком (notepad.exe:eatmeout) и смотрим на результат. Если файл открыть не удалось, значит потока "eatmeout" тут нет, а, следовательно файл еще не заражен. В противном случае мы должны отказаться от инфицирования. Или выбрать другой поток. Например, eatmeout_01, eatmeout_02, eatmeout_03…

Другая проблема - вирус не корректирует длину целевого файла, и после внедрения она уменьшается аж до 4 Кб - именно столько занимает текущая версия xcode.exe. Нехорошо! Пользователь тут же заподозрит подвох (explorer.exe, занимающий 4 Кб выглядит довольно забавно), занервничает и начнет запускать всякие нехорошие программы типа антивируса. Но что нам стоит запомнить длину жертвы перед внедрением, скопировать в нее свое тело, открыть файл на запись и сделать SetFilePointer на оригинальный размер, увеличивая размер до исходных значений.

[заключение]

Свершилось! Наш вирус написан. Что дальше? Теперь можно неспешно полировать код, наращивая его функциональность. В конечном счете, вирус существует не для тупого размножения. У каждого саморазмножающегося механизма должна быть своя миссия и своя сверхзадача. Установить backdoor, перехватить пароль или что-то в этом роде (лучше просто вывести MessageBox – прим. Горл).

Предложенная стратегия внедрения, конечно, не является идеальной, но все же это намного лучше, чем прописываться в реестре, контролируемом кучей докторов. Да, наконец, у тебя есть достойная альтернатива записи Windows\CurrentVersion\Run для автозапуска, радуйся!

На сегодня это все. Удачного заражения explorer.exe!

[перечисление потоков]

Назад на стр. 077-116-3  Содержание  Вперед на стр. 077-116-5