Гэтым артыкулам мы завяршаем цыкл публікацый, прысвечаных аналізу шкоднаснага праграмнага забеспячэння. У
Сёння Ілля Памаранцаў, спецыяліст па аналізе шкоднаснага кода CERT Group-IB, раскажа аб першым этапе аналізу ВПО – паўаўтаматычнай распакаванні сэмплаў AgentTesla на прыкладзе трох міні-кейсаў з практыкі спецыялістаў CERT Group-IB.
Звычайна першая стадыя пры аналізе ВПО - зняцце абароны ў выглядзе пакера, крыптара, пратэктара або загрузніка. У большасці выпадкаў гэтая праблема вырашаецца запускам ВПО і выкананнем дампа, аднак існуюць сітуацыі, калі гэты метад не падыходзіць. Напрыклад, калі ВПО з'яўляецца шыфравальшчыкам, калі яно абараняе свае рэгіёны памяці ад дампа, калі ў кодзе прысутнічаюць механізмы выяўлення віртуальнай машыны або калі адразу пасля старту ВПО выконвае перазагрузку. У такіх выпадках ужываецца так званая «паўаўтаматычная» распакаванне, гэта значыць даследнік цалкам кантралюе працэс і можа ў любы момант умяшацца. Разгледзім гэтую працэдуру на прыкладзе трох сэмплаў сямейства AgentTesla. Гэта адносна бясшкоднае СПА, калі адключыць яму доступ да сеткі.
Сэмпл №1
Зыходны файл - гэта дакумент MS Word, які эксплуатуе ўразлівасць CVE-2017-11882.
У выніку адбываецца загрузка і запуск пейлааду.
Аналіз дрэва працэсаў і паводніцкіх маркераў паказвае інжект у працэс RegAsm.exe.
Ёсць характэрныя для AgentTesla паводніцкія маркеры.
Запампаваны сэмпл - гэта выкананы . NET-файл, абаронены пратэктарам .NET Reactor.
Адкрыем яго ва ўтыліце dnSpy x86 і пяройдзем да кропкі ўваходу.
Перайшоўшы ў функцыю DateTimeOffset, мы выявім код ініцыялізацыі новага . NET-модуля. Паставім кропка прыпынку на які цікавіць нас радку і запусцім файл.
У адным з вернутых буфераў можна ўбачыць MZ-сігнатуру (0x4D 0x5A). Захоўваем яго.
Здамплены выкананы файл - гэта дынамічная бібліятэка, якая з'яўляецца лаадэрам, г.зн. здабывае з секцыі рэсурсаў карысную нагрузку і вырабляе яе запуск.
Пры гэтым самі неабходныя рэсурсы ў дампе адсутнічаюць. Яны знаходзяцца ў бацькоўскім сэмпле.
ўтыліта dnSpy валодае двума вельмі карыснымі функцыянальнымі магчымасцямі, якія дапамогуць нам даволі хутка стварыць "франкенштэйна" з двух звязаных файлаў.
- Першая дазваляе "ўклеіць" у бацькоўскі сэмпл дынамічную бібліятэку.
- Другая - перапісаць код функцыі ў кропкі ўваходу, каб выклікаць патрэбны метад устаўленай дынамічнай бібліятэкі.
Захоўваем нашага «франкенштэйна», ставім кропка прыпынку на радку, які вяртае буфер з дэшыфраванымі рэсурсамі, і вырабляем дамп па аналогіі з папярэднім этапам.
Другі дамп - гэта напісаны на VB.NET выкананы файл, які абаронены знаёмым нам пратэктарам ConfuserEx.
Пасля зняцця пратэктара выкарыстоўваем напісаныя раней YARA-правілы і пераканаемся ў тым, што распакаванае ВПО – сапраўды AgentTesla.
Сэмпл №2
Зыходны файл - дакумент MS Excel. Да выканання шкоднаснага кода прыводзіць убудаваны макрас.
У выніку запускаецца PowerShell-скрыпт.
Скрыпт дэшыфруе код на C# і перадае яму кіраванне. Сам код з'яўляецца загрузнікам, што таксама бачна са справаздачы пясочніцы.
Карысная нагрузка ўяўляе сабой выкананы . NET-файл.
Адкрыўшы файл у dnSpy x86, можна ўбачыць, што ён абфусцыраваны. Здымаем абфускацыю ўтылітай de4dot і вяртаемся да аналізу.
У ходзе даследавання кода можна выявіць наступную функцыю:
У вочы кідаюцца закадаваныя радкі EntryPoint и заклікаць. Ставім кропка прыпынку на першы радок, запускаем і захоўваем значэнне буфера byte_0.
Дамп зноў з'яўляецца дадаткам на . NET і абаронены ConfuserEx.
Здымаем абфускацыю з дапамогай de4dot і загружаем у dnSpy. З апісання файла разумеем, што сутыкнуліся з CyaX-Sharp loader.
Гэты загрузнік валодае шырокім функцыяналам для процідзеяння аналізу.
Гэты функцыянал уключае абыход убудаваных сістэм абароны Windows, адключэнне Windows Defender, а таксама механізмы выяўлення пясочніц і віртуальных машын. Ёсць магчымасць падгружаць карысную нагрузку з сеткі ці захоўваць яе ў секцыі рэсурсаў. Запуск выконваецца праз инжект ва ўласны працэс, у дублікат уласнага працэсу ці ж у працэсы MSBuild.exe, vbc.exe и RegSvcs.exe у залежнасці ад абранага зламыснікам параметра.
Аднак для нас яны менш істотныя, чым AntiDump-функцыя, якую дадае ConfuserEx. Яе зыходны код можна знайсці на
Для адключэння абароны скарыстаемся магчымасцю dnSpy, якая дазваляе рэдагаваць IL-код.
Захоўваемся і ставім кропка прыпынку на радок выкліку функцыі дэшыфроўкі карыснай нагрузкі. Яна знаходзіцца ў канструктары асноўнага класа.
Запускаем і дампім карысную нагрузку. Выкарыстоўваючы раней напісаныя YARA-правілы, пераконваемся, што перад намі AgentTesla.
Сэмпл №3
Зыходны файл - гэта выкананы VB Native PE32-файл.
Аналіз энтрапіі паказвае наяўнасць вялікага фрагмента зашыфраваных дадзеных.
Пры аналізе формы прыкладання ў VB Decompiler можна заўважыць дзіўны піксельны фон.
Графік энтрапіі bmp-малюначкі ідэнтычны графіку энтрапіі зыходнага файла, а памер складае 85% ад памеру файла.
Агульны выгляд малюнка сведчыць аб выкарыстанні стэганаграфіі.
Зварачальны ўвага на выгляд дрэва працэсаў, а таксама на наяўнасць маркера інжэкта.
Гэта сведчыць аб выкананні распакавання. Для загрузнікаў на Visual Basic (яны ж VBKrypt або VBInjector) характэрна выкарыстанне shellcode для ініцыялізацыі карыснай нагрузкі, а таксама для выканання самага инжекта.
Аналіз у VB Decompiler паказаў наяўнасць падзеі Нагрузка у формы FegatassocAirballoon2.
Пяройдзем у IDA pro па паказаным адрасе і вывучым функцыю. Код моцна абфуцаваны. Фрагмент, які нас цікавіць, прадстаўлены ніжэй.
Тут праводзіцца сканіраванне адраснай прасторы працэсу ў пошуках сігнатуры. Такі падыход вельмі сумніўны.
Па-першае, адрас пачатку сканавання 0x400100. Гэта значэнне статычна і не карэктуецца пры зняцці базы. У ідэальных цяплічных умовах ён будзе паказваць на канец PE-загалоўка выкананага файла. Аднак база не статычная, яе значэнне можа мяняцца, а пошук рэальнага адраса шуканай сігнатуры хоць і не выкліча перапаўнення зменнай, але можа заняць вельмі шмат часу.
Па-другое, значэнне сігнатуры iWGK. Думаю, відавочна, што 4 байта занадта мала, каб гарантаваць унікальнасць. А калі ўлічваць першы пункт, верагоднасць памыліцца дастаткова высокая.
У рэчаіснасці шуканы фрагмент прымацаваны да канца знойдзенай раней bmp-малюначкі па зрушэнні 0xA1D0D.
выкананне Шэл-код ажыццяўляецца ў дзве стадыі. Першая вырабляе дэшыфроўку асноўнага цела. Пры гэтым ключ вызначаецца пераборам.
Сдампім дэшыфраваны Шэл-код і паглядзім на радкі.
Па-першае, зараз мы ведаем функцыю стварэння даччынага працэсу: CreateProcessInternalW.
Па-другое, нам стаў вядомы механізм замацавання ў сістэме.
Вернемся да зыходнага працэсу. Паставім кропка прыпынку на CreateProcessInternalW і працягнем выкананне. Далей назіраем звязку NtGetContextThread/NtSetContextThread, якая мяняе адрас пачатку выканання на адрас ShellCode.
Падлучаемся да створанага працэсу адладчыкам, які актывуецца падзея Suspend on libraryu load/unload, аднаўляем працэс і чакаем падгрузкі . NET-бібліятэк.
Далей пры дапамозе ProcessHucker дампім рэгіёны, якія змяшчаюць у распакаваным выглядзе . NET-дадатак.
Спыняем усе працэсы і выдаляем якая замацавалася ў сістэме копію ВПО.
Здамплены файл абаронены пратэктарам .NET Reactor, які лёгка здымаецца пры дапамозе ўтыліты de4dot.
Скарыстаўшыся напісанымі раней YARA-правіламі, пераконваемся, што перад намі AgentTesla.
Падвядзем вынік
Такім чынам, мы падрабязна прадэманстравалі працэс паўаўтаматычнага распакавання сэмплаў на прыкладзе трох міні-кейсаў, а таксама правялі аналіз шкоднаснага ПА на аснове паўнавартаснага кейса, высветліўшы, што доследны ўзор – гэта AgentTesla, усталяваўшы яго функцыянальныя магчымасці і поўны спіс індыкатараў кампраметацыі.
Аналіз шкоднаснага аб'екта, які мы правялі, патрабуе шмат часу і намаганняў, і гэтую працу павінен выконваць спецыяльны супрацоўнік у кампаніі, аднак не ўсе кампаніі гатовы трымаць у штаце аналітыка.
Адна з паслуг, якую аказвае Лабараторыя кампутарнай крыміналістыкі і аналізу шкоднаснага кода Group-IB – рэагаванне на кіберінцыдэнты. А, каб заказчыкі не марнавалі час на ўзгадненне дакументаў і абмеркаванне ў разгар кібератакі, Group-IB запусціла Incident Response Retainer, паслугу па рэагаванні на інцыдэнты па папярэдняй падпісцы, якая ўключае таксама этап аналізу шкоднаснага кода. Больш падрабязную інфармацыю аб гэтым можна знайсці
Калі вы жадаеце самі яшчэ раз вывучыць, як праводзіцца распакаванне сэмплаў AgentTesla, і ўбачыць, як гэта робіць адмысловец CERT Group-IB, можаце запампаваць запіс вэбінара па гэтай тэме
Крыніца: habr.com