一個(gè)廣告Banner,不需要任何交互就能讓你的PC感染惡意程序,是不是感覺(jué)很牛掰?據(jù)說(shuō)就目前為止,已經(jīng)有上百萬(wàn)PC因?yàn)檫@樣的原因被感染。而且很多大型網(wǎng)站似乎都中招了,其中就包括雅虎和MSN,如果你最近看到過(guò)下面這樣的廣告,就真的要小心了!注意,只是看到就要小心。
像素中的惡意代碼
安全公司ESET的惡意軟件研究專(zhuān)家在本周二發(fā)布了報(bào)告,將這個(gè)Exploit Kit稱(chēng)為Stegano。Stegano可以將惡意代碼嵌入banner廣告的像素中,而這些banner廣告通常都在一些廣為人知的大型網(wǎng)站上,每日訪問(wèn)量超百萬(wàn)。按照ESET的說(shuō)法,很多是新聞?lì)惷襟w網(wǎng)站。
Stegano第一次出現(xiàn)可以追溯到2014年,但是從今年10月初開(kāi)始演變成了如今這種利用banner廣告在各大型網(wǎng)站傳播的方式。
Stegano這個(gè)名字衍生于Steganography(隱寫(xiě)術(shù))這個(gè)詞,這門(mén)技術(shù)其實(shí)是通過(guò)一些技術(shù)手段將信息或內(nèi)容隱藏在一些數(shù)字圖像之中,因?yàn)槿庋鄄豢梢?jiàn)而實(shí)現(xiàn)所謂的隱形效果。
其實(shí)Stegano是將惡意代碼隱藏在透明PNG圖像的阿爾法通道(Alpha Channel)之中,學(xué)設(shè)計(jì)的同學(xué)應(yīng)該知道,圖像的Alpha通道可以通過(guò)更改每一個(gè)像素的透明度值來(lái)定義它們的透明程度。而惡意代碼的傳遞竟然是通過(guò)Alpha通道的值來(lái)傳遞的,實(shí)在是相當(dāng)高端。接下來(lái),就如大家所知道的那樣,有人將這個(gè)包裝后的惡意廣告部署在了一些流量較大的主流網(wǎng)站上。
從左到右依次為初始版本;惡意版本和為了演示效果的惡意版本增強(qiáng)型
“由于這種修改十分細(xì)微,被惡意修改過(guò)的廣告跟初始版本看起來(lái)基本沒(méi)有什么差別。”
能看出來(lái)下面這兩張圖哪張是原圖,哪張含惡意代碼么~
專(zhuān)家還提到,這些惡意廣告會(huì)顯示名為Browser Defence或者Broxu的軟件宣傳內(nèi)容,隱蔽性極強(qiáng)!最近瀏覽大型網(wǎng)站,如果你也看到這兩個(gè)軟件的廣告了,那就得警惕起來(lái)了!
“這些banner廣告位于URL為hxxps://browser-defence.com或hxxps://broxu.com的遠(yuǎn)程域。”
發(fā)起了這次攻擊的組織叫做AdGholas,他們擅長(zhǎng)使用一些有效的技術(shù)手段來(lái)通過(guò)廣告?zhèn)鞑阂廛浖?,即大家所知道的惡意廣告。他們上次實(shí)施攻擊就在7月,僅在一天內(nèi)就利用惡意軟件感染了超過(guò)一百萬(wàn)PC。
Malwarebytes惡意軟件情報(bào)分析的負(fù)責(zé)人Jerome Segura提到,在短時(shí)間內(nèi)阻止AdGholas的攻擊還是可能實(shí)現(xiàn)的,但他們很快就可以利用在線(xiàn)廣告的其他安全漏洞繼續(xù)發(fā)起攻擊。從Segura的觀察來(lái)看,受災(zāi)的網(wǎng)站至少就包括了雅虎和MSN。
“這是我見(jiàn)過(guò)手段最先進(jìn)的惡意廣告攻擊之一。”Segura說(shuō)道。
Stegano原理
一旦有用戶(hù)訪問(wèn)了存在這種惡意廣告的網(wǎng)站,這個(gè)嵌入在廣告中的惡意腳本就可以在不跟用戶(hù)交互的情況下將用戶(hù)電腦的信息發(fā)送給攻擊者的遠(yuǎn)程服務(wù)器。
這個(gè)惡意腳本針對(duì)的是用IE瀏覽器的用戶(hù),它會(huì)先利用IE的CVE-2016-0162漏洞來(lái)掃描用戶(hù)電腦,看看自己是否在沙箱或者某些安全軟件的虛擬環(huán)境之中。
在驗(yàn)證了用戶(hù)瀏覽器之后,惡意腳本會(huì)通過(guò)TinyURL(短網(wǎng)址)服務(wù)將瀏覽器重定向到一個(gè)網(wǎng)址。之后會(huì)加載一個(gè)Flash文件,這個(gè)文件能夠根據(jù)用戶(hù)使用的不同F(xiàn)lash Player版本來(lái)利用Flash Player的不同漏洞(CVE-2015-8651,、CVE-2016-1019、CVE-2016-4117),雖然這幾個(gè)漏洞現(xiàn)在已經(jīng)補(bǔ)上了。
“在執(zhí)行成功之后,Stegano會(huì)再次檢查自己是否被監(jiān)控,它的執(zhí)行Shell代碼會(huì)收集一些安全產(chǎn)品安裝或者執(zhí)行的數(shù)據(jù),這些行為就可以看出Stegano的開(kāi)發(fā)者十分多疑。”ESET的安全專(zhuān)家在blog中提到,“如果攻擊者發(fā)現(xiàn)檢查的結(jié)果沒(méi)什么問(wèn)題,就會(huì)試圖再次從這個(gè)服務(wù)器下載一個(gè)加密payload,然后把它偽裝成一個(gè)gif圖片。”
過(guò)程中會(huì)下載偽裝的的“GIF圖片”,再解密其中的payload,然后通過(guò)egsvr32.exe或rundll32.exe執(zhí)行。惡意payloads的類(lèi)型可能包括后門(mén)、間諜軟件、銀行木馬、文件竊取等。
下面這張ESET的圖表可能能讓你更直觀的了解Stegano的攻擊過(guò)程:
2到3秒你就被黑了?
以上所有操作都是自動(dòng)的,僅發(fā)生在2到3秒之間,期間未與用戶(hù)產(chǎn)生任何交互。
截止目前,Stegano exploit kit已經(jīng)被廣泛利用,包括著名的Ursnif銀行木馬和Ramnit惡意軟件。
Stegano在2014年使用時(shí),目標(biāo)是荷蘭用戶(hù);2015年春天開(kāi)始針對(duì)捷克;到了最近,殃及范圍擴(kuò)大到加拿大、英國(guó)、澳大利亞、西班牙和意大利這5個(gè)國(guó)家。
而且這次攻擊中,Stegano每個(gè)攻擊國(guó)家采用特定的exploit包,以達(dá)到最大范圍的轉(zhuǎn)播。
由于AdGholas對(duì)攻擊目標(biāo)電腦的安全環(huán)境進(jìn)行多次審查,致使在研究他們攻擊方式的時(shí)候也遇到了不少麻煩。最后他是用了一臺(tái)家用電腦并下載了Wireshark,這個(gè)不會(huì)被監(jiān)測(cè)到的網(wǎng)絡(luò)抓包工具才讓他有幸觀察到了一次完整的攻擊。
Segura先是在11月27日發(fā)現(xiàn)了針對(duì)雅虎的攻擊,沒(méi)想到兩天后惡意廣告又出現(xiàn)了。AdGholas在這次攻擊中僅僅是改變了域,連域所在的IP地址都沒(méi)變。
“如果沒(méi)看出來(lái)的話(huà)我們就遇到大麻煩了。” Segura說(shuō)道,“這些攻擊在沒(méi)有人意識(shí)到的情況下就已經(jīng)發(fā)生了。”
就算通過(guò)各種方式掃描惡意廣告,但像AdGholas這樣的入侵者還是防不勝防。“只要在線(xiàn)廣告存在一天,問(wèn)題同樣存在。”Segura說(shuō),“當(dāng)然,也不能夠以偏概全,合法的在線(xiàn)廣告還是占了大多數(shù)的。”
ESET的報(bào)告中并沒(méi)有提到受災(zāi)的具體包含哪些大型網(wǎng)站。對(duì)普通用戶(hù)來(lái)說(shuō),最好的防御辦法就是保證你的電腦運(yùn)行最新版的軟件和App,同時(shí)使用能監(jiān)測(cè)到這種惡意廣告的殺毒軟件吧。
有關(guān)Stegano的技術(shù)分析
如前文所述,Stegona實(shí)際上2014年就已經(jīng)出現(xiàn)了,不過(guò)當(dāng)前的版本經(jīng)過(guò)了極大加強(qiáng)。據(jù)ESET所說(shuō),和Stegona比起來(lái),其他一些比較有名的Exploit Kits,比如說(shuō)Angler和Neutrino實(shí)在是小巫見(jiàn)大巫了。
在絕大部分感染場(chǎng)景中,存在問(wèn)題的廣告都會(huì)展示一個(gè)名叫Browser Defence的產(chǎn)品,最近還有在展示Broxu軟件的。以下的分析僅針對(duì)Browser Defence。
惡意廣告本身位于browser-defence.com這個(gè)域名下,URI構(gòu)造類(lèi)似于下面這樣(注意還是用的https):
hxxps://browser-defence.com/ads/s/index.html?w=160&h=600
這里的index.html會(huì)加載countly.min.js,為腳本提供提供初始參數(shù)。這里的countly可不是隨便從GitHub復(fù)制一段代碼,其中的代碼進(jìn)行了大量混淆和自定義修改。這些代碼主要負(fù)責(zé)的是初始環(huán)境檢查。隨后初始環(huán)境信息會(huì)發(fā)回服務(wù)器(當(dāng)成11 gif文件的XOR加密過(guò)的參數(shù)發(fā)回),形如下面這樣:
systemLocale^screenResolution^GMT offset^Date^userAgent^pixelRatio
隨后腳本就會(huì)請(qǐng)求廣告Banner了。根據(jù)前面初始環(huán)境檢查結(jié)果,返回惡意廣告,或者也可能是不存在惡意的廣告。
腳本接下來(lái)就會(huì)加載Banner,然后讀取RGBA結(jié)構(gòu)(有興趣的可以去了解RGBA color space色彩空間,即紅綠藍(lán)三個(gè)通道+Alpha通道)。如果說(shuō)加載的是惡意banner,就會(huì)從圖片的Alpha通道中解碼一部分JS。
至于具體怎么解碼Alpha通道中的代碼,這里面具體是有一套算法的,是不是感覺(jué)很有意思?詳情參見(jiàn)ESET的原文。
某些像素的Alpha通道包含了一些值,所以我們從圖片中看起來(lái),圖片會(huì)呈現(xiàn)出一些噪點(diǎn),主要就是因?yàn)檫@些存在惡意的值。現(xiàn)在知道上面這兩張圖的差別了嗎?實(shí)際上,這也的確很難檢測(cè)到。
在成功解碼之后,JS代碼還會(huì)跟圖片最后編碼的哈希值來(lái)校驗(yàn)其完整性,最終再執(zhí)行。這些代碼才正式對(duì)計(jì)算機(jī)環(huán)境和瀏覽器本身進(jìn)行檢查,利用的是IE漏洞CVE-2016-0162。檢查的主要是抓包、沙盒還有虛擬化軟件是否存在,當(dāng)然還有環(huán)境中是否存在安全軟件;主要會(huì)檢查下面這些東東是否存在:
C:WindowsSystem32driversvmci.sys
C:Program FilesVMwareVMware Toolsvmtoolsd.exe
C:Program Files (x86)VMwareVMware Toolsvmtoolsd.exe
C:WindowsSystem32driversvboxdrv.sys
C:WindowsSystem32vboxservice.exe
C:Program FilesOracleVirtualBox Guest AdditionsVBoxTray.exe
C:Program Files (x86)OracleVirtualBox Guest AdditionsVBoxTray.exe
C:WindowsSystem32driversprl_fs.sys
C:Program FilesParallelsParallels Toolsprl_cc.exe
C:Program Files (x86)ParallelsParallels Toolsprl_cc.exe
C:WindowsSystem32VMUSrvc.exe
C:WindowsSystem32VMSrvc.exe
C:Program FilesFiddlerFiddler.exe
C:Program Files (x86)FiddlerFiddler.exe
C:Program FilesFiddler2Fiddler.exe
C:Program Files (x86)Fiddler2Fiddler.exe
C:Program FilesFiddler4Fiddler.exe
C:Program Files (x86)Fiddler4Fiddler.exe
C:Program FilesFiddlerCoreAPIFiddlerCore.dll
C:Program Files (x86)FiddlerCoreAPIFiddlerCore.dll
C:Program FilesCharlesCharles.exe
C:Program Files (x86)CharlesCharles.exe
C:Program FilesWiresharkwireshark.exe
C:Program Files (x86)Wiresharkwireshark.exe
C:Program FilesSandboxieSbieDll.dll
C:Program Files (x86)SandboxieSbieDll.dll
檢查下來(lái),如果一切順利就會(huì)建立僅1個(gè)像素的iframe,設(shè)定window.name屬性,通過(guò)HTTPS重定向至TinyURL。然后TinyURL再通過(guò)HTTP重定向至漏洞利用landing頁(yè)面。
漏洞利用階段
在成功重定向之后,landing頁(yè)面會(huì)檢查瀏覽器userAgent(IE),加載一個(gè)Flash文件,然后通過(guò)一個(gè)加密的JSON文件來(lái)設(shè)定FlashVars參數(shù)。在此,landing頁(yè)面是作為中間人的角色存在的,提供基本的加密解密功能。
FLash文件內(nèi)實(shí)際上還嵌入了另一個(gè)Flash文件(和Neutrino類(lèi)似),根據(jù)Flash版本采用3種不同的exploits。
第二階段,F(xiàn)lash文件會(huì)對(duì)FlashVars解密。其中包含了一個(gè)JSON文件(URI)、針對(duì)ExternalInterface的JS函數(shù)名、回調(diào)函數(shù)名和部分其他數(shù)據(jù):
{“a”:”/e.gif?ts=1743526585&r=10&data=”,”b”:”dUt”,”c”:”hML”,”d”:true,”x”:”/x.gif?ts=1743526585&r=70&data=”}
接下來(lái),就會(huì)通過(guò)ExtelnalInterface.call()來(lái)調(diào)用一個(gè)JS,檢查Flash版本,然后通過(guò)landing頁(yè)面發(fā)往服務(wù)器。這個(gè)過(guò)程是通過(guò)針對(duì)GIF文件請(qǐng)求的加密URI參數(shù)完成的。加密算法比較簡(jiǎn)單,用到了廣告中的window.name。
而服務(wù)器給出的響應(yīng)就是個(gè)GIF圖片,這個(gè)圖片前面的部分字節(jié)會(huì)被丟棄,針對(duì)剩下的部分進(jìn)行解密,然后回傳給Flash。
實(shí)際上這里的響應(yīng)就是個(gè)JSON,其中包含了利用三個(gè)漏洞(CVE-2015-8651、CVE-2016-1019或者是CVE-2016-4117)的指示字符,還有相應(yīng)exploit的密碼,以及為下一階段payload做準(zhǔn)備的shell code URI。
Shell代碼
利用階段的最后,shell代碼解密,下載加密后的payload——整個(gè)過(guò)程還是偽裝成GIF圖片。在這個(gè)階段,還是會(huì)再度執(zhí)行一次檢查,看看自己有沒(méi)有被察覺(jué)。
針對(duì)文件名包含下面這些字符的軟件,它會(huì)格外在意。一旦發(fā)現(xiàn)有什么可疑的,就不會(huì)再下載payload:
vmtoolsd.exe
VBoxService.exe
prl_tools_service.exe
VBoxHook.dll
SBIEDLL.DLL
fiddler.exe
charles.exe
wireshark.exe
proxifier.exe
procexp.exe
ollydbg.exe
windbg.exe
eset*, kasper*, avast*, alwil*, panda*, nano a*, bitdef*, bullgu*, arcabi*, f-secu*, g data*, escan*, trustp*, avg*, sophos*, trend m*, mcafee*, lavaso*, immune*, clamav*, emsiso*, superanti*, avira*, vba32*, sunbel*, gfi so*, vipre*, microsoft sec*, microsoft ant*, norman*, ikarus*, fortin*, filsec*, k7 com*, ahnlab*, malwareby*, comodo*, symant*, norton*, agnitu*, drweb*, 360*, quick h
Payload部分
接收到Payload之后,也就是上面說(shuō)的GIF圖片!GIF圖片的前42個(gè)字節(jié)會(huì)被丟棄,對(duì)剩下的進(jìn)行解密,通過(guò)下面的某一種方式將其保存到文件中:
1.CreateFile, WriteFile
2.CreateUrlCacheEntryA(*” http://google.com/”,,,,), CreateFileA, CreateFileMappingA, MapViewOfFile, {loop of moving bytes}, FlushViewOfFile, UnmapViewOfFile
隨后再通過(guò)regsvr32.exe或者rundll32.exe來(lái)執(zhí)行payload。ESET的分析發(fā)現(xiàn)了下面這些payload會(huì)被下載,應(yīng)該還有其他的payload。
Win32/TrojanDownloader.Agent.CFH
Win32/TrojanDownloader.Dagozill.B
Win32/GenKryptik.KUM
Win32/Kryptik.DLIF
從整個(gè)過(guò)程來(lái)看,這個(gè)惡意廣告的作者還是花了相當(dāng)多的心思來(lái)確保隱蔽性。不過(guò)鑒于利用的漏洞都已經(jīng)被修復(fù),所以將軟件升級(jí)到最新版,這個(gè)看起來(lái)非常有趣和恐怖的攻擊過(guò)程就無(wú)法得逞了。
* 參考來(lái)源:ESET,inforisktoday,孫毛毛&歐陽(yáng)洋蔥編譯,轉(zhuǎn)載請(qǐng)注明來(lái)自FreeBuf.COM