可能是史上最先進的惡意廣告攻擊:一個Banner就感染了上百萬PC,雅虎、MSN等大型網站都中招
一個廣告Banner,不需要任何交互就能讓你的PC感染惡意程序,是不是感覺很牛掰?據說就目前為止,已經有上百萬PC因為這樣的原因被感染。而且很多大型網站似乎都中招了,其中就包括雅虎和MSN,如果你最近看到過下面這樣的廣告,就真的要小心了!注意,只是看到就要小心。
像素中的惡意代碼
安全公司ESET的惡意軟體研究專家在本周二發布了報告,將這個Exploit Kit稱為Stegano。Stegano可以將惡意代碼嵌入banner廣告的像素中,而這些banner廣告通常都在一些廣為人知的大型網站上,每日訪問量超百萬。
按照ESET的說法,很多是新聞類媒體網站。
Stegano第一次出現可以追溯到2014年,但是從今年10月初開始演變成了如今這種利用banner廣告在各大型網站傳播的方式。
Stegano這個名字衍生於Steganography(隱寫術)這個詞,這門技術其實是通過一些技術手段將信息或內容隱藏在一些數字圖像之中,因為肉眼不可見而實現所謂的隱形效果。
其實
Stegano是將惡意代碼隱藏在透明PNG圖像的阿爾法通道(Alpha Channel)之中,學設計的同學應該知道,圖像的Alpha通道可以通過更改每一個像素的透明度值來定義它們的透明程度。而惡意代碼的傳遞竟然是通過Alpha通道的值來傳遞的,實在是相當高端。
接下來,就如大家所知道的那樣,有人將這個包裝後的惡意廣告部署在了一些流量較大的主流網站上。
從左到右依次為初始版本;惡意版本和為了演示效果的惡意版本增強型
「由於這種修改十分細微,被惡意修改過的廣告跟初始版本看起來基本沒有什麼差別。」
能看出來下面這兩張圖哪張是原圖,哪張含惡意代碼么~
專家還提到,
這些惡意廣告會顯示名為Browser Defence或者Broxu的軟體宣傳內容,隱蔽性極強!最近瀏覽大型網站,如果你也看到這兩個軟體的廣告了,那就得警惕起來了!
「這些banner廣告位於URL為hxxps://browser-defence.com或hxxps://broxu.com的遠程域。」
發起了這次攻擊的組織叫做AdGholas,他們擅長使用一些有效的技術手段來通過廣告傳播惡意軟體,即大家所知道的惡意廣告。他們上次實施攻擊就在7月,僅在一天內就利用惡意軟體感染了超過一百萬PC。
Malwarebytes惡意軟體情報分析的負責人Jerome Segura提到,在短時間內阻止AdGholas的攻擊還是可能實現的,但他們很快就可以利用在線廣告的其他安全漏洞繼續發起攻擊。從Segura的觀察來看,受災的網站至少就包括了雅虎和MSN。
「這是我見過手段最先進的惡意廣告攻擊之一。」
Segura說道。Stegano原理
一旦有用戶訪問了存在這種惡意廣告的網站,
這個嵌入在廣告中的惡意腳本就可以在不跟用戶交互的情況下將用戶電腦的信息發送給攻擊者的遠程伺服器。
這個惡意腳本針對的是用IE瀏覽器的用戶,它會先利用IE的CVE-2016-0162漏洞來掃描用戶電腦,看看自己是否在沙箱或者某些安全軟體的虛擬環境之中。
在驗證了用戶瀏覽器之後,惡意腳本會通過TinyURL(短網址)服務將瀏覽器重定向到一個網址。
之後會載入一個Flash文件,這個文件能夠根據用戶使用的不同Flash Player版本來利用Flash Player的不同漏洞(CVE-2015-8651,、CVE-2016-1019、CVE-2016-4117),雖然這幾個漏洞現在已經補上了。
「在執行成功之後,
Stegano
會再次檢查自己是否被監控,它的執行Shell代碼會收集一些安全產品安裝或者執行的數據,這些行為就可以看出Stegano的開發者十分多疑
。」ESET的安全專家在blog中提到,「如果攻擊者發現檢查的結果沒什麼問題,就會試圖再次從這個伺服器下載一個加密payload,然後把它偽裝成gif圖片。」
過程中會下載偽裝的的「GIF圖片」,再解密其中的payload,然後通過regsvr32.exe或rundll32.exe執行。惡意payloads的類型可能包括後門、間諜軟體、銀行木馬、文件竊取等。
下面這張ESET的圖表可能能讓你更直觀的了解Stegano的攻擊過程:
2到3秒你就被黑了?
以上所有操作都是自動的,僅發生在2到3秒之間,期間未與用戶產生任何交互。
截止目前,Stegano exploit kit已經被廣泛利用,包括著名的Ursnif銀行木馬和Ramnit惡意軟體。
Stegano在2014年使用時,目標是荷蘭用戶;2015年春天開始針對捷克;到了最近,殃及範圍擴大到加拿大、英國、澳大利亞、西班牙和義大利這5個國家。
而且這次攻擊中,Stegano每個攻擊國家採用特定的exploit包,以達到最大範圍的轉播。
由於AdGholas對攻擊目標電腦的安全環境進行多次審查,致使在研究他們攻擊方式的時候也遇到了不少麻煩。
最後他是用了一台家用電腦並下載了Wireshark,這個不會被監測到的網路抓包工具才讓他有幸觀察到了一次完整的攻擊。
Segura先是在11月27日發現了針對雅虎的攻擊,沒想到兩天後惡意廣告又出現了。AdGholas在這次攻擊中僅僅是改變了域,連域所在的IP地址都沒變。
「如果沒看出來的話我們就遇到大麻煩了。」 Segura說道,「這些攻擊在沒有人意識到的情況下就已經發生了。」
就算通過各種方式掃描惡意廣告,但像AdGholas這樣的入侵者還是防不勝防。「只要在線廣告存在一天,問題同樣存在。」Segura說,「當然,也不能夠以偏概全,合法的在線廣告還是佔了大多數的。」
ESET的報告中並沒有提到受災的具體包含哪些大型網站。對普通用戶來說,
最好的防禦辦法就是保證你的電腦運行最新版的軟體和App,同時使用能監測到這種惡意廣告的殺毒軟體吧。有關Stegano的技術分析
如前文所述,Stegona實際上2014年就已經出現了,不過當前的版本經過了極大加強。據ESET所說,
和Stegona比起來,其他一些比較有名的Exploit Kits,比如說Angler和Neutrino實在是小巫見大巫了。
在絕大部分感染場景中,存在問題的廣告都會展示一個名叫Browser Defence的產品,最近還有在展示Broxu軟體的。以下的分析僅針對Browser Defence。
惡意廣告本身位於browser-defence.com這個域名下,URI構造類似於下面這樣(注意還是用的https):
hxxps://browser-defence.com/ads/s/index.html?w=160&h=600
這裡的index.html會載入countly.min.js,為腳本提供提供初始參數。這裡的countly可不是隨便從GitHub複製一段代碼,其中的代碼進行了大量混淆和自定義修改。
這些代碼主要負責的是初始環境檢查。隨後初始環境信息會發回伺服器(當成1×1 gif文件的XOR加密過的參數發回),形如下面這樣:
systemLocale^screenResolution^GMT offset^Date^userAgent^pixelRatio
據研究人員Segura所說,惡意程序收集的信息還比較多樣,包括計算機的時區、某些顯卡驅動是否安裝,還有設備的性能參數。反覆確認被攻擊對象之後,後面的步驟才會執行,所以安全人員都認為Exploit Kit作者有強迫症。
隨後腳本就會請求廣告Banner了。根據前面初始環境檢查結果,返回惡意廣告,或者也可能是不存在惡意的廣告。
腳本接下來就會載入Banner,然後
讀取RGBA結構(有興趣的可以去了解RGBA color space色彩空間,即紅綠藍三個通道+Alpha通道)。如果說載入的是惡意banner,就會從圖片的Alpha通道中解碼一部分JS。
至於具體怎麼解碼Alpha通道中的代碼,這裡面具體是有一套演算法的
,是不是感覺很有意思?詳情參見ESET的原文。某些像素的Alpha通道包含了一些值,所以我們從圖片中看起來,圖片會呈現出一些噪點,主要就是因為這些存在惡意的值。現在知道上面這兩張圖的差別了嗎?
實際上,這也的確很難檢測到。在成功解碼之後,JS代碼還會跟圖片最後編碼的哈希值來校驗其完整性,最終再執行。這些代碼才正式對計算機環境和瀏覽器本身進行檢查,利用的是IE漏洞CVE-2016-0162。
檢查的主要是抓包、沙盒還有虛擬化軟體是否存在,當然還有環境中是否存在安全軟體;主要會檢查下面這些東東是否存在:
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
檢查下來,如果一切順利就會建立僅1個像素的iframe,設定window.name屬性,通過HTTPS重定向至TinyURL。然後TinyURL再通過HTTP重定向至漏洞利用landing頁面。
漏洞利用階段
在成功重定向之後,landing頁面會檢查瀏覽器userAgent(IE),載入一個Flash文件,然後通過一個加密的JSON文件來設定FlashVars參數。
在此,landing頁面是作為中間人的角色存在的,提供基本的加密解密功能。
FLash文件內實際上還嵌入了另一個Flash文件(和Neutrino類似),根據Flash版本採用3種不同的exploits。
第二階段,Flash文件會對FlashVars解密。其中包含了一個JSON文件(URI)、針對ExternalInterface的JS函數名、回調函數名和部分其他數據:
{「a」:」/e.gif?ts=1743526585&r=10&data=」,」b」:」dUt」,」c」:」hML」,」d」:true,」x」:」/x.gif?ts=1743526585&r=70&data=」}
接下來,就會通過ExtelnalInterface.call()來調用一個JS,檢查Flash版本,然後通過landing頁面發往伺服器。這個過程是通過針對GIF文件請求的加密URI參數完成的。加密演算法比較簡單,用到了廣告中的window.name。
而伺服器給出的響應就是個GIF圖片,這個圖片前面的部分位元組會被丟棄,針對剩下的部分進行解密,然後回傳給Flash。
實際上這裡的響應就是個JSON,其中包含了利用三個漏洞(CVE-2015-8651、CVE-2016-1019或者是CVE-2016-4117)的指示字元,還有相應exploit的密碼,以及為下一階段payload做準備的shell code URI。
Shell代碼
利用階段的最後,shell代碼解密,下載加密後的payload——整個過程還是偽裝成GIF圖片。在這個階段,還是會再度執行一次檢查,看看自己有沒有被察覺。
針對文件名包含下面這些字元的軟體,它會格外在意。一旦發現有什麼可疑的,就不會再下載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之後,也就是上面說的GIF圖片!GIF圖片的前42個位元組會被丟棄,對剩下的進行解密,通過下面的某一種方式將其保存到文件中:
1.CreateFile, WriteFile
2.CreateUrlCacheEntryA(*」 http://google.com/」,,,,), CreateFileA, CreateFileMappingA, MapViewOfFile, {loop of moving bytes}, FlushViewOfFile, UnmapViewOfFile
隨後再通過regsvr32.exe或者rundll32.exe來執行payload。ESET的分析發現了下面這些payload會被下載,應該還有其他的payload。
Win32/TrojanDownloader.Agent.CFH
Win32/TrojanDownloader.Dagozill.B
Win32/GenKryptik.KUM
Win32/Kryptik.DLIF
從整個過程來看,這個惡意廣告的作者還是花了相當多的心思來確保隱蔽性。不過鑒於利用的漏洞都已經被修復,所以將軟體升級到最新版,這個看起來非常有趣和恐怖的攻擊過程就無法得逞了。
另外,廣告網路雖然一直都越來越注重掃描廣告中的惡意代碼,不過對於AdGholas這種具有隱蔽性的技術仍舊束手無策。
技術分析中就已經提到,這個黑客團隊會推兩個不同版本的廣告,其中一版是普通版,就是為了給廣告網路掃描之用的。但在「精心挑選」被攻擊對象之後,才推惡意廣告。
這樣一來,惡意廣告就逃脫了廣告網路的掃描,惡意廣告也就出現在了大型網站上,導致大量設備被攻擊。如Segura所說,互聯網廣告行業現如今注重的主要是速度,而非安全性,威脅的出現是值得那些廣告網路注意的。
* 參考來源:
ESET
,
inforisktoday
,孫毛毛&歐陽洋蔥編譯,轉載請註明來自
FreeBuf.COM
※Big Hit網站被黑客攻擊 防彈少年團MV竟然被TWICE MV替換?
※Big Hit網站被黑客攻擊 防彈少年團MV竟然被TWICE MV替換?
※PSAttack:一個包含所有的滲透測試用例的攻擊型Powershell腳本框架
※還記得針對NPM的Typosquatting攻擊嗎?這次它又瞄準了PyPi
※比WannaCry更可怕的勒索軟體Petya正在襲來:直接攻擊宿主硬碟
※PHPStress:PHP拒絕服務攻擊
※WHID Injector:將HID攻擊帶入新境界
※Windows遇史上最大攻擊:微軟卻瘋狂圈粉
※【FB TV】一周「BUF大事件」:Cloudflare泄露用戶信息;MySQL資料庫遭勒索;碰撞攻擊實例首位受害者WebKit
※Cloudflare CEO:DDoS 攻擊將成為歷史
※Cloak & Dagger攻擊:一種可針對所有版本Android的攻擊技術(含演示視頻)
※NSA EsteemAudit工具或觸發WannaCry攻擊
※WannaCry的第二輪網路攻擊,欲哭無淚
※一種幾乎無法被檢測到的Punycode釣魚攻擊,Chrome、Firefox和Opera等瀏覽器都中招
※WannaCry勒索的比特幣市場遭遭大規模DDoS攻擊
※HID攻擊進階「工具」WHID Injector
※如何通過SSH隧道實現 Windows Pass the Ticket攻擊?
※HVACKer:入侵隔離網路的新型攻擊技術
※抗DDoS攻擊 Arbor Networks獨特「金鐘罩」