簡體   English   中英

生成更短的 shellcode

[英]Generate shorter shellcode

有沒有辦法從惡意軟件可執行文件 (PE/.exe) 生成短 shellcode?這意味着有時一些惡意軟件可執行文件 (PE/.exe) 很大,當轉換為 shellcode 時會導致越來越大的 shellcode 大小進行分析和混淆困難和時間密集。 想象一下,試圖混淆從 1.5KB 大小的木馬生成的 shellcode,通過在現有指令之前、之后和之間插入新指令,用替代指令替換現有指令並插入跳轉指令,這將改變執行流程並將 shellcode 隨機划分為單獨的塊。 在如此大的 shellcode 上執行這些插入操作將花費數小時。 如果有人對如何縮短這些長 shllcode 有任何想法,我將不勝感激。

雖然我討厭幫助做這些事情的人,但我有一種感覺,你無論如何都不會得到任何結果。

你的有效載荷就是你的有效載荷。
您不會嘗試最小化有效負載。 你會找到一種編碼方式,一種適合你的方式。
您當然可以壓縮它,但您必須將有效負載視為完全不透明的數據塊,據您所知,它幾乎是不可壓縮的。

例如,在 shellcode 中編碼任意數據的一種簡單方法是對其應用任何轉換T (例如壓縮它),然后將結果轉換為修改后的 base64,其中任意字母對被交換。
這可以防止防病毒軟件檢測到有效負載(實時檢查內存太昂貴,因此不會檢查最終有效負載),僅使用可打印字符,讓您盡可能減小有效負載大小(感謝T ),並且很容易自動化。

如果您需要更短的有效負載,請減小其大小,而不是減小有效負載的大小加上引導它的 shellcode。

但是,通常所做的是采用眾所周知的殺傷鏈: vector -> dropper -> packer ->malware
矢量是您在特定上下文中獲得執行的方式(例如,惡意 MS Office 宏或進程注入),而投放器是一段代碼或將下載加載有效負載的可執行文件。
你的 shellcode 應該充當一個 dropper,shellcode 通常非常受限制(在大小和形狀上),因此通過從其他地方加載有效負載來保持它們的簡短。

如果您需要將有效負載嵌入到 shellcode 中,請分析約束並處理有效負載。
如果您的有效負載不能滿足它們,您需要更改它。

我只在進程注入中看到過普通的 PE/ELF 有效負載,攻擊者可以在其中為有效負載和代碼(通常稱為 shellcode,但實際上不是一個)分配遠程內存。
實際二進制利用中使用的所有 shellcode 要么不需要有效負載(例如:生成反向 shell),要么是 dropper。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM