Initial
This commit is contained in:
commit
169641c514
2
CODEOWNERS
Normal file
2
CODEOWNERS
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Comment line immediately above ownership line is reserved for related gus information. Please be careful while editing.
|
||||||
|
#ECCN:Open Source
|
||||||
5
CONTRIBUTING-ARCHIVED.md
Normal file
5
CONTRIBUTING-ARCHIVED.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# ARCHIVED
|
||||||
|
|
||||||
|
This project is `Archived` and is no longer actively maintained;
|
||||||
|
We are not accepting contributions or Pull Requests.
|
||||||
|
|
||||||
12
LICENSE.txt
Normal file
12
LICENSE.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Copyright (c) 2018, Salesforce.com, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
78
README.md
Normal file
78
README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# "HASSH" - a Profiling Method for SSH Clients and Servers.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="logo.png" width="850" title="hassh">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
"HASSH" is a network fingerprinting standard which can be used to identify specific Client and Server SSH implementations. The fingerprints can be easily stored, searched and shared in the form of an MD5 fingerprint.
|
||||||
|
|
||||||
|
HASSH was invented at Salesforce in 2018. However, the project is no longer being actively maintained by Salesforce. Its original creator, Ben Reardon maintains the active fork at [Corelight](https://github.com/corelight/hassh)
|
||||||
|
|
||||||
|
[](https://opensource.org/licenses/BSD-3-Clause)
|
||||||
|
## What can HASSH help with:
|
||||||
|
- Use in highly controlled, well understood environments, where any fingerprints outside of a known good set are alertable.
|
||||||
|
- It is possible to detect, control and investigate brute force or Cred Stuffing password attempts at a higher level of granularity than IP Source - which may be impacted by NAT or botnet-like behaviour. The hassh will be a feature of the specific Client software implementation being used, even if the IP is NATed such that it is shared by many other SSH clients.
|
||||||
|
- Detect covert exfiltration of data within the components of the Client algorithm sets. In this case, a specially coded SSH Client can send data outbound from a trusted to a less trusted environment within a series of SSH_MSG_KEXINIT packets. In a scenario similar to the more known exfiltration via DNS, data could be sent as a series of attempted, but incomplete and unlogged connections to an SSH server controlled by bad actors who can then record, decode and reconstitute these pieces of data into their original form. Until now such attempts - much less the contents of the clear text packets - are not logged even by mature packet analyzers or on end point systems. Detection of this style of exfiltration can now be performed easily by using anomaly detection or alerting on SSH Clients with multiple different hassh
|
||||||
|
- Use in conjunction with other contextual indicators, for example detect Network discovery and Lateral movement attempts by unusual hassh such as those used by Paramiko, Powershell, Ruby, Meterpreter, Empire.
|
||||||
|
- Share malicious hassh as Indicators of Compromise.
|
||||||
|
- Create an additional level of Client application control, for example one could block all Clients from connecting to an SSH server that are outside of an approved known set of hassh values.
|
||||||
|
- Contribute to Non Repudiation in a Forensic context - at a higher level of abstraction than IPSource - which may be impacted by NAT, or where multiple IP Sources are used.
|
||||||
|
- Detect Deceptive Applications. Eg a hasshServer value known to belong to the Cowrie/Kippo SSH honeypot server installation, which is purporting to be a common OpenSSH server in the Server String.
|
||||||
|
- Detect devices having a hassh known to belong to IOT embedded systems. Examples may include cameras, mics, keyloggers, wiretaps that could be easily be hidden from view and communicating quietly over encrypted channels back to a control server.
|
||||||
|
|
||||||
|
## How does HASSH work:
|
||||||
|
"hassh" and "hasshServer" are MD5 hashes constructed from a specific set of algorithms that are supported by various SSH Client and Server Applications. These algorithms are exchanged after the initial TCP three-way handshake as clear-text packets known as "SSH_MSG_KEXINIT" messages, and are an integral part of the setup of the final encrypted SSH channel.
|
||||||
|
The existence and ordering of these algorithms is unique enough such that it can be used as a fingerprint to help identify the underlying Client and Server application or unique implementation, regardless of higher level ostensible identifiers such as "Client" or "Server" strings.
|
||||||
|
<p align="center">
|
||||||
|
<img src="packet_sequence.png" width="700" title="Packet sequence">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## Example 1: Client Fingerprinting - the "hassh"
|
||||||
|
For the "Cyberduck" SFTP client (specifically SSH-2.0-Cyberduck/6.7.1.28683 (Mac OS X/10.13.6) (x86_64)" , the set of supported algorithms is as follows :
|
||||||
|
|
||||||
|
|Function|Algorithms seen in SSH_MSG_KEXINIT packets|
|
||||||
|
| ------------- | ------------- |
|
||||||
|
|Key Exchange methods|```curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,diffie-hellman-group15-sha512,diffie-hellman-group16-sha512,diffie-hellman-group17-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256@ssh.com,diffie-hellman-group15-sha256,diffie-hellman-group15-sha256@ssh.com,diffie-hellman-group15-sha384@ssh.com,diffie-hellman-group16-sha256,diffie-hellman-group16-sha384@ssh.com,diffie-hellman-group16-sha512@ssh.com,diffie-hellman-group18-sha512@ssh.com```|
|
||||||
|
|Encryption| ```aes128-cbc,aes128-ctr,aes192-cbc,aes192-ctr,aes256-cbc,aes256-ctr,blowfish-cbc,blowfish-ctr,cast128-cbc,cast128-ctr,idea-cbc,idea-ctr,serpent128-cbc,serpent128-ctr,serpent192-cbc,serpent192-ctr,serpent256-cbc,serpent256-ctr,3des-cbc,3des-ctr,twofish128-cbc,twofish128-ctr,twofish192-cbc,twofish192-ctr,twofish256-cbc,twofish256-ctr,twofish-cbc,arcfour,arcfour128,arcfour256```|
|
||||||
|
|Message Authentication|```hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-sha2-256,hmac-sha2-512```|
|
||||||
|
|Compression|```zlib@openssh.com,zlib,none```|
|
||||||
|
|
||||||
|
Concatenating these algorithms together with a delimiter of ";" gives the hasshAlgorithms, which is useful for detailed analysis.
|
||||||
|
```curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,diffie-hellman-group15-sha512,diffie-hellman-group16-sha512,diffie-hellman-group17-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256@ssh.com,diffie-hellman-group15-sha256,diffie-hellman-group15-sha256@ssh.com,diffie-hellman-group15-sha384@ssh.com,diffie-hellman-group16-sha256,diffie-hellman-group16-sha384@ssh.com,diffie-hellman-group16-sha512@ssh.com,diffie-hellman-group18-sha512@ssh.com;aes128-cbc,aes128-ctr,aes192-cbc,aes192-ctr,aes256-cbc,aes256-ctr,blowfish-cbc,blowfish-ctr,cast128-cbc,cast128-ctr,idea-cbc,idea-ctr,serpent128-cbc,serpent128-ctr,serpent192-cbc,serpent192-ctr,serpent256-cbc,serpent256-ctr,3des-cbc,3des-ctr,twofish128-cbc,twofish128-ctr,twofish192-cbc,twofish192-ctr,twofish256-cbc,twofish256-ctr,twofish-cbc,arcfour,arcfour128,arcfour256;hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-sha2-256,hmac-sha2-512;zlib@openssh.com,zlib,none```
|
||||||
|
|
||||||
|
Finally the hassh is simply the MD5 of hasshAlgorithms, and is used for storage, searching and sharing. Some examples follow:
|
||||||
|
|
||||||
|
```de30354b88bae4c2810426614e1b6976``` Powershell Renci.SshNet.SshClient.0.0.1 (used by Empire exploit modules)
|
||||||
|
```fafc45381bfde997b6305c4e1600f1bf``` Ruby/Net::SSH_5.0.2 x86_64-linux (used by Metasploit exploit modules)
|
||||||
|
```b5752e36ba6c5979a575e43178908adf``` Python Paramiko_2.4.1 (used by Metasploit exploit modules)
|
||||||
|
```16f898dd8ed8279e1055350b4e20666c``` Dropbear_2012.55 (used in IOT embedded systems)
|
||||||
|
```8a8ae540028bf433cd68356c1b9e8d5b``` CyberDuck Version 6.7.1 (28683)
|
||||||
|
```06046964c022c6407d15a27b12a6a4fb``` OpenSSH_7.7p1 Ubuntu-4
|
||||||
|
|
||||||
|
## Example 2: Server Fingerprinting - the "hasshServer"
|
||||||
|
For a standard SSH-2.0-OpenSSH_5.3 SSH server, the set of supported algorithms is as follows :
|
||||||
|
|
||||||
|
|Function|Algorithms seen in SSH_MSG_KEXINIT packets|
|
||||||
|
| ------------- | ------------- |
|
||||||
|
|Key Exchange methods| ```diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1```|
|
||||||
|
|Encryption| ```aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se```|
|
||||||
|
|Message Authentication|```hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96```|
|
||||||
|
|Compression|```none,zlib@openssh.com```|
|
||||||
|
|
||||||
|
Concatenating these algorithms together with a delimiter of ";" gives the hasshServerAlgorithms, which is useful for detailed analysis.
|
||||||
|
```diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com```
|
||||||
|
|
||||||
|
Finally the hasshServer is simply the MD5 of hasshServerAlgorithms, some examples follow:
|
||||||
|
```c1c596caaeb93c566b8ecf3cae9b5a9e``` SSH-2.0-dropbear_2016.74
|
||||||
|
```d93f46d063c4382b6232a4d77db532b2``` SSH-2.0-dropbear_2016.72
|
||||||
|
```2dd9a9b3dbebfaeec8b8aabd689e75d2``` SSH-2.0-AWSCodeCommit
|
||||||
|
```696e7f84ac571fdf8fa5073e64ee2dc8``` SSH-2.0-FTP
|
||||||
|
|
||||||
|
## References:
|
||||||
|
- [RFC4253 The Secure Shell (SSH) Transport Layer Protocol](https://www.ietf.org/rfc/rfc4253.txt)
|
||||||
|
- [Salesforce Engineering blog](https://engineering.salesforce.com/open-sourcing-hassh-abed3ae5044c)
|
||||||
|
|
||||||
|
## Credits:
|
||||||
|
hassh and hasshServer were conceived and developed by [Ben Reardon](mailto:breardon@salesforce.com) ([@benreardon](https://twitter.com/@benreardon)) within the Detection Cloud Team at Salesforce, with inspiration and contributions from [Adel Karimi](mailto:akarimishiraz@salesforce.com) (@0x4d31) and the [JA3 crew](https://github.com/salesforce/ja3/) crew:[John B. Althouse](mailto:jalthouse@salesforce.com) , [Jeff Atkinson](mailto:jatkinson@salesforce.com) and [Josh Atkins](mailto:j.atkins@salesforce.com)
|
||||||
BIN
packet_sequence.png
Normal file
BIN
packet_sequence.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
BIN
python/.DS_Store
vendored
Normal file
BIN
python/.DS_Store
vendored
Normal file
Binary file not shown.
19
python/Pipfile
Normal file
19
python/Pipfile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[[source]]
|
||||||
|
|
||||||
|
url = "https://pypi.python.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
|
||||||
|
pyshark = "==0.4.1"
|
||||||
|
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
|
||||||
|
python_version = "3.7"
|
||||||
126
python/Pipfile.lock
generated
Normal file
126
python/Pipfile.lock
generated
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "2218728fac5a77bdbcf653ab0748df2b73086d0f1474afb327604592aa61b1b3"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.7"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.python.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"logbook": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0cf2cdbfb65a03b5987d19109dacad13417809dcf697f66e1a7084fb21744ea9",
|
||||||
|
"sha256:2dc85f1510533fddb481e97677bb7bca913560862734c0b3b289bfed04f78c92",
|
||||||
|
"sha256:56ee54c11df3377314cedcd6507638f015b4b88c0238c2e01b5eb44fd3a6ad1b",
|
||||||
|
"sha256:66f454ada0f56eae43066f604a222b09893f98c1adc18df169710761b8f32fe8",
|
||||||
|
"sha256:7c533eb728b3d220b1b5414ba4635292d149d79f74f6973b4aa744c850ca944a",
|
||||||
|
"sha256:8f76a2e7b1f72595f753228732f81ce342caf03babc3fed6bbdcf366f2f20f18",
|
||||||
|
"sha256:94e2e11ff3c2304b0d09a36c6208e5ae756eb948b210e5cbd63cd8d27f911542",
|
||||||
|
"sha256:97fee1bd9605f76335b169430ed65e15e457a844b2121bd1d90a08cf7e30aba0",
|
||||||
|
"sha256:e18f7422214b1cf0240c56f884fd9c9b4ff9d0da2eabca9abccba56df7222f66"
|
||||||
|
],
|
||||||
|
"version": "==1.5.3"
|
||||||
|
},
|
||||||
|
"lxml": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318",
|
||||||
|
"sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c",
|
||||||
|
"sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b",
|
||||||
|
"sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000",
|
||||||
|
"sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73",
|
||||||
|
"sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d",
|
||||||
|
"sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb",
|
||||||
|
"sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8",
|
||||||
|
"sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2",
|
||||||
|
"sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345",
|
||||||
|
"sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94",
|
||||||
|
"sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e",
|
||||||
|
"sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b",
|
||||||
|
"sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc",
|
||||||
|
"sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a",
|
||||||
|
"sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9",
|
||||||
|
"sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc",
|
||||||
|
"sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387",
|
||||||
|
"sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb",
|
||||||
|
"sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7",
|
||||||
|
"sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4",
|
||||||
|
"sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97",
|
||||||
|
"sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67",
|
||||||
|
"sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627",
|
||||||
|
"sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7",
|
||||||
|
"sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd",
|
||||||
|
"sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3",
|
||||||
|
"sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7",
|
||||||
|
"sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130",
|
||||||
|
"sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b",
|
||||||
|
"sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036",
|
||||||
|
"sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785",
|
||||||
|
"sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca",
|
||||||
|
"sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91",
|
||||||
|
"sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc",
|
||||||
|
"sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536",
|
||||||
|
"sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391",
|
||||||
|
"sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3",
|
||||||
|
"sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d",
|
||||||
|
"sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21",
|
||||||
|
"sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3",
|
||||||
|
"sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d",
|
||||||
|
"sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29",
|
||||||
|
"sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715",
|
||||||
|
"sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed",
|
||||||
|
"sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25",
|
||||||
|
"sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c",
|
||||||
|
"sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785",
|
||||||
|
"sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837",
|
||||||
|
"sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4",
|
||||||
|
"sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b",
|
||||||
|
"sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2",
|
||||||
|
"sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067",
|
||||||
|
"sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448",
|
||||||
|
"sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d",
|
||||||
|
"sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2",
|
||||||
|
"sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc",
|
||||||
|
"sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c",
|
||||||
|
"sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5",
|
||||||
|
"sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84",
|
||||||
|
"sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8",
|
||||||
|
"sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf",
|
||||||
|
"sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7",
|
||||||
|
"sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e",
|
||||||
|
"sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb",
|
||||||
|
"sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b",
|
||||||
|
"sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3",
|
||||||
|
"sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad",
|
||||||
|
"sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8",
|
||||||
|
"sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==4.9.1"
|
||||||
|
},
|
||||||
|
"py": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719",
|
||||||
|
"sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||||
|
"version": "==1.11.0"
|
||||||
|
},
|
||||||
|
"pyshark": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:8965e8e2da50a7fe97f80b0b8db676a0bfc131aa8f4d6017e6b0cedc46b11288"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
||||||
158
python/README.md
Normal file
158
python/README.md
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
# HASSH.py
|
||||||
|
|
||||||
|
[](https://opensource.org/licenses/BSD-3-Clause)
|
||||||
|
|
||||||
|
HASSH is a method for creating SSH Client and Server fingerprints. This python script generates HASSH fingerprints from input PCAP files and live network traffic.
|
||||||
|
|
||||||
|
You can use [hasshGen.py](hasshGen/) to automate building docker images with different SSH clients/versions for generating HASSH fingerprints. As a demonstration we created a list ([sshClient_list](hasshGen/sshClient_list)) containing 49 different version of OpenSSH, Python’s paramiko and Dropbear SSH clients and generated a database of HASSH fingerprints in [JSON](hasshGen/hassh_fingerprints.json) and [CSV](hasshGen/hassh_fingerprints.csv) formats.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
1. Install Tshark.
|
||||||
|
> `apt-get install tshark` on Debian/Ubuntu or `yum install wireshark` on Centos 7
|
||||||
|
|
||||||
|
|
||||||
|
2. Install Pipenv:
|
||||||
|
> `pip3 install pipenv`
|
||||||
|
|
||||||
|
3. Install dependencies:
|
||||||
|
> `pipenv install`
|
||||||
|
|
||||||
|
4. Test:
|
||||||
|
|
||||||
|
To activate the virtualenv, run pipenv shell:
|
||||||
|
```
|
||||||
|
$ pipenv shell
|
||||||
|
(python-ZnElGiuE) bash-3.2$ python3 hassh.py -h
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, run a command inside the virtualenv with pipenv run:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ pipenv run python3 hassh.py -h
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
```
|
||||||
|
usage: hassh.py [-h] [-r READ_FILE] [-d READ_DIRECTORY] [-i INTERFACE]
|
||||||
|
[-fp {client,server}] [-da DECODE_AS] [-f BPF_FILTER]
|
||||||
|
[-l {json,csv}] [-o OUTPUT_FILE] [-w WRITE_PCAP] [-p]
|
||||||
|
|
||||||
|
A python script for extracting HASSH fingerprints
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-r READ_FILE, --read_file READ_FILE
|
||||||
|
pcap file to process
|
||||||
|
-d READ_DIRECTORY, --read_directory READ_DIRECTORY
|
||||||
|
directory of pcap files to process
|
||||||
|
-i INTERFACE, --interface INTERFACE
|
||||||
|
listen on interface
|
||||||
|
-fp {client,server}, --fingerprint {client,server}
|
||||||
|
client or server fingerprint. Default: all
|
||||||
|
-da DECODE_AS, --decode_as DECODE_AS
|
||||||
|
a dictionary of {decode_criterion_string:
|
||||||
|
decode_as_protocol} that are used to tell tshark to
|
||||||
|
decode protocols in situations it wouldn't usually.
|
||||||
|
Default: {'tcp.port==2222': 'ssh'}.
|
||||||
|
-f BPF_FILTER, --bpf_filter BPF_FILTER
|
||||||
|
BPF capture filter to use (for live capture only).
|
||||||
|
Default: 'tcp port 22 or tcp port 2222'
|
||||||
|
-l {json,csv}, --log_format {json,csv}
|
||||||
|
specify the output log format (json/csv)
|
||||||
|
-o OUTPUT_FILE, --output_file OUTPUT_FILE
|
||||||
|
specify the output log file. Default: hassh.log
|
||||||
|
-w WRITE_PCAP, --write_pcap WRITE_PCAP
|
||||||
|
save the live captured packets to this file
|
||||||
|
-p, --print_output print the output
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
* Live network traffic capture:
|
||||||
|
```
|
||||||
|
$ python3 hassh.py -i eth0 -l json -o hassh.json --print
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
```
|
||||||
|
[+] Server SSH_MSG_KEXINIT detected
|
||||||
|
[ 192.1.2.3:22 -> 10.1.2.3:52068 ]
|
||||||
|
[-] Identification String: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
|
||||||
|
[-] hasshServer: d43d91bc39d5aaed819ad9f6b57b7348
|
||||||
|
[-] hasshServer Algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com
|
||||||
|
[+] Client SSH_MSG_KEXINIT detected
|
||||||
|
[ 10.1.2.3:52068 -> 192.1.2.3:22 ]
|
||||||
|
[-] Identification String: SSH-2.0-OpenSSH_7.6
|
||||||
|
[-] hassh: 06046964c022c6407d15a27b12a6a4fb
|
||||||
|
[-] hassh Algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib
|
||||||
|
```
|
||||||
|
|
||||||
|
JSON Output:
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
"timestamp": "2018-09-04T18:57:03.644663",
|
||||||
|
"sourceIp": "10.1.2.3",
|
||||||
|
"destinationIp": "192.1.2.3",
|
||||||
|
"sourcePort": "52068",
|
||||||
|
"destinationPort": "22",
|
||||||
|
"client": "SSH-2.0-OpenSSH_7.6",
|
||||||
|
"hassh": "06046964c022c6407d15a27b12a6a4fb",
|
||||||
|
"hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib",
|
||||||
|
"hasshVersion": "1.0",
|
||||||
|
"ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c",
|
||||||
|
"ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com",
|
||||||
|
"cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1",
|
||||||
|
"ccacts": "none,zlib@openssh.com,zlib",
|
||||||
|
"clcts": "[Empty]",
|
||||||
|
"clstc": "[Empty]",
|
||||||
|
"ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com",
|
||||||
|
"cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1",
|
||||||
|
"ccastc": "none,zlib@openssh.com,zlib",
|
||||||
|
"cshka": "ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"timestamp": "2018-09-04T18:57:04.534235",
|
||||||
|
"eventType": "retransmission",
|
||||||
|
"eventMessage": "This packet is a (suspected) retransmission",
|
||||||
|
"sourceIp": "10.1.2.3",
|
||||||
|
"destinationIp": "192.1.2.3",
|
||||||
|
"sourcePort": "52068",
|
||||||
|
"destinationPort": "22"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Reading from an input PCAP file (```-r pcapfile.pcap```) or a directory of PCAP files (```-d pcap_dir/```):
|
||||||
|
|
||||||
|
```
|
||||||
|
$ python3 hassh.py -r traffic.pcap -l csv -o hassh.csv --print
|
||||||
|
```
|
||||||
|
|
||||||
|
CSV Output:
|
||||||
|
```
|
||||||
|
timestamp,sourceIp,destinationIp,sourcePort,destinationPort,hasshType,identificationString,hassh,hasshVersion,hasshAlgorithms,kexAlgs,encAlgs,macAlgs,cmpAlgs
|
||||||
|
2018-09-04T18:57:03.642572,192.1.2.3,10.1.2.3,22,52068,server,"SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4",d43d91bc39d5aaed819ad9f6b57b7348,1.0,"curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1","chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com","umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1","none,zlib@openssh.com"
|
||||||
|
2018-09-04T18:57:03.644663,10.1.2.3,192.1.2.3,52068,22,client,"SSH-2.0-OpenSSH_7.6",06046964c022c6407d15a27b12a6a4fb,1.0,"curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c","chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com","umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1","none,zlib@openssh.com,zlib"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
A dockerized version of hassh.py can be used to extract HASSH fingerprints from input PCAP files and live network traffic.
|
||||||
|
|
||||||
|
Build the docker image using Dockerfile:
|
||||||
|
```
|
||||||
|
$ docker build -t hassh:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
* Reading from input PCAP files:
|
||||||
|
|
||||||
|
You can mount your host ~/pcap dir to copy pcap files to the container and also keep the logs on your host:
|
||||||
|
```
|
||||||
|
$ docker run -v ~/pcap:/tmp/ -it hassh:latest -d /tmp/ -l json -o /tmp/log.json
|
||||||
|
```
|
||||||
|
|
||||||
|
* Live network traffic capture:
|
||||||
|
```
|
||||||
|
$ docker run --net=host -it hassh:latest -i any --print
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: According to Docker's [docs](https://docs.docker.com/network/host/), the host networking driver only works on Linux hosts, and is not supported on Docker for Mac, Docker for Windows, or Docker EE for Windows Server.
|
||||||
27
python/docker/Dockerfile
Normal file
27
python/docker/Dockerfile
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Copyright (c) 2018, salesforce.com, inc.
|
||||||
|
# All rights reserved.
|
||||||
|
# Licensed under the BSD 3-Clause license.
|
||||||
|
# For full license text, see the LICENSE file in the repo root
|
||||||
|
# or https://opensource.org/licenses/BSD-3-Clause
|
||||||
|
#
|
||||||
|
# A dockerized version of hassh.py can be used to extract HASSH fingerprints from input PCAP files and live network traffic.
|
||||||
|
#
|
||||||
|
# Build the docker image using Dockerfile:
|
||||||
|
# $ docker build -t hassh:latest .
|
||||||
|
# - Reading from input PCAP files:
|
||||||
|
# You can mount your host ~/pcap dir to copy pcap files to the container and also keep the logs on your host:
|
||||||
|
# $ docker run -v ~/pcap:/tmp/ -it hassh:latest -d /tmp/ -l json -o /tmp/log.json
|
||||||
|
# - Live network traffic capture:
|
||||||
|
# $ docker run --net=host -it hassh:latest -i any --print
|
||||||
|
# Note: According to Docker's docs, the host networking driver only works on Linux hosts, and is not supported on Docker for Mac, Docker for Windows, or Docker EE for Windows Server.
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
MAINTAINER Adel Karimi (@0x4d31)
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
RUN apk --no-cache add python3 gcc \
|
||||||
|
py3-pip py3-lxml tshark \
|
||||||
|
&& pip3 install pyshark
|
||||||
|
WORKDIR /opt/hassh
|
||||||
|
ADD https://raw.githubusercontent.com/salesforce/hassh/master/python/hassh.py .
|
||||||
|
ENTRYPOINT ["python3","hassh.py"]
|
||||||
|
CMD ["-h"]
|
||||||
428
python/hassh.py
Normal file
428
python/hassh.py
Normal file
@ -0,0 +1,428 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2018, salesforce.com, inc.
|
||||||
|
# All rights reserved.
|
||||||
|
# Licensed under the BSD 3-Clause license.
|
||||||
|
# For full license text, see the LICENSE file in the repo root
|
||||||
|
# or https://opensource.org/licenses/BSD-3-Clause
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import pyshark
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
import textwrap
|
||||||
|
from hashlib import md5
|
||||||
|
|
||||||
|
__author__ = "Adel '0x4D31' Karimi"
|
||||||
|
__email__ = "akarimishiraz@salesforce.com"
|
||||||
|
__version__ = "1.1"
|
||||||
|
__copyright__ = "Copyright (c) 2018, salesforce.com, inc."
|
||||||
|
__license__ = "BSD 3-Clause License"
|
||||||
|
__credits__ = ["Ben Reardon", "Adel Karimi", "John B. Althouse",
|
||||||
|
"Jeff Atkinson", "Josh Atkins"]
|
||||||
|
|
||||||
|
HASSH_VERSION = '1.0'
|
||||||
|
CAP_BPF_FILTER = 'tcp port 22 or tcp port 2222'
|
||||||
|
DECODE_AS = {'tcp.port==2222': 'ssh'}
|
||||||
|
|
||||||
|
protocol_dict = {}
|
||||||
|
|
||||||
|
|
||||||
|
class color:
|
||||||
|
CL1 = '\u001b[38;5;81m'
|
||||||
|
CL2 = '\u001b[38;5;220m'
|
||||||
|
CL3 = '\u001b[38;5;181m'
|
||||||
|
CL4 = '\u001b[38;5;208m'
|
||||||
|
END = '\033[0m'
|
||||||
|
|
||||||
|
|
||||||
|
def process_packet(packet, logf, fingerprint, pout):
|
||||||
|
logger = logging.getLogger()
|
||||||
|
global protocol_dict
|
||||||
|
|
||||||
|
if not packet.highest_layer == 'SSH':
|
||||||
|
return
|
||||||
|
# Extract SSH identification string and correlate with KEXINIT msg
|
||||||
|
if 'protocol' in packet.ssh.field_names:
|
||||||
|
protocol = packet.ssh.protocol
|
||||||
|
srcip = packet.ip.src
|
||||||
|
dstip = packet.ip.dst
|
||||||
|
sport = packet.tcp.srcport
|
||||||
|
dport = packet.tcp.srcport
|
||||||
|
key = '{}:{}_{}:{}'.format(srcip, sport, dstip, dport)
|
||||||
|
protocol_dict[key] = protocol
|
||||||
|
if 'message_code' not in packet.ssh.field_names:
|
||||||
|
return
|
||||||
|
if packet.ssh.message_code != '20':
|
||||||
|
return
|
||||||
|
if ("analysis_retransmission" in packet.tcp.field_names or
|
||||||
|
"analysis_spurious_retransmission" in packet.tcp.field_names):
|
||||||
|
event = event_log(packet, event="retransmission")
|
||||||
|
if logf == 'json':
|
||||||
|
logger.info(json.dumps(event))
|
||||||
|
return
|
||||||
|
# Client HASSH
|
||||||
|
if ((fingerprint == 'client' or fingerprint == 'all')
|
||||||
|
and int(packet.tcp.srcport) > int(packet.tcp.dstport)):
|
||||||
|
record = client_hassh(packet)
|
||||||
|
if logf == 'json':
|
||||||
|
logger.info(json.dumps(record))
|
||||||
|
elif logf == 'csv':
|
||||||
|
csv_record = csv_logging(record)
|
||||||
|
logger.info(csv_record)
|
||||||
|
# Print the result
|
||||||
|
if not pout:
|
||||||
|
return
|
||||||
|
tmp = textwrap.dedent("""\
|
||||||
|
[+] Client SSH_MSG_KEXINIT detected
|
||||||
|
{cl1}[ {sip}:{sport} -> {dip}:{dport} ]{cl1e}
|
||||||
|
[-] Identification String: {cl2}{proto}{cl2e}
|
||||||
|
[-] hassh: {cl2}{hassh}{cl2e}
|
||||||
|
[-] hassh Algorithms: {cl3}{hasshv}{cl3e}""")
|
||||||
|
tmp = tmp.format(
|
||||||
|
cl1=color.CL1,
|
||||||
|
sip=record['sourceIp'],
|
||||||
|
sport=record['sourcePort'],
|
||||||
|
dip=record['destinationIp'],
|
||||||
|
dport=record['destinationPort'],
|
||||||
|
cl1e=color.END,
|
||||||
|
cl2=color.CL2,
|
||||||
|
hassh=record['hassh'],
|
||||||
|
cl2e=color.END,
|
||||||
|
cl3=color.CL3,
|
||||||
|
hasshv=record['hasshAlgorithms'],
|
||||||
|
cl3e=color.END,
|
||||||
|
proto=record['client'])
|
||||||
|
print(tmp)
|
||||||
|
# Server HASSH
|
||||||
|
elif ((fingerprint == 'server' or fingerprint == 'all')
|
||||||
|
and int(packet.tcp.srcport) < int(packet.tcp.dstport)):
|
||||||
|
record = server_hassh(packet)
|
||||||
|
if logf == 'json':
|
||||||
|
logger.info(json.dumps(record))
|
||||||
|
elif logf == 'csv':
|
||||||
|
csv_record = csv_logging(record)
|
||||||
|
logger.info(csv_record)
|
||||||
|
# Print the result
|
||||||
|
if not pout:
|
||||||
|
return
|
||||||
|
tmp = textwrap.dedent("""\
|
||||||
|
[+] Server SSH_MSG_KEXINIT detected
|
||||||
|
{cl1}[ {sip}:{sport} -> {dip}:{dport} ]{cl1e}
|
||||||
|
[-] Identification String: {cl4}{proto}{cl4e}
|
||||||
|
[-] hasshServer: {cl4}{hasshs}{cl4e}
|
||||||
|
[-] hasshServer Algorithms: {cl3}{hasshsv}{cl3e}""")
|
||||||
|
tmp = tmp.format(
|
||||||
|
cl1=color.CL1,
|
||||||
|
sip=record['sourceIp'],
|
||||||
|
sport=record['sourcePort'],
|
||||||
|
dip=record['destinationIp'],
|
||||||
|
dport=record['destinationPort'],
|
||||||
|
cl1e=color.END,
|
||||||
|
cl4=color.CL4,
|
||||||
|
hasshs=record['hasshServer'],
|
||||||
|
cl4e=color.END,
|
||||||
|
cl3=color.CL3,
|
||||||
|
hasshsv=record['hasshServerAlgorithms'],
|
||||||
|
cl3e=color.END,
|
||||||
|
proto=record['server'])
|
||||||
|
print(tmp)
|
||||||
|
|
||||||
|
|
||||||
|
def event_log(packet, event):
|
||||||
|
"""log the anomalous packets"""
|
||||||
|
if event == "retransmission":
|
||||||
|
event_message = "This packet is a (suspected) retransmission"
|
||||||
|
# Report the event (only for JSON output)
|
||||||
|
msg = {"timestamp": packet.sniff_time.isoformat(),
|
||||||
|
"eventType": event,
|
||||||
|
"eventMessage": event_message,
|
||||||
|
"sourceIp": packet.ip.src,
|
||||||
|
"destinationIp": packet.ip.dst,
|
||||||
|
"sourcePort": packet.tcp.srcport,
|
||||||
|
"destinationPort": packet.tcp.dstport}
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
def client_hassh(packet):
|
||||||
|
"""returns HASSH (i.e. SSH Client Fingerprint)
|
||||||
|
HASSH = md5(KEX;EACTS;MACTS;CACTS)
|
||||||
|
"""
|
||||||
|
srcip = packet.ip.src
|
||||||
|
dstip = packet.ip.dst
|
||||||
|
sport = packet.tcp.srcport
|
||||||
|
dport = packet.tcp.srcport
|
||||||
|
protocol = None
|
||||||
|
key = '{}:{}_{}:{}'.format(srcip, sport, dstip, dport)
|
||||||
|
if key in protocol_dict:
|
||||||
|
protocol = protocol_dict[key]
|
||||||
|
# hassh fields
|
||||||
|
ckex = ceacts = cmacts = ccacts = ""
|
||||||
|
if 'kex_algorithms' in packet.ssh.field_names:
|
||||||
|
ckex = packet.ssh.kex_algorithms
|
||||||
|
if 'encryption_algorithms_client_to_server' in packet.ssh.field_names:
|
||||||
|
ceacts = packet.ssh.encryption_algorithms_client_to_server
|
||||||
|
if 'mac_algorithms_client_to_server' in packet.ssh.field_names:
|
||||||
|
cmacts = packet.ssh.mac_algorithms_client_to_server
|
||||||
|
if 'compression_algorithms_client_to_server' in packet.ssh.field_names:
|
||||||
|
ccacts = packet.ssh.compression_algorithms_client_to_server
|
||||||
|
# Log other kexinit fields (only in JSON)
|
||||||
|
clcts = clstc = ceastc = cmastc = ccastc = cshka = ""
|
||||||
|
if 'languages_client_to_server' in packet.ssh.field_names:
|
||||||
|
clcts = packet.ssh.languages_client_to_server
|
||||||
|
if 'languages_server_to_client' in packet.ssh.field_names:
|
||||||
|
clstc = packet.ssh.languages_server_to_client
|
||||||
|
if 'encryption_algorithms_server_to_client' in packet.ssh.field_names:
|
||||||
|
ceastc = packet.ssh.encryption_algorithms_server_to_client
|
||||||
|
if 'mac_algorithms_server_to_client' in packet.ssh.field_names:
|
||||||
|
cmastc = packet.ssh.mac_algorithms_server_to_client
|
||||||
|
if 'compression_algorithms_server_to_client' in packet.ssh.field_names:
|
||||||
|
ccastc = packet.ssh.compression_algorithms_server_to_client
|
||||||
|
if 'server_host_key_algorithms' in packet.ssh.field_names:
|
||||||
|
cshka = packet.ssh.server_host_key_algorithms
|
||||||
|
# Create hassh
|
||||||
|
hassh_str = ';'.join([ckex, ceacts, cmacts, ccacts])
|
||||||
|
hassh = md5(hassh_str.encode()).hexdigest()
|
||||||
|
record = {"timestamp": packet.sniff_time.isoformat(),
|
||||||
|
"sourceIp": packet.ip.src,
|
||||||
|
"destinationIp": packet.ip.dst,
|
||||||
|
"sourcePort": packet.tcp.srcport,
|
||||||
|
"destinationPort": packet.tcp.dstport,
|
||||||
|
"client": protocol,
|
||||||
|
"hassh": hassh,
|
||||||
|
"hasshAlgorithms": hassh_str,
|
||||||
|
"hasshVersion": HASSH_VERSION,
|
||||||
|
"ckex": ckex,
|
||||||
|
"ceacts": ceacts,
|
||||||
|
"cmacts": cmacts,
|
||||||
|
"ccacts": ccacts,
|
||||||
|
"clcts": clcts,
|
||||||
|
"clstc": clstc,
|
||||||
|
"ceastc": ceastc,
|
||||||
|
"cmastc": cmastc,
|
||||||
|
"ccastc": ccastc,
|
||||||
|
"cshka": cshka}
|
||||||
|
return record
|
||||||
|
|
||||||
|
|
||||||
|
def server_hassh(packet):
|
||||||
|
"""returns HASSHServer (i.e. SSH Server Fingerprint)
|
||||||
|
HASSHServer = md5(KEX;EASTC;MASTC;CASTC)
|
||||||
|
"""
|
||||||
|
srcip = packet.ip.src
|
||||||
|
dstip = packet.ip.dst
|
||||||
|
sport = packet.tcp.srcport
|
||||||
|
dport = packet.tcp.srcport
|
||||||
|
protocol = None
|
||||||
|
key = '{}:{}_{}:{}'.format(srcip, sport, dstip, dport)
|
||||||
|
if key in protocol_dict:
|
||||||
|
protocol = protocol_dict[key]
|
||||||
|
# hasshServer fields
|
||||||
|
skex = seastc = smastc = scastc = ""
|
||||||
|
if 'kex_algorithms' in packet.ssh.field_names:
|
||||||
|
skex = packet.ssh.kex_algorithms
|
||||||
|
if 'encryption_algorithms_server_to_client' in packet.ssh.field_names:
|
||||||
|
seastc = packet.ssh.encryption_algorithms_server_to_client
|
||||||
|
if 'mac_algorithms_server_to_client' in packet.ssh.field_names:
|
||||||
|
smastc = packet.ssh.mac_algorithms_server_to_client
|
||||||
|
if 'compression_algorithms_server_to_client' in packet.ssh.field_names:
|
||||||
|
scastc = packet.ssh.compression_algorithms_server_to_client
|
||||||
|
# Log other kexinit fields (only in JSON)
|
||||||
|
slcts = slstc = seacts = smacts = scacts = sshka = ""
|
||||||
|
if 'languages_client_to_server' in packet.ssh.field_names:
|
||||||
|
slcts = packet.ssh.languages_client_to_server
|
||||||
|
if 'languages_server_to_client' in packet.ssh.field_names:
|
||||||
|
slstc = packet.ssh.languages_server_to_client
|
||||||
|
if 'encryption_algorithms_client_to_server' in packet.ssh.field_names:
|
||||||
|
seacts = packet.ssh.encryption_algorithms_client_to_server
|
||||||
|
if 'mac_algorithms_client_to_server' in packet.ssh.field_names:
|
||||||
|
smacts = packet.ssh.mac_algorithms_client_to_server
|
||||||
|
if 'compression_algorithms_client_to_server' in packet.ssh.field_names:
|
||||||
|
scacts = packet.ssh.compression_algorithms_client_to_server
|
||||||
|
if 'server_host_key_algorithms' in packet.ssh.field_names:
|
||||||
|
sshka = packet.ssh.server_host_key_algorithms
|
||||||
|
# Create hasshServer
|
||||||
|
hasshs_str = ';'.join([skex, seastc, smastc, scastc])
|
||||||
|
hasshs = md5(hasshs_str.encode()).hexdigest()
|
||||||
|
record = {"timestamp": packet.sniff_time.isoformat(),
|
||||||
|
"sourceIp": packet.ip.src,
|
||||||
|
"destinationIp": packet.ip.dst,
|
||||||
|
"sourcePort": packet.tcp.srcport,
|
||||||
|
"destinationPort": packet.tcp.dstport,
|
||||||
|
"server": protocol,
|
||||||
|
"hasshServer": hasshs,
|
||||||
|
"hasshServerAlgorithms": hasshs_str,
|
||||||
|
"hasshVersion": HASSH_VERSION,
|
||||||
|
"skex": skex,
|
||||||
|
"seastc": seastc,
|
||||||
|
"smastc": smastc,
|
||||||
|
"scastc": scastc,
|
||||||
|
"slcts": slcts,
|
||||||
|
"slstc": slstc,
|
||||||
|
"seacts": seacts,
|
||||||
|
"smacts": smacts,
|
||||||
|
"scacts": scacts,
|
||||||
|
"sshka": sshka}
|
||||||
|
return record
|
||||||
|
|
||||||
|
|
||||||
|
def csv_logging(record):
|
||||||
|
"""generate output in csv format"""
|
||||||
|
csv_record = ('{ts},{si},{di},{sp},{dp},{t},"{p}",{h},{v},"{ha}",'
|
||||||
|
'"{k}","{e}","{m}","{c}"')
|
||||||
|
if 'hassh' in record:
|
||||||
|
hasshType = 'client'
|
||||||
|
kexAlgs = record['ckex']
|
||||||
|
encAlgs = record['ceacts']
|
||||||
|
macAlgs = record['cmacts']
|
||||||
|
cmpAlgs = record['ccacts']
|
||||||
|
hassh = record['hassh']
|
||||||
|
hasshAlgorithms = record['hasshAlgorithms']
|
||||||
|
identificationString = record['client']
|
||||||
|
elif 'hasshServer' in record:
|
||||||
|
hasshType = 'server'
|
||||||
|
kexAlgs = record['skex']
|
||||||
|
encAlgs = record['seastc']
|
||||||
|
macAlgs = record['smastc']
|
||||||
|
cmpAlgs = record['scastc']
|
||||||
|
hassh = record['hasshServer']
|
||||||
|
hasshAlgorithms = record['hasshServerAlgorithms']
|
||||||
|
identificationString = record['server']
|
||||||
|
csv_record = csv_record.format(
|
||||||
|
ts=record['timestamp'], si=record['sourceIp'],
|
||||||
|
di=record['destinationIp'], sp=record['sourcePort'],
|
||||||
|
dp=record['destinationPort'], t=hasshType, p=identificationString,
|
||||||
|
h=hassh, v=HASSH_VERSION, ha=hasshAlgorithms, k=kexAlgs, e=encAlgs,
|
||||||
|
m=macAlgs, c=cmpAlgs)
|
||||||
|
return csv_record
|
||||||
|
|
||||||
|
|
||||||
|
def parse_cmd_args():
|
||||||
|
"""parse command line arguments"""
|
||||||
|
desc = """A python script for extracting HASSH fingerprints"""
|
||||||
|
parser = argparse.ArgumentParser(description=(desc))
|
||||||
|
helptxt = "pcap file to process"
|
||||||
|
parser.add_argument('-r', '--read_file', type=str, help=helptxt)
|
||||||
|
helptxt = "directory of pcap files to process"
|
||||||
|
parser.add_argument('-d', '--read_directory', type=str, help=helptxt)
|
||||||
|
helptxt = "listen on interface"
|
||||||
|
parser.add_argument('-i', '--interface', type=str, help=helptxt)
|
||||||
|
helptxt = "client or server fingerprint. Default: all"
|
||||||
|
parser.add_argument(
|
||||||
|
'-fp',
|
||||||
|
'--fingerprint',
|
||||||
|
default='all',
|
||||||
|
choices=['client', 'server'],
|
||||||
|
help=helptxt)
|
||||||
|
helptxt = "a dictionary of {decode_criterion_string: decode_as_protocol} \
|
||||||
|
that are used to tell tshark to decode protocols in situations it \
|
||||||
|
wouldn't usually. Default: {'tcp.port==2222': 'ssh'}."
|
||||||
|
parser.add_argument(
|
||||||
|
'-da', '--decode_as', type=dict, default=DECODE_AS, help=helptxt)
|
||||||
|
helptxt = "BPF capture filter to use (for live capture only).\
|
||||||
|
Default: 'tcp port 22 or tcp port 2222'"
|
||||||
|
parser.add_argument(
|
||||||
|
'-f', '--bpf_filter', type=str, default=CAP_BPF_FILTER, help=helptxt)
|
||||||
|
helptxt = "specify the output log format (json/csv)"
|
||||||
|
parser.add_argument(
|
||||||
|
'-l',
|
||||||
|
'--log_format',
|
||||||
|
choices=['json', 'csv'],
|
||||||
|
help=helptxt)
|
||||||
|
helptxt = "specify the output log file. Default: hassh.log"
|
||||||
|
parser.add_argument(
|
||||||
|
'-o', '--output_file', default='hassh.log', type=str, help=helptxt)
|
||||||
|
helptxt = "save the live captured packets to this file"
|
||||||
|
parser.add_argument(
|
||||||
|
'-w', '--write_pcap', default=None, type=str, help=helptxt)
|
||||||
|
helptxt = "print the output"
|
||||||
|
parser.add_argument(
|
||||||
|
'-p', '--print_output', action="store_true", help=helptxt)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logging(logfile):
|
||||||
|
"""setup logging"""
|
||||||
|
logger = logging.getLogger()
|
||||||
|
handler = logging.FileHandler(logfile)
|
||||||
|
formatter = logging.Formatter('%(message)s')
|
||||||
|
handler.setFormatter(formatter)
|
||||||
|
logger.addHandler(handler)
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
return logger
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""intake arguments from the user and extract HASSH fingerprints."""
|
||||||
|
args = parse_cmd_args()
|
||||||
|
setup_logging(args.output_file)
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
csv_header = ("timestamp,sourceIp,destinationIp,sourcePort,"
|
||||||
|
"destinationPort,hasshType,identificationString,"
|
||||||
|
"hassh,hasshVersion,hasshAlgorithms,kexAlgs,encAlgs,"
|
||||||
|
"macAlgs,cmpAlgs")
|
||||||
|
if args.log_format == 'csv':
|
||||||
|
logger.info(csv_header)
|
||||||
|
|
||||||
|
# Process PCAP file
|
||||||
|
if args.read_file:
|
||||||
|
cap = pyshark.FileCapture(args.read_file, decode_as=args.decode_as)
|
||||||
|
try:
|
||||||
|
for packet in cap:
|
||||||
|
process_packet(
|
||||||
|
packet,
|
||||||
|
logf=args.log_format,
|
||||||
|
fingerprint=args.fingerprint,
|
||||||
|
pout=args.print_output)
|
||||||
|
cap.close()
|
||||||
|
cap.eventloop.stop()
|
||||||
|
except Exception as e:
|
||||||
|
print('Error: {}'.format(e))
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Process directory of PCAP files
|
||||||
|
elif args.read_directory:
|
||||||
|
files = [f.path for f in os.scandir(args.read_directory)
|
||||||
|
if not f.name.startswith('.') and not f.is_dir()
|
||||||
|
and (f.name.endswith(".pcap") or f.name.endswith(".pcapng")
|
||||||
|
or f.name.endswith(".cap"))]
|
||||||
|
for file in files:
|
||||||
|
cap = pyshark.FileCapture(file, decode_as=args.decode_as)
|
||||||
|
try:
|
||||||
|
for packet in cap:
|
||||||
|
process_packet(
|
||||||
|
packet,
|
||||||
|
logf=args.log_format,
|
||||||
|
fingerprint=args.fingerprint,
|
||||||
|
pout=args.print_output)
|
||||||
|
cap.close()
|
||||||
|
cap.eventloop.stop()
|
||||||
|
except Exception as e:
|
||||||
|
print('Error: {}'.format(e))
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Capture live network traffic
|
||||||
|
elif args.interface:
|
||||||
|
# TODO: Use a Ring Buffer (LiveRingCapture), when the issue is fixed:
|
||||||
|
# https://github.com/KimiNewt/pyshark/issues/299
|
||||||
|
cap = pyshark.LiveCapture(
|
||||||
|
interface=args.interface,
|
||||||
|
decode_as=args.decode_as,
|
||||||
|
bpf_filter=args.bpf_filter,
|
||||||
|
output_file=args.write_pcap)
|
||||||
|
try:
|
||||||
|
for packet in cap.sniff_continuously(packet_count=0):
|
||||||
|
# if len(protocol_dict) > 10000:
|
||||||
|
# protocol_dict.clear()
|
||||||
|
process_packet(
|
||||||
|
packet,
|
||||||
|
logf=args.log_format,
|
||||||
|
fingerprint=args.fingerprint,
|
||||||
|
pout=args.print_output)
|
||||||
|
except (KeyboardInterrupt, SystemExit):
|
||||||
|
print("Exiting..\nBYE o/\n")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
82
python/hasshGen/README.md
Normal file
82
python/hasshGen/README.md
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
# hasshGen.py
|
||||||
|
|
||||||
|
[](https://opensource.org/licenses/BSD-3-Clause)
|
||||||
|
|
||||||
|
Sample python script and Dockerfiles to automate building docker images with different SSH clients/versions for generating HASSH fingerprints.
|
||||||
|
As a demonstration we created a list ([sshClient_list](sshClient_list)) containing 49 different version of OpenSSH, Python’s paramiko and Dropbear SSH clients and generated a database of HASSH fingerprints in [JSON](hassh_fingerprints.json) and [CSV](hassh_fingerprints.csv) formats.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
1. Install Docker CE:
|
||||||
|
> [Download Docker Engine](https://store.docker.com/search?type=edition&offering=community)
|
||||||
|
|
||||||
|
2. Install the Docker's Python library:
|
||||||
|
> `pipenv install docker`
|
||||||
|
|
||||||
|
4. Test:
|
||||||
|
> `pipenv run python3 hasshgen.py -h`
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
```
|
||||||
|
usage: hasshgen.py [-h] [-i IMAGE] [-iV IMAGE_VER] [-c SSHCLIENT]
|
||||||
|
[-cV SSHCLIENT_VER] [-d DOCKER_FILE] -s SERVER
|
||||||
|
[-iF INPUT_FILE] [-f] [--cmd CMD]
|
||||||
|
|
||||||
|
A python script to automate building docker images with different SSH
|
||||||
|
clients/versions.
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-i IMAGE, --image IMAGE
|
||||||
|
Docker image name. e.g. alpine, ubuntu
|
||||||
|
-iV IMAGE_VER, --image_ver IMAGE_VER
|
||||||
|
Docker image version. e.g. 18.04, latest
|
||||||
|
-c SSHCLIENT, --sshclient SSHCLIENT
|
||||||
|
SSH client name
|
||||||
|
-cV SSHCLIENT_VER, --sshclient_ver SSHCLIENT_VER
|
||||||
|
SSH client version
|
||||||
|
-d DOCKER_FILE, --docker_file DOCKER_FILE
|
||||||
|
Specify the Dockerfile
|
||||||
|
-s SERVER, --server SERVER
|
||||||
|
Specify the server address to test the SSH connection
|
||||||
|
-iF INPUT_FILE, --input_file INPUT_FILE
|
||||||
|
Bulk mode; Specify an input file containing a list of
|
||||||
|
docker image, image version, sshclient and sshclient
|
||||||
|
version
|
||||||
|
-f, --fingerprint Set this option to automatically run hassh.py for
|
||||||
|
capturing SSH client fingerprints (HASSH). Specify the
|
||||||
|
command for running hassh.py using --cmd arg.
|
||||||
|
--cmd CMD Enter the command for running hassh.py. Use with
|
||||||
|
-f/--fingerprint arg
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
* Build and run a docker image with specific SSH client/version:
|
||||||
|
```
|
||||||
|
$ python3 hasshgen.py --docker_file Dockerfile.alpine --image alpine -iV 3.6 --sshclient openssh-client --sshclient_ver 7.5_p1-r2 --server <your-ssh-server>
|
||||||
|
|
||||||
|
[+] <Image: 'hasshgen:alpine0'> successfully built
|
||||||
|
- image: alpine:3.6, ssh client: openssh-client 7.5_p1-r2
|
||||||
|
[+] Command successfully executed!
|
||||||
|
```
|
||||||
|
|
||||||
|
After building the docker image, the script runs a SSH command to generate SSH connections for fingerprinting. It currently supports openssh, paramiko, and dropbear SSH clients. You can easily add other SSH clients.
|
||||||
|
|
||||||
|
* Build docker images using an input file in this format: [sshClient_list](sshClient_list)
|
||||||
|
```
|
||||||
|
$ python3 hasshgen.py --input_file sshClient_list --server <your-ssh-server>
|
||||||
|
[+] <Image: 'hasshgen:alpine1'> successfully built
|
||||||
|
- image: alpine:3.3, ssh client: openssh-client 7.2_p2-r3
|
||||||
|
[+] Command successfully executed!
|
||||||
|
[+] <Image: 'hasshgen:alpine2'> successfully built
|
||||||
|
- image: alpine:3.4, ssh client: openssh-client 7.2_p2-r5
|
||||||
|
[+] Command successfully executed!
|
||||||
|
[+] <Image: 'hasshgen:alpine3'> successfully built
|
||||||
|
- image: alpine:3.5, ssh client: openssh-client 7.4_p1-r1
|
||||||
|
[+] Command successfully executed!
|
||||||
|
```
|
||||||
|
|
||||||
|
* You can use `-f` or `--fingerprint` arg to automatically run `hassh.py` for extracting the fingerprints. Use `--cmd` to change the default HASSH_COMMAND:
|
||||||
|
```
|
||||||
|
$ python3 hasshgen.py --input_file sshClient_list --server <your-ssh-server> --fingerprint --cmd 'python3 ../hassh.py -i eth0 -l json -o fingerprint.json'
|
||||||
|
```
|
||||||
10
python/hasshGen/dockerfiles/Dockerfile.alpine
Normal file
10
python/hasshGen/dockerfiles/Dockerfile.alpine
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# https://hub.docker.com/_/alpine/
|
||||||
|
ARG IMAGE
|
||||||
|
ARG IMAGE_VER
|
||||||
|
FROM $IMAGE:$IMAGE_VER
|
||||||
|
MAINTAINER Adel "0x4D31" Karimi
|
||||||
|
|
||||||
|
ARG SSHCLIENT
|
||||||
|
ARG SSHCLIENT_VER
|
||||||
|
# Install the SSH client
|
||||||
|
RUN apk --no-cache add $SSHCLIENT=$SSHCLIENT_VER
|
||||||
11
python/hasshGen/dockerfiles/Dockerfile.centos
Normal file
11
python/hasshGen/dockerfiles/Dockerfile.centos
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# https://hub.docker.com/_/centos/
|
||||||
|
# https://hub.docker.com/_/fedora/
|
||||||
|
ARG IMAGE
|
||||||
|
ARG IMAGE_VER
|
||||||
|
FROM $IMAGE:$IMAGE_VER
|
||||||
|
MAINTAINER Adel "0x4D31" Karimi
|
||||||
|
|
||||||
|
ARG SSHCLIENT
|
||||||
|
ARG SSHCLIENT_VER
|
||||||
|
# Install the SSH client
|
||||||
|
RUN yum -y install $SSHCLIENT-$SSHCLIENT_VER && yum clean all
|
||||||
14
python/hasshGen/dockerfiles/Dockerfile.debian
Normal file
14
python/hasshGen/dockerfiles/Dockerfile.debian
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# https://hub.docker.com/_/debian/
|
||||||
|
# https://hub.docker.com/_/ubuntu/
|
||||||
|
ARG IMAGE
|
||||||
|
ARG IMAGE_VER
|
||||||
|
FROM $IMAGE:$IMAGE_VER
|
||||||
|
MAINTAINER Adel "0x4D31" Karimi
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
ARG SSHCLIENT
|
||||||
|
ARG SSHCLIENT_VER
|
||||||
|
# Install the SSH client
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
$SSHCLIENT=$SSHCLIENT_VER \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
27
python/hasshGen/dockerfiles/Dockerfile.python
Normal file
27
python/hasshGen/dockerfiles/Dockerfile.python
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# https://hub.docker.com/_/python/
|
||||||
|
ARG IMAGE
|
||||||
|
ARG IMAGE_VER
|
||||||
|
FROM $IMAGE:$IMAGE_VER
|
||||||
|
MAINTAINER Adel "0x4D31" Karimi
|
||||||
|
|
||||||
|
# ARG SSHCLIENT
|
||||||
|
ARG SSHCLIENT_VER
|
||||||
|
# Install paramiko (ref: eduardoshanahan/paramiko)
|
||||||
|
RUN apk add --virtual .install_dependencies_paramiko \
|
||||||
|
gcc \
|
||||||
|
musl-dev \
|
||||||
|
python-dev \
|
||||||
|
libffi-dev \
|
||||||
|
openssl-dev \
|
||||||
|
build-base \
|
||||||
|
py-pip \
|
||||||
|
&& apk add zlib \
|
||||||
|
zlib-dev \
|
||||||
|
libssl1.0 \
|
||||||
|
openssl-dev \
|
||||||
|
&& pip install cffi \
|
||||||
|
&& pip install paramiko==$SSHCLIENT_VER \
|
||||||
|
&& apk del .install_dependencies_paramiko
|
||||||
|
|
||||||
|
# Copy the python script
|
||||||
|
COPY paramiko_conn.py /tmp/
|
||||||
50
python/hasshGen/hassh_fingerprints.csv
Normal file
50
python/hasshGen/hassh_fingerprints.csv
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
image,imageVersion,sshClient,sshClientVersion,clientIdentificationString,hassh,hasshVersion,hasshAlgorithms
|
||||||
|
debian,"sid-slim",dropbear,"2018.76-4","SSH-2.0-dropbear_2018.76",e22efe3cde8b396b874c3f13fdb6c61a,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256;zlib@openssh.com,zlib,none"
|
||||||
|
debian,"buster-slim",dropbear,"2018.76-4","SSH-2.0-dropbear_2018.76",e22efe3cde8b396b874c3f13fdb6c61a,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256;zlib@openssh.com,zlib,none"
|
||||||
|
debian,"stretch-slim",dropbear,"2016.74-5","SSH-2.0-dropbear_2016.74",7742887e2a57712bdb91a772093f54ce,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none"
|
||||||
|
debian,"jessie-slim",dropbear,"2014.65-1+deb8u2","SSH-2.0-dropbear_2014.65",ad00edb0c2a031d9884826ba7b7ba41e,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none"
|
||||||
|
debian,"jessie-slim",dropbear,"2014.65-1+deb8u3","SSH-2.0-dropbear_2014.65",ad00edb0c2a031d9884826ba7b7ba41e,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none"
|
||||||
|
debian,"wheezy-slim",dropbear,"2012.55-1.3","SSH-2.0-dropbear_2012.55",16f898dd8ed8279e1055350b4e20666c,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none"
|
||||||
|
debian,"wheezy-slim",dropbear,"2012.55-1.3+deb7u2","SSH-2.0-dropbear_2012.55",16f898dd8ed8279e1055350b4e20666c,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none"
|
||||||
|
ubuntu,"18.04",dropbear,"2017.75-3build1","SSH-2.0-dropbear_2017.75",7742887e2a57712bdb91a772093f54ce,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none"
|
||||||
|
ubuntu,"16.04",dropbear,"2016.72-1","SSH-2.0-dropbear_2016.72",7742887e2a57712bdb91a772093f54ce,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none"
|
||||||
|
ubuntu,"14.04",dropbear,"2013.60-1ubuntu2","SSH-2.0-dropbear_2013.60",22865d7159a8dedcb091cd4fc5fd2841,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none"
|
||||||
|
alpine,"3.8","dropbear-dbclient","2018.76-r2","SSH-2.0-dropbear_2018.76",e22efe3cde8b396b874c3f13fdb6c61a,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256;zlib@openssh.com,zlib,none"
|
||||||
|
alpine,"3.7","dropbear-dbclient","2017.75-r1","SSH-2.0-dropbear_2017.75",7742887e2a57712bdb91a772093f54ce,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none"
|
||||||
|
alpine,"3.5","dropbear-dbclient","2017.75-r0","SSH-2.0-dropbear_2017.75",7742887e2a57712bdb91a772093f54ce,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none"
|
||||||
|
python,"3.6-alpine",paramiko,"1.13.0","SSH-2.0-paramiko_1.13.0",b05dfbbf26090c7792d4aa6b76cd1f1a,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1;aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none"
|
||||||
|
python,"3.6-alpine",paramiko,"1.14.0","SSH-2.0-paramiko_1.14.0",b05dfbbf26090c7792d4aa6b76cd1f1a,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1;aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none"
|
||||||
|
python,"3.6-alpine",paramiko,"1.15.0","SSH-2.0-paramiko_1.15.0",d72f74b08466652d162ca02ad197b9ad,"1.0","diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none"
|
||||||
|
python,"3.6-alpine",paramiko,"1.16.0","SSH-2.0-paramiko_1.16.0",c6f5e6d54285a11b9f02fef7fc77bd6f,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none"
|
||||||
|
python,"3.6-alpine",paramiko,"1.17.0","SSH-2.0-paramiko_1.17.0",c6f5e6d54285a11b9f02fef7fc77bd6f,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none"
|
||||||
|
python,"3.6-alpine",paramiko,"1.18.0","SSH-2.0-paramiko_1.18.0",c6f5e6d54285a11b9f02fef7fc77bd6f,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none"
|
||||||
|
python,"3.6-alpine",paramiko,"2.0.0","SSH-2.0-paramiko_2.0.0",c6f5e6d54285a11b9f02fef7fc77bd6f,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none"
|
||||||
|
python,"3.6-alpine",paramiko,"2.1.0","SSH-2.0-paramiko_2.1.0",c6f5e6d54285a11b9f02fef7fc77bd6f,"1.0","diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none"
|
||||||
|
python,"3.6-alpine",paramiko,"2.2.0","SSH-2.0-paramiko_2.2.0",b5752e36ba6c5979a575e43178908adf,"1.0","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc;hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none"
|
||||||
|
python,"3.6-alpine",paramiko,"2.3.0","SSH-2.0-paramiko_2.3.0",b5752e36ba6c5979a575e43178908adf,"1.0","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc;hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none"
|
||||||
|
python,"3.6-alpine",paramiko,"2.4.1","SSH-2.0-paramiko_2.4.1",b5752e36ba6c5979a575e43178908adf,"1.0","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc;hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none"
|
||||||
|
centos,7,"openssh-clients","7.4p1-16.el7","SSH-2.0-OpenSSH_7.4",ec9ea89c70f5fc71cf61061bff5e4740,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
centos,6,"openssh-clients","5.3p1-123.el6_9","SSH-2.0-OpenSSH_5.3",3646f4d62498cd92721bd242ce988a42,"1.0","diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se;hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96;none,zlib@openssh.com,zlib"
|
||||||
|
fedora,rawhide,"openssh-clients","7.8p1-2.fc30","SSH-2.0-OpenSSH_7.8",4eea4239dc591cbf6e661a656ae9d58c,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc;hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib"
|
||||||
|
fedora,29,"openssh-clients","7.8p1-1.fc29","SSH-2.0-OpenSSH_7.8",4eea4239dc591cbf6e661a656ae9d58c,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc;hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib"
|
||||||
|
fedora,28,"openssh-clients","7.7p1-2.fc28","SSH-2.0-OpenSSH_7.7",4eea4239dc591cbf6e661a656ae9d58c,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc;hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib"
|
||||||
|
fedora,27,"openssh-clients","7.5p1-5.fc27","SSH-2.0-OpenSSH_7.5",82a9e17b13a816a13b8c8bfe1b5cf030,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc;umac-128-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128@openssh.com,hmac-sha1,hmac-sha2-256,hmac-sha2-512;none,zlib@openssh.com,zlib"
|
||||||
|
fedora,26,"openssh-clients","7.5p1-2.fc26","SSH-2.0-OpenSSH_7.5",251479d8057683f8201e4a52b80a75ff,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc;umac-128-etm@openssh.com,umac-128@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha1,hmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha2-512-etm@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"sid-slim","openssh-client","1:7.8p1-1","SSH-2.0-OpenSSH_7.8p1 Debian-1",ec7378c1a92f5a8dde7e8b7a1ddf33d1,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"buster-slim","openssh-client","1:7.8p1-1","SSH-2.0-OpenSSH_7.8p1 Debian-1",ec7378c1a92f5a8dde7e8b7a1ddf33d1,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"stretch-slim","openssh-client","1:7.4p1-10+deb9u4","SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4",0df0d56bb50c6b2426d8d40234bf1826,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"jessie-slim","openssh-client","1:6.7p1-5+deb8u4","SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u4",46c5bd9748882f1a5d75753fb7d47a61,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"jessie-slim","openssh-client","1:6.7p1-5+deb8u7","SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u7",46c5bd9748882f1a5d75753fb7d47a61,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"wheezy-backports","openssh-client","1:6.6p1-4~bpo70+1","SSH-2.0-OpenSSH_6.6.1p1 Debian-4~bpo70+1",e30029a55fea2fcd3501023fb659bfae,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"wheezy-slim","openssh-client","1:6.0p1-4+deb7u4","SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4",c0216580c330eab8906d740d31f761a8,"1.0","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib"
|
||||||
|
debian,"wheezy-slim","openssh-client","1:6.0p1-4+deb7u7","SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u7",c0216580c330eab8906d740d31f761a8,"1.0","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib"
|
||||||
|
ubuntu,"18.10","openssh-client","1:7.7p1-4","SSH-2.0-OpenSSH_7.7p1 Ubuntu-4",06046964c022c6407d15a27b12a6a4fb,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
ubuntu,"18.04","openssh-client","1:7.6p1-4","SSH-2.0-OpenSSH_7.6p1 Ubuntu-4",06046964c022c6407d15a27b12a6a4fb,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
ubuntu,"16.04","openssh-client","1:7.2p2-4ubuntu2.4","SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4",68e0ba85e1a818f7c49ea3f4b849bd15,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
ubuntu,"14.04","openssh-client","1:6.6p1-2ubuntu2.10","SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10",e30029a55fea2fcd3501023fb659bfae,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib"
|
||||||
|
alpine,edge,"openssh-client","7.8_p1-r0","SSH-2.0-OpenSSH_7.8",ec7378c1a92f5a8dde7e8b7a1ddf33d1,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
alpine,"3.7","openssh-client","7.5_p1-r8","SSH-2.0-OpenSSH_7.5p1-hpn14v4",0df0d56bb50c6b2426d8d40234bf1826,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
alpine,"3.6","openssh-client","7.5_p1-r2","SSH-2.0-OpenSSH_7.5p1-hpn14v4",0df0d56bb50c6b2426d8d40234bf1826,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
alpine,"3.5","openssh-client","7.4_p1-r1","SSH-2.0-OpenSSH_7.4",0df0d56bb50c6b2426d8d40234bf1826,"1.0","curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
alpine,"3.4","openssh-client","7.2_p2-r5","SSH-2.0-OpenSSH_7.2p2-hpn14v4",68e0ba85e1a818f7c49ea3f4b849bd15,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
alpine,"3.3","openssh-client","7.2_p2-r3","SSH-2.0-OpenSSH_7.2p2-hpn14v4",68e0ba85e1a818f7c49ea3f4b849bd15,"1.0","curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib"
|
||||||
|
49
python/hasshGen/hassh_fingerprints.json
Normal file
49
python/hasshGen/hassh_fingerprints.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{"image": "alpine", "imageVersion": "3.3", "sshClient": "openssh-client", "sshClientVersion": "7.2_p2-r3", "clientIdentificationString": "SSH-2.0-OpenSSH_7.2p2-hpn14v4", "hassh": "68e0ba85e1a818f7c49ea3f4b849bd15", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.4", "sshClient": "openssh-client", "sshClientVersion": "7.2_p2-r5", "clientIdentificationString": "SSH-2.0-OpenSSH_7.2p2-hpn14v4", "hassh": "68e0ba85e1a818f7c49ea3f4b849bd15", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.5", "sshClient": "openssh-client", "sshClientVersion": "7.4_p1-r1", "clientIdentificationString": "SSH-2.0-OpenSSH_7.4", "hassh": "0df0d56bb50c6b2426d8d40234bf1826", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.6", "sshClient": "openssh-client","sshClientVersion": "7.5_p1-r2", "clientIdentificationString": "SSH-2.0-OpenSSH_7.5p1-hpn14v4", "hassh": "0df0d56bb50c6b2426d8d40234bf1826", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.7", "sshClient": "openssh-client","sshClientVersion": "7.5_p1-r8", "clientIdentificationString": "SSH-2.0-OpenSSH_7.5p1-hpn14v4", "hassh": "0df0d56bb50c6b2426d8d40234bf1826", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "alpine", "imageVersion": "edge", "sshClient": "openssh-client","sshClientVersion": "7.8_p1-r0", "clientIdentificationString": "SSH-2.0-OpenSSH_7.8", "hassh": "ec7378c1a92f5a8dde7e8b7a1ddf33d1", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "14.04", "sshClient": "openssh-client","sshClientVersion": "1:6.6p1-2ubuntu2.10", "clientIdentificationString": "SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10", "hassh": "e30029a55fea2fcd3501023fb659bfae", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmacts": "hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmastc": "hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "16.04", "sshClient": "openssh-client","sshClientVersion": "1:7.2p2-4ubuntu2.4", "clientIdentificationString": "SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4", "hassh": "68e0ba85e1a818f7c49ea3f4b849bd15", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "18.04", "sshClient": "openssh-client","sshClientVersion": "1:7.6p1-4", "clientIdentificationString": "SSH-2.0-OpenSSH_7.6p1 Ubuntu-4", "hassh": "06046964c022c6407d15a27b12a6a4fb", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "18.10", "sshClient": "openssh-client","sshClientVersion": "1:7.7p1-4", "clientIdentificationString": "SSH-2.0-OpenSSH_7.7p1 Ubuntu-4", "hassh": "06046964c022c6407d15a27b12a6a4fb", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "wheezy-slim", "sshClient": "openssh-client","sshClientVersion": "1:6.0p1-4+deb7u7", "clientIdentificationString": "SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u7", "hassh": "c0216580c330eab8906d740d31f761a8", "hasshAlgorithms": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmacts": "hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmastc": "hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "wheezy-slim", "sshClient": "openssh-client","sshClientVersion": "1:6.0p1-4+deb7u4", "clientIdentificationString": "SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4", "hassh": "c0216580c330eab8906d740d31f761a8", "hasshAlgorithms": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmacts": "hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmastc": "hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "wheezy-backports", "sshClient": "openssh-client","sshClientVersion": "1:6.6p1-4~bpo70+1", "clientIdentificationString": "SSH-2.0-OpenSSH_6.6.1p1 Debian-4~bpo70+1", "hassh": "e30029a55fea2fcd3501023fb659bfae", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmacts": "hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmastc": "hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "jessie-slim", "sshClient": "openssh-client","sshClientVersion": "1:6.7p1-5+deb8u7", "clientIdentificationString": "SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u7", "hassh": "46c5bd9748882f1a5d75753fb7d47a61", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "jessie-slim", "sshClient": "openssh-client","sshClientVersion": "1:6.7p1-5+deb8u4", "clientIdentificationString": "SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u4", "hassh": "46c5bd9748882f1a5d75753fb7d47a61", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "stretch-slim", "sshClient": "openssh-client","sshClientVersion": "1:7.4p1-10+deb9u4", "clientIdentificationString": "SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4", "hassh": "0df0d56bb50c6b2426d8d40234bf1826", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "buster-slim", "sshClient": "openssh-client","sshClientVersion": "1:7.8p1-1", "clientIdentificationString": "SSH-2.0-OpenSSH_7.8p1 Debian-1", "hassh": "ec7378c1a92f5a8dde7e8b7a1ddf33d1", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "debian", "imageVersion": "sid-slim", "sshClient": "openssh-client","sshClientVersion": "1:7.8p1-1", "clientIdentificationString": "SSH-2.0-OpenSSH_7.8p1 Debian-1", "hassh": "ec7378c1a92f5a8dde7e8b7a1ddf33d1", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "fedora", "imageVersion": "26", "sshClient": "openssh-clients","sshClientVersion": "7.5p1-2.fc26", "clientIdentificationString": "SSH-2.0-OpenSSH_7.5", "hassh": "251479d8057683f8201e4a52b80a75ff", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc;umac-128-etm@openssh.com,umac-128@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha1,hmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha2-512-etm@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc", "cmacts": "umac-128-etm@openssh.com,umac-128@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha1,hmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha2-512-etm@openssh.com,hmac-sha2-512", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc", "cmastc": "umac-128-etm@openssh.com,umac-128@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha1,hmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha2-512-etm@openssh.com,hmac-sha2-512", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "fedora", "imageVersion": "27", "sshClient": "openssh-clients","sshClientVersion": "7.5p1-5.fc27", "clientIdentificationString": "SSH-2.0-OpenSSH_7.5", "hassh": "82a9e17b13a816a13b8c8bfe1b5cf030", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc;umac-128-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128@openssh.com,hmac-sha1,hmac-sha2-256,hmac-sha2-512;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc", "cmacts": "umac-128-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128@openssh.com,hmac-sha1,hmac-sha2-256,hmac-sha2-512", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc", "cmastc": "umac-128-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128@openssh.com,hmac-sha1,hmac-sha2-256,hmac-sha2-512", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "fedora", "imageVersion": "28", "sshClient": "openssh-clients","sshClientVersion": "7.7p1-2.fc28", "clientIdentificationString": "SSH-2.0-OpenSSH_7.7", "hassh": "4eea4239dc591cbf6e661a656ae9d58c", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc;hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc", "cmacts": "hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc", "cmastc": "hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "fedora", "imageVersion": "29", "sshClient": "openssh-clients","sshClientVersion": "7.8p1-1.fc29", "clientIdentificationString": "SSH-2.0-OpenSSH_7.8", "hassh": "4eea4239dc591cbf6e661a656ae9d58c", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc;hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc", "cmacts": "hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc", "cmastc": "hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "fedora", "imageVersion": "rawhide", "sshClient": "openssh-clients","sshClientVersion": "7.8p1-2.fc30", "clientIdentificationString": "SSH-2.0-OpenSSH_7.8", "hassh": "4eea4239dc591cbf6e661a656ae9d58c", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c;aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc;hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c", "ceacts": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc", "cmacts": "hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc", "cmastc": "hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "centos", "imageVersion": "6", "sshClient": "openssh-clients","sshClientVersion": "5.3p1-123.el6_9", "clientIdentificationString": "SSH-2.0-OpenSSH_5.3", "hassh": "3646f4d62498cd92721bd242ce988a42", "hasshAlgorithms": "diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se;hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se", "cmacts": "hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se", "cmastc": "hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "centos", "imageVersion": "7", "sshClient": "openssh-clients","sshClientVersion": "7.4p1-16.el7", "clientIdentificationString": "SSH-2.0-OpenSSH_7.4", "hassh": "ec9ea89c70f5fc71cf61061bff5e4740", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,ext-info-c;chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc;umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1;none,zlib@openssh.com,zlib", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,ext-info-c", "ceacts": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmacts": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccacts": "none,zlib@openssh.com,zlib", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", "cmastc": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", "ccastc": "none,zlib@openssh.com,zlib"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "2.4.1", "clientIdentificationString": "SSH-2.0-paramiko_2.4.1", "hassh": "b5752e36ba6c5979a575e43178908adf", "hasshAlgorithms": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc;hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none", "hasshVersion": "1.0", "ckex": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "2.3.0", "clientIdentificationString": "SSH-2.0-paramiko_2.3.0", "hassh": "b5752e36ba6c5979a575e43178908adf", "hasshAlgorithms": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc;hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none", "hasshVersion": "1.0", "ckex": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "2.2.0", "clientIdentificationString": "SSH-2.0-paramiko_2.2.0", "hassh": "b5752e36ba6c5979a575e43178908adf", "hasshAlgorithms": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc;hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none", "hasshVersion": "1.0", "ckex": "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,3des-cbc", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "2.1.0", "clientIdentificationString": "SSH-2.0-paramiko_2.1.0", "hassh": "c6f5e6d54285a11b9f02fef7fc77bd6f", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "2.0.0", "clientIdentificationString": "SSH-2.0-paramiko_2.0.0", "hassh": "c6f5e6d54285a11b9f02fef7fc77bd6f", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "1.18.0", "clientIdentificationString": "SSH-2.0-paramiko_1.18.0", "hassh": "c6f5e6d54285a11b9f02fef7fc77bd6f", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "1.17.0", "clientIdentificationString": "SSH-2.0-paramiko_1.17.0", "hassh": "c6f5e6d54285a11b9f02fef7fc77bd6f", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "1.16.0", "clientIdentificationString": "SSH-2.0-paramiko_1.16.0", "hassh": "c6f5e6d54285a11b9f02fef7fc77bd6f", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256;aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256", "ceacts": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes192-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-sha1", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "1.15.0", "clientIdentificationString": "SSH-2.0-paramiko_1.15.0", "hassh": "d72f74b08466652d162ca02ad197b9ad", "hasshAlgorithms": "diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1;aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "1.14.0", "clientIdentificationString": "SSH-2.0-paramiko_1.14.0", "hassh": "b05dfbbf26090c7792d4aa6b76cd1f1a", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1;aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccastc": "none"}
|
||||||
|
{"image": "python", "imageVersion": "3.6-alpine", "sshClient": "paramiko","sshClientVersion": "1.13.0", "clientIdentificationString": "SSH-2.0-paramiko_1.13.0", "hassh": "b05dfbbf26090c7792d4aa6b76cd1f1a", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1;aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256;hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96;none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmacts": "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccacts": "none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,blowfish-cbc,aes256-cbc,3des-cbc,arcfour128,arcfour256", "cmastc": "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96", "ccastc": "none"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.5", "sshClient": "dropbear-dbclient","sshClientVersion": "2017.75-r0", "clientIdentificationString": "SSH-2.0-dropbear_2017.75", "hassh": "7742887e2a57712bdb91a772093f54ce", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.7", "sshClient": "dropbear-dbclient","sshClientVersion": "2017.75-r1", "clientIdentificationString": "SSH-2.0-dropbear_2017.75", "hassh": "7742887e2a57712bdb91a772093f54ce", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "alpine", "imageVersion": "3.8", "sshClient": "dropbear-dbclient","sshClientVersion": "2018.76-r2", "clientIdentificationString": "SSH-2.0-dropbear_2018.76", "hassh": "e22efe3cde8b396b874c3f13fdb6c61a", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "14.04", "sshClient": "dropbear","sshClientVersion": "2013.60-1ubuntu2", "clientIdentificationString": "SSH-2.0-dropbear_2013.60", "hassh": "22865d7159a8dedcb091cd4fc5fd2841", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccacts": "zlib,zlib@openssh.com,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccastc": "zlib,zlib@openssh.com,none"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "16.04", "sshClient": "dropbear","sshClientVersion": "2016.72-1", "clientIdentificationString": "SSH-2.0-dropbear_2016.72", "hassh": "7742887e2a57712bdb91a772093f54ce", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "ubuntu", "imageVersion": "18.04", "sshClient": "dropbear","sshClientVersion": "2017.75-3build1", "clientIdentificationString": "SSH-2.0-dropbear_2017.75", "hassh": "7742887e2a57712bdb91a772093f54ce", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "debian", "imageVersion": "wheezy-slim", "sshClient": "dropbear","sshClientVersion": "2012.55-1.3+deb7u2", "clientIdentificationString": "SSH-2.0-dropbear_2012.55", "hassh": "16f898dd8ed8279e1055350b4e20666c", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1", "ceacts": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccacts": "zlib,zlib@openssh.com,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccastc": "zlib,zlib@openssh.com,none"}
|
||||||
|
{"image": "debian", "imageVersion": "wheezy-slim", "sshClient": "dropbear","sshClientVersion": "2012.55-1.3", "clientIdentificationString": "SSH-2.0-dropbear_2012.55", "hassh": "16f898dd8ed8279e1055350b4e20666c", "hasshAlgorithms": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none", "hasshVersion": "1.0", "ckex": "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1", "ceacts": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccacts": "zlib,zlib@openssh.com,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccastc": "zlib,zlib@openssh.com,none"}
|
||||||
|
{"image": "debian", "imageVersion": "jessie-slim", "sshClient": "dropbear","sshClientVersion": "2014.65-1+deb8u3", "clientIdentificationString": "SSH-2.0-dropbear_2014.65", "hassh": "ad00edb0c2a031d9884826ba7b7ba41e", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccacts": "zlib,zlib@openssh.com,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccastc": "zlib,zlib@openssh.com,none"}
|
||||||
|
{"image": "debian", "imageVersion": "jessie-slim", "sshClient": "dropbear","sshClientVersion": "2014.65-1+deb8u2", "clientIdentificationString": "SSH-2.0-dropbear_2014.65", "hassh": "ad00edb0c2a031d9884826ba7b7ba41e", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc;hmac-sha1-96,hmac-sha1,hmac-md5;zlib,zlib@openssh.com,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccacts": "zlib,zlib@openssh.com,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,3des-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-md5", "ccastc": "zlib,zlib@openssh.com,none"}
|
||||||
|
{"image": "debian", "imageVersion": "stretch-slim", "sshClient": "dropbear","sshClientVersion": "2016.74-5", "clientIdentificationString": "SSH-2.0-dropbear_2016.74", "hassh": "7742887e2a57712bdb91a772093f54ce", "hasshAlgorithms": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,twofish256-cbc,twofish-cbc,twofish128-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-md5", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "debian", "imageVersion": "buster-slim", "sshClient": "dropbear","sshClientVersion": "2018.76-4", "clientIdentificationString": "SSH-2.0-dropbear_2018.76", "hassh": "e22efe3cde8b396b874c3f13fdb6c61a", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
|
{"image": "debian", "imageVersion": "sid-slim", "sshClient": "dropbear","sshClientVersion": "2018.76-4", "clientIdentificationString": "SSH-2.0-dropbear_2018.76", "hassh": "e22efe3cde8b396b874c3f13fdb6c61a", "hasshAlgorithms": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au;aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc;hmac-sha1-96,hmac-sha1,hmac-sha2-256;zlib@openssh.com,zlib,none", "hasshVersion": "1.0", "ckex": "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au", "ceacts": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc", "cmacts": "hmac-sha1-96,hmac-sha1,hmac-sha2-256", "ccacts": "zlib@openssh.com,zlib,none", "clcts": "[Empty]", "clstc": "[Empty]", "ceastc": "aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc,3des-ctr,3des-cbc", "cmastc": "hmac-sha1-96,hmac-sha1,hmac-sha2-256", "ccastc": "zlib@openssh.com,zlib,none"}
|
||||||
192
python/hasshGen/hasshgen.py
Normal file
192
python/hasshGen/hasshgen.py
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2018, salesforce.com, inc.
|
||||||
|
# All rights reserved.
|
||||||
|
# Licensed under the BSD 3-Clause license.
|
||||||
|
# For full license text, see the LICENSE file in the repo root
|
||||||
|
# or https://opensource.org/licenses/BSD-3-Clause
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import docker
|
||||||
|
import time
|
||||||
|
from subprocess import Popen
|
||||||
|
|
||||||
|
__author__ = "Adel '0x4D31' Karimi"
|
||||||
|
__email__ = "akarimishiraz@salesforce.com"
|
||||||
|
__version__ = "1.0"
|
||||||
|
__copyright__ = "Copyright (c) 2018, salesforce.com, inc."
|
||||||
|
__license__ = "BSD 3-Clause License"
|
||||||
|
|
||||||
|
|
||||||
|
# Default command for running hassh.py
|
||||||
|
HASSH_COMMAND = 'python3 ../hassh.py -i en1 -l json -o fingerprint.json'
|
||||||
|
# Dockerfiles directory
|
||||||
|
DOCKERFILE_DIR = 'dockerfiles'
|
||||||
|
|
||||||
|
|
||||||
|
def parse_cmd_args():
|
||||||
|
"""parse command line arguments"""
|
||||||
|
desc = "A python script to automate building docker images with different\
|
||||||
|
SSH clients/versions."
|
||||||
|
parser = argparse.ArgumentParser(description=(desc))
|
||||||
|
helptxt = 'Docker image name. e.g. alpine, ubuntu'
|
||||||
|
parser.add_argument('-i', '--image', type=str, help=helptxt)
|
||||||
|
helptxt = 'Docker image version. e.g. 18.04, latest'
|
||||||
|
parser.add_argument('-iV', '--image_ver', type=str, help=helptxt)
|
||||||
|
helptxt = 'SSH client name'
|
||||||
|
parser.add_argument('-c', '--sshclient', type=str, help=helptxt)
|
||||||
|
helptxt = 'SSH client version'
|
||||||
|
parser.add_argument('-cV', '--sshclient_ver', type=str, help=helptxt)
|
||||||
|
helptxt = 'Specify the Dockerfile'
|
||||||
|
parser.add_argument('-d', '--docker_file', type=str, help=helptxt)
|
||||||
|
helptxt = 'Specify the server address to test the SSH connection'
|
||||||
|
parser.add_argument(
|
||||||
|
'-s', '--server', type=str, required=True, help=helptxt)
|
||||||
|
helptxt = 'Bulk mode; Specify an input file containing a list of docker\
|
||||||
|
image, image version, sshclient and sshclient version'
|
||||||
|
parser.add_argument('-iF', '--input_file', type=str, help=helptxt)
|
||||||
|
helptxt = 'Set this option to automatically run hassh.py for capturing SSH\
|
||||||
|
client fingerprints (HASSH). Specify the command for running hassh.py\
|
||||||
|
using --cmd arg.'
|
||||||
|
parser.add_argument(
|
||||||
|
'-f', '--fingerprint', action="store_true", help=helptxt)
|
||||||
|
helptxt = 'Enter the command for running hassh.py. Use with\
|
||||||
|
-f/--fingerprint arg'
|
||||||
|
parser.add_argument(
|
||||||
|
'--cmd', type=str, default=HASSH_COMMAND, help=helptxt)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def command_exec(container, server, ssh_client, rm):
|
||||||
|
"""Runs the container and exec SSH command"""
|
||||||
|
client = docker.DockerClient(
|
||||||
|
base_url='unix://var/run/docker.sock',
|
||||||
|
version='auto')
|
||||||
|
if 'openssh' in ssh_client:
|
||||||
|
cmd = ('ssh -o UserKnownHostsFile=/dev/null '
|
||||||
|
'-o StrictHostKeyChecking=no {}').format(server)
|
||||||
|
elif 'dropbear' in ssh_client:
|
||||||
|
cmd = 'dbclient -y {}'.format(server)
|
||||||
|
elif 'paramiko' in ssh_client:
|
||||||
|
cmd = 'python /tmp/paramiko_conn.py {}'.format(server)
|
||||||
|
try:
|
||||||
|
client.containers.run(container, command=cmd)
|
||||||
|
except Exception as e:
|
||||||
|
errorMsg = str(e)
|
||||||
|
pass
|
||||||
|
if ('Permission denied' in errorMsg or 'paramiko.ssh_exception' in errorMsg
|
||||||
|
or 'dbclient: Connection' in errorMsg):
|
||||||
|
out = "[+] Command successfully executed!"
|
||||||
|
else:
|
||||||
|
out = "[-] Error: {}".format(errorMsg)
|
||||||
|
# Delete the image
|
||||||
|
if rm:
|
||||||
|
client.images.remove(image=container, force=True, noprune=True)
|
||||||
|
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Intake arguments from the user to build docker images and initiate SSH
|
||||||
|
connections for generating client HASSHs"""
|
||||||
|
args = parse_cmd_args()
|
||||||
|
tag_id = 0
|
||||||
|
tag_name = "hasshgen:{img}{id}"
|
||||||
|
client = docker.DockerClient(
|
||||||
|
base_url='unix://var/run/docker.sock',
|
||||||
|
version='auto')
|
||||||
|
|
||||||
|
if args.input_file:
|
||||||
|
with open(args.input_file) as file:
|
||||||
|
input_list = json.load(file)
|
||||||
|
# Run hassh.py
|
||||||
|
proc = None
|
||||||
|
if args.fingerprint and not proc:
|
||||||
|
proc = Popen(args.cmd, shell=True)
|
||||||
|
time.sleep(1)
|
||||||
|
for record in input_list:
|
||||||
|
# Find the Dockerfile
|
||||||
|
if record['image'] in ('debian', 'ubuntu'):
|
||||||
|
docker_file = "{}/Dockerfile.debian".format(DOCKERFILE_DIR)
|
||||||
|
elif record['image'] in ('centos', 'fedora'):
|
||||||
|
docker_file = "{}/Dockerfile.centos".format(DOCKERFILE_DIR)
|
||||||
|
else:
|
||||||
|
docker_file = "{}/Dockerfile.{}".format(
|
||||||
|
DOCKERFILE_DIR,
|
||||||
|
record['image'])
|
||||||
|
# Build the docker images
|
||||||
|
tag_id += 1
|
||||||
|
container = tag_name.format(img=record['image'], id=tag_id)
|
||||||
|
try:
|
||||||
|
output = client.images.build(
|
||||||
|
path='.',
|
||||||
|
dockerfile=docker_file,
|
||||||
|
tag=container,
|
||||||
|
nocache=True,
|
||||||
|
rm=True,
|
||||||
|
forcerm=True,
|
||||||
|
buildargs={"IMAGE": record['image'],
|
||||||
|
"IMAGE_VER": record['image_ver'],
|
||||||
|
"SSHCLIENT": record['sshclient'],
|
||||||
|
"SSHCLIENT_VER": record['sshclient_ver']})
|
||||||
|
# Docker image successfully built
|
||||||
|
print("[+]", output[0], "successfully built")
|
||||||
|
print(" - image: {}:{}, ssh client: {} {}".format(
|
||||||
|
record['image'], record['image_ver'], record['sshclient'],
|
||||||
|
record['sshclient_ver']))
|
||||||
|
# Run the container and exec SSH command
|
||||||
|
out = command_exec(
|
||||||
|
container, args.server, record['sshclient'], rm=False)
|
||||||
|
if out:
|
||||||
|
print(out)
|
||||||
|
except Exception as e:
|
||||||
|
print("[-] Error:", e)
|
||||||
|
# One more command_exec to make sure all captured (bug)
|
||||||
|
command_exec(container, args.server, record['sshclient'], rm=True)
|
||||||
|
# Kill hassh.py
|
||||||
|
if proc:
|
||||||
|
proc.kill()
|
||||||
|
|
||||||
|
elif (args.image and args.image_ver and args.sshclient_ver
|
||||||
|
and args.sshclient):
|
||||||
|
container = tag_name.format(img=args.image, id=tag_id)
|
||||||
|
try:
|
||||||
|
output = client.images.build(
|
||||||
|
path='.',
|
||||||
|
dockerfile=args.docker_file,
|
||||||
|
tag=container,
|
||||||
|
nocache=True,
|
||||||
|
rm=True,
|
||||||
|
forcerm=True,
|
||||||
|
buildargs={"IMAGE": args.image,
|
||||||
|
"IMAGE_VER": args.image_ver,
|
||||||
|
"SSHCLIENT": args.sshclient,
|
||||||
|
"SSHCLIENT_VER": args.sshclient_ver})
|
||||||
|
# Docker image successfully built
|
||||||
|
print("[+]", output[0], "successfully built")
|
||||||
|
print(" - image: {}:{}, ssh client: {} {}".format(
|
||||||
|
args.image, args.image_ver, args.sshclient, args.sshclient_ver))
|
||||||
|
# Run hassh.py
|
||||||
|
proc = None
|
||||||
|
if args.fingerprint and not proc:
|
||||||
|
proc = Popen(args.cmd, shell=True)
|
||||||
|
# Run the container and exec SSH command
|
||||||
|
time.sleep(1)
|
||||||
|
out = command_exec(
|
||||||
|
container, args.server, args.sshclient, rm=False)
|
||||||
|
time.sleep(1)
|
||||||
|
# One more command_exec to make sure all captured (bug)
|
||||||
|
out = command_exec(
|
||||||
|
container, args.server, args.sshclient, rm=True)
|
||||||
|
time.sleep(1)
|
||||||
|
if out:
|
||||||
|
print(out)
|
||||||
|
# Kill hassh.py
|
||||||
|
if proc:
|
||||||
|
proc.kill()
|
||||||
|
except Exception as e:
|
||||||
|
print("[-] Error:", e)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
17
python/hasshGen/paramiko_conn.py
Normal file
17
python/hasshGen/paramiko_conn.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import paramiko
|
||||||
|
import sys
|
||||||
|
|
||||||
|
hostname = sys.argv[1]
|
||||||
|
port = 22
|
||||||
|
usr = 'user'
|
||||||
|
pwd = 'pass'
|
||||||
|
|
||||||
|
try:
|
||||||
|
client = paramiko.SSHClient()
|
||||||
|
client.load_system_host_keys()
|
||||||
|
client.set_missing_host_key_policy(paramiko.WarningPolicy())
|
||||||
|
client.connect(hostname, port=port, username=usr, password=pwd)
|
||||||
|
except paramiko.SSHException as e:
|
||||||
|
raise
|
||||||
51
python/hasshGen/sshClient_list
Normal file
51
python/hasshGen/sshClient_list
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[
|
||||||
|
{"image": "alpine", "image_ver": "3.3", "sshclient": "openssh-client", "sshclient_ver": "7.2_p2-r3"},
|
||||||
|
{"image": "alpine", "image_ver": "3.4", "sshclient": "openssh-client", "sshclient_ver": "7.2_p2-r5"},
|
||||||
|
{"image": "alpine", "image_ver": "3.5", "sshclient": "openssh-client", "sshclient_ver": "7.4_p1-r1"},
|
||||||
|
{"image": "alpine", "image_ver": "3.6", "sshclient": "openssh-client","sshclient_ver": "7.5_p1-r2"},
|
||||||
|
{"image": "alpine", "image_ver": "3.7", "sshclient": "openssh-client","sshclient_ver": "7.5_p1-r8"},
|
||||||
|
{"image": "alpine", "image_ver": "edge", "sshclient": "openssh-client","sshclient_ver": "7.8_p1-r0"},
|
||||||
|
{"image": "ubuntu", "image_ver": "14.04", "sshclient": "openssh-client","sshclient_ver": "1:6.6p1-2ubuntu2.10"},
|
||||||
|
{"image": "ubuntu", "image_ver": "16.04", "sshclient": "openssh-client","sshclient_ver": "1:7.2p2-4ubuntu2.4"},
|
||||||
|
{"image": "ubuntu", "image_ver": "18.04", "sshclient": "openssh-client","sshclient_ver": "1:7.6p1-4"},
|
||||||
|
{"image": "ubuntu", "image_ver": "18.10", "sshclient": "openssh-client","sshclient_ver": "1:7.7p1-4"},
|
||||||
|
{"image": "debian", "image_ver": "wheezy-slim", "sshclient": "openssh-client","sshclient_ver": "1:6.0p1-4+deb7u7"},
|
||||||
|
{"image": "debian", "image_ver": "wheezy-slim", "sshclient": "openssh-client","sshclient_ver": "1:6.0p1-4+deb7u4"},
|
||||||
|
{"image": "debian", "image_ver": "wheezy-backports", "sshclient": "openssh-client","sshclient_ver": "1:6.6p1-4~bpo70+1"},
|
||||||
|
{"image": "debian", "image_ver": "jessie-slim", "sshclient": "openssh-client","sshclient_ver": "1:6.7p1-5+deb8u7"},
|
||||||
|
{"image": "debian", "image_ver": "jessie-slim", "sshclient": "openssh-client","sshclient_ver": "1:6.7p1-5+deb8u4"},
|
||||||
|
{"image": "debian", "image_ver": "stretch-slim", "sshclient": "openssh-client","sshclient_ver": "1:7.4p1-10+deb9u4"},
|
||||||
|
{"image": "debian", "image_ver": "buster-slim", "sshclient": "openssh-client","sshclient_ver": "1:7.8p1-1"},
|
||||||
|
{"image": "debian", "image_ver": "sid-slim", "sshclient": "openssh-client","sshclient_ver": "1:7.8p1-1"},
|
||||||
|
{"image": "fedora", "image_ver": "26", "sshclient": "openssh-clients","sshclient_ver": "7.5p1-2.fc26"},
|
||||||
|
{"image": "fedora", "image_ver": "27", "sshclient": "openssh-clients","sshclient_ver": "7.5p1-5.fc27"},
|
||||||
|
{"image": "fedora", "image_ver": "28", "sshclient": "openssh-clients","sshclient_ver": "7.7p1-2.fc28"},
|
||||||
|
{"image": "fedora", "image_ver": "29", "sshclient": "openssh-clients","sshclient_ver": "7.8p1-1.fc29"},
|
||||||
|
{"image": "fedora", "image_ver": "rawhide", "sshclient": "openssh-clients","sshclient_ver": "7.8p1-2.fc30"},
|
||||||
|
{"image": "centos", "image_ver": "6", "sshclient": "openssh-clients","sshclient_ver": "5.3p1-123.el6_9"},
|
||||||
|
{"image": "centos", "image_ver": "7", "sshclient": "openssh-clients","sshclient_ver": "7.4p1-16.el7"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "2.4.1"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "2.3.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "2.2.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "2.1.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "2.0.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "1.18.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "1.17.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "1.16.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "1.15.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "1.14.0"},
|
||||||
|
{"image": "python", "image_ver": "3.6-alpine", "sshclient": "paramiko","sshclient_ver": "1.13.0"},
|
||||||
|
{"image": "alpine", "image_ver": "3.5", "sshclient": "dropbear-dbclient","sshclient_ver": "2017.75-r0"},
|
||||||
|
{"image": "alpine", "image_ver": "3.7", "sshclient": "dropbear-dbclient","sshclient_ver": "2017.75-r1"},
|
||||||
|
{"image": "alpine", "image_ver": "3.8", "sshclient": "dropbear-dbclient","sshclient_ver": "2018.76-r2"},
|
||||||
|
{"image": "ubuntu", "image_ver": "14.04", "sshclient": "dropbear","sshclient_ver": "2013.60-1ubuntu2"},
|
||||||
|
{"image": "ubuntu", "image_ver": "16.04", "sshclient": "dropbear","sshclient_ver": "2016.72-1"},
|
||||||
|
{"image": "ubuntu", "image_ver": "18.04", "sshclient": "dropbear","sshclient_ver": "2017.75-3build1"},
|
||||||
|
{"image": "debian", "image_ver": "wheezy-slim", "sshclient": "dropbear","sshclient_ver": "2012.55-1.3+deb7u2"},
|
||||||
|
{"image": "debian", "image_ver": "wheezy-slim", "sshclient": "dropbear","sshclient_ver": "2012.55-1.3"},
|
||||||
|
{"image": "debian", "image_ver": "jessie-slim", "sshclient": "dropbear","sshclient_ver": "2014.65-1+deb8u3"},
|
||||||
|
{"image": "debian", "image_ver": "jessie-slim", "sshclient": "dropbear","sshclient_ver": "2014.65-1+deb8u2"},
|
||||||
|
{"image": "debian", "image_ver": "stretch-slim", "sshclient": "dropbear","sshclient_ver": "2016.74-5"},
|
||||||
|
{"image": "debian", "image_ver": "buster-slim", "sshclient": "dropbear","sshclient_ver": "2018.76-4"},
|
||||||
|
{"image": "debian", "image_ver": "sid-slim", "sshclient": "dropbear","sshclient_ver": "2018.76-4"}
|
||||||
|
]
|
||||||
94
zeek/README.md
Normal file
94
zeek/README.md
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# hassh.zeek
|
||||||
|
[](https://opensource.org/licenses/BSD-3-Clause)
|
||||||
|
|
||||||
|
## Features
|
||||||
|
**hassh.zeek** by default will add these fields to your Zeek ssh.log file
|
||||||
|
- hasshVersion
|
||||||
|
- hassh, hasshAlgorithms
|
||||||
|
- hasshServer, hasshServerAlgorithms
|
||||||
|
- cshka (Client Host Key Algorithms), sshka (Server Host Key Algorithms)
|
||||||
|
- The script has been tested on Bro 2.5, 2.5.1, 2.5.5, 2.6.0, 2.6.1, 2.6.3, 3.0.0 and 3.1.2
|
||||||
|
- Note that Zeek (formerly bro) versions < v2.6.0 had a bug which reversed the Client/server flag , see https://github.com/zeek/zeek/pull/191. The current version of the hassh.zeek script does version checking to deal with these version issues. Failure to update Zeek and not the hassh.zeek script will result in the Server and Client packets being processed incorrectly, in effect swapping around hassh with hasshServer.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
Place hassh.zeek in zeek/share/zeek/site/hassh and add this line to your local.zeek script:
|
||||||
|
```bash
|
||||||
|
@load ./hassh
|
||||||
|
```
|
||||||
|
If running Zeek >= 3.0.0 or a Zeek product like Corelight, install by using the Zeek Package Manager with this command:
|
||||||
|
```bash
|
||||||
|
zkg install hassh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
**hassh.zeek** by default will add these fields to your Zeek ssh.log file: ```hasshVersion, hassh, hasshAlgorithms, hasshServer and hasshServerAlgorithms, cshka, sshka.``` If you don't want some of these fields to be logged, simply comment those field lines out in each of the locations within hassh.zeek as shown in the code blocks below.
|
||||||
|
```bash
|
||||||
|
redef record SSH::Info += {
|
||||||
|
hasshVersion: string &log &optional;
|
||||||
|
hassh: string &log &optional;
|
||||||
|
hasshServer: string &log &optional;
|
||||||
|
|
||||||
|
# ===> Log Client variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#ckex: string &log &optional;
|
||||||
|
cshka: string &log &optional;
|
||||||
|
#ceacts: string &log &optional;
|
||||||
|
#cmacts: string &log &optional;
|
||||||
|
#ccacts: string &log &optional;
|
||||||
|
#clcts: string &log &optional;
|
||||||
|
hasshAlgorithms: string &log &optional;
|
||||||
|
|
||||||
|
# ===> Log Server variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#skex: string &log &optional;
|
||||||
|
sshka: string &log &optional;
|
||||||
|
#seastc: string &log &optional;
|
||||||
|
#smastc: string &log &optional;
|
||||||
|
#scastc: string &log &optional;
|
||||||
|
#slstc: string &log &optional;
|
||||||
|
hasshServerAlgorithms: string &log &optional;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
if ( capabilities$is_server == T ) {
|
||||||
|
get_hassh(c, capabilities);
|
||||||
|
c$ssh$hasshVersion = c$hassh$hasshVersion;
|
||||||
|
c$ssh$hassh = c$hassh$hassh;
|
||||||
|
|
||||||
|
# ===> Log Client variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#c$ssh$ckex = c$hassh$ckex;
|
||||||
|
c$ssh$cshka = c$hassh$cshka;
|
||||||
|
#c$ssh$ceacts = c$hassh$ceacts;
|
||||||
|
#c$ssh$cmacts = c$hassh$cmacts;
|
||||||
|
#c$ssh$ccacts = c$hassh$ccacts;
|
||||||
|
#c$ssh$clcts = c$hassh$clcts;
|
||||||
|
c$ssh$hasshAlgorithms = c$hassh$hasshAlgorithms;
|
||||||
|
}
|
||||||
|
if ( capabilities$is_server == F ) {
|
||||||
|
get_hasshServer(c, capabilities);
|
||||||
|
c$ssh$hasshVersion = c$hassh$hasshVersion;
|
||||||
|
c$ssh$hasshServer = c$hassh$hasshServer;
|
||||||
|
|
||||||
|
# ===> Log Server variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#c$ssh$skex = c$hassh$skex;
|
||||||
|
c$ssh$sshka = c$hassh$sshka;
|
||||||
|
#c$ssh$seastc = c$hassh$seastc;
|
||||||
|
#c$ssh$smastc = c$hassh$smastc;
|
||||||
|
#c$ssh$scastc = c$hassh$scastc;
|
||||||
|
#c$ssh$slstc = c$hassh$clcts;
|
||||||
|
c$ssh$hasshServerAlgorithms = c$hassh$hasshServerAlgorithms;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
After ammending the Zeek script, don't forget to reload Zeek.
|
||||||
|
```bash
|
||||||
|
zeekctl stop
|
||||||
|
zeekctl install
|
||||||
|
zeekctl start
|
||||||
|
```
|
||||||
|
|
||||||
|
## Credits:
|
||||||
|
HASSH was conceived and developed by [Ben Reardon](mailto:breardon@salesforce.com) (@benreardon) within the Detection Cloud Team at Salesforce, with inspiration and contributions from [Adel Karimi](mailto:akarimishiraz@salesforce.com) (@0x4d31) and the [JA3 crew](https://github.com/salesforce/ja3/) crew:[John B. Althouse](mailto:jalthouse@salesforce.com) , [Jeff Atkinson](mailto:jatkinson@salesforce.com) and [Josh Atkins](mailto:j.atkins@salesforce.com)
|
||||||
1
zeek/__load__.zeek
Normal file
1
zeek/__load__.zeek
Normal file
@ -0,0 +1 @@
|
|||||||
|
@load ./hassh.zeek
|
||||||
144
zeek/hassh.zeek
Normal file
144
zeek/hassh.zeek
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
# HASSH #
|
||||||
|
# SSH Key Initiation Exchange Fingerprinting #
|
||||||
|
# #
|
||||||
|
# Script Version: v1.5 22 August 2019 #
|
||||||
|
# Authors: Ben Reardon (breardon@salesforce.com, @benreardon) #
|
||||||
|
# : Jeff Atkinson (jatkinson@salesforce.com) #
|
||||||
|
# : John Althouse (jalthouse@salesforce.com) #
|
||||||
|
# Description: This Zeek script appends hassh data to ssh.log #
|
||||||
|
# by enumerating the SSH_MSG_KEXINIT packets sent #
|
||||||
|
# as clear text between the client and server as part #
|
||||||
|
# of the negotiation of an SSH connection. #
|
||||||
|
# #
|
||||||
|
# Copyright (c) 2018, salesforce.com, inc. #
|
||||||
|
# All rights reserved. #
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause #
|
||||||
|
# For full license text, see the LICENSE file in the repo root or #
|
||||||
|
# https://opensource.org/licenses/BSD-3-Clause #
|
||||||
|
|
||||||
|
|
||||||
|
module SSH;
|
||||||
|
|
||||||
|
export {
|
||||||
|
type HASSHStorage: record {
|
||||||
|
hasshVersion:string &log &default="1.1"; # ANY change in hassh/hasshServer composition requires Version update
|
||||||
|
hassh: string &log &optional &default="";
|
||||||
|
hasshServer: string &log &optional &default="";
|
||||||
|
|
||||||
|
# Client variables #
|
||||||
|
ckex: string &log &optional &default="";
|
||||||
|
cshka: string &log &optional &default="";
|
||||||
|
ceacts: string &log &optional &default="";
|
||||||
|
cmacts: string &log &optional &default="";
|
||||||
|
ccacts: string &log &optional &default="";
|
||||||
|
#clcts: string &log &optional &default="";
|
||||||
|
hasshAlgorithms: string &log &optional &default="";
|
||||||
|
|
||||||
|
# Server variables #
|
||||||
|
skex: string &log &optional &default="";
|
||||||
|
sshka: string &log &optional &default="";
|
||||||
|
seastc: string &log &optional &default="";
|
||||||
|
smastc: string &log &optional &default="";
|
||||||
|
scastc: string &log &optional &default="";
|
||||||
|
#slstc: string &log &optional &default="";
|
||||||
|
hasshServerAlgorithms: string &log &optional &default="";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
redef record connection += {
|
||||||
|
hassh: HASSHStorage &optional;
|
||||||
|
};
|
||||||
|
|
||||||
|
redef record SSH::Info += {
|
||||||
|
hasshVersion: string &log &optional;
|
||||||
|
hassh: string &log &optional;
|
||||||
|
hasshServer: string &log &optional;
|
||||||
|
|
||||||
|
# ===> Log Client variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#ckex: string &log &optional;
|
||||||
|
cshka: string &log &optional;
|
||||||
|
#ceacts: string &log &optional;
|
||||||
|
#cmacts: string &log &optional;
|
||||||
|
#ccacts: string &log &optional;
|
||||||
|
#clcts: string &log &optional;
|
||||||
|
hasshAlgorithms: string &log &optional;
|
||||||
|
|
||||||
|
# ===> Log Server variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#skex: string &log &optional;
|
||||||
|
sshka: string &log &optional;
|
||||||
|
#seastc: string &log &optional;
|
||||||
|
#smastc: string &log &optional;
|
||||||
|
#scastc: string &log &optional;
|
||||||
|
#slstc: string &log &optional;
|
||||||
|
hasshServerAlgorithms: string &log &optional;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Build Client Application fingerprint #
|
||||||
|
function get_hassh(c:connection, capabilities: SSH::Capabilities ) {
|
||||||
|
c$hassh = HASSHStorage();
|
||||||
|
c$hassh$ckex = join_string_vec(capabilities$kex_algorithms,",");
|
||||||
|
c$hassh$ceacts = join_string_vec(capabilities$encryption_algorithms$client_to_server,",");
|
||||||
|
c$hassh$cmacts = join_string_vec(capabilities$mac_algorithms$client_to_server,",");
|
||||||
|
c$hassh$ccacts = join_string_vec(capabilities$compression_algorithms$client_to_server,",");
|
||||||
|
c$hassh$cshka = join_string_vec(capabilities$server_host_key_algorithms,","); # The Host key algorithm set may be useful information by itself but is not included in the hassh.
|
||||||
|
#c$hassh$clcts = join_string_vec(capabilities$languages$client_to_server,","); # The Languages field may be useful information by itself but is not included in the hasshServer.
|
||||||
|
c$hassh$hasshAlgorithms = string_cat(c$hassh$ckex,";",c$hassh$ceacts,";",c$hassh$cmacts,";",c$hassh$ccacts); # Contatenate the four selected lists of algorithms (Key,Enc,MAC,Compression) to build the Client hash
|
||||||
|
c$hassh$hassh = md5_hash(c$hassh$hasshAlgorithms);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Build Server Application fingerprint #
|
||||||
|
function get_hasshServer(c:connection, capabilities: SSH::Capabilities ) {
|
||||||
|
c$hassh = HASSHStorage();
|
||||||
|
c$hassh$skex = join_string_vec(capabilities$kex_algorithms,",");
|
||||||
|
c$hassh$seastc = join_string_vec(capabilities$encryption_algorithms$server_to_client,",");
|
||||||
|
c$hassh$smastc = join_string_vec(capabilities$mac_algorithms$server_to_client,",");
|
||||||
|
c$hassh$scastc = join_string_vec(capabilities$compression_algorithms$server_to_client,",");
|
||||||
|
c$hassh$sshka = join_string_vec(capabilities$server_host_key_algorithms,","); # The Host key algorithm set may be useful information by itself but is not included in the hasshServer.
|
||||||
|
#c$hassh$slstc = join_string_vec(capabilities$languages$server_to_client,","); # The Languages field may be useful information by itself but is not included in the hasshServer.
|
||||||
|
c$hassh$hasshServerAlgorithms = string_cat(c$hassh$skex,";",c$hassh$seastc,";",c$hassh$smastc,";",c$hassh$scastc); # Contatenate the four selected lists of algorithms (Key,Enc,Message,Compression) to build the Server hash
|
||||||
|
c$hassh$hasshServer = md5_hash(c$hassh$hasshServerAlgorithms);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Event #
|
||||||
|
event ssh_capabilities(c: connection, cookie: string, capabilities: SSH::Capabilities) {
|
||||||
|
if ( !c?$ssh ) {return;}
|
||||||
|
c$hassh = HASSHStorage();
|
||||||
|
|
||||||
|
# Prior to 2.6.0 Zeek has a bug which it reverses the Client/server flag.
|
||||||
|
# See https://github.com/zeek/zeek/pull/191
|
||||||
|
# The "if" statements here do a version check to account for this bug in versions older than 2.6.0
|
||||||
|
|
||||||
|
if ((Version::info$version_number < 20600 && capabilities$is_server == T) || (Version::info$version_number >= 20600 && capabilities$is_server == F) ) {
|
||||||
|
get_hassh(c, capabilities);
|
||||||
|
c$ssh$hasshVersion = c$hassh$hasshVersion;
|
||||||
|
c$ssh$hassh = c$hassh$hassh;
|
||||||
|
|
||||||
|
# ===> Log Client variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#c$ssh$ckex = c$hassh$ckex;
|
||||||
|
c$ssh$cshka = c$hassh$cshka;
|
||||||
|
#c$ssh$ceacts = c$hassh$ceacts;
|
||||||
|
#c$ssh$cmacts = c$hassh$cmacts;
|
||||||
|
#c$ssh$ccacts = c$hassh$ccacts;
|
||||||
|
#c$ssh$clcts = c$hassh$clcts;
|
||||||
|
c$ssh$hasshAlgorithms = c$hassh$hasshAlgorithms;
|
||||||
|
}
|
||||||
|
if ( (Version::info$version_number < 20600 && capabilities$is_server == F) || (Version::info$version_number >= 20600 && capabilities$is_server == T) ) {
|
||||||
|
get_hasshServer(c, capabilities);
|
||||||
|
c$ssh$hasshVersion = c$hassh$hasshVersion;
|
||||||
|
c$ssh$hasshServer = c$hassh$hasshServer;
|
||||||
|
|
||||||
|
# ===> Log Server variables <=== #
|
||||||
|
# Comment out any fields that are not required to be logged in their raw form to ssh.log
|
||||||
|
#c$ssh$skex = c$hassh$skex;
|
||||||
|
c$ssh$sshka = c$hassh$sshka;
|
||||||
|
#c$ssh$seastc = c$hassh$seastc;
|
||||||
|
#c$ssh$smastc = c$hassh$smastc;
|
||||||
|
#c$ssh$scastc = c$hassh$scastc;
|
||||||
|
#c$ssh$slstc = c$hassh$clcts;
|
||||||
|
c$ssh$hasshServerAlgorithms = c$hassh$hasshServerAlgorithms;
|
||||||
|
}
|
||||||
|
}
|
||||||
5
zkg.meta
Normal file
5
zkg.meta
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[package]
|
||||||
|
script_dir = zeek
|
||||||
|
description = HASSH is used to identify specific Client and Server SSH implementations. The fingerprints can be stored, searched and shared in the form of an MD5 fingerprint. This package logs components to ssh.log
|
||||||
|
tags = zeek plugin, ssh, fingerprint, logging
|
||||||
|
version = 1.0
|
||||||
Loading…
x
Reference in New Issue
Block a user