今年整個忙於工作,實在沒辦法騰出好時間寫文章,但其實研究的步調並沒有落下,所以於是就想說針對常看到YT挑一些有趣的東西拿來寫
首先附上
REF: https://www.youtube.com/watch?v=mAond4BkCfM
主要的利用工具是這個 iexpress.exe
相關介紹
https://zh.wikipedia.org/zh-tw/IExpress
https://ss64.com/nt/iexpress.html
其實透過 iexpress 產生惡意程式 loader 好像不是什麼新鮮事了
https://blog.csdn.net/cssxn/article/details/102294173
它的使用方法也很簡單
首先打開他,記得要用 admin 權限開,不然到後面會有 error
這邊選第一個
取標題名稱
詢問是否需要提示 prompt
詢問是否需要 pop license
選擇需要打包的軟體
選擇執行安裝的軟體,同時也可以選擇安裝完成後要額外執行的軟體
選擇是否要顯示安裝視窗
安裝完成後的訊息欄
選擇 Package 要存哪
如果這邊選了 Store files
那個選項的話,會跳出提示,這邊我們不選
安裝完是否需要重新啟動
選擇 SED 要存在哪
最後給他跑
如果這邊不是用 admin 權限跑的話就會出現以下錯誤
最後執行完成
到這邊流程告一段落,來看看產生的檔案如何
可以看到印有 Micorsoft 的字串,並且沒有簽章
透過 process explorer 長這樣
然後 iexpress 可以透過 cmd 呼叫
所以還可以只傳送 SED file,讓他透過 cmd 產生 exe
細部打開 SED file 內部長這樣子
1 | [Version] |
TargetName
就是實際 exe 會產生的位置,無論在哪邊解 SED file 最後都會在 TargetName
產生 exeAppLaunched
就是實際 exe 會執行的內容,這邊可以替換為後門程式,但要注意,需要在 SourceFiles0
指定的 path 能找到對應的檔案名稱才行
當把 calc.exe 改為 notepad.exe 的時候會發現一個有趣的現象
這個 process tree 看起來合理多了,為什麼呼叫 calc.exe 的時候不是直接從 installer.exe spawn 呢?
還好現在有 chatgpt 可以解答我的疑問..
1 | 你所描述的情況,當你運行 calc.exe(計算器)時,它似乎是由 sihost.exe 進程啟動,而不是由你的父進程啟動,同時 notepad.exe(記事本)則由父進程啟動,在 Process Explorer 中顯示為父子關係,這可能與 Windows 如何處理進程和用戶界面(UI)進程的管理方式有關。 |
另外產生出來的 exe 也有參數可以呼叫喔
所以可以做到這樣,明明 SED 的參數是呼叫 notepad.exe, 卻可以透過 /C
改寫呼叫的程式(指令),這裡的說明是安裝指令,代表可以不需要看 SourceFiles0
可以任意指定參數
另外在文章中有引出另一篇推特文章
https://x.com/0gtweet/status/1759868814148133078
基本上就是把 iexpress 當作 loader 了
看到後當然會想試一下1
2
3
4
5
6
7
8
9
10
11
12
13echo [Version] > lol.sed
echo Class=IEXPRESS >> lol.sed
echo SEDVersion=3 >> lol.sed
echo [Options] >> lol.sed
echo TargetName=.\LOLBin.EXE >> lol.sed
echo AppLaunched="cmd.exe /c start calc.exe" >> lol.sed
echo PostInstallCmd=^<None^> >> lol.sed
echo SourceFiles-SourceFiles >> lol.sed
echo [SourceFiles] >> lol.sed
echo SourceFiles0=. >> lol.sed
echo [SourceFiles0] >> lol.sed
echo lol.sed-lol.sed >> lol.sed iexpress.exe /n lol.sed
LOLBin.exe