安全圈 | 专注于最新网络信息安全讯息新闻

首页

定址cve

作者 recor 时间 2020-03-04
all

延續了最近使用Flash攻擊Internet Explorer漏洞的趨勢,據稱與CVE-2014-6332一起使用的SWF的樣本已經出現在多個地方。這種趨勢最著名的例子是CVE-2014-0322和CVE-2014-1776的開發。

我們還沒有遇到附加了原始利用漏洞的SWF示例,但是通過查看SWF,可以清楚地看到,它是針對幾種形式的記憶體損壞而構建的,這使得該漏洞本身不那麼有趣。這是一個很好的例子,說明了為什麼我們的高級端點保護方法(專注於攻擊中使用的核心技術)工作得很好。它將封锁使用這個SWF框架,而不管它與哪個漏洞一起使用。

這個漏洞中有趣的部分是Flash組件。乍一看這裡顯示的反編譯ActionScript,它看起來相當簡單,將其大部分程式碼與以前看到的漏洞共亯:

這篇文章不會詳細介紹噴霧機制,因為它們幾乎與以前的漏洞相同,但簡而言之:

之後,從導入錶解析VirtualAlloc和getprocadaddress的地址,以便以後在組裝ROP和shellcode時使用。

通過重寫先前創建的聲音對象的vtable並調用toString方法觸發ROP鏈,從而生成第一個ROP小工具。

在這一點上,值得一提的是一種特殊的行為。在外殼程式碼之前,在堆棧軸之後,原始堆棧地址(現在在eax中)保留在esi中,然後作為外殼程式碼序言的一部分放回esp中,使外殼程式碼能够在原始堆棧上運行。

外殼程式碼

有趣的部分從外殼程式碼開始,它似乎是為繞過微軟的EMET保護而定制的,可能還有其他的安全產品。

在shellcode設定其數據部分(主要包含稍後要解析的函數散列)時,可以看到對EMET的第一個引用:

然後,外殼程式碼通過調用GetProcAddress解析NtSetContextThread的地址開始,GetProcAddress的地址先前由ActionScript程式碼寫入堆噴射(由ecx指向)。

shellcode按照Piotr Bania在2012年演示的方法,設定上下文結構並調用NtSetContextThread,覆蓋調試寄存器並消除EMET的EAF功能。

一旦完成,外殼程式碼所面臨的挑戰將大大减少。然後,它將把先前輸入的散列解析為函數:

它在兩個獨立的迴圈中解析kernel32和ntdll中的以下函數:

解析完所有函數後,它將繼續讀取由Flash組件連接到外殼程式碼末尾的有效負載PE。有效負載PE本身通過名為“shadow.jpg”的檔案到達,並由魔術值0xdeadbeef414141和另一個包含其總大小的DWORD標記。

它被複製到記憶體中,然後寫入本地\Temp目錄中名為“windump.exe”的檔案(使用GetTempPathA檢索)。

在這一點上,引入了另一段規避程式碼:

外殼程式碼檢查行程中是否存在EMET.dll。

如果是這樣的話,它只會正常調用WinExec,然後運行有效負載。否則,它將重置UnhandledExceptionFilter,保存當前esp值,並調用包裝函數,該包裝函數首先控制最後一個SEH處理程式(由TEB指向)並跳轉到WinExec中。返回時,它將重置esp為其保留值並乾淨退出。

不管怎樣,在從損壞的聲音對象的toString方法返回之後,將恢復正常的執行。

結論

此漏洞很有意思,因為它是受EMET(特別是EMET4.1)保護的針對野外攻擊的機器的第一次顯示。

奇怪的是,繞過操作還沒有完成——這個漏洞將被EMET對virtualloc的堆棧透視檢查捕獲。

禁用或繞過此單一測試–利用此漏洞將成功繞過EMET4.1。

事實上,還可以進行相當小的一組自定義,以使此漏洞繞過EMET5.1。

儘管這一漏洞還不成熟,但它向繞過EMET的野生攻擊邁出了重要的一步,而在以前的此類攻擊中,攻擊者通過使用IE中修補後的資訊洩漏漏洞(CVE-2014-7331),積極避免運行EMET的機器。

值得注意的是:Palo Alto Networks Traps以幾層冗餘封锁了這一攻擊。我們將繼續檢查這些漏洞並酌情更新。

從帕洛阿爾托網絡獲取更新!

注册接收來自我們的最新消息、網絡威脅情報和研究