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

Ky artikull përfundon serinë tonë të botimeve kushtuar analizës së programeve keqdashëse. Pjesa e parë Ne kryem një analizë të detajuar të një skedari të infektuar që një kompani evropiane e mori me email dhe gjetëm programin spiun AgentTesla në të. pjesa e dytë përshkroi rezultatet e një analize hap pas hapi të modulit kryesor të AgentTesla.

Sot, Ilya Pomerantsev, një specialist i analizës së programeve keqdashëse në CERT Group-IB, do të diskutojë fazën e parë të analizës së programeve keqdashëse - zbërthimin gjysmë-automatik të mostrave të AgentTesla - duke përdorur tre mini-studime rastesh nga specialistët e CERT Group-IB.

Zakonisht, hapi i parë në analizën e malware-it është heqja e mbrojtjes siç është një paketues, kriptor, mbrojtës ose ngarkues. Në shumicën e rasteve, ky problem zgjidhet duke nisur malware-in dhe duke kryer një dump, por ka situata kur kjo metodë është e papërshtatshme. Për shembull, nëse malware është një enkriptues, nëse mbron rajonet e tij të memories nga dumping, nëse kodi përmban mekanizma zbulimi të makinës virtuale, ose nëse malware riniset menjëherë pas nisjes. Në raste të tilla, përdoret i ashtuquajturi shpaketim "gjysmë-automatik", që do të thotë se studiuesi ka kontroll të plotë mbi procesin dhe mund të ndërhyjë në çdo kohë. Le ta shqyrtojmë këtë procedurë duke përdorur tre mostra nga familja AgentTesla si shembull. Ky malware është relativisht i padëmshëm nëse qasja e tij në rrjet është e çaktivizuar.

Shembulli #1

Skedari burimor është një dokument i MS Word që shfrytëzon dobësinë CVE-2017-11882.

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

Analiza e pemës së procesit dhe shënuesve të sjelljes zbulon një injeksion 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
Ekzistojnë shënjues sjelljeje karakteristikë të AgentTesla-s.

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

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Le ta hapim atë në programin e shërbimeve dnSpy x86 dhe le të kalojmë te pika e hyrjes.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Duke hyrë në funksion Zhvendosja e Datës dhe Kohës, do të gjejmë kodin e inicializimit të të riut . NET-modul. Le ta instalojmë 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 buffer-at 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
Skedari ekzekutues i dumpuar është një bibliotekë dinamike që vepron si një ngarkues, d.m.th., ai nxjerr ngarkesën nga seksioni i burimeve dhe e nis atë.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Megjithatë, vetë burimet e kërkuara mungojnë në skedarin e të dhënave. Ato ndodhen në mostrën mëmë.

Shërbim dnSpy ka dy veçori jashtëzakonisht të dobishme që do të na ndihmojnë të krijojmë një "Frankenstein" nga dy skedarë të lidhur mjaft shpejt.

  1. E para ju lejon të "ngjitni" 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 e hyrjes për të thirrur metodën e kërkuar të bibliotekës dinamike të futur.

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

Ne e ruajmë "Frankenstein"-in tonë dhe e vendosim atë pikë pushimi në rreshtin që kthen buffer-in me burimet e deshifruara, dhe prodhojmë një dump të ngjashëm me hapin e mëparshëm.

Dump-i i dytë është shkruar në VB.NET një skedar ekzekutues i mbrojtur nga një mbrojtës me të cilin jemi të njohur 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ë parë dhe verifikojmë që malware-i i papaketuar është me të vërtetë AgentTesla.

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

Shembulli #2

Skedari burimor është një dokument MS Excel. Një makro e integruar shkakton ekzekutimin e kodit keqdashës.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Kjo rezulton në nisjen e një 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 dekripton kodin C# dhe i transferon kontrollin atij. Kodi në vetvete është një ngarkues, siç mund të shihet nga raporti i sandbox-it.

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ë një skedar i ekzekutueshëm . NET-dosje.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Hapja e skedarit në dnSpy x86, mund të shihni se është e turbullt. Ne e heqim turbullimin duke përdorur programin de4dot dhe kthehemi te analiza.

Gjatë shqyrtimit të kodit, mund të gjeni funksionin e mëposhtëm:

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Linjat e koduara janë mbresëlënëse Pika e Hyrjes О kërkojNe vendosëm pikë pushimi në rreshtin e parë, ekzekutoni dhe ruani vlerën e tamponit bajt_0.

Dump është përsëri një aplikacion në . NET dhe i mbrojtur 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
Heqja e errësimit duke përdorur de4dot dhe ngarkojeni atë brenda dnSpyNga përshkrimi i skedarit kuptojmë se po përballemi me Ngarkuesi CyaX-Sharp.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ky shkarkues 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ë sigurisë të integruara të Windows, çaktivizimin e Windows Defender dhe zbulimin e sandbox-eve dhe makinave virtuale. Mund ta shkarkojë ngarkesën nga rrjeti ose ta ruajë atë në seksionin e burimeve. Nisja kryhet nëpërmjet injektimit në procesin e vet, një kopje të procesit ose proceseve të veta. MSBuild.exe, vbc.exe О RegSvcs.exe varësisht nga parametri i zgjedhur nga sulmuesi.

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

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

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 ruajmë dhe instalojmë pikë pushimi te vargu i 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 e nisim dhe e shkarkojmë ngarkesën. Duke përdorur rregullat YARA të shkruara më parë, verifikojmë që ky është AgentTesla.

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

Shembulli #3

Skedari burimor është një skedar 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ë zbulon praninë e një fragmenti të madh të të dhënave të koduara.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Gjatë analizimit të formularit të aplikimit në Dekompiluesi i VB-së Mund të vini re 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ë shënuesit 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 shpaketimi është në proces. Për ngarkuesit e Visual Basic (të njohur edhe si VBKrypt ose VBInjector) karakterizohet nga përdorimi shellcode për të inicializuar ngarkesën, si dhe për të kryer vetë injektimin.

Analiza në Dekompiluesi i VB-së tregoi praninë e një ngjarjeje Ngarkesë në formular FegatassocAirballoon2.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Le të kalojmë te IDA pro Le të shkojmë te adresa e specifikuar dhe të shqyrtojmë funksionin. Kodi është shumë i paqartë. Fragmenti që na intereson paraqitet më poshtë.

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

Së pari, adresa e fillimit të skanimit 0x400100Kjo vlerë është statike dhe nuk përshtatet kur baza zhvendoset. Në kushte ideale të serrës, ajo do të tregojë drejt fundit. PE- koka e skedarit të ekzekutueshëm. Megjithatë, baza e të dhënave nuk është statike; vlera e saj mund të ndryshojë dhe kërkimi për adresën aktuale të nënshkrimit të dëshiruar, megjithëse nuk do ta mbingarkojë variablin, mund të zgjasë shumë.

Së dyti, kuptimi i nënshkrimit iWGKMendoj se është e qartë se 4 bajt janë shumë të vegjël për të garantuar unikalitetin. Dhe duke pasur parasysh pikën e parë, probabiliteti i gabimit është mjaft i lartë.

Në fakt, fragmenti në fjalë është i bashkangjitur në fund të fragmentit të gjetur më parë. bmp-imazhe me zhvendosje 0xA1D0D.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
ekzekutim Shellcode Kryhet në dy faza. E para përfshin deshifrimin e trupit kryesor. Në këtë rast, çelësi përcaktohet me forcë brutale.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Do ta hedhim atë të deshifruarin Shellcode dhe le të shohim linjat.

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

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 ta vendosim pikë pushimi mbi KrijoProcessinternalW dhe vazhdojmë ekzekutimin. Më pas, vëzhgojmë lidhjen NtGetContextThread/NtSetContextThread, e cila ndryshon adresën fillestare të ekzekutimit në adresën ShellCode.

Pjesëmarrja dështoi: le ta ekspozojmë AgentTesla në ujë të pastër. Pjesa 3
Ne lidhemi me procesin e krijuar me një debugger dhe aktivizojmë ngjarjen. Pezulloni gjatë ngarkimit/shkarkimit të bibliotekës, ne e rifillojmë procesin dhe presim shkarkimin . NET-biblioteka.

Më tej, me ndihmën e ProcessHucker rajonet e derdhjes që përmbajnë në formë të papaketuar . NET-aplikim.

Ne i ndalojmë të gjitha proceset dhe heqim kopjen e programeve keqdashëse që është ngulitur 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. Reaktori .NET, e cila mund të hiqet lehtësisht duke përdorur një program ndihmës 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ë, mund të verifikojmë nëse kemi të bëjmë me AgentTesla.

për të përmbledhur

Pra, ne e kemi demonstruar procesin gjysmë-automatik të çpaketimit të mostrës në detaje duke përdorur tre mini-raste, dhe gjithashtu kemi kryer një analizë të malware bazuar në një rast të plotë, duke identifikuar mostrën nën hetim si AgentTesla, duke përcaktuar funksionalitetin e saj dhe duke identifikuar një listë të plotë të treguesve të kompromentimit.

Analiza e programeve keqdashëse që kryem kërkon shumë kohë dhe përpjekje, dhe kjo punë duhet të kryhet nga një punonjës i dedikuar brenda kompanisë, por jo të gjitha kompanitë janë të gatshme të punësojnë një analist.

Një nga shërbimet e ofruara nga Laboratori i Forenzikës Kompjuterike dhe Analizës së Malware-it i Group-IB është reagimi ndaj incidenteve kibernetike. Për të shmangur humbjen e kohës nga klientët duke koordinuar dokumentet dhe duke i diskutuar ato në mes të një sulmi kibernetik, Group-IB lançoi... Mbajtës i Përgjigjes ndaj Incidenteve, një shërbim reagimi ndaj incidenteve para abonimit që përfshin gjithashtu analizën e programeve keqdashëse. Më shumë informacion rreth kësaj mund të gjendet këtu. këtu.

NĂ«se dĂ«shironi tĂ« mĂ«soni se si t’i shpaketoni vetĂ« mostrat e AgentTesla dhe tĂ« shihni se si e bĂ«n kĂ«tĂ« njĂ« specialist i Group-IB CERT, mund tĂ« shkarkoni njĂ« regjistrim tĂ« webinarit mbi kĂ«tĂ« temĂ«. kĂ«tu.

Burimi: www.habr.com

Bleni njĂ« host tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, serverĂ« VPS VDS đŸ”„ Bleni hosting tĂ« besueshĂ«m tĂ« faqeve tĂ« internetit me mbrojtje DDoS, servera VPS VDS | ProHoster