18.11.2014 Views

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MALWARE<br />

На этом первую часть, посвященную появлению Trojan.Win32.<strong>TDSS</strong><br />

на компьютере, можно считать завершенной. Мы рассмотрели все<br />

скрипты, расположенные на зараженной странице, их поведение.<br />

Также был затронут анализ типичного даунлодера Packed.Win32.<br />

Krap.x, защищенного зловредным упаковщиком. Оказалось, что путь от<br />

посещения «плохого» сайта до появления <strong>TDSS</strong> на компьютере очень<br />

длинный.<br />

ÊÎÂÛÐßÅÌ ÎÁÐÀÇÅÖ<br />

Первым делом исследуемый образец был подвергнут визуальному<br />

осмотру в Hiew. В файле была обнаружена одна секция с исполняемым<br />

кодом размером ~0x1000, а большую его часть (~0x60000 байт)<br />

составляли зашифрованные данные. Насторожила таблица импортов,<br />

в которой, помимо довольно обычных функций для расшифровщика<br />

(VirtualProtect, GetTempPathA, GetModuleHandle из библиотеки<br />

Kernel32.dll), содержались записи, предназначенные для работы с<br />

диалоговыми окнами – GetDlgCtrlId, GetParent из user32.dll. Наличие<br />

только двух таких функций вызывает недоумение и указывает на<br />

возможность их использования для реализации антиэмуляции.<br />

Исполняемая часть выглядит весьма своеобразно – присутствует<br />

большое количество повторяющихся символов: «H», «.», «f». Они<br />

соответствуют инструкциям LEA, префиксу семгента CS, префиксу<br />

размера операнда. В режиме дизассемблера в глаза бросилась<br />

явная обфускация – множество инструкций, которые не несут полезной<br />

нагрузки, например, LEA AX, CS:[EAX + 0]; LEA AX, [EAX + 0];<br />

LEA AX, [EAX] и др.<br />

Ôðàãìåíòû ïðåîáðàçîâàííîãî äèçàññåìáëèðîâàííîãî êîäà Trojan.Win32.Tdss<br />

В процессе отладки обнаружилась антиэмуляция. Она заключается в<br />

последовательном вызове функций GetDlgCtrlID и GetParent и косвенному<br />

обращению к FS: с использованием кодов возврата. Это смещение<br />

соответствует полю LastErrorValue недокументированной структуры<br />

Windows – TEB. Затем значение поля сравнивается с эталонным. Далее<br />

происходит обращение к полю SpareBool структуры PEB. Его значение<br />

впоследствии используется для корректной работы зловреда.<br />

После отработки разнообразных защитных механизмов приходит время<br />

исполнения полезной составляющей. В данном случае это расшифровка<br />

основного тела вредоносного файла с помощью алгоритма RC4.<br />

Причем вначале подготавливается алфавит от 0x0 до 0x100 с полученным<br />

значением SpareBool, а затем и основной ключ. С помощью программы<br />

PETools был получен дамп, содержащий расшифрованное тело.<br />

Оказалось, что оно было скомпилировано с помощью MSVC и содержит<br />

еще один файл, который был незамедлительно извлечен. Он оказался<br />

динамической библиотекой, которая работает в связке с исходным вредоносом,<br />

также упакована <strong>TDSS</strong> и содержит в себе еще файл. Такое повторялось<br />

несколько раз, и в результате, помимо исходного экземпляра,<br />

появилось еще три файла. С каждого был снят дамп памяти процесса.<br />

Ôðàãìåíò ðàñøèôðîâàííîãî ó÷àñòêà ôàéëà êîìïîíåíòà ðàññìàòðèâàåìîãî<br />

çëîâðåäà<br />

Ôðàãìåíòû äèçàññåìáëèðîâàííîãî êîäà Trojan.Win32.Tdss, ñîäåðæàùèå<br />

îáôóñêàöèþ<br />

Для того, чтобы упростить анализ, коды вышеупомянутых инструкций<br />

были заменены на последовательности из NOP’ов. После выполнения<br />

этого действия оказалось, что только ~25% кода что–то реально<br />

выполняют. Кстати, полностью обфускацию мы не убрали – осталась<br />

та, которую исключить уже сложнее, например, четыре вызова<br />

inc reg подряд вместо add reg, 4. Однако даже преобразованный<br />

фрагмент анализировать под отладчиком получается очень непросто<br />

ввиду того, что выполнение происходит нелинейно – управление<br />

непрерывно передается с помощью JMP’ов в разные участки исполняемой<br />

области.<br />

«Участок не такой простой<br />

– в нем используется<br />

антиэмуляция на основе<br />

FakeApi и работы с исключениями»<br />

084<br />

По приведенному выше скриншоту можно однозначно идентифицировать<br />

класс вредоносного файла – фальшивый антивирус. Его основное<br />

назначение – напугать пользователя так, чтобы он согласился<br />

заплатить деньги за «излечение» системы от вирусов. Этот экземпляр<br />

также прописывается в автозагрузке, выполняет множество других<br />

деструктивных действий и пытается отключить целый ряд легальных<br />

антивирусов (строки взяты в дампе одного из компонентов):<br />

Malwarebytes' Anti-Malware_is1; NOD32; Agnitum Outpost<br />

Security Suite Pro_is1; Avira AntiVir Desktop; avast!; AntiVir<br />

PersonalEdition Classic; Sophos; Sophos Client Firewall; Sophos<br />

Antivirus; Kaspersky 2010; Kaspersky 2008; F-Secure Web Filter.<br />

ÇÀÊËÞ×ÅÍÈÅ<br />

Результат банален: все свелось к получению прибыли путем обмана<br />

пользователя. Фальшивый антивирус оказался очень хорошо защищен<br />

как от антивирусов (путем использования полиморфизма, обфускации<br />

и антиэмуляции), так и от людей, пытающихся его разобрать. Очень<br />

интересна цепочка, по которой происходит распространение <strong>TDSS</strong> – в<br />

ней принимает участие несколько скриптов, а также защищенный<br />

даунлоадер. Вполне возможно, что вирусописатели разработали<br />

фальшивый антивирус, затем купили упаковщик <strong>TDSS</strong>, а потом стали<br />

распространять свое детище через партнерку..z<br />

XÀÊÅÐ 09 /140/ 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!