githubEdit

SSH (Secure Shell) Pentesting

SSH is a cryptographic network protocol for operating network services securely over an unsecured network. A default port is 22.

Enumeration

nmap --script ssh-brute -p 22 <target-ip>
nmap --script ssh-auth-methods --script-args="ssh.user=username" -p 22 <target-ip>
nmap --script ssh-* -p 22 <target-ip>

# User enumeration
msfconsole
msf> use auxiliary/scanner/ssh/ssh_enumusers

Brute Force Credentials

# -t: tasks
hydra -l username -P passwords.txt <target-ip> ssh -t 4
hydra -L usernames.txt -p password <target-ip> ssh -t 4

# Specific ports
hydra -l username -P passwords.txt -s 2222 <target-ip> ssh -t 4
hydra -l username -P passwords.txt ssh://<target-ip>:2222 -t 4

If the target host opens port 80 or 443, you can generate wordlist from the contents of the website then use Hydra.

cewl http://<target-ip> > wordlist.txt

Crack SSH Private Key

First of all, you need to format the private key to make John to recognize it.

Crack the password of the private key using the formatted text.

Investigation

Also, ssh-auditarrow-up-right is an useful tool for SSH server and client auditing.

Configuration Files

Connect

If you know a target credential, you can connect a remote server over SSH using the credential.

Additional Options

If we got the error message "no matching host key type found. Their offer: ssh-rsa...", add the following flag.

If we got error "no matching key exchange method found. Their offer: diffie-hellman-...", add the "KexAlgorithms" flag as below.

Execute Commands after Connecting

Test Connection

Connect to Windows via Active Directory

Connect using an Existing Private Key

  1. Copy the Content of id_rsa (Private Key)

    In remote machine,

  2. Create New Private Key in Local Machine

    Don't forget to change permission this file. Otherwise, you cannot connect remote server.

  3. Connect using Private Key

    If the error “error in libcrypto” occured, edit the format of the RSA private key. The correct format is below:

Transfer Files

Send a File/Directory to Another Machine

Download a File/Directory from Another Machine

If you get error “connection refused”, the SSH server is not running in another machine. So you need to start the SSH server.

Create SSH Keys

Generate Keys

Install SSH Key

In target machine,

Generate SSH Keys and Set Up Public Key to Connect Remote Machine

1. Check if authorized_keys Exists in Remote Machine

If it exists, you may be able to connect SSH with your keys as victim user.

2. Generate SSH Keys in Local Machine

Then copy the content of public key you generated.

3. Add the Content of Publick Key to authorized_keys

In remote machine,

4. Login with Private Key

In local machine, we have a SSH private key in local machine so we can login the target SSH server with it.

SSH Server

Start/Stop/Restart

  • Start

  • Stop

  • Restart

Status

Configuration

Check for any Established Connection

To get the “pts/# terminal”, run the following command. The pts stands for pseudo terminal slave.

To kill any connections, run the following commands.

Logs

SSH Proxy Server

Sshuttle

sshuttlearrow-up-right is transparent proxy server that works as a poor man's VPN. Forwards over ssh.

Then you can access to other networks.

  • Troubleshooting

    If you get the error "Failed to flush caches: Unit dbus-org.freedesktop.resolve1.service not found...", you need to flush DNS cache.

    Run sshuttle again.

SSH-MITM for Stealing Credentials

If the target system user try to connect arbitrary host using SSH, we might be able to steal credentials by listening via the SSH man-in-the-middle server. Run the following command in local machine.

2FA Bypass

When logging in to SSH with 2FA enabled, we will be asked for a Verification Code.

Google Authenticator

If the Google Authenticator is used, the secret key of TOTP can be stored in $HOME/.google_authenticator according to the repoarrow-up-right.

After getting the secret key, now access to Online one-time password generatorarrow-up-right and input the secret key, then get TOTP. Now login SSH with ssh command and input the TOTP for verification code.

References

Last updated