Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3

Me këtë artikull ne përfundojmë serinë e botimeve kushtuar analizës së programeve me qëllim të keq. NË Pjesa e parë Ne kryem një analizë të detajuar të një skedari të infektuar që një kompani evropiane mori me postë dhe zbuloi atje softuerin spiun AgentTesla. Në pjesa e dytë përshkroi rezultatet e një analize hap pas hapi të modulit kryesor AgentTesla.

Sot Ilya Pomerantsev, një specialist në analizën e malware në CERT Group-IB, do të flasë për fazën e parë të analizës së malware - shpaketimi gjysmë automatik i mostrave të AgentTesla duke përdorur shembullin e tre mini-rasteve nga praktika e specialistëve të CERT Group-IB.

Në mënyrë tipike, faza e parë në analizën e malware është heqja e mbrojtjes në formën e një paketuesi, kriptori, mbrojtësi ose ngarkuesi. Në shumicën e rasteve, ky problem mund të zgjidhet duke ekzekutuar malware dhe duke kryer një hale, por ka situata ku kjo metodë nuk është e përshtatshme. Për shembull, nëse malware është një enkriptues, nëse mbron rajonet e tij të memories nga hedhja, nëse kodi përmban mekanizma zbulimi të makinës virtuale ose nëse malware rindizet menjëherë pas fillimit. Në raste të tilla përdoret i ashtuquajturi zbërthim “gjysmë automatik”, domethënë studiuesi ka kontroll të plotë mbi procesin dhe mund të ndërhyjë në çdo kohë. Le ta shqyrtojmë këtë procedurë duke përdorur si shembull tre mostra të familjes AgentTesla. Ky është një malware relativisht i padëmshëm nëse çaktivizoni aksesin e tij në rrjet.

Mostra nr. 1

Skedari burim është një dokument MS Word që shfrytëzon cenueshmërinë CVE-2017-11882.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Si rezultat, ngarkesa shkarkohet dhe lëshohet.

Analiza e pemës së procesit dhe shënuesve të sjelljes tregon injektimin në proces RegAsm.exe.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ka shënues të sjelljes karakteristike të AgentTesla.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Mostra e shkarkuar është ajo e ekzekutueshme . NET-skedar i mbrojtur nga një mbrojtës Reaktor .NET.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Le ta hapim në shërbim dnSpy x86 dhe kaloni në pikën hyrëse.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Duke shkuar te funksioni DataTimeOffset, do të gjejmë kodin e inicializimit për të renë . NET-moduli. Le të vendosim pikë pushimi në linjën që na intereson dhe ekzekutoni skedarin.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Në një nga buferët e kthyer mund të shihni nënshkrimin MZ (0x4D 0x5A). Le ta ruajmë.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Një skedar i ekzekutueshëm i hedhur është një bibliotekë dinamike që është një ngarkues, d.m.th. nxjerr ngarkesën nga seksioni i burimeve dhe e lëshon atë.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Në të njëjtën kohë, vetë burimet e nevojshme nuk janë të pranishme në deponi. Ato janë në mostrën mëmë.

Shërbim dnSpy ka dy funksione jashtëzakonisht të dobishme që do të na ndihmojnë të krijojmë shumë shpejt një "Frankenstein" nga dy skedarë të lidhur.

  1. E para ju lejon të "ngjisni" një bibliotekë dinamike në mostrën mëmë.

    Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3

  2. E dyta është të rishkruhet kodi i funksionit në pikën hyrëse për të thirrur metodën e dëshiruar të bibliotekës dinamike të futur.

    Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3

Ne ruajmë grupin tonë "Frankenstein". pikë pushimi në linjë që kthen një tampon me burime të deshifruara dhe prodhon një hale sipas analogjisë me fazën e mëparshme.

Deponia e dytë është shkruar në VB.NET një skedar i ekzekutueshëm që mbrohet nga një mbrojtës i njohur për ne ConfuserEx.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pas heqjes së mbrojtësit, ne përdorim rregullat YARA të shkruara më herët dhe sigurohemi që malware i papaketuar është me të vërtetë AgentTesla.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3

Mostra nr. 2

Skedari burim është një dokument MS Excel. Një makro e integruar shkakton ekzekutimin e kodit me qëllim të keq.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Si rezultat, lansohet skripti PowerShell.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Skripti deshifron kodin C# dhe transferon kontrollin tek ai. Vetë kodi është një bootloader, siç mund të shihet edhe nga raporti i sandbox.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ngarkesa është e ekzekutueshme . NET- dosje.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Hapja e skedarit në dnSpy x86, mund ta shihni që është e turbullt. Heqja e turbullimit duke përdorur programin de4dot dhe kthehuni në analizë.

Kur ekzaminoni kodin, mund të zbuloni funksionin e mëposhtëm:

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Linjat e koduara janë të habitshme Pika hyrëse и kërkoj. Ne kemi vënë pikë pushimi në rreshtin e parë, ekzekutoni dhe ruani vlerën e buferit byte_0.

Deponia është përsëri një aplikim në . NET dhe të mbrojtura ConfuserEx.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ne heqim turbullimin duke përdorur de4dot dhe ngarkoni në dnSpy. Nga përshkrimi i skedarit kuptojmë se jemi përballur Ngarkues CyaX-Sharp.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ky ngarkues ka funksionalitet të gjerë kundër analizës.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ky funksionalitet përfshin anashkalimin e sistemeve të integruara të mbrojtjes së Windows, çaktivizimin e Windows Defender, si dhe mekanizmat e zbulimit të sandbox dhe makinës virtuale. Është e mundur të ngarkoni ngarkesën nga rrjeti ose ta ruani atë në seksionin e burimeve. Nisja kryhet përmes injektimit në procesin e tij, në një dublikatë të procesit të tij ose në procese MSBuild.exe, vbc.exe и RegSvcs.exe në varësi të parametrit të zgjedhur nga sulmuesi.

Megjithatë, për ne ato janë më pak të rëndësishme se AntiDump-funksioni që shton ConfuserEx. Kodi burimor i tij mund të gjendet në GitHub.

Për të çaktivizuar mbrojtjen, ne do të përdorim mundësinë dnSpy, e cila ju lejon të redaktoni IL-kodi.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ruani dhe instaloni pikë pushimi në linjën e thirrjes së funksionit të deshifrimit të ngarkesës. Ndodhet në konstruktorin e klasës kryesore.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ne lëshojmë dhe hedhim ngarkesën. Duke përdorur rregullat e shkruara më parë YARA, ne sigurohemi që kjo të jetë AgentTesla.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3

Mostra nr. 3

Skedari burim është i ekzekutueshëm VB Native PE32- dosje.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Analiza e entropisë tregon praninë e një pjese të madhe të të dhënave të koduara.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Kur analizoni formularin e aplikimit në Dekompilues VB mund të vëreni një sfond të çuditshëm të pikseluar.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Grafiku i entropisë bmp-imazhi është identik me grafikun e entropisë së skedarit origjinal dhe madhësia është 85% e madhësisë së skedarit.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pamja e përgjithshme e imazhit tregon përdorimin e steganografisë.

Le t'i kushtojmë vëmendje pamjes së pemës së procesit, si dhe pranisë së një shënuesi të injektimit.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Kjo tregon se zbërthimi është në proces. Për ngarkuesit e Visual Basic (aka VBKrypt ose VBIinjektor) përdorim tipik shellcode për të inicializuar ngarkesën, si dhe për të kryer vetë injektimin.

Analiza në Dekompilues VB tregoi praninë e një ngjarjeje Ngarkesë në formular FegatassocAirballon2.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Shkojmë IDA pro në adresën e specifikuar dhe studioni funksionin. Kodi është shumë i turbullt. Fragmenti që na intereson është paraqitur më poshtë.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Këtu hapësira e adresës së procesit skanohet për një nënshkrim. Kjo qasje është jashtëzakonisht e dyshimtë.

Së pari, adresa e fillimit të skanimit 0x400100. Kjo vlerë është statike dhe nuk rregullohet kur baza zhvendoset. Në kushte ideale serre do të tregojë fundin PE-titulli i skedarit të ekzekutueshëm. Sidoqoftë, baza e të dhënave nuk është statike, vlera e saj mund të ndryshojë dhe kërkimi i adresës reale të nënshkrimit të kërkuar, megjithëse nuk do të shkaktojë një tejmbushje variabli, mund të marrë shumë kohë.

Së dyti, kuptimi i nënshkrimit iWGK. Mendoj se është e qartë se 4 bajt janë shumë të vogla për të garantuar unike. Dhe nëse merrni parasysh pikën e parë, probabiliteti për të bërë një gabim është mjaft i lartë.

Në fakt, fragmenti i kërkuar është bashkangjitur në fund të gjetur më parë bmp-fotografitë me offset 0xA1D0D.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
ekzekutim Shellcode kryhet në dy faza. I pari deshifron trupin kryesor. Në këtë rast, çelësi përcaktohet nga forca brutale.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Hidhni atë të deshifruar Shellcode dhe shikoni linjat.

Së pari, ne tani e dimë funksionin për të krijuar një proces fëmijësh: CreateProcessInternalW.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Së dyti, ne u bëmë të vetëdijshëm për mekanizmin e fiksimit në sistem.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Le të kthehemi te procesi origjinal. Le të vendosim pikë pushimi mbi CreateProcessInternalW dhe vazhdoni ekzekutimin. Më pas shohim lidhjen NtGetContextThread/NtSetContextThread, e cila ndryshon adresën e fillimit të ekzekutimit në adresë ShellCode.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ne lidhemi me procesin e krijuar me një korrigjues dhe aktivizojmë ngjarjen Pezulloni ngarkimin/shkarkimin e bibliotekës, rifilloni procesin dhe prisni për ngarkimin . NET-bibliotekat.

Përdorimi i mëtejshëm ProcessHacker zonat e deponimit që përmbajnë të papaketuara . NET-aplikacion.

Ne ndalojmë të gjitha proceset dhe fshijmë kopjen e malware që është futur në sistem.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Skedari i hedhur mbrohet nga një mbrojtës Reaktor .NET, i cili mund të hiqet lehtësisht duke përdorur një program de4dot.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Duke përdorur rregullat YARA të shkruara më parë, ne sigurohemi që kjo të jetë AgentTesla.

për të përmbledhur

Pra, ne demonstruam në detaje procesin e zbërthimit gjysmë automatik të mostrës duke përdorur tre mini-raste si shembull, dhe gjithashtu analizuam malware bazuar në një rast të plotë, duke zbuluar se kampioni në studim është AgentTesla, duke vendosur funksionalitetin e tij dhe një listën e plotë të treguesve të kompromisit.

Analiza e objektit keqdashës që kemi kryer kërkon shumë kohë dhe përpjekje dhe këtë punë duhet ta kryejë një punonjës i posaçëm në kompani, por jo të gjitha kompanitë janë të gatshme të punësojnë një analist.

Një nga shërbimet e ofruara nga Grupi-IB Laboratori i Forenzikës Kompjuterike dhe Analizës së Kodeve Dashakeqe është përgjigjja ndaj incidenteve kibernetike. Dhe në mënyrë që klientët të mos humbin kohë duke miratuar dokumente dhe duke i diskutuar ato në mes të një sulmi kibernetik, nisi Group-IB Mbajtës i reagimit ndaj incidentit, një shërbim i reagimit ndaj incidentit të para-abonimit që përfshin gjithashtu një hap të analizës së malware. Më shumë informacion në lidhje me këtë mund të gjenden këtu.

Nëse dëshironi të studioni edhe një herë se si shpaketohen mostrat e AgentTesla dhe të shihni se si e bën këtë një specialist i CERT Group-IB, mund të shkarkoni regjistrimin e uebinarit për këtë temë këtu.

Burimi: www.habr.com

Shto një koment