2015-12-23 04:56:13 +02:00
|
|
|
# ssh-audit
|
2019-08-29 15:34:19 -04:00
|
|
|
<!--
|
2017-03-28 17:08:36 +03:00
|
|
|
[](https://travis-ci.org/arthepsy/ssh-audit)
|
|
|
|
[](https://ci.appveyor.com/project/arthepsy/ssh-audit)
|
2017-03-25 08:02:49 +02:00
|
|
|
[](https://codecov.io/gh/arthepsy/ssh-audit)
|
2017-04-05 04:25:01 +03:00
|
|
|
[](https://sq.evolutiongaming.com/dashboard?id=arthepsy-github%3Assh-audit%3Adevelop)
|
2019-08-29 15:34:19 -04:00
|
|
|
-->
|
2019-10-07 10:59:52 -04:00
|
|
|
**ssh-audit** is a tool for ssh server & client configuration auditing.
|
2015-12-23 05:52:21 +02:00
|
|
|
|
|
|
|
## Features
|
2016-09-20 12:26:14 +03:00
|
|
|
- SSH1 and SSH2 protocol server support;
|
2019-10-07 10:59:52 -04:00
|
|
|
- analyze SSH client configuration;
|
2016-09-20 12:26:14 +03:00
|
|
|
- grab banner, recognize device or software and operating system, detect compression;
|
2015-12-23 05:52:21 +02:00
|
|
|
- gather key-exchange, host-key, encryption and message authentication code algorithms;
|
|
|
|
- output algorithm information (available since, removed/disabled, unsafe/weak/legacy, etc);
|
2016-10-10 14:08:01 +03:00
|
|
|
- output algorithm recommendations (append or remove based on recognized software version);
|
2016-09-20 12:26:14 +03:00
|
|
|
- output security information (related issues, assigned CVE list, etc);
|
2016-08-12 16:33:34 +03:00
|
|
|
- analyze SSH version compatibility based on algorithm information;
|
2016-10-10 14:08:01 +03:00
|
|
|
- historical information from OpenSSH, Dropbear SSH and libssh;
|
2019-09-27 18:19:49 -04:00
|
|
|
- no dependencies
|
2015-12-23 05:52:21 +02:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
```
|
2019-11-08 11:10:41 -05:00
|
|
|
usage: ssh-audit.py [-1246pbcnjvlt] <host>
|
2015-12-23 05:52:21 +02:00
|
|
|
|
2016-09-20 12:26:14 +03:00
|
|
|
-1, --ssh1 force ssh version 1 only
|
2016-09-24 22:02:39 +02:00
|
|
|
-2, --ssh2 force ssh version 2 only
|
2016-10-26 18:56:38 +03:00
|
|
|
-4, --ipv4 enable IPv4 (order of precedence)
|
|
|
|
-6, --ipv6 enable IPv6 (order of precedence)
|
|
|
|
-p, --port=<port> port to connect
|
2016-09-02 18:08:15 +03:00
|
|
|
-b, --batch batch output
|
2019-09-27 18:16:50 -04:00
|
|
|
-c, --client-audit starts a server on port 2222 to audit client
|
2019-11-06 20:40:25 -05:00
|
|
|
software config (use -p to change port;
|
|
|
|
use -t to change timeout)
|
2016-09-02 18:08:15 +03:00
|
|
|
-n, --no-colors disable colors
|
2019-11-07 22:08:09 +01:00
|
|
|
-j, --json JSON output
|
2016-09-02 18:08:15 +03:00
|
|
|
-v, --verbose verbose output
|
|
|
|
-l, --level=<level> minimum output level (info|warn|fail)
|
2019-08-18 10:03:03 -04:00
|
|
|
-t, --timeout=<secs> timeout (in seconds) for connection and reading
|
2019-09-27 18:16:50 -04:00
|
|
|
(default: 5)
|
2015-12-23 05:52:21 +02:00
|
|
|
```
|
2016-10-26 18:56:38 +03:00
|
|
|
* if both IPv4 and IPv6 are used, order of precedence can be set by using either `-46` or `-64`.
|
2016-09-02 18:08:15 +03:00
|
|
|
* batch flag `-b` will output sections without header and without empty lines (implies verbose flag).
|
|
|
|
* verbose flag `-v` will prefix each line with section type and algorithm name.
|
2015-12-23 05:52:21 +02:00
|
|
|
|
2019-10-07 10:59:52 -04:00
|
|
|
### Server Audit Example
|
2019-11-14 08:56:14 -05:00
|
|
|
Below is a screen shot of the server-auditing output when connecting to an unhardened OpenSSH v5.3 service:
|
2019-09-05 18:52:32 -04:00
|
|
|

|
2015-12-23 05:52:21 +02:00
|
|
|
|
2019-10-07 10:59:52 -04:00
|
|
|
### Client Audit Example
|
2019-11-14 08:56:14 -05:00
|
|
|
Below is a screen shot of the client-auditing output when an unhardened OpenSSH v7.2 client connects:
|
2019-11-14 10:15:30 -05:00
|
|
|

|
2019-10-07 10:59:52 -04:00
|
|
|
|
2015-12-23 05:52:21 +02:00
|
|
|
## ChangeLog
|
2019-11-14 08:56:14 -05:00
|
|
|
### v2.1.0 (2019-11-14)
|
2019-10-07 10:59:52 -04:00
|
|
|
- Added client software auditing functionality (see `-c` / `--client-audit` option).
|
2019-11-14 08:56:14 -05:00
|
|
|
- Added JSON output option (see `-j` / `--json` option; credit [Andreas Jaggi](https://github.com/x-way)).
|
2019-09-19 20:10:37 -04:00
|
|
|
- Fixed crash while scanning Solaris Sun_SSH.
|
Added five kex algorithms: gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group14-sha1-, gss-group14-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group14-sha256-toWM5Slw5Ew8Mqkay+al2g==, gss-group15-sha512-toWM5Slw5Ew8Mqkay+al2g==; added four ciphers: idea-cbc, serpent128-cbc, serpent192-cbc, serpent256-cbc; added four MACs: hmac-ripemd, hmac-sha256-96@ssh.com, umac-32@openssh.com, umac-96@openssh.com.
2019-10-25 11:27:22 -04:00
|
|
|
- Added 9 new key exchanges: `gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==`, `gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==`, `gss-group14-sha1-`, `gss-group14-sha1-toWM5Slw5Ew8Mqkay+al2g==`, `gss-group14-sha256-toWM5Slw5Ew8Mqkay+al2g==`, `gss-group15-sha512-toWM5Slw5Ew8Mqkay+al2g==`, `diffie-hellman-group15-sha256`, `ecdh-sha2-1.3.132.0.10`, `curve448-sha512`.
|
2019-09-19 22:19:26 -04:00
|
|
|
- Added 1 new host key type: `ecdsa-sha2-1.3.132.0.10`.
|
Added five kex algorithms: gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group14-sha1-, gss-group14-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group14-sha256-toWM5Slw5Ew8Mqkay+al2g==, gss-group15-sha512-toWM5Slw5Ew8Mqkay+al2g==; added four ciphers: idea-cbc, serpent128-cbc, serpent192-cbc, serpent256-cbc; added four MACs: hmac-ripemd, hmac-sha256-96@ssh.com, umac-32@openssh.com, umac-96@openssh.com.
2019-10-25 11:27:22 -04:00
|
|
|
- Added 4 new ciphers: `idea-cbc`, `serpent128-cbc`, `serpent192-cbc`, `serpent256-cbc`.
|
|
|
|
- Added 6 new MACs: `hmac-sha2-256-96-etm@openssh.com`, `hmac-sha2-512-96-etm@openssh.com`, `hmac-ripemd`, `hmac-sha256-96@ssh.com`, `umac-32@openssh.com`, `umac-96@openssh.com`.
|
2019-08-29 16:52:38 -04:00
|
|
|
|
2019-08-29 15:34:19 -04:00
|
|
|
### v2.0.0 (2019-08-29)
|
2019-08-22 15:49:10 -04:00
|
|
|
- Forked from https://github.com/arthepsy/ssh-audit (development was stalled, and developer went MIA).
|
|
|
|
- Added RSA host key length test.
|
|
|
|
- Added RSA certificate key length test.
|
|
|
|
- Added Diffie-Hellman modulus size test.
|
|
|
|
- Now outputs host key fingerprints for RSA and ED25519.
|
2019-08-26 15:28:37 -04:00
|
|
|
- Added 5 new key exchanges: `sntrup4591761x25519-sha512@tinyssh.org`, `diffie-hellman-group-exchange-sha256@ssh.com`, `diffie-hellman-group-exchange-sha512@ssh.com`, `diffie-hellman-group16-sha256`, `diffie-hellman-group17-sha512`.
|
2019-08-22 15:54:14 -04:00
|
|
|
- Added 3 new encryption algorithms: `des-cbc-ssh1`, `blowfish-ctr`, `twofish-ctr`.
|
2019-08-26 15:19:49 -04:00
|
|
|
- Added 10 new MACs: `hmac-sha2-56`, `hmac-sha2-224`, `hmac-sha2-384`, `hmac-sha3-256`, `hmac-sha3-384`, `hmac-sha3-512`, `hmac-sha256`, `hmac-sha256@ssh.com`, `hmac-sha512`, `hmac-512@ssh.com`.
|
2019-11-14 08:56:14 -05:00
|
|
|
- Added command line argument (`-t` / `--timeout`) for connection & reading timeouts.
|
2019-08-22 15:49:10 -04:00
|
|
|
- Updated CVEs for libssh & Dropbear.
|
|
|
|
|
2016-10-26 19:02:13 +03:00
|
|
|
### v1.7.0 (2016-10-26)
|
2016-10-26 18:56:38 +03:00
|
|
|
- implement options to allow specify IPv4/IPv6 usage and order of precedence
|
|
|
|
- implement option to specify remote port (old behavior kept for compatibility)
|
|
|
|
- add colors support for Microsoft Windows via optional colorama dependency
|
|
|
|
- fix encoding and decoding issues, add tests, do not crash on encoding errors
|
|
|
|
- use mypy-lang for static type checking and verify all code
|
|
|
|
|
2016-10-14 08:55:29 +03:00
|
|
|
### v1.6.0 (2016-10-14)
|
2016-10-10 14:03:45 +03:00
|
|
|
- implement algorithm recommendations section (based on recognized software)
|
|
|
|
- implement full libssh support (version history, algorithms, security, etc)
|
|
|
|
- fix SSH-1.99 banner recognition and version comparison functionality
|
|
|
|
- do not output empty algorithms (happens for misconfigured servers)
|
|
|
|
- make consistent output for Python 3.x versions
|
|
|
|
- add a lot more tests (conf, banner, software, SSH1/SSH2, output, etc)
|
|
|
|
- use Travis CI to test for multiple Python versions (2.6-3.5, pypy, pypy3)
|
2016-09-20 12:26:14 +03:00
|
|
|
|
|
|
|
### v1.5.0 (2016-09-20)
|
|
|
|
- create security section for related security information
|
|
|
|
- match and output assigned CVE list and security issues for Dropbear SSH
|
|
|
|
- implement full SSH1 support with fingerprint information
|
|
|
|
- automatically fallback to SSH1 on protocol mismatch
|
|
|
|
- add new options to force SSH1 or SSH2 (both allowed by default)
|
2016-10-26 05:52:58 +11:00
|
|
|
- parse banner information and convert it to specific software and OS version
|
2016-09-20 12:26:14 +03:00
|
|
|
- do not use padding in batch mode
|
|
|
|
- several fixes (Cisco sshd, rare hangs, error handling, etc)
|
|
|
|
|
2016-09-02 18:10:16 +03:00
|
|
|
### v1.0.20160902
|
|
|
|
- implement batch output option
|
|
|
|
- implement minimum output level option
|
|
|
|
- fix compatibility with Python 2.6
|
|
|
|
|
2016-08-12 16:29:51 +03:00
|
|
|
### v1.0.20160812
|
2016-08-12 16:33:34 +03:00
|
|
|
- implement SSH version compatibility feature
|
2016-08-12 16:29:51 +03:00
|
|
|
- fix wrong mac algorithm warning
|
|
|
|
- fix Dropbear SSH version typo
|
|
|
|
- parse pre-banner header
|
|
|
|
- better errors handling
|
|
|
|
|
2016-08-03 17:32:46 +03:00
|
|
|
### v1.0.20160803
|
|
|
|
- use OpenSSH 7.3 banner
|
|
|
|
- add new key-exchange algorithms
|
|
|
|
|
2016-03-07 13:01:57 +02:00
|
|
|
### v1.0.20160207
|
|
|
|
- use OpenSSH 7.2 banner
|
|
|
|
- additional warnings for OpenSSH 7.2
|
|
|
|
- fix OpenSSH 7.0 failure messages
|
|
|
|
- add rijndael-cbc failure message from OpenSSH 6.7
|
|
|
|
|
2016-01-05 14:14:50 +02:00
|
|
|
### v1.0.20160105
|
2016-01-05 18:04:49 +02:00
|
|
|
- multiple additional warnings
|
|
|
|
- support for none algorithm
|
2016-01-05 14:14:50 +02:00
|
|
|
- better compression handling
|
|
|
|
- ensure reading enough data (fixes few Linux SSH)
|
|
|
|
|
2015-12-30 13:17:58 +02:00
|
|
|
### v1.0.20151230
|
|
|
|
- Dropbear SSH support
|
|
|
|
|
2015-12-23 05:52:21 +02:00
|
|
|
### v1.0.20151223
|
|
|
|
- initial version
|