当前位置: 首页 > 科技观察

Solarwinds供应链攻击武器SUNBURST和TEARDROP分析

时间:2023-03-13 03:31:18 科技观察

1。事件描述2020年12月,FireEye发现了针对多个组织(主要是美国科技公司)的大规模网络攻击,持续数月之久。这次网络攻击的复杂程度导致外国政府迅速介入,这次攻击的战术和技术细节非常出色。攻击者没有进行常规的网络钓鱼或漏洞利用攻击,而是进行了精心设计的供应链攻击。在本文中,我们重点分析了Solarwinds供应链中使用的后门(SUNBURST)及其攻击载荷之一(TEARDROP)的一些功能,包括对SUNBURST的哈希编码字符串的彻底混淆以及对TEARDROP流的分析和解密方法。2.技术细节分析SUNBURST后门的技术细节已经被很多公司和组织进行了深入分析,这让我们可以专注于我们感兴趣的功能进行深入分析。我们将分析后门精心设计的反查杀方法。SUNBURST采用的规避技术在概念上类似于沙盒规避。沙盒规避的目的是确保恶意软件不会在检测到它的虚拟机上运行。后门文件的黑名单不是以可读字符串数组的形式给出的。相反,将可读字符串替换为FNV-1a哈希。通常的恶意软件都使用此功能,但最近一些使用FNV-1a而不是SHA256和CRC32校验和的恶意软件除外,但此后门的强大之处在于它可以保持代码的合法性。后门程序作者不仅仅满足于将进程和服务列入黑名单,他们还将某些设备驱动程序和整个IP地址范围列入黑名单,并将所有内部Solarwinds域列入黑名单。这告诉我们,攻击者不仅决定使用Solarwinds攻击Uber以达到他们的目标,而且他们还详细了解了Solarwinds内部网络的拓扑结构。总体而言,SUNBURST中嵌入的哈希编码字符串列表是SUNBURST已列入黑名单的200多个域的列表。事实证明,即使是最先进、最顽强的攻击者也不认为自己是无敌的,他们相信自己已经足够无敌了。SUNBURST中包含的FNV-1a混淆字符串的完整列表可以在AddeneumI中找到。毫无疑问,这次攻击是一个令人难以置信的大规模黑客技术成果。超过250个组织被SolarWinds后门感染,其中一半在美国,在推送恶意代码时,他们确保遵循Solarwinds的编码约定;他们在初始有效载荷中包含“逻辑漏洞”,以通过动态分析将恶意活动从初始感染延迟整整两周。他们使用被盗但有效的用户凭据将横向移动限制为合法操作。由于所有这些原因,值得注意的是,这种übermensch层攻击用于部署TEARDROP,它只不过是一个人造的恶意软件植入器。在被发现时,TEARDROP是一种前所未见的新型payload,甚至可能是为此次攻击量身定做的。它只部署到几个目标并且TEARDROP在内存中运行,但它确实注册了Windows服务并编辑了注册表。TEARDROP的控制流程非常简单。在服务执行过程中,DLL导出函数Tk_CreateImageType被调用。该函数将JPEG图片写入当前目录,名称不同;赛门铁克公开了upbeat_anxiety.jpg和festive_computer.jpg,FireEye公开了gracious_truth.jpg。对于未经训练的人来说,这些似乎是人为命名的。但它更有可能是通过在用于编译恶意软件的任何计算机上连接两个硬编码单词来随机生成的。TEARDROP然后使用自制密码和硬编码的0x96密钥执行解密。使用以下方法来实现该过程:在较高层次上,这就像某种自制的PRNG,它决定每次使用哪个关键字节。动态运行时,生成的键索引可以简单地映射到0、1、2、...、149、0、1、...等等。事实证明,这不是PRNG,而是模运算的编译器优化实现。一旦了解了优化,解密代码就等同于以下内容:CTXT_START_OFFSET=0x30KEY_LENGTH=0x96PREV_CTXT_BYTE_INITIAL_DEFAULT=0xccprev_ctxt_byte=PREV_CTXT_BYTE_INITIAL_DEFAULTfori,ctxt_byteinenumerate(ciphertext[CTXT_START_OFFSET:]):ptxt_byte=ctxt_byte^(prev_ctxt_byte^key[i%KEY_LENGTH])plaintext[i]=ptxt_byteprev_ctxt_byte=ctxt_byte所以原始加密是一个简单的异或,然后将每个密文字节与前一个字节进行异或,没有人会随机对内存中的二进制blob进行Kasiski攻击,期望遇到异或密文。解密后的有效载荷具有以下自定义标头格式,读起来像正确的PE标头:第一个图像显示了在TEARDROP上找到的用于解密BEACON有效载荷的代码,第二个图像显示了一个已知的BEACON样本的代码与PE的基本地址。TEARDROP的BEACON有效载荷CobaltStrike的BEACON(sha256:3cfbf519913d703a802423e6e3fb734abf8297971caccc7ae45df172196b6e84)TEARDROP的构建方式使其放弃了BEACON,即CobaltStrike附带的有效载荷。根据CobaltStrike网站,BEACON的目的是模拟高级攻击者。它支持跨各种协议的网络横向移动、用于C2签入的“被动”和“主动”模式,以及可用于模拟其他恶意软件或与来自目标网络的合法流量融合的可配置C2通信方案。三、分析与结论如果非要在此次攻击事件后做一个结论,那一定是“纵深防御”。似乎我们一直在听这个陈词滥调,但它源于2012年美国国家安全局的一篇论文,其背后的理由是合理且相关的:不要把所有的精力都花在建墙上。没有完美的墙,总有一天,有人会穿过它。通过分析SUNBURST和TEARDROP二进制文件,我们了解到即使是这种非常成功的攻击也存在问题。为确保这一点,必须创建广泛的域和进程黑名单。0x04附录I:SUNBURST中包含的FNV-1a混淆字符串列表Processes:2597124982561782591=apimonitor-x642600364143812063535=apimonitor-x8613464308873961738403=autopsy644821863173800309721=autopsy12969190449276002545=autoruns643320026265773918739=autoruns12094027092655598256=autorunsc6410657751674541025650=autorunsc11913842725949116895=binaryninja5449730069165757263=blacklight292198192373389586=cffexplorer12790084614253405985=cutter5219431737322569038=de4dot15535773470978271326=debugview7810436520414958497=diskmon13316211011159594063=dnsd13825071784440082496=dnspy14480775929210717493=dotpeek3214482658293117931546=dotpeek648473756179280619170=dumpcap3778500091710709090=evidencecenter8799118153397725683=exeinfope12027963942392743532=fakedns576626207276463000=fakenet7412338704062093516=ffdec682250828679635420=fiddler13014156621614176974=fileinsight18150909006539876521=floss10336842116636872171=gdb12785322942775634499=hiew32demo13260224381505715848=hiew3217956969551821596225=hollows_hunter8709004393777297355=idaq6414256853800858727521=idaq8129411991672431889=idr15997665423159927228=ildasm10829648878147112121=ilspy9149947745824492274=jd-gui3656637464651387014=lordpe3575761800716667678=officemalscanner4501656691368064027=ollydbg10296494671777307979=pdfstreamdumper14630721578341374856=pe-bear4088976323439621041=pebrowse649531326785919727076=peid6461429591783621719=pe-sieve326508141243778577344=pe-sieve6410235971842993272939=pestudio2478231962306073784=peview9903758755917170407=peview14710585101020280896=ppee13611814135072561278=procdump642810460305047003196=procdump2032008861530788751=processhacker27407921587843457=procexp646491986958834001955=procexp2128122064571842954=procmon10484659978517092504=prodiscoverbasic8478833628889826985=py2exedecompiler10463926208560207521=r2agent7080175711202577138=rabin28697424601205169055=radare27775177810774851294=ramcapture6416130138450758310172=ramcapture506634811745884560=reflector18294908219222222902=regmon3588624367609827560=resourcehacker9555688264681862794=retdec-ar-extractor5415426428750045503=retdec-bin2llvmir3642525650883269872=retdec-bin2pat13135068273077306806=retdec-config3769837838875367802=retdec-fileinfo191060519014405309=retdec-getsig1682585410644922036=retdec-idr2pat7878537243757499832=retdec-llvmir2hll13799353263187722717=retdec-macho-extractor1367627386496056834=retdec-pat2yara12574535824074203265=retdec-stacofin16990567851129491937=retdec-unpacker8994091295115840290=retdec-yarac13876356431472225791=rundotnetdll14968320160131875803=sbiesvc14868920869169964081=scdbg106672141413120087=scylla_x6479089792725215063=scylla_x865614586596107908838=shellcode_launcher3869935012404164040=solarwindsdiagnostics3538022140597504361=sysmon6414111374107076822891=sysmon647982848972385914508=taskexplorer8760312338504300643=taskexplorer-x6417351543633914244545=tcpdump7516148236133302073=tcpvcon15114163911481793350=tcpview15457732070353984570=vboxservice16292685861617888592=win32_remote10374841591685794123=win64_remotex643045986759481489935=windbg17109238199226571972=windump6827032273910657891=winhex645945487981219695001=winhex8052533790968282297=winobj17574002783607647274=wireshark3341747963119755850=x32dbg14193859431895170587=x64dbg17439059603042731363=xwforensics6417683972236092287897=xwforensics700598796416086955=redcloak3660705254426876796=avgsvc12709986806548166638=avgui3890794756780010537=avgsvca2797129108883749491=avgidsagent3890769468012566366=avgsvcx14095938998438966337=avgwdsvcx11109294216876344399=avgadminclientservice1368907909245890092=afwserv11818825521849580123=avastui8146185202538899243=avastsvc2934149816356927366=aswidsagent13029357933491444455=aswidsagenta6195833633417633900=aswengsrv2760663353550280147=avastavwrapper16423314183614230717=bccavsvc2532538262737333146=psanhost4454255944391929578=psuaservice6088115528707848728=psuamain13611051401579634621=avp18147627057830191163=avpui17633734304611248415=ksde13581776705111912829=ksdeui7175363135479931834=tanium3178468437029279937=taniumclient13599785766252827703=taniumdetectengine6180361713414290679=taniumendpointindex8612208440357175863=taniumtracecli8408095252303317471=taniumtracewebsocketclient64Services:windowsDefender:5183687599225757871=msmpeng917638920165491138=windefendWindowsSense:10063651499895178962=mssense16335643316870329598=senseWindowsSensor:10501212300031893463=microsoft.tri.sensor155978580751494388=microsoft.tri.sensor.updaterNIST:17204844226884380288=cavpCarbonBlack:5984963105389676759=cb11385275378891906608=carbonblack13693525876560827283=carbonblackk17849680105131524334=cbcomms18246404330670877335=cbstreamCrowdStrike:8698326794961817906=csfalconservice9061219083560670602=csfalconcontainer11771945869106552231=csagent9234894663364701749=csdevicecontrol8698326794961817906=csfalconserviceFireEye:15695338751700748390=xagt640589622539783622=xagtnotif9384605490088500348=fe_avk6274014997237900919=fekern15092207615430402812=feelam3320767229281015341=fewscserviceESET:3200333496547938354=ekrn14513577387099045298=eguiproxy607197993339007484=egui15587050164583443069=eamonm9559632696372799208=eelam4931721628717906635=ehdrv2589926981877829912=ekrnepfw17997967489723066537=epfwwfp14079676299181301772=ekbdflt17939405613729073960=epfwF-SECURE:521157249538507889=fsgk32st14971809093655817917=fswebuid10545868833523019926=fsgk3215039834196857999838=fsma3214055243717250701608=fssm325587557070429522647=fnrb3212445177985737237804=fsaua17978774977754553159=fsorsp17017923349298346219=fsav3217624147599670377042=f-securegatekeeperhandlerstarter16066651430762394116=f-securenetworkrequestbroker13655261125244647696=f-securewebuidaemon3421213182954201407=fsma14243671177281069512=fsorspclient16112751343173365533=f-securegatekeeper3425260965299690882=f-securehips9333057603143916814=fsbts3413886037471417852=fsni7315838824213522000=fsvista13783346438774742614=f-securefilter2380224015317016190=f-securerecognizer3413052607651207697=fses3407972863931386250=fsfw10393903804869831898=fsdfw3421197789791424393=fsms541172992193764396=fsdevconDrivers:17097380490166623672=cybkerneltracker.sys15194901817027173566=atrsdfw.sys12718416789200275332=eaw.sys18392881921099771407=rvsavd.sys3626142665768487764=dgdmk.sys12343334044036541897=sentinelmonitor.sys397780960855462669=hexisfsmonitor.sys6943102301517884811=groundling32.sys13544031715334011032=groundling64.sys11801746708619571308=safe-agent.sys18159703063075866524=crexecprev.sys835151375515278827=psepfilter.sys16570804352575357627=cve.sys1614465773938842903=brfilter.sys12679195163651834776=brcow_x_x_x_x.sys2717025511528702475=lragentmf.sys17984632978012874803=libwamf.sysdomainnames:1109067043404435916=swdev.local15267980678929160412=swdev.dmz8381292265993977266=lab.local3796405623695665524=lab.na8727477769544302060=emea.sales10734127004244879770=cork.lab11073283311104541690=dev.local4030236413975199654=dmz.local7701683279824397773=pci.local5132256620104998637=saas.swi5942282052525294911=lab.rio4578480846255629462=lab.brno16858955978146406642=apac.labHTTP:8873858923435176895=expect6116246686670134098=content-type2734787258623754862=accept6116246686670134098=content-type7574774749059321801=user-agent1475579823244607677=100-continue11266044540366291518=connection9007106680104765185=referer13852439084267373191=keep-alive14226582801651130532=close15514036435533858158=if-modified-since16066522799090129502=date本文翻译自:https://research.checkpoint.com/2020/sunburst-teardrop-and-the-netsec-新常态/