近期,SamSam勒索軟件頻繁出現(xiàn)在了很多高調(diào)的網(wǎng)絡(luò)攻擊活動中。自其出現(xiàn)以來,SamSam經(jīng)歷了大量的改進,并增加了很多額外功能,雖然這些功能并沒有讓SamSam變得更加危險,但它們增加了SamSam的檢測難度,而且這個難度一直隨著時間的推移而增加。
在對近期樣本的分析過程中,研究人員發(fā)現(xiàn)這款勒索軟件的Payload一直都是在運行時解密的,這也是這款勒索軟件顯著的特點,這種加密Payload機制也表明了為何我們難以去定位實際的Payload。
新版本SamSam和舊版本之間的對比如下:
所使用的模塊;
交互方式;
接下來,我們將跳過舊版本的SamSam,直接對新版本SamSam代碼進行分析,并通過一些簡單的對比來了解SamSam的進化過程。
近期的SamSam樣本分析
SamSam的攻擊活動由五個部分組成,其中的四個部分是實際的文件,而第五個部分涉及到用戶的直接參與。
個部分是一個batch文件,其中包含了勒索軟件的設(shè)置信息,它也是攻擊者唯一一個需要手動執(zhí)行的部分。它會運行一個.NET可執(zhí)行文件,并對已加密的stub文件進行解密。攻擊者在受感染主機中執(zhí)行bat文件時,需要在命令行中輸入密碼作為執(zhí)行參數(shù),這個密碼會在攻擊鏈中向下傳遞,直到.NET文件用其實現(xiàn)解密為止。在舊版本中,這個bat文件似乎并不在攻擊鏈中,攻擊者需要直接執(zhí)行.NET組件。
這部分的詳細(xì)信息如下所示:
在這里,mswinupdate就是這部分的“runner”(暫時這樣命名),這個runner就是文件的加載器,這是一個 .NET可執(zhí)行文件,它主要負(fù)責(zé)對勒索軟件的Payload進行解密。
接下來,你會看到“SET password”那一行,它負(fù)責(zé)從命令行參數(shù)中提取密碼信息。
這也解釋了為什么對主Payload的分析會如此之難,這個密碼的輸入是不需要文件參與的,而且想要完整手動復(fù)現(xiàn)攻擊場景也是非常難得,因為攻擊者會在攻擊完成之后將其中的某些文件和日志記錄刪除。
上面是攻擊鏈的第二個部分,runner,也就是Payload的解密器和啟動器,這個文件沒有經(jīng)過混淆處理,而且功能也非常簡單。它會搜索目錄中包含.stubbin后綴的文件,而這個文件是攻擊者存放在目標(biāo)設(shè)備中的。stubbin文件就是加密后的勒索軟件,它會從文件中讀取出字節(jié)數(shù)據(jù)并立刻刪除原始文件。文件內(nèi)容使用了AES加密,所以即使拿到了stubbin文件我們也沒辦法對其進行分析,因為它還是需要攻擊者手動輸入密碼。
Stubbin文件會調(diào)用assembly.Load函數(shù),并動態(tài)加載一個.NET文件。函數(shù)需要接收一個參數(shù)來作為解密器的輸出方法,這也意味著它能夠動態(tài)實現(xiàn)stub文件解密、轉(zhuǎn)換為對應(yīng)的PE并加載文件。密碼在bat文件的args[0]中輸入,其中Arg_4E_0為加密字節(jié)流。
在新版本SamSam的第三個部分中,解密代碼包含了一個單獨的DLL文件,但在舊版本中,所有內(nèi)容都包含在runner之中,因此舊版本總共也只有三個組件,而不像新版本那樣擁有四個組件。
下面是解密代碼:
查看程序代碼后你將會發(fā)現(xiàn)下列內(nèi)容:
第四個部分如下所示,即加密后的惡意軟件Payload-*.stubbin:
SamSam的目標(biāo):實施有針對性的攻擊
在本文的分析過程中,我們討論了很多關(guān)于密碼方面的東西(由攻擊者手動輸入),這也是SamSam勒索軟件活動中非常關(guān)鍵的一點。在分析時,由于我們不知道密碼,所以我們無法分析勒索軟件的源碼。而且需要注意的是,我們甚至都無法在測試設(shè)備上運行SamSam,因此這也意味著只有攻擊者本人才能實施SamSam攻擊。
這跟之前的很多勒索軟件或惡意軟件都不同,而且SamSam的感染范圍不僅沒有Wildfire大,而且它甚至都不能夠?qū)崿F(xiàn)自動傳播。
實際上,如果你不小心下載并執(zhí)行了這款勒索軟件的話,你也不用擔(dān)心,因為沒有密碼它的Payload也運行不起來。可能大家已經(jīng)發(fā)現(xiàn)了,這款勒索軟件只有一個目的:進行有針對性的網(wǎng)絡(luò)攻擊。開發(fā)人員明顯是要選擇特定攻擊目標(biāo)的,對于勒索軟件來說這就非常有意思了。
入侵威脅指標(biāo)IoC
BAT文件
9C8AD4147F5CBDDA51317A857D75720C84BDDB16338DABE374A3E60C64C2F0DE
加密DLL
DA9C2ECC88E092E3B8C13C6D1A71B968AA6F705EB5966370F21E306C26CD4FB5
Runner
738C95F5BFE63A530B200A0D73F363D46C5671C1FCBB69C217E15A3516501A86
Stubbin
594B9B42A2D7AE71EF08795FCA19D027135D86E82BC0D354D18BFD766EC2424C
(AM 8:00-12:00 PM 14:00-18:00)