AndromedaBotnetAnalizi 1. Giriş 2. Anomaliler 3. DinamikAnaliz 4. StatikAnaliz 5. ProtokolAnalizi 6. ConfigDosyalarıveHedeflerinİncelenmesi 7. Sonuç EmreTINAZTEPE
Giriş 20AralıktarihindenitibarenNetSecmailinglistesindenTurkcell dengeliyormuşgibigörünenveeklerindezararlıyazılım olduğubelirtilenbazıe postalaralmayabaşladık.24aralıktarihindeisebenzerolaylarınfarklıfirmaisimleriile tekrarlandığınıgördük.aynıtarihtetwittergibisosyalpaylaşımplatformlarındaaşağıdakinebenzergörüntülerpaylaşılmaya başladı. Başlangıçtadikkatimiziçekmesedeaynıiçeriğebenzere postalarınthy'dengeliyormuşgibigönderilmesi,bunun düşündüğümüzgibi basit birspamkampanyasıdeğilçokdahabüyükbirorganizasyonunyüzeydekikısmıolduğunubelli edergibiydi. ElimizdeTurkish Airlines Itinerary.pdf.exeveFaturaBildirimi609980.pdf.exeolarakisimlendirilmişikiörnek bulunmaktaydı.ikiörneğindeaynımd5hash e(c7c39fea16c34d867b586fd155dca77a)sahipolduğunugördük.örneklerin VirusTotaltespitoranınındaepeydüşükolmasıdikkatçekiciydi.TanıyanAV lerdetambirtanımvermekyerinedosyayı şüpheliolarakişaretlemişlerdi.
Anomaliler Dosyayısanalmakineyeatarakdinamikanaliziçinhazırlıkyapmayabaşladığımızdaaşağıdakianomalilerdikkatimiziçekti: Dosyanınbağımlılık(dependency)listesinebakıldığındaanlamsızharflerdenoluşanbirDLLolması, Normalşartlaraltındasadece okunabilir(read only) olmasıgereken.rdatasection ın yazılabilir oluşuve isminingaripkarakterlerbarındırması, Hiçbirresourceiçermemesi, Çokazsayıdaimportiçermesivenormaluygulamalardapekderastlamayaalışıkolmadığımızbazıimportlar içermesi, İçerisindebulunanmetinlerinşifrelibirgörünümsergiliyorolması. DinamikAnaliz Networkbağlantısıolmayan undetected birsanalmakinededinamikanalizebaşladığımızdadosyanınkendisini yenidenbaşlatmayaçalıştığınıgözlemledik. Butipbirhareketdosyanınpaketlenmişiçeriktaşıdığınıngöstergesiolabileceğigibiolasıdebuggerlar dan kurtulmakistemesinindebirgöstergesiolabilirdi.hemenarkasındanwuauclt.exe(windowsupdate)dosyasınınbaşlatılıyor olmasıunderground da matruşka olaraktabiredilentekniğiandırıyordu.
Buandanitibarençıkandosyalarıunpacketmeyevesanalmakineninanamakineilepaylaşılanklasörünekopyalamaya başladık.3 ncüadımdaçalıştırılanwuauclt.exedosyasızincirinsonhalkasınıoluşturuyordu. wuauclt.exesürecini,processexplorerileincelediğimizdesessizliğinsebebininnetworkbağlantısınınolmamasıolduğu apaçıkbelliydi Testlerimizenetworkbağlantısınıaçarakdevamettiğimizdesözkonusuadımlarınaynışekildetekrarladığınıfakatbusefer explorer.exeiçerisindeyenithreadleryaratılarakenollo.pladresinebağlanıldığınıgözlemledik. Giden/gelentrafiğiincelediğimizde,tümtrafiğinşifreliolduğuaşikardı. Trafiği,BurpSuiteileC&Csunucusuna forward ettiğimizdezararlınınyeniuygulamalarindirerekçalıştırmayabaşladığını gözlemledik.yeniindirilenbazıdosyalarındaaynı matruşka tekniğiileçalışmasıvekendileriniyenidenbaşlatarak kontrolübirsonrakiaşamayadevretmesidikkatedeğerdi. TümbuaşamalardacaptureettiğimiznetworkpaketleriilerleyengünlerdeC&Csunucularınınkapanmasıüzerinelab ortamındac&csunucularınısimüleetmemizikolaylaştırdı.ilerleyenbölümlerdebukonuyadadeğineceğiz. DinamikanalizitamamlamakiçinRegShotilesistemdeyaptığıdeğişikliklerigözlemlediğimizdeaşağıdakideğişikliklerinot ettik:
Oluşturulanikidosyada,e postaeklentisiilegelendosyanınbirebiraynısıydı. StatikAnaliz Dinamikanalizsafhasınıgeçerek maileklentisi olarakgelendosyayıidaileincelemeyebaşladık.dosyayıaçaraçmaz aldığımızilkhatavemüteakibengördüğümüz SP Analysisfailed hatasıanti debug/anti trace/anti vmgibidahabirçok şeyinbirazdanbaşlayacağınınbelirtisiydi.özelliklestackpointeranalizinbaşarısızolması,kodureverseederkenanalisteçok işdüşeceğinigösterirkigerçektendebeklediğimizgibioldu.koduntraceedilmesivekritikbloklarınbulunmasıepey zamanımızıaldı. KodiçerisindegördüğümüzbirçokMOVDWORDPTRSS:[ESP]instruction ıgccilederlenenbiruygulamaolmasıihtimalini güçlendiriyorduyadatamamenassemblerileyazılmışbirdownloaderilekarşıkarşıyaydık. İlkdallanmadanitibarengördüğümüzSetUnhandledExceptionFilterAPIsi,birkaçdakikaiçindeanti debugrutinleriile karşılaşmayabaşlayacağımızınaçıkgöstergesiydi.buapi,windows toplevelexceptionhandler ıdeğiştirmekiçin kullanıldığıgibiaynızamandadaçokkullanılanbiranti debugyöntemidir.nedeninegelince,processiçerisindeçalışan thread lerdenherhangibirisininunhandledbirexceptionilekarşılaşmasıdurumundaancakveancakprocess Debug edilmiyorsabufiltreçağırılırvedöndürdüğüdeğeregöreexceptionhandlerkontrolüdevralır.eğerprocessdebugediliyorsa bufiltrehiçbirzamançağırılmazvekontroldebugger adevredilerekexceptionıfixetmesibeklenir,dolayısıylaişlembir sonrakiinstructiondandevameder. BuradaFNINITiledesteklenenveişlemcininexceptionflaglarınısilerekilerleyen novel diyebileceğimizbirteknikkullanılmış. HernekadarIDAStealthgibiantianti debugpluginleriilegeçilebilsedegayetgüçlübirteknikolduğunubelirtmeden geçemeyeceğiz. İlerleyenkısımlardaikiRDTSCinstruction ıarasındageçensüreyedayandırılmışbiranti Debugmetodutespitettiğimizi düşündük.aslındabaşlangıçtabununsadeceanti Debugmetoduolduğunudüşündüğümüziçinçiftdalıdakontroletmek yerinetekdaldandevamettik.budabazıforumvesandboxraporlarındayazdığıüzerezararlının 8000 portunudinleyip bağlananashellverdiğidalınbukısımolduğunufarketmemizilesonuçlandı.bizimleaynıandaanalizyapanarkadaşımız MertSARICAilegörüşmemizdeAnti DebugolarakdüşündüğümüzkısmındahaçokAnti Emulatorolaraktasarlandığını anlamışolduk.
ZararlınıngövdesininçokbüyükbirkısmıXORileşifrelenmişdurumdaydı.Ençokdikkatimiziçekenkısımiseçalışacakolan kodparçalarınınçokküçükbloklarhalindeçözülerekçalıştırılmasıydı.dolayısıylakodunbüyükkısmınındecryptedilmesiiçin traceetmeyebaşladık.aşağıdakigörüntüdendeanlayacağınızgibibazıbölümler38baytlıkhattadahadaküçükbloklar halindeşifrelenmişti. ZararlınıntraceedilmekorkusuilekendiGetProcAddressimplementasyonunuyaptığınıfarketmemizilekoduntraceedilme hızıepeyarttı.bufonksiyonudahakolaytakipedebilmekiçinvx_getprocaddressolarakadlandırdık. Çokgeçmedenaşağıdakigörüntüyügördüğümüzde,ikincisafahanınbaşlamaküzereolduğunuvekullanılantekniğinRunPE olduğunuanlamıştık. AşağıdaPhase1.exe nin(e postaeklentisi)kendisiniyenidenbaşlatarak3888id liyeniprocess inhafızasınaunpackedilmiş kodlarıyazdıktansonrakihalinigörüyorsunuz.
Yenikopyanınçalışırçalışmazaşağıdakikontrollerigerçekleştirdiğinigözlemledik: Sistemdeçalışanprocessisimlerininhashlerinialarakaşağıdakilisteilekarşılaştırdığını, (BuhashlerinnelerolduğunuMertSARICA nınbloğundanöğrenebilirsiniz) ProcessenümerasyonununbaşarısızolmasıdurumundaGetModuleHandle( sbiedll.dll )çağrısıilesandboxie DLL ininvarlığınıtespitetmeyeçalıştığı,vebunuyaparkenstack edword lerşeklindepushederekstring oluşturduğu,(buyöntemzararlınınenazındanbukısmınınasmileyazıldığınınispatıydı) HemenarkasındansanalmakinevediskidkontrolüyaparaksonbirRDTSCdeltakontrolüyaptığı. Bukontrollerdenbaşarıilegeçilmesidurumunda: 32bitsistemlerde\System32\wuauclt.exe(WindowsUpdate), 64bitsistemlerdeise\SysWOW64\svchost.exe(ServiceHost). Pekinedenbuprocessler?Neden32ve64bitsistemlerdefarklıuygulamalarhostolarakseçiliyordiyesoracakolursanız; cevapikiuygulamanında32bitoluşu.zararlı3 üncüfazıbuuygulamalardanbirisininiçindegerçekleştirecekveiçlerine yalnızca32bitkodenjekteedebilmeyeteneğinesahip,cabasıbuuygulamalar,birçokfirewalltarafındanotomatikizin verilenvetümmimarilerdebulunanuygulamalar.
Bunoktadawuauclt.exeSUSPENDEDolarakbaşlatılarakgereklihafızamodifikasyonlarıyapılarak3 üncüaşamayageçildiğini gördük.buaşamadaözellikleanti Debugmetodlarındaçokfazlacabirartışgözleniyordu.Aslındabu,anasaldırımihverinin birgöstergesiydi. BununyanısıraaşağıdakiresimdegörebileceğinizgibiçokfazlakullanılmayanbaşkabiryöntemileExitThreadAPIsi kancalanarakkontrolünthreadsonlanmasınamüteakipzararlıyageçmesisağlanmıştı.bunoktadanitibarenkernel Debugger(WinDBG)iledevamederek3 üncüfazınanalizinegeçtik. 3 üncüfazınesasgörevidahaönceyapmışolduğumuzdinamikanalizdengördüğümüzkadarıylazararlınınc&cbağlantısını sağlamakveyenizararlılarıdownloadetmekti.kodundecryptedilmesiiçinuzunbirsüretraceettiktensonrainternet bağlantısınıkontroletmekiçinkullanılanaşağıdakiwindowsupdateadresinibulduk.
İlerleyensüreçtedinamikanalizsafhasındagördüğümüzmoid.plvelinebench.ruadresleriilekarşılaştık.Burada gördüğümüzdizilim,öncemoid.pl yeeğerbağlantıkurulamaziselinebench.ruvesırasıyladiğeradreslerebağlanmaya çalışılmasınıaçıklıyordu. ProtokolAnalizi AnalizindevamındaprotokolanalizinebaşladıkvebuadreslerePOSTmetoduilegönderilenaşağıdakiveriyeulaştık.Sırabu verininneifadeettiğinibulmayagelmişti.burpsuiteiletrafiğiinterceptedipnetworkfonksiyonlarınayoğunlaşmaya başladığımızdakodçokdahaanlaşılırbirhalebürünmeyebaşlamıştıbile. KodiçerisindeXORveRORlardanoluşanbirkaçencrypt/decrpytfonksiyonutespitettikvebukısımlaraolanreferansları incelemeyebaşladık.socketfonksiyonlarındanrecv/sendfonksiyonlarınayoğunlaşıryoğunlaşmazkarşımızabiranda Base64olduğubarizbelliolanbaşkabirfonksiyonçıktı.HemenarkasındandaRC4 eçokbenzeyenbaşkabirfonksiyondaha tespitettik. Buandanitibarendahaçokzararlınınkullandığıprotokoleyoğunlaşmayabaşladıkve7adetkomutun(update,execute, downloadvb.)desteklendiğinigördük.aşağıdakomutlarınişlendiğiswitch igörebilirsiniz.bugörüntüaslındabiryanılgının dacevabıydı: Phase1 denbuyanaaslındapackedbirdownloaderdeğil,tamkapasitelibirbotilekarşıkarşıyaydıkve görünüşegörehikayehenüzyenibaşlıyordu
Command9:DeleteBot Command1:DownloadandExec Kısabirsüresonrakarşımızdakimanzaraaşağıdakigibiydi: BirsüresonraBotProtocolString deyeralangirdilerinhangiinputlarkullanılarakoluşturulduğunuaraştırmayakoyulduk. Sunucuyagidenisteklerdeuzuncevap,sunucudangelentaleplerdeisekısacevapkullanılıyordu.Kısabirsüresonra yaptığımızaraştırmaçokgüzelmeyvelervermeyebaşlamıştıbile.botbaştadatahminettiğimizgibirc4kullanıyorduve formatstringiniçeriğiaşağıdakigibiydi.
Andromeda(W32.Gamarue)aslındabaşındanberikarşımızdaduruyordufakathiçbirAV deböylebirismeratlamamıştık. Bunoktada,protokoldekullanılanformatıgörürgörmezzararlınınAndromedaolduğunuanlayanekiparkadaşımErkan ARNAUDOV unyönlendirmesisüreciçokhızlandırdı.bot unadınıveyeteneklerinidahaderinlemesineincelediktensonra, sırasistemeindirmeyeçalıştığıyenizararlılarınnelerolduğunuanlamayagelmişti. Çalışmamızınbaşındadinamikanalizesnasındabirçokzararlıindirildiğindenbahsetmiştik.BunlarbaşlangıçtaZeuS/Zbot imzasıtaşıyanzararlılarolmaklabirlikte,müteakipdenemelerdefarklıdavranışlarsergileyenzararlılardownloadedildiğini gözlemledik.bunlardanözelliklekbxxxxxx.exeşeklindedosyalaroluşturanvesslhookatmamasıilezeus danayrılanbaşka birzararlıdahaolmasındanşüphelendik.tübitakbilgem inyayınladığırapordabunudoğrularnitelikteydi. Dolayısıylakarşıkarşıyaolduğumuzdurumaşağıdakigibiydi: ConfigDosyalarıveHedeflerinİncelenmesi ZeuSveCridexikilisibankertrojanlarolup,configdosyalarıolmadançokdaişeyaramayanzararlılardır.Ayrıldıklarınokta Cridex inconfigdosyasınıncleartextolmasıvenetworktrafiğidinlenerekcaptureedilebilmesidir.aksine,zeusencrypted birconfigdosyasınasahiptirvepiyasadaconfigdosyasınıextractedebilentoolsayısıçokazdır.bilgem denosmanpamuk venecatiersenşişeci nincridexanaliziniokuduktansonrakendisistemimizdebuzararlıyıçalıştırarakbizdedeaynıconfig parametreleriniindiripindirmediğinitestetmekistedik.çünkügörünüşegöre,zararlı,pc denpc yefarklıdavranabiliyordu vebufarklılıkconfigdosyasınadayansıyabilirdi.sanalmakinedeçalıştırdığımızcridexörneğilohtikr.ruadresindenaşağıdaki birçokbankayıiçerenbirconfigdosyasınıdownloadetti.
Şunudabelirtmedengeçmemeliyiz,configdosyasındakitoplambankasayısıTürkbankasısayısınınenaz15 20katıydıve adınıbileduymadığımızbirsürübankailekarşıkarşıyaydık. Cridex inconfigdosyasınıextractetmeyemüteakipsırazeus unconfigdosyasınınextractedilmesingelmişti.phase1de elimizegeçenörneğianalizetmekistediğimizdec&csunucuların5ininkapalıolduğunugördük.maalesefaçıkolansunucu dabizezeusyerinecridexpushetmeyebaşlamıştı.dolayısıylamailekiilegelenzararlı(andromeda)artıkzeusanaliziiçin kullanılamıyordu.bunoktada4 ncüfazdacaptureettiğimizzeussample ınısanalmakineyekopyalayıpcaptureedilen networkloglarınıincelemeyekoyuldukvesample ınbağlanmayaçalıştığıenollo.plsunucusunuhostsdosyasınaekleyerek anamakinemizdeçalışanapachesunucusunayönlendirdik. Yapmamızgerekentekşeyzararlıdangelenrequest e,c&csunucusuymuşgibicevapveriphenüzneolduğubelliolmayan fakat%99.99encryptedconfigdosyasıolanpipta.bindosyasınıalmasınısağlamaktı.bununiçinaşağıdakiphpscriptini flowers.phpadıylakaydetmemizyeterlioldu.herihtimalekarşı7saniyelikbirbeklemeyarattıkkibusüredesnapshotalma, debuggerattachetmegibiişlemleriçingerekliolabilirdi. C&CServer:enollo.pl Apache2:192.168.2.50
BuaşamadanitibarenZeuSdışdünyasındantamamensoyutlanmışbirhaldelabortamımızdaçalışırhaldeydi. KoduAPIMonitoriletraceetmeyebaşladığımızda16KB lıkdosyayıtoplamda4internetreadfileçağrısıyaparak okuduğunutespitettik.beklemeyiistersunucutarafındaistersekdeclienttarafındagerçekleştirebilir,dilediğimizgibi dosyanınhafızayayüklenişiniizleyebilirdik.ikinciyaklaşımdahaesnekolduğuiçinapimonitorileinternetreadfileçağrısına breakpointkoyarak BreakAfter seçeneğiniişaretledik.zeus uniçerisinekodenjekteettiğiexplorer.exesahtec&c sunucusunabağlanarakşifrelenmişconfigdosyasınıtalepetti. 4 üncüçağrıyıdevamettirmedenhemenöncekerneldebuggerilebuffer ınbulunduğuadresebirhardwarebreakpoint koyduk.aradançokdazamangeçmedenzeusconfigdosyasıilebaşbaşaydık.
Buandanitibarendosyanınboyutuolan0x3F87sayısınaodaklanmayabaşladık.Keyiflibirtracedensonraaşağıdakimanzara ilekarşıkarşıyaydık: Adresedikkatedecekolursanız,şifrelipipta.bindosyamızınhafızadaaçılmayabaşladığınıgörebilirsiniz. PekiURL lergayetnetgörünmekteiken,nedenaltkısımdagörünenmetinlersankikarıştırılmışgibiydi?acabaheap debir adresebakıyordukdafarkındamıdeğildikyoksabuadrespipta.bin inyüklendiğiadresmiydi?takendisiydifakatbirsorun olduğuapaçıkbelliydi. BunoktadakoduniçinedahafazlagirmemekiçinZeuSdecryptorlarıaraştırmayabaşladıkvePCToolstarafındanyayınlanmış ConfigDecrpytoraracınıbuldukfakatoutdatebirtoololduğuiçinbuaraçtandabirsonuçalamadık
Yineişbaşadüşmüştü,configdosyasınınaslındasadeceencryptedolmadığını,aynızamandadacompressedolduğunu anlamamızlahemenkendizeusconfigviewer ımızıyazmayakoyulduk. ConfigdosyasınınformatınıaraştırmamızveZeuSkaynakkodlarınıincelememizileformatınaşağıdakigibiolduğunutespit ettik. Bubilgilerışığındaelimizdekidecrpytedconfigdosyasınıdecompressedebilecekbirtooluhazırlamamızçokdauzunsürmedi. AşağıdakiresimdedecompressedilmişC&Csunuculistesinigörebilirsiniz.Aracıburadanindirebilirsiniz.
Configdosyasındançıkardığımızsunucularaşağıdakigibiydi: http://cormo.pl/walkmanager.php http://tribes.pl/table.php http://beastbrick.ru/baby.php http://coredis.pl/finance.php http://papersled.ru/uganda.php http://netfest.pl/jikajika.php http://juicepoet.ru/bike.php http://scentdonut.ru/fine.php Pekihedefalınanbankalarhangileriydi?GaripfakatCridexconfigdosyasındagördüğümüzyüzlercebankanınyanındaZeuS configdosyasındasadeceaşağıdakibankalarhedefalınmıştı Sonuç Sistemlibirsaldırıyaşahitolduk.Analizimizboyuncafarklıtrojanlarvehedeflerarasındanençokdikkatimiziçekenşey NetSECmailinglistesindenteminettiğimizXTremeRATörneğiiçerenhttp://downtest.sytes.net/x.exeadresioldu.Herne kadarincelediğimizörneklerarasındaxtremerat ınc&csunucularıtarafındanpushedildiğinerastlamamışolsakda, yazımızdadahaöncedebelirttiğimizgibienfekteedilensisteminözelliklerinehattavehattaülkelerinegörezararlıpush edebilecekbiryapıyasahipoluşubüyükbirşüpheyiuyandırmayayetiyordu İşinucundaXTremeRATolduğunuduymakaçıkçasıkorkutucuyduçünküaynıRATkomşuülkeleredüzenlenenbazısiber saldırılardakullanılmıştıvebusaldırıdadakullananherkimse kredikartı hırsızlığındandahabüyükbirhedefiolduğu
aşikardı Nedenderseniz,buzararlıbankertrojandenziyadedahaçokdinleme/izlemeamaçlıkullanılanveaudiocapture özelliğiilegözeçarpanbirtrojan. İlgiliadrestenindirdiğimiztrojan itestettiğimizdekarşımızaçıkanikiadetipvedomain insatınalındığıhostingproviderın Türkiye deoluşu,üstüneüstlükadresinvodafone3gipbloğundanalınmışolması,alışverişmerkezininbirindeoturmuş mobilmodemiilebağlandığıc&csunucusunabakarakkahvesiniyudumlayanbirkorsanıaklımızagetiriyordu. Konuileilgiliarzuedenresmikurumlaraaraştırmadakullandığımızhertürlüdökümanısağlamayahazırız.Bukonudadetaylı bilgialmakiçinservices@zemana.comadresinemailatabilirsiniz.