search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

攻擊者正在利用Windows的0 day漏洞攻擊北美地區100多家企業

寫在前面的話

FireEye旗下的Mandiant公司在周二發布了2017年M-Trends研究報告,這份報告中的數據是基於該公司對真實攻擊事件的分析所得出的。報告指出,在過去的幾年裡隨著黑客技術的不斷發展,很多以經濟利益為目的的黑客團伙變得越來越複雜,而有些犯罪團伙的技術水平已經達到了國家黑客的高度。

在2013年以前,安全專家將大多數網路犯罪分子所進行的黑客活動稱之為「smash and grab」攻擊,在這種攻擊中犯罪分子幾乎不會隱藏自己的活動蹤跡,並且會持續從目標系統中竊取數據。而2013年以後,以經濟利益為目的的攻擊者跟國家黑客之間的界限也變得越來越模糊了,而很多犯罪組織的黑客技術水平已經跟國家黑客不相上下了。在此之前,以經濟利益為目的的黑客使用的是WebShell、用Perl2Exe編譯的惡意代碼、以及遠程C&C伺服器,而現在他們會根據目標系統的特性來開發具有針對性的自定義後門,並利用合法網站來完成C&C通信。

Mandiant的安全研究人員在2016年發現,很多的攻擊活動或多或少都與啟用了惡意宏的文件有關。在這些攻擊場景中,攻擊者會在電子郵件或惡意文件中嵌入指令來嘗試誘騙用戶開啟宏,有些攻擊者甚至還會給目標用戶打電話並通過社工技術來說服他們啟用宏。

其中,零售商成為了他們最大的攻擊目標。這不僅是因為攻擊者可以從他們身上獲取巨額利益,而且他們的網路系統安全係數非常低。由於很多零售商的網路系統沒有進行分段隔離,當攻擊者成功入侵了PoS系統之後,他們將能夠破壞零售商整個PCI環境。

因為攻擊者可以從攻擊中獲利,所以他們自然會在這方面下大功夫。在FireEye調查的一起攻擊事件中,黑客團伙利用了一個Windows系統的0 day漏洞攻擊了不下一百家企業的計算機系統並成功實現提權。除此之外,他們還利用了非常複雜的技術躲過了安全產品的檢測並實現了持久化感染,而其中最有意思的一項技術就是在操作系統啟動之前通過修改卷引導記錄(VBR)來載入後門。接下來,我們會給大家詳細分析一下這個Windows的0 day漏洞以及攻擊者所使用的技術。

事件背景

2016年3月,一個以經濟利益為目的的黑客團伙針對零售商、餐館和酒店發動了多次具有針對性的網路釣魚攻擊。經過研究人員的分析,釣魚郵件中包含嵌入了宏惡意Word文檔,當用戶啟用宏之後便會自動下載並執行惡意文件下載器(報告稱其為PUNCHBUGGY)。

PUNCHBUGGY是一個DDL(動態鏈接庫)文件下載器,具有32位和64位兩種版本,它可以通過HTTPS獲取額外代碼。攻擊者會通過這個下載器來與受感染的系統交互,並嘗試感染同一網路環境下的其他系統。

FireEye發現北美地區已經有超過一百家企業成為了這種攻擊的受害者。FireEye對其中多起事件進行了調查,並且發現攻擊者利用了一個未知的提權漏洞和POS機內存提取工具(PUNCHTRACK)。

CVE-2016-0167:Windows系統的0 day提權漏洞

在某些攻擊場景中,犯罪分子利用了一個此前未知的Windows提權漏洞有選擇性地獲取到了大量受感染設備的SYSTEM許可權。

我們發現這個問題之後便立刻將漏洞信息上報給了微軟,而微軟也在2016年4月12日發布了相應的修復補丁(MS16-039)。

攻擊者信息

我們認為利用會這個漏洞實施攻擊的犯罪組織肯定是以經濟利益為主要目的的攻擊者。在去年,我們只發現有一個組織使用過這種類似的攻擊技術和策略,而且也只有這一個組織使用過下載器PUNCHBUGGY和POS機惡意軟體PUNCHTRACK。需要注意的是,PUNCHTRACK是通過一個高度混淆的啟動器載入的,而且這個載入器不會在目標系統中保存。

這個黑客組織所進行的一般都是大規模攻擊活動,不僅攻擊速度非常快,而且效率也很高,他們會根據攻擊目標來制定專門的漏洞利用代碼,並通過前期偵查來修改發送給目標用戶的釣魚郵件。

漏洞利用細節

Win32k!xxxMNDestroyHandler Use-After-Free

CVE-2016-0167是一個存在於win32k Windows圖形子系統中的本地提權漏洞,一個可以實現遠程代碼執行(RCE)的攻擊者將能夠利用這個漏洞來實現提權。首先,攻擊者需要通過釣魚郵件附件文檔中的惡意宏來完成遠程代碼執行,然後下載並以STSTEM許可權運行CVE-2016-0167的漏洞利用代碼。

微軟已經在2016年4月12日修復了漏洞CVE-2016-0167,所以攻擊者的漏洞利用代碼已經無法在已更新的系統中使用了。微軟還在2016年5月10日發布了一個額外的更新(MS16-062),並進一步提升系統安全性以防止類似的攻擊再次發生。

漏洞分析

首先,漏洞利用代碼會調用CreateWindowEx方法來創建一個主窗口,它會將WNDCLASSEX.IpfnWndProc域的內容傳遞給一個名叫WndProc的函數。接下來,這個函數會使用SetWindowsHookEx和SetWinEventHook方法來安裝兩個鉤子,我們可以把這兩個函數鉤子稱為MessageHandler和EventHandler,也就是消息處理器和事件處理器。

然後,漏洞利用代碼會用SetTimer創建一個計時器(IDEvent0x5678),當計時器timeout之後,WndProc會收到WM_TIMER信息並調用TrackPopupMenuEx方法來顯示一個快捷菜單。之前所設置的事件處理器(MessageHandler)將會從TrackPopupMenuEx捕捉到EVENT_SYSTEM_MENUPOPUPSTART事件並將相應消息發送給內核。在處理消息的過程中,內核會調用包含漏洞的exxxMNDestroyHandler函數,而這個函數將會調用內核模式的消息處理器回調函數,此時事件處理器在調用DestroyWindow時將會觸發用后釋放(UAF)漏洞。

堆控制

這個漏洞利用代碼會通過SetSysColors來執行Heap Feng Shui(一種用來實現任意代碼執行的技術),而這項技術將會修改堆內存空間。在下面這個代碼段中,最重要的區域是地址fffff900`c1aaac40,而地址fffff900`c06a0422是窗口內核對象(tagWND)的基地址加0×22所得:

內存崩潰

用后釋放漏洞的觸發發生在HMAssignmentUnlock+0×14的地方,具體如下所示:

由於RDX中包含tagWND基地址+0×22,因此這個指令還會在win32k!tagWND.state域加上0xffffffff,並將它原來的值0×07004000修改為0x07003fff,原本的0×07004000意味著bServerSideWindowProc標識處於unset狀態。完成了修改之後,bServerSideWindowProc標識如下所示:

惡意代碼執行

如果窗口被標記為伺服器端(bServerSideWindowProc已設置),那麼系統會默認信任IpfnWndProc函數指針,而此時攻擊者就可以用它在用戶模式下執行shellcode了。內核在調用漏洞利用代碼的shellcode時具體情況如下所示:

接下來,shellcode將會竊取系統進程的token,並對子進程cmd.exe進行提權。

緩解方案

FireEye將這種活動標記為了Exploit.doc.MVX、Malware.Binary.Doc、Malware.Binary.exe和PUNCHTRACK。最新版本的Windows系統已經修復了漏洞CVE-2016-0167,希望廣大用戶可以儘快更新自己的Windows系統版本。除此之外,個人用戶可以禁用Office的宏功能,企業用戶可以通過組策略來控制所有Office2016用戶的宏執行。關於Office宏攻擊的更多內容請參考這篇文章【傳送門】。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦