
ZX-校內實習
偵測指標
IoC全名為Indicator of Compromise,中文是入侵指標。這些指標可以是各種形式的數據,用於指示系統可能受到威脅或已經受到攻擊。勒索軟體有兩種行為,一種是鎖住受害者的電腦,另一種則是加密受害者電腦中的檔案,而我們所選取測試的樣本為Lockbit 2.0,其行為是後者。
為了讓受害者能在勒索軟體加密用戶檔案前就被偵測出來,我們透過 IDA PRO ( 靜態分析工具 ) 查找樣本的可用IoC時,並不會考慮加密後的程式片段與行為。下圖是我們對Lockbit樣本查找我們認為可用的IOC後,將其整理並歸類到惡意行為開始至加密前的動作中。

其中我們以函式sub_416990的GetSystemDefaultUILanguage&GetUserDefaultUILanguage,以及函式sub_40F370的Aeskeygenassist來解釋。
下圖為sub_416990兩個函式的程式碼片段,在左邊的函式中,if判斷的“==”後面的數字為語言/地區十進位識別碼,例如1049為俄羅斯,也就是當系統語言為指定的國家地區時,就不會被攻擊;右邊的函式大致上與左邊同理,如果使用者所使用的語言為指定的國家地區時,也同樣不會遭受攻擊。

下圖為sub_40F370的Aeskeygenassist(AES函數宣告),使用到了“aesenc”和“aesenclast”兩種指令,以實現AES的加密。其中AES全名為Advanced Encryption Standard,中文翻譯為進階加密標準,而加密過程是在一個4×4的字節矩陣上運作,這個矩陣又稱為“體(state)”,其初值就是一個明文區塊(矩陣中一個元素大小就是明文區塊中的一個Byte)。AES加密因支持更大的區塊,其矩陣的“列數(Row number)”可視情況增加。
在加密時,各輪AES加密循環(除最後一輪外)均包含4個步驟:
-
AddRoundKey—矩陣中的每一個字節都與該次回合密鑰(round key)做XOR運算;每個子密鑰由密鑰生成方案產生。
-
SubBytes—透過一個非線性的替換函數,用查找表的方式把每個字節替換成對應的字節。
-
ShiftRows—將矩陣中的每個橫列進行循環式移位。
-
MixColumns—為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯的四個字節。最後一個加密循環中省略MixColumns步驟,而以另一個AddRoundKey取代。
