天天看點

海蓮花的反擊——一個新近真實攻擊案例的分析0x00 引子0x01 案例0x02 TTP

360安全衛士 · 2016/05/17 17:11

0x00 引子

人在做,天在看。

2015年5月底360天眼實驗室釋出了海蓮花APT組織的報告,揭露了一系列長期對我國的關鍵部門進行針對性攻擊竊取機密資料的攻擊活動。

相關的報告:ti.360.com/upload/repo…

其實,我們知道對于APT團夥如果不從人員這個根本點上解決問題,那麼公開的揭露隻是促使其采用的新攻擊方式的緩解措施而已,過不多久就會改頭換面卷土重來。從天眼實驗室跟蹤的多個APT團夥及其活動來看,從未有什麼團夥在被揭露以後而全面停止活動的,從未。正如傳統情報領域的諜戰對抗,網絡空間隻是另外開辟的一個新戰場,對抗永遠都會存在,強度也會一再增強。

釋出報告一年左右的今天,我們還在持續監測着海蓮花團夥的活動,最近的大網資料顯示在4月份就發生了數百例新的感染,威脅并沒有出現緩解的迹象,本篇會通過介紹一個真實的案例來展現相關的細節。

0x01 案例

這是一個觀察到的真實海蓮花新近攻擊活動,360的天眼威脅感覺與天擎終端安全産品使我們能夠對網絡和主機上發生的事情做集中化的關聯分析,讓完整攻擊活動的來龍去脈做準實時的感覺和展現成為了可能。

初始進入

小王是一個供職于某個敏感機構的員工,他的工作有部分内容涉及對外的聯絡,于是他的電子郵箱位址被公布在機關對外的網站上。

2016年4月的某一天,他從郵箱裡收到一個好像來自上級的郵件,内容很簡略,涉及所在機關的稽核計劃。當然,如我們所知的魚叉郵件攻擊那樣,郵件還帶了一個檔案名為“2016年度上級及内部稽核計劃.rar”的附件。

不奇怪的,像大多數不太小心的員工那樣,小王點選附件打開了RAR檔案,裡面有個名為“關于釋出《2016年度上級及内部稽核計劃》的通知.exe”的Word程式圖示的檔案(應該叫程式)。這時,攻擊行動到達了關鍵點,小王如果有點安全意識,知道來曆不明的EXE檔案不可亂點,那攻擊就到此為止了。可惜小王沒有絲毫戒心地點選了,以下的事情在電腦背景發生了,而受害者小王對此一無所知。

程式其實就是OceanLotus Encryptor的一個簡單變化版本,執行以後行為與天眼實驗室在去年釋出報告後有同學做的樣本分析基本一緻,詳細分析可以參考文章:技術剖析:海蓮花OceanLotus Encryptor樣本分析

總之,經過層層解密程式最終連接配接外部的C&C伺服器,從此伺服器擷取了進一步的指令:從一個伺服器下載下傳執行某個子產品以擷取進一步的控制。

具體的操作

僞裝成QQ程式的qq.exe程序從 hxxp://xxx.xxx.xxx.xxx/images/logo.png 下載下傳一個看起來是PNG圖檔的檔案。

檔案名:logo.png

下載下傳回來打開就會發現這其實是一個Powershell腳本,其主要工作就是把内置的Shellcode加載到記憶體中執行:

var_code中資料Base64解碼以後根據經驗可以斷定是Shellcode:

最前面0x34位元組的Shellcode負責解密0x34偏移後的資料:

從資料的0x34偏移開始為加密段,資料的結構為:

#!cpp
struct CodeData
{
    DWORD dwInitXorCode; //初始密鑰
    DWORD dwLength; //緊跟在後面的惡意代碼加密後的長度(解密是和dwInitXorCode異或)
    Byte* bData;//編碼的惡意代碼的内容
}
複制代碼
           

解密後确認資料構成一個PE檔案,如下代碼為解密算法:

#!cpp
void Decode()
{
    DWORD dwFirst = 0;
    DWORD dwSecond = 0;
    memcpy((void*)&dwFirst, data+0x34, 4);
    memcpy((void*)&dwSecond, data+0x38, 4);
    DWORD dwLength = dwSecond ^ dwFirst;

    DWORD dwXorCode = dwFirst;
    unsigned char* szNewBuffer = new unsigned char[dwLength];
    memset(szNewBuffer, 0, dwLength);
    for (int i = 0; i<dwLength; i+=4)
    {
        DWORD dwBuffer = 0;
        memcpy((void*)&dwBuffer, data+0x38+4+i, 4);
        DWORD dwNewBuffer = 0;
        dwNewBuffer = dwBuffer^dwXorCode;
        dwXorCode = dwXorCode^dwNewBuffer;
        memcpy(szNewBuffer+i, (void*)&dwNewBuffer, 4); //szNewBuffer為解密後的資料
    }
}
複制代碼
           

解密後的檔案是DLL子產品:

DLL檔案的導出子產品名為beacon_dll.dll:

通過對該DLL的分析發現,入口處會把0x1002e040處的資料通過和0x69異或解密,資料長度為1552位元組;如圖:

解密後可以看到配置資訊,裡面包含進行通信的C&C位址、Url、UserAgent和亞馬遜的域名(為了填充遠控協定的HTTP頭的host字段)等配置資訊:

抓包發現木馬在進行HTTP隧道通信的時候還耍了點小花招,在請求的Host字段填了知名站點的網址,傳輸的内容經過編碼後放到Cookies字段裡,試圖混淆視聽繞過監測,而僞裝的host就是在配置資訊裡;如圖:

資料包的HTTP頭的Host字段為www.amazon.com,而連接配接的IP位址為xxx.xxx.xxx.xxx,該IP為木馬的C&C位址,Host字段填的為知名網站,如圖:

而xxx.xxx.xxx.xxx這個IP從來就沒有綁定過域名www.amazon.com。

滲透工具

分析到這兒對現在泛濫成災的基于Powershell的攻擊架構熟悉的同學可能已經看出來了,這個攻擊荷載就是大名鼎鼎的商業滲透工具Cobalt Strike生成的,去年友商也發現過海蓮花團夥使用Cobalt Strike架構進行APT攻擊。

不管如何,我們的小王點選執行了那個誘餌程式,他的電腦已經默默地連接配接到了海蓮花團夥的控制端,對方看到的操作界面應該是這樣的:

架構支援木馬資料互動走HTTP、HTTPS、DNS和SMB隧道協定,目前攻擊所用到的beacon.dll就支援beacon_http、beacon_dns、beacon_https和beacon_smb這些監聽方式:

架構支援多種類型的攻擊荷載生成:

由于能夠輕松繞過現有的病毒清除工具,基于Powershell的後門木馬大受歡迎,Cobalt Strike的PayLoad Generator功能就支援這個選項:

攻擊架構生成的payload.ps1腳本與我們在這回的攻擊中看到的logo.png檔案大小存在很大差距:

差別就在var_code變量的内容:

架構産出的payload.ps1腳本中Shellcode功能比較簡單,從中可以提取出下載下傳的url位址為:

http://xxx.x.x.xxx:808/vQEV

,從該網址下載下傳下個階段的Shellcode執行,如圖:

下載下傳回來的資料大小為186KB:

下載下傳回來的代碼除了後面的加密後的資料段不一樣,Shellcode和海蓮花組織的Shellcode的代碼是一樣的,如圖為攻擊架構下載下傳下來的vQEV子產品的解密代碼:

而海蓮花的這個名為logo.png的Powershell腳本則直接把需要下載下傳回來的這塊代碼嵌入到var_code變量中直接執行而不是從網上下載下傳,雖然增大了檔案,但減少了由于網絡和服務的問題導緻的失敗。

橫向移動

控制了小王的電腦,在機關裡建立了立足點,海蓮花團夥開始使用Cobalt Strike在内網裡橫向移動。Cobalt Strike架構不僅用來構造初始入侵的Payload投遞工具,在擷取内網節點的控制以後自動化地掃描發現内網系統各類漏洞及配置問題加以利用以擴大戰果,比如我們看到控制者往小王的機器上傳了用于掃描SMB服務工具nbtscan.exe,然後立即運作起來對内網執行掃描。

一天以後,内網中的另外幾台機器被攻陷,因為受感染機器發出了對外的C&C的連接配接。其中包括了一台内網辦公用伺服器,接着我們又看到了非常熟悉的手法:伺服器中的兩個重要可執行檔案被綁上了木馬程式同時提供假的Flash更新包并在使用者通路的時候提示下載下傳,這樣就把伺服器變成了水坑。

以後的幾天,我們陸續發現内網中其他幾台用戶端通過通路這個伺服器系統下載下傳執行木馬而被感染,因為網絡中的天眼系統看到了其對外發出的C&C連接配接。在安裝了天擎終端安全産品的用戶端在執行下載下傳回來的木馬時,雖然做了免殺處理,但基于天眼網絡層的威脅情報關聯,天擎的終端檢測與防禦(EDR)機制則會立即對惡意代碼做清除,使攻擊者完成的初始控制馬上失效。

總結起來,對于我們觀察到的這次攻擊,整體的過程情況可以用如下的圖來表示:

0x02 TTP

從360天眼實驗室對大網感染情況的監測,自從去年被我們公開揭露出來以後,隻在其後的小一段時間有所沉寂,在确認沒有進一步人身威脅以後,海蓮花團夥的活動依舊猖獗,甚至超過以往。

随着基于天眼天擎産品在使用者環境中部署量的增加,我們看到越來越多的實際攻擊案例,網絡與終端結合的資料賦予我們的Visibility讓我們對海蓮花團夥的TTP(Tool、Technique、Procedure)有了更貼近的觀察和分析。總體來看,攻擊手法上并沒有什麼變化,但是可以看到的是,由于Powershell天生的有效性,APT團夥(或者黑客組織)對其越來越青睐,正如上面的案例所分析的,從初始入侵payload的建構,到後續内網橫向移動等一系列行為中,powershell都被積極地使用,而事實也證明了這樣的手段非常有效。

以下是海蓮花團夥在Lockheed Martin Cyber Kill Chain各環節上特征描述:

攻擊階段 特性描述
偵察跟蹤 關注目标(主要是政府和海事相關)網站,嘗試入侵,收集相關的電子郵箱
武器建構 使用多種現成的技術生成綁定木馬誘餌程式,目前采用Powershell的Payload非常普遍
載荷投遞 入侵網站建構水坑、發送定向魚叉郵件
突防利用 利用似乎工作相關的内容進行社工誘導點選執行誘餌程式
安裝植入 下載下傳第二階段Shellcode完成控制,以計劃任務方式達成持久化
通信控制 之前使用自有實作的通信協定,目前較多地使用商業化攻擊架構Cobalt Strike
達成目标 使用Cobalt Strike進行內建化的自動滲透,不太在乎隐秘性,隻要有可能進一步建立更多水坑