
Ang artikulong ito ay nagtatapos sa aming serye ng mga publikasyong nakatuon sa pagsusuri ng malware. Nagsagawa kami ng isang detalyadong pagsusuri ng isang nahawaang file na natanggap ng isang kumpanya sa Europa sa pamamagitan ng email at natagpuan ang AgentTesla spyware program dito. inilarawan ang mga resulta ng isang hakbang-hakbang na pagsusuri ng pangunahing module ng AgentTesla.
Ngayon, tatalakayin ni Ilya Pomerantsev, isang espesyalista sa pagsusuri ng malware sa CERT Group-IB, ang unang yugto ng pagsusuri sa malware—ang semi-automated na pag-unpack ng mga sample ng AgentTesla—gamit ang tatlong mini-case study mula sa mga espesyalista ng CERT Group-IB.
Karaniwan, ang unang hakbang sa pagsusuri ng malware ay ang pag-alis ng proteksyon gaya ng packer, cryptor, protector, o loader. Sa karamihan ng mga kaso, nalulutas ang problemang ito sa pamamagitan ng paglulunsad ng malware at pagsasagawa ng dump, ngunit may mga sitwasyon kung saan hindi naaangkop ang pamamaraang ito. Halimbawa, kung ang malware ay isang encryptor, kung pinoprotektahan nito ang mga rehiyon ng memorya nito mula sa pag-dumping, kung ang code ay naglalaman ng mga mekanismo ng pag-detect ng virtual machine, o kung ang malware ay nagre-reboot kaagad pagkatapos ng startup. Sa ganitong mga kaso, ginagamit ang tinatawag na "semi-automated" na pag-unpack, ibig sabihin, ang mananaliksik ay may kumpletong kontrol sa proseso at maaaring mamagitan anumang oras. Suriin natin ang pamamaraang ito gamit ang tatlong sample mula sa pamilyang AgentTesla bilang isang halimbawa. Ang malware na ito ay medyo hindi nakakapinsala kung ang network access nito ay hindi pinagana.
Halimbawa #1
Ang source file ay isang MS Word na dokumento na nagsasamantala sa kahinaan ng CVE-2017-11882.

Bilang resulta, ang payload ay nai-download at inilunsad.
Ang pagsusuri sa puno ng proseso at mga marker ng pag-uugali ay nagpapakita ng isang iniksyon sa proseso RegAsm.exe.


May mga behavioral marker na katangian ng AgentTesla.

Ang na-download na sample ay maipapatupad . NET- isang file na protektado ng isang tagapagtanggol .NET Reactor.

Buksan natin ito sa utility dnSpy x86 at lumipat tayo sa entry point.

Pupunta sa function DateTimeOffset, makikita natin ang initialization code ng bago . NET-modyul. Mag-install tayo breakpoint sa linya na interesado kami at patakbuhin ang file.

Sa isa sa mga ibinalik na buffer makikita mo ang pirma ng MZ (0x4D 0x5A). Iligtas natin ito.

Ang dumped executable file ay isang dynamic na library na nagsisilbing loader, ibig sabihin, kinukuha nito ang payload mula sa resource section at inilulunsad ito.

Gayunpaman, ang mga kinakailangang mapagkukunan mismo ay nawawala mula sa dump. Matatagpuan ang mga ito sa sample ng magulang.
Kagamitan dnSpy ay may dalawang lubhang kapaki-pakinabang na tampok na makakatulong sa amin na lumikha ng isang "Frankenstein" mula sa dalawang kaugnay na mga file nang mabilis.
- Ang una ay nagbibigay-daan sa iyo na "i-paste" ang isang dynamic na library sa sample ng magulang.

- Ang pangalawa ay muling isulat ang function code sa entry point upang tawagan ang kinakailangang paraan ng ipinasok na dynamic na library.

I-save namin ang aming "Frankenstein" at ilagay ito breakpoint sa linya na nagbabalik ng buffer na may mga na-decrypt na mapagkukunan, at gumagawa kami ng dump na katulad ng nakaraang hakbang.
Ang pangalawang dump ay nakasulat sa VB.NET isang executable file na protektado ng isang protector na pamilyar sa atin ConfuserEx.


Pagkatapos alisin ang tagapagtanggol, ginagamit namin ang mga panuntunan ng YARA na isinulat nang mas maaga at i-verify na ang na-unpack na malware ay talagang AgentTesla.
![]()
Halimbawa #2
Ang source file ay isang MS Excel na dokumento. Ang isang naka-embed na macro ay nagdudulot ng malisyosong code upang maisakatuparan.

Nagreresulta ito sa isang PowerShell script na inilunsad.


Ang script ay nagde-decrypt ng C# code at naglilipat ng kontrol dito. Ang code mismo ay isang loader, tulad ng makikita mula sa ulat ng sandbox.


Ang payload ay isang executable . NET-file.

Pagbukas ng file sa dnSpy x86, makikita mo na ito ay na-obfuscate. Inalis namin ang obfuscation gamit ang utility de4dot at bumalik tayo sa pagsusuri.
Habang sinusuri ang code, mahahanap mo ang sumusunod na function:

Ang mga naka-code na linya ay kapansin-pansin Pasukan и tumawag sa diyos. Inilagay namin breakpoint sa unang linya, patakbuhin at i-save ang buffer value byte_0.
Naka-on na naman ang dump . NET at protektado ConfuserEx.

![]()
Pag-alis ng obfuscation gamit ang de4dot at i-load ito dnSpyMula sa paglalarawan ng file naiintindihan namin na kami ay nahaharap sa CyaX-Sharp loader.

Ang downloader na ito ay may malawak na anti-analysis functionality.

Kasama sa functionality na ito ang pag-bypass sa mga built-in na Windows security system, hindi pagpapagana ng Windows Defender, at pag-detect ng mga sandbox at virtual machine. Maaari nitong i-download ang payload mula sa network o iimbak ito sa seksyon ng mapagkukunan. Isinasagawa ang paglulunsad sa pamamagitan ng pag-iniksyon sa sarili nitong proseso, isang duplicate ng sarili nitong proseso, o mga proseso. MSBuild.exe, vbc.exe и RegSvcs.exe depende sa parameter na pinili ng attacker.
Gayunpaman, para sa amin ang mga ito ay hindi gaanong mahalaga kaysa AntiDump-isang function na nagdadagdag ConfuserExAng source code nito ay matatagpuan sa .
Upang hindi paganahin ang proteksyon, gagamitin namin ang pagkakataon dnSpy, na nagbibigay-daan sa iyong mag-edit IL-code.


Nagse-save kami at nag-install breakpoint sa payload decryption function na call string. Ito ay matatagpuan sa pangunahing tagabuo ng klase.

Inilunsad namin at itinatapon ang payload. Gamit ang dating nakasulat na mga panuntunan ng YARA, bini-verify namin na ito ay AgentTesla.
![]()
Halimbawa #3
Ang source file ay isang executable VB Native PE32-file.

Ang pagsusuri sa entropy ay nagpapakita ng pagkakaroon ng isang malaking fragment ng naka-encrypt na data.

Kapag sinusuri ang application form sa VB Decompiler Maaari mong mapansin ang isang kakaibang pixelated na background.


Entropy graph bmp- ang imahe ay kapareho ng entropy graph ng orihinal na file, at ang laki ay 85% ng laki ng file.

Ang pangkalahatang hitsura ng imahe ay nagpapahiwatig ng paggamit ng steganography.
Bigyang-pansin natin ang hitsura ng puno ng proseso, pati na rin ang pagkakaroon ng marker ng iniksyon.

![]()
Ito ay nagpapahiwatig na ang pag-unpack ay isinasagawa. Para sa mga Visual Basic loader (aka VBKrypt o VBInjector) ay nailalarawan sa pamamagitan ng paggamit shellcode para simulan ang kargamento, gayundin ang pag-iniksyon mismo.
Pagsusuri sa VB Decompiler nagpakita ng pagkakaroon ng isang kaganapan Load sa form FegatassocAirballoon2.

Lumipat tayo sa IDA pro Pumunta tayo sa tinukoy na address at suriin ang function. Ang code ay labis na na-obfuscated. Ang fragment kung saan kami interesado ay ipinakita sa ibaba.

Dito, ini-scan ang address space ng proseso para sa isang lagda. Ang pamamaraang ito ay lubos na kaduda-dudang.
Una, ang address ng pagsisimula ng pag-scan 0x400100Ang halagang ito ay static at hindi nagsasaayos kapag ang base ay inilipat. Sa ilalim ng perpektong kondisyon ng greenhouse, ito ay ituturo sa dulo PE- ang executable file header. Gayunpaman, ang database ay hindi static; maaaring magbago ang halaga nito, at ang paghahanap para sa aktwal na address ng gustong lagda, bagama't hindi ito aapaw sa variable, ay maaaring tumagal ng napakatagal.
Pangalawa, ang kahulugan ng lagda iWGKSa palagay ko ay halata na ang 4 na bait ay masyadong maliit upang magarantiya ang pagiging natatangi. At dahil sa unang punto, medyo mataas ang posibilidad ng error.
Sa katunayan, ang fragment na pinag-uusapan ay nakakabit sa dulo ng naunang natagpuan bmp-mga larawan sa pamamagitan ng offset 0xA1D0D.

Katuparan Shellcode Ito ay isinasagawa sa dalawang yugto. Ang una ay nagsasangkot ng pag-decrypting sa pangunahing katawan. Sa kasong ito, ang susi ay tinutukoy ng malupit na puwersa.

Itapon natin ang na-decryption Shellcode at tingnan natin ang mga linya.
Una, alam na natin ngayon ang function upang lumikha ng proseso ng bata: CreateProcessInternalW.

Pangalawa, nalaman namin ang mekanismo ng pag-aayos sa system.

Bumalik tayo sa orihinal na proseso. Ilagay natin breakpoint sa CreateProcessInternalW at ipagpatuloy ang pagpapatupad. Susunod, sinusunod namin ang koneksyon NtGetContextThread/NtSetContextThread, na nagbabago sa panimulang address ng pagpapatupad sa address ShellCode.

Kumonekta kami sa ginawang proseso gamit ang isang debugger at i-activate ang kaganapan. Suspindihin sa libraryu load/unload, ipagpatuloy namin ang proseso at maghintay para sa pag-download . NET-mga aklatan.
Susunod, sa tulong ng ProcessHucker dump rehiyon na naglalaman sa unpacked form . NET-aplikasyon.
Itinigil namin ang lahat ng proseso at inaalis ang kopya ng malware na nakabaon na sa system.


Ang dumped file ay protektado ng isang tagapagtanggol. .NET Reactor, na madaling maalis gamit ang isang utility de4dot.

Gamit ang mga panuntunan ng YARA na isinulat kanina, maaari naming i-verify na nakikipag-ugnayan kami sa AgentTesla.
upang ibuod
Kaya, ipinakita namin ang semi-automated na proseso ng pag-unpack ng sample nang detalyado gamit ang tatlong mini-case, at nagsagawa din ng pagsusuri sa malware batay sa isang ganap na kaso, na kinikilala ang sample na sinisiyasat bilang AgentTesla, nagtatatag ng functionality nito, at natukoy ang isang buong listahan ng mga indicator ng kompromiso.
Ang pagsusuri sa malware na aming isinagawa ay nangangailangan ng maraming oras at pagsisikap, at ang gawaing ito ay dapat gawin ng isang dedikadong empleyado sa loob ng kumpanya, ngunit hindi lahat ng kumpanya ay handang gumamit ng isang analyst.
Isa sa mga serbisyong ibinigay ng Computer Forensics at Malware Analysis Lab ng Group-IB ay ang pagtugon sa insidente sa cyber. Upang maiwasan ang mga customer na mag-aksaya ng oras sa pag-coordinate ng mga dokumento at pag-usapan ang mga ito sa gitna ng isang cyberattack, inilunsad ng Group-IB Retainer ng Tugon sa Insidente, isang serbisyo sa pagtugon sa insidente bago ang subscription na kasama rin ang pagsusuri sa malware. Higit pang impormasyon tungkol dito ay matatagpuan dito. .
Kung gusto mong matutunan kung paano mag-unpack ng mga sample ng AgentTesla sa iyong sarili at makita kung paano ito ginagawa ng isang Group-IB CERT specialist, maaari kang mag-download ng recording ng webinar sa paksang ito. .
Pinagmulan: www.habr.com


