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