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
Brute Force Credentials
If the target host opens port 80 or 443, you can generate wordlist from the contents of the website then use Hydra.
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
Banner Grabbing
Also, ssh-audit 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
Copy the Content of id_rsa (Private Key)
In remote machine,
Create New Private Key in Local Machine
Don't forget to change permission this file. Otherwise, you cannot connect remote server.
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 From Remote to Local → 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,
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
sshuttle 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.
Last updated