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

首页

俄羅斯的apt28可能在

作者 gigliotti 时间 2020-03-01
all

FireEye實驗室最近發現了一個有限的APT活動,利用Adobe Flash中的零日漏洞和Microsoft Windows中的一個全新漏洞。利用動態威脅情報雲(DTI),FireEye研究人員發現了從2015年4月13日開始的攻擊模式。Adobe獨立修補了APSB15-06中的漏洞(CVE-2015-3043)。通過技術指標與指揮控制基礎設施的關聯,FireEye評估了APT2 8可能對這一活動負責。

Microsoft知道Windows中存在突出的本地許可權提升漏洞(CVE-2015-1701)。雖然還沒有可用於Windows漏洞的修補程式,但將Adobe Flash更新到最新版本將使該漏洞變得無害。我們只看到CVE-2015-1701與Adobe Flash對CVE-2015-3043的攻擊結合使用。微軟安全團隊正在為CVE-2015-1701進行修復。

利用漏洞概述

開發的高層次流程如下:

1.用戶按一下指向攻擊者控制的網站的連結2.HTML/JS啟動程式頁面提供Flash攻擊3.Flash攻擊觸發CVE-2015-3043,執行shellcode4。Shellcode下載並運行可執行payload5。可執行payload5利用本地許可權提升(CVE-2015-1701)竊取系統權杖

Flash漏洞可從未混淆的HTML/JS獲得。launcher頁面根據目標的平臺(Windows32與64bits)選擇要傳送的兩個Flash檔案中的一個。

Flash漏洞大多不易察覺,只有一些light變數名被破壞。攻擊者嚴重依賴CVE-2014-0515 Metasploit模塊,該模塊已被充分記錄在案。它是ROPless,而是為FileReference對象構造一個假vtable,該對象在每次調用Windows API時都會被修改。

如果檢測到Windows內核正在以有限的許可權運行,則負載會利用該內核中的本地許可權提升漏洞。它使用此漏洞在內核上下文中從用戶空間運行程式碼,這將修改攻擊者的行程標記,使其具有與系統進程相同的許可權。

CVE-2015-3043開發

CVE-2014-0515 metasploit模塊與此漏洞之間的主要區別顯然是漏洞。CVE-2014-0515利用了Flash著色器處理中的漏洞,而CVE-2015-3043利用了Flash FLV處理中的漏洞。罪魁禍首FLV檔案被嵌入到AS3中的兩個塊中,並在運行時重新組裝。

脆弱性

分析格式錯誤的FLV對象時,Adobe Flash Player(<=17.0.0.134)中存在緩衝區溢出漏洞。攻擊者利用此漏洞可損壞記憶體並獲得遠程程式碼執行。

在攻擊中,攻擊者將FLV對象直接嵌入到ActionScript程式碼中,並使用NetStream類播放視頻。在記憶體中,它看起來如下所示:

0000000:46 4c 56 01 05 00 00 09 00 00 00 12 00 00 FLV……………0000010:f4 00 00 00 00 00 00 02 00 0a 6f 6e 4d 65 74……….onMet0000020:61 44 61 74 61 08 00 00 0b 00 08 64 75 72 61 aData…….dura0000030:74 69 6f 6e 00 40 47 ca 3d 70 a3 d7 0a 00 05 77 [email protected]=p…..w0000040:69 64 74 68 00 40 74 00 00 00 00 00 0000 06 68 idth。@t……..h0000050:65 69 68 74 00 40 6e 00 00 00 00 00 00 00 0d 8。@n……..0000060:76 69 64 65 6f 64 61 74 61 72 61 74 65 00 00 00視頻數據率……..0003b20:27 6e ee 72 87 1b 47 f7 41 a0 00 00 3a 1b 08'n.r..G.A..:…0003b30:00 04 41 00 0f 00 00 68 ee ee ee ee ee ee ee ee ee..A……..h…..0003b40:ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee eeee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee…………….0003b50:ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee………….0003b60:ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee ee。。。。。。。。。。。。。。。。

FLV檔案格式的檔案包含一系列標記結構。在Flash中,這些對象是在解析FLV標記時創建的:

。文字:1018ACE9 sub ACE9 proc near;程式碼外部參照:sub BBAC+2Bp。文字:1018ACE9;sub_+1A1p….文字:1018ACE9。文字:1018ACE9 arg_0=dword ptr 4。文字:1018ACE9。文字:1018ACE9 mov eax,ecx。文字:1018ACEB mov ecx,[esp+arg_0]。文字:1018ACEF mov dword ptr[eax],偏移量ba771c。文字:1018ACF5 mov dword ptr[eax+24h],1.文字:1018ACFC和dword ptr[eax+14h],0.文字:1018AD00 mov[eax+28h],ecx.文字:1018AD03 mov byte ptr[eax+20h],0.文字:1018AD07 retn 4.文字:1018AD07 sub U 1018ACE9 endp

在這種利用漏洞的情况下,標記結構從偏移量0x3b2f開始進入FLV流,在分析時,該FLV流按如下管道填充標記結構:

標記2:UINT_8類型:8UINT_24數據大小:1089UINT_24時間戳記:15UINT_8時間戳記hi:0UINT_24流id:0UINT_4 fmt:6UINT_2 sr:2UINT_1比特:0UINT_1通道:0UBYTE數據[1088]:\xee\xee\xee…UINT_32 lastsize:0xeeee

從數據欄位開始,FLV流的所有內容變為0xEE。囙此,數據和lastsize欄位被損壞,科技上存在一個最終標記,該標記僅由0xEE組成:

標記3:UINT_8類型:0xEEUINT_24數據大小:0xeeeee…

可以看到從下麵攻擊者的FLV流中填充的Tag2的datasize欄位:

。文字:10192943 mov eax,[ebx+24h]。文字:10192946 mov[esi+14h],eax。文字:10192949 movzx eax,位元組ptr[ebx+19h];00。文字:1019294D movzx ecx,位元組ptr[ebx+1Ah];04.文字:10192951 shl eax,8.文字:10192954或eax,ecx.文字:10192956 movzx ecx,位元組ptr[ebx+1Bh];41.文字:1019295A shl eax,8.文字:1019295D或eax,ecx.文字:1019295F mov ecx,ebx.文字:10192961 mov[esi+0Ch],eax;0x441.文字:10192964 call subϪ1002E2B3

緩衝區分配有固定大小0x2000:

。文字:101A647E push 2000h。文字:101A6483 mov ecx,esi。文字:101A6485 call sub_101A6257;alloc 0x2000緩衝區,存儲在esi+0xDC…….文字:101A627F推送0.文字:101A6281推送edi;0x2000.文字:101A6282呼叫sub_105EBEB0.文字:101A6287 pop ecx.文字:101A6288 pop ecx.文字:101A6289 mov[esi+0DCh],eax

由於大小由攻擊者控制,囙此可能會使固定大小的緩衝區溢位某些數據。

數據大小為0x441時,這裡的值為0x1100,傳遞給sub f88f8,sub f88f8在0x11塊0x200中複製0x2200位元組。最後一個memcpy將固定大小的0x2000緩衝區溢位到相鄰的堆記憶體中。

攻擊者使用向量數組0x7fe*4+8==0x2000噴灑堆,並創建此類大小的孔,這些孔將由所述對象分配。

while(_local_2<this._bp35)/_bp35==0x2000{this._ok47[_local_2]=新向量。<uint>(this._lb60);//_lb60==0x07FE _local_3=0x00;而(_local_3<this._lb60){this._ok47[_local_2][_local_3]=0x41414141;_local_3++;_local_2=(_local_2+0x01);}_local_2=0x00;而(_local_2<this._bp35){this._ok47[_local_2]=null;_local_2=(_local_2+0x02);};

如前一張圖片所示,後面的向量對象的長度欄位溢出為0x80007fff,這使得攻擊者能够在用戶空間內讀/寫任意數據。

外殼程式碼

外殼程式碼被從flashvars中的HTML傳遞到攻擊。外殼程式碼使用UrlDownloadToFileA將下一階段有效負載(以明文形式傳遞的可執行文件)下載到temp目錄,然後使用WinExec運行該目錄。

有效載荷和C2

此漏洞提供了一個惡意軟件變體,它與APT28後門筷子和CORESHELL惡意軟件家族共亯特徵,這兩個都在我們的APT28白皮書中描述過。這個惡意軟體使用了一個以前被筷子後門使用的RC4加密金鑰。C2消息包含一個校驗和算灋,類似於筷子後門通信中使用的算灋。此外,新惡意軟件的網絡信標通信量類似於CORESHELL後門使用的通信量。與CORESHELL一樣,其中一個信標包括來自受害主機的行程清單。與CORESHELL一樣,新惡意軟件嘗試下載第二階段可執行文件。

新有效載荷的C2位置之一87.236.215[.]246還承載一個可疑的APT2 8域ssl icloud[.]com。如錶1所示,同一子網(87.236.215.0/24)還承載多個已知或可疑的APT2 8域。

目標公司是與已知的APT2 8目標一致的垂直行業中的國際政府實體。

CVE-2015-1701開發

有效負載包含對Microsoft Windows中未修補的本地許可權提升漏洞CVE-2015-1701的攻擊。此漏洞利用CVE-2015-1701在用戶空間中執行回檔。回檔獲取當前行程和系統進程的EPROCESS結構,並將數據從系統權杖複製到當前行程的權杖中。完成後,負載以系統進程的許可權以用戶模式繼續執行。

因為CVE-2015-3043已經修補,所以在完全修補的系統上,此遠程攻擊不會成功。如果攻擊者想利用CVE-2015-1701進行攻擊,他們首先必須在受害者的機器上執行程式碼。除非授權訪問受害者的機器,否則攻擊者必須找到一些其他方法,例如精心設計一個新的Flash漏洞,以提供CVE-2015-1701有效載荷。

微軟知道CVE-2015-1701,正在努力修復。CVE-2015-1701不影響Windows 8及更高版本。

感謝所有的投稿人!