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