Особенности поведения и лечения Smitnyl.A

gjf

Ассоциация VN
Разработчик
Сообщения
646
Симпатии
643
Баллы
398
#1
Думаю, большинству не будет секретом механизм работы существующих файловых инфекторов типа Sality и Virut. Безусловно, суть работы таких инфекторов хорошо описана, а потому разработать новую версию легко, отладка её не вызывает проблем. Куда более интересным будет описание нового механизма - заражения файла из загрузчика в MBR. Во-первых, такой вредонос должен быть более сложным, имеется ограничение по длине кода - 62 сектора (7C00H), а кроме того предъявляются особые требования к отсутствию багов - малейшая ошибка может привести к сбою загрузки системы.

Единственным уникальным на данный момент примером такого вредоноса является Trojan:W32/Smitnyl.A, распространяемый по некоторым файлообменым сетям. Его мы и рассмотрим сегодня.

Инфектор Smitnyl.A при запуске заражает MBR через прямой доступ к диску. Он заменяет оригинальную MBR вредоносным вариантом, содержащим в секторе 32 процедуру файлового инфектора.

Рисунки 1 и 2: Перезапись оригинальной MBR, Часть 1 (верх) и 2 (низ)
proxy.php?image=http%3A%2F%2Fimg687.imageshack.us%2Fimg687%2F4342%2Ffigure1overwritingorigi.png&hash=4b1bdbd8b3686d4634ce6442ddc5aad9


proxy.php?image=http%3A%2F%2Fimg88.imageshack.us%2Fimg88%2F8158%2Ffigure2overwritingorigi.png&hash=b330a15675202ab0bdff8d0f15241fbf


Почему же автор выбрал такой непростой способ инфицирования исполняемого файла? Вероятно потому, что такой способ позволяет обойти систему защиты файлов Windows (WFP), что позволяет эффективно заражать системные файлы без опасности, что они будут впоследствии восстановлены WFP.

Оригинальная MBR сохраняется в секторе 5, в то время как процедура инфектора размером A00H располагается в секторе 39. Цель инфектора - критичный системный файл userinit.exe.

Рисунки 3: Код вредоносной MBR
proxy.php?image=http%3A%2F%2Fimg412.imageshack.us%2Fimg412%2F4050%2Ffigure3hexviewinfectedm.png&hash=440f644325dcd3f11af77a9300eefeac


Рисунки 4: Код оригинальной MBR
proxy.php?image=http%3A%2F%2Fimg207.imageshack.us%2Fimg207%2F2470%2Ffigure4hexvieworiginalm.png&hash=269d840cc71529c3d4387f254ae9c512


Рисунок 5: Код инфектора в MBR
proxy.php?image=http%3A%2F%2Fimg511.imageshack.us%2Fimg511%2F1148%2Ffigure5hexviewmbrinfect.png&hash=500f06979c3803f148b8c77a9b475644


Рисунок 6: Вредоносный код, внедряемый в userinit.exe
proxy.php?image=http%3A%2F%2Fimg441.imageshack.us%2Fimg441%2F1879%2Ffigure6hexviewuserinitp.png&hash=7df3429dc5ba6c10713ee1e7e12a766c


Почему же целью заражения выбран userinit.exe? Вероятно, это сделано по той причине, что userinit.exe - один из первых процессов, стартующих при загрузке системы, что позволяет вредоносу запускаться на ранней стадии, до загрузки ряда файерволов и антивирусов, эффективно выполняя свой функционал. Специалисты могут возразить, что ещё более ранними являются smss.exe, csrss.exe. Что же, возможно столь ранняя загрузка неудобна по причине отсутствия каких-то критичных процессов для вредоноса.

Smitnyl заражает userinit.exe на этапе ранней загрузки системы, когда выполнение кода MBR доходит до 0x7C00, определяется активный раздел из таблицы разделов и смещение стартовой области загрузочного сектора.

Затем производится проверка типа файловой системы.

Рисунок 7: Определение типа загрузочного сектора
proxy.php?image=http%3A%2F%2Fimg714.imageshack.us%2Fimg714%2F7261%2Ffigure7determinebootsec.png&hash=b339bc0f29b31346246dc40c704b7c64


В случае, если обнаружена система NTFS, код парсит Master File Table (MFT) и считывает аттрибуты файловой записи $ROOT (.) для нахождения аттрибута $INDEX_ALLOCATION. Эта процедура позволяет найти размещение userint.exe на диске(при условии корректного парсинга MFT). Smitnyl проверяет все пути, начиная от $ROOT до папки System32, где располагается userinit.exe.

Рисунок 8: Обнаружение Userinit.exe, часть 1
proxy.php?image=http%3A%2F%2Fimg412.imageshack.us%2Fimg412%2F6176%2Ffigure8locateuserinit.png&hash=12eebd2d7341cb26b489fb366de15aef


Рисунок 9: Обнаружение Userinit.exe, часть 1
proxy.php?image=http%3A%2F%2Fimg683.imageshack.us%2Fimg683%2F2350%2Ffigure9locateuserinit.png&hash=713e15a528f252859b309f5bced9ab0d


Вредонос использует процедуру get_userinit_data_content_addr для нахождения файла userinit.exe, которая затем использует Extended Write Function (номер функции ah=43H) для записи вредоносного содержимого, исходно размещённого в секторе 39. В ходе заражения userinit.exe вредонос также проверят наличие маркера в файле по смещению 0x28. зачем это нужно - будет разъяснено ниже.

Рисунок 10: Обнаружение Userinit.exe, часть 2
proxy.php?image=http%3A%2F%2Fimg651.imageshack.us%2Fimg651%2F6024%2Finfectuserinitexe.png&hash=f2e19ef6109d32ed14d0299f7729f3bb


Рисунок 11: Обнаружение Userinit.exe, часть 2
proxy.php?image=http%3A%2F%2Fimg340.imageshack.us%2Fimg340%2F3521%2Finfectuserinitexepart2.png&hash=863f593d4cb1eaace25717252aad412c


В результате загрузки инфицированной машины userinit.exe заражается и затем запускается (уже непосредственно ОС). Одним из способов обнаружения заражения userinit.exe является элементарный просмотр свойств файла.

Рисунки 12 и 13: Свойства userinit.exe, оригинального (выше) и инфицированного (ниже)
proxy.php?image=http%3A%2F%2Fimg51.imageshack.us%2Fimg51%2F3746%2Fsmitnyloriginaluserinit.png&hash=47160dff536d438661375b0357454f61


proxy.php?image=http%3A%2F%2Fimg101.imageshack.us%2Fimg101%2F7524%2Fsmitnylinfecteduserinit.png&hash=0365037c3b7f2d162c95806e0fe103ea


К счастью, разницы весьма очевидна.

Давайте теперь посмотрим код заражённого файла.

Рисунок 14: Заражённый Userinit.exe
proxy.php?image=http%3A%2F%2Fimg602.imageshack.us%2Fimg602%2F5026%2Ffigure10infecteduserini.png&hash=4870a9455d2187bedcd745d2a98b3698


Тут становится понятным, почему инфектор при заражении искал маркер 0x55AA перед осуществлением инфицирования - это предотвращение повторного заражения. Так что же происходит при запуске заражённого файла? Основная цель - запуск криптованного вредоносного кода, расположенного в секторе 45.

Рисунок 15: Криптованный исполняемый код в секторе 45
proxy.php?image=http%3A%2F%2Fimg692.imageshack.us%2Fimg692%2F7451%2Ffigure11encodedexecutab.png&hash=9ed919bc14e017a3a815ceeb6c8ddc0f


Код имеет ряд предварительных процедур, предшествующих декодированию и старту основного функционала.

• Проверка наличия системы защиты интернет 360safe. Если таковая находится - то её отключают.

Рисунок 16: Проверка наличия системы 360safe
proxy.php?image=http%3A%2F%2Fimg834.imageshack.us%2Fimg834%2F3851%2Ffigure12iebrowserprotec.png&hash=58f44ce3df7994f36baa775bde339951


• Создание подменного explorer.exe во временной папке - это декодированный исполняемый код.

Рисунок 17: Подменный Explorer.exe
proxy.php?image=http%3A%2F%2Fimg824.imageshack.us%2Fimg824%2F3648%2Ffigure131fakeexplorer.png&hash=1f0289c9462cda06555b59c9cb856fca


Рисунок 18: Подменный Explorer.exe
proxy.php?image=http%3A%2F%2Fimg832.imageshack.us%2Fimg832%2F1599%2Ffigure132fakeexplorer.png&hash=024003f8439cc9cfcf3668913ad4f46d


• После декодирования, производится запуск %temp%\explorer.exe посредством ShellExecute — userinit.exe выполняет абсолютно аналогичную операцию с оригинальным explorer.exe! Одновременно, производится запуск оригинального explorer.exe посредством Winexec.

Рисунок 19: Выполнение подменного explorer.exe и оригинального explorer.exe
proxy.php?image=http%3A%2F%2Fimg408.imageshack.us%2Fimg408%2F6965%2Ffigure14executefakelaun.png&hash=57b1a23e6a8aa212c1fa825c4ab6cca3


После этого выполняется основной функционал вредоноса - это классический даунлодер, загружающий и выполняющий файлы.

Рисунок 20: Функционал даунлоадера
proxy.php?image=http%3A%2F%2Fimg641.imageshack.us%2Fimg641%2F4497%2Ffigure15finaldownloader.png&hash=80100c81ed07179fbc60834fff955827


В итого, благодаря отключению защиты 360safe становится возможным эффективная загрузка и выполнение файлов с удалённого сервера http://[...].perfectexe.com/ и др.

Теперь - о лечении этого вредоноса. Итак, наша система подготовлена и заражена дроппером Smitnyl.A (размер 37 076 байт, MD5 A6E5BAAEAB6C506CB5A08755B025F6A5). После заражения дроппер (как любой уважающий себя дроппер) самоликвидировался, больше никаких модификаций в системе не произошло, за исключением изменения MBR (оригинальная, заражённая). Подчеркну: на данном этапе userinit.exe заражён не был.

А произошло это заражение после перезагрузки системы, когда сразу начал обнаруживаться вредоносный функционал:
proxy.php?image=http%3A%2F%2Fimg535.imageshack.us%2Fimg535%2F5069%2F96817806.th.jpg&hash=05d671b2c701bd2a383343e8310741a8


Как и обещалось - вредонос работает как даунлоадер и в нашем случае он скачивает свою бэкдор-компоненту.

И вот дальше обнаруживается интересное. На самом деле, фэйковый explorer.exe выполняется единожды при загрузке, скачивает в корень системного диска и запускает контент, после чего выгружается и самоуничтожается:

Код:
] C:\Documents and Settings\1\] ** New Command Shell [PID:1996]
] del C:\DOCUME~1\1\LOCALS~1\Temp\explorer.exe 
] ** New Command Shell [PID:3144]
] del C:\2008.exe
В итого в системе есть бэкдор, однако ничто не указывает на его источник - Smitnyl.A! Cканирование AVZ системы обнаруживает наличие модуля бэкдора, запущенного как служба, позволяет его удалить, однако новая перезагрузка всё вернёт на свои места:

proxy.php?image=http%3A%2F%2Fhabrastorage.org%2Fstorage%2Fa826d97e%2Ff556271f%2Fc00c6359%2F82cfcb3a.jpg&hash=cf5ea777a2080706ab6d7c3b2df9d90d


proxy.php?image=http%3A%2F%2Fhabrastorage.org%2Fstorage%2F4d9baafb%2Ffde4c377%2Ff98885a2%2Fe58dc078.jpg&hash=73f2c6b0c6f0b3303e6634eb263cccd1


Обнаружить признак Smirnyl.A можно только если внимательно рассмотреть следующую часть лога:

proxy.php?image=http%3A%2F%2Fhabrastorage.org%2Fstorage%2F357b32cf%2F58c72798%2F69c56da4%2F56188a6b.jpg&hash=2f1e7aeb0f169a52492feb1837df98eb


Тут становится понятно: система не распознала заражённый userinit.exe по базе CRC, а потому вывела её с подозрением (система также не распознала и cmd.exe - но это верно: я сам подменил этот файл для журналирования операций в шелле).

Итак, каково же было лечение?

1. Поскольку userinit.exe при активной системе не задействован, его просто перезаписываем оригинальным файлом из дистрибутива или незаражённой системы.

2. Если на данном этапе провести перезагрузку - userinit.exe будет опять заражён. Поэтому производим восстановление MBRFix, однако это не значит, что не сработают другие варианты.

3. Производим стандартное лечение с помощью скрипта AVZ:

Код:
begin
 ExecuteFile('net.exe', 'stop tcpip /y', 0, 90000, false);
SearchRootkit(true, true);
SetAVZGuardStatus(True);
 QuarantineFile('c:\windows\system32\tjmitrd.dll','');
 DeleteFile('c:\windows\system32\tjmitrd.dll');
 BC_ImportAll;
ExecuteSysClean;
 BC_Activate;
 RebootWindows(true);
end.
(Скрипт может меняться в зависимости от того, что закачает и запустит даунлоадер).

После перезагрузки система была полностью очищена.
 
Последнее редактирование:

thyrex

Ассоциация VN/VIP
VIP
Сообщения
2,371
Симпатии
2,443
Баллы
593
#3
Последнее редактирование:
Сверху Снизу