如何使用DDexec在Linux上隱蔽運行二進制文件
一顆小胡椒2022-11-22 10:38:43

關于DDexec
DDexec是一種能夠在Linux上使用無文件技術和隱秘技術運行二進制文件的方法,它可以使用dd工具來將Shell替換為其他進程。
眾所周知,在Linux上運行一個程序,則這個程序必須以一個文件的形式存在,而且必須能夠通過文件系統層次結構并以某種方式訪問到它,這也是execve()的工作機制。這樣的一種文件可能位于磁盤中或RAM(tmpfs、memfd)中,但我們肯定需要一個文件路徑。這種機制不僅使得我們可以輕松控制Linux系統中運行的內容,而且還可以輕松檢測到安全威脅或攻擊者植入的惡意程序,甚至還可以阻止攻擊者嘗試執行他們的任何工具,比如說不允許未經授權的用戶將可執行文件放在任何地方。
但是,DDexec的出現改變了這種情況。
技術機制
1、大多數的Shell解釋器都允許創建文件描述符,而這些文件描述符隨后將被子進程繼承。我們可以創建一個fd,并指向Shell(帶有寫入權限)的mem文件,此時子進程將使用這個fd并修改Shell的內存;
2、ASLR不會成為“攔路虎”,因為我們可以檢查Shell的maps文件或其他信息來獲取關于進程地址空間的相關信息;
3、使用lseek()來對文件進行查詢,在Shell的幫助下,我們可以使用dd工具輕松實現;
工具下載
廣大研究人員可以使用下列命令將該項目源碼克隆至本地:
git clone https://github.com/arget13/DDexec.git
依賴組件
該腳本依賴下列組件實現其功能:
dd
bash | zsh | ash (busybox)
head
tail
cut
grep
od
readlink
wc
tr
base64
工具使用
將ddexec.sh注入到需要運行的Base64源代碼中,注意不要有換行符出現。腳本的參數也就是程序的運行參數,以“argv[0]”開始。
下面給出的是一個使用樣例:
base64 -w0 /bin/ls | bash ddexec.sh /bin/ls -lA
項目中還提供了一個ddsc.sh腳本,該腳本允許我們直接運行二進制代碼,下面給出的是一段“Hello world”的Shellcode:
bash ddsc.sh -x <<< "4831c0fec089c7488d3510000000ba0c0000000f054831c089c7b03c0f0548656c6c6f20776f726c640a00"
或者:
bash ddsc.sh < <(xxd -ps -r <<< "4831c0fec089c7488d3510000000ba0c0000000f054831c089c7b03c0f0548656c6c6f20776f726c640a00")
沒錯,這種方法也適用于Meterpreter。
該工具目前已經在Debian、Alpine和Arch平臺上進行過測試,支持的Shell包括Bash、zsh和ash,且支持x86_64和aarch64(arm64)架構。
許可證協議
本項目的開發與發布遵循GPL-3.0開源許可證協議。
項目地址
DDexec:【GitHub傳送門】
參考資料
https://porkmail.org/era/unix/award.html
https://www.sektor7.net/
https://blog.sektor7.net/#!res/2018/pure-in-memory-linux.md
https://github.com/carlospolop
https://book.hacktricks.xyz/
https://github.com/carlospolop/PEASS-ng
https://rootedcon.com/
一顆小胡椒
暫無描述