
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 a small MD5 fingerprint.
« HASSH » est une norme d’empreinte réseau qui permet d’identifier des implémentations SSH spécifiques, côté client et côté serveur. Les empreintes peuvent être facilement stockées, recherchées et partagées sous la forme d’une empreinte MD5.
HASSH a été inventé chez Salesforce en 2018. Cependant, le projet n’est plus activement maintenu par Salesforce. Son créateur original, Ben Reardon, maintient le fork actif chez Corelight.
« hassh » et « hasshServer » sont des hachages MD5 construits à partir d’un ensemble spécifique d’algorithmes pris en charge par diverses applications client et serveur SSH. Ces algorithmes sont échangés après la poignée de main TCP initiale en trois étapes sous forme de paquets en clair appelés messages « SSH_MSG_KEXINIT », et font partie intégrante de la mise en place du canal SSH chiffré final. L’existence et l’ordre de ces algorithmes sont suffisamment uniques pour pouvoir être utilisés comme une empreinte afin d’identifier l’application cliente ou serveur sous-jacente ou son implémentation spécifique, indépendamment des identifiants apparents de plus haut niveau tels que les chaînes « Client » ou « Serveur ».
Pour le client SFTP « Cyberduck » (plus précisément SSH-2.0-Cyberduck/6.7.1.28683 (Mac OS X/10.13.6) (x86_64)), l’ensemble des algorithmes pris en charge est le suivant :
La concaténation de ces algorithmes avec un délimiteur « ; » donne le hasshAlgorithms, utile pour une analyse détaillée.
[email protected],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,[email protected],diffie-hellman-group15-sha256,[email protected],[email protected],diffie-hellman-group16-sha256,[email protected],[email protected],[email protected];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;[email protected],zlib,none
Enfin, le hassh est simplement le MD5 de hasshAlgorithms, et est utilisé pour le stockage, la recherche et le partage. Voici quelques exemples :
de30354b88bae4c2810426614e1b6976 Powershell Renci.SshNet.SshClient.0.0.1 (utilisé par les modules d’exploitation Empire)
fafc45381bfde997b6305c4e1600f1bf Ruby/Net::SSH_5.0.2 x86_64-linux (utilisé par les modules d’exploitation Metasploit)
b5752e36ba6c5979a575e43178908adf Python Paramiko_2.4.1 (utilisé par les modules d’exploitation Metasploit)
16f898dd8ed8279e1055350b4e20666c Dropbear_2012.55 (utilisé dans les systèmes embarqués IoT)
8a8ae540028bf433cd68356c1b9e8d5b CyberDuck Version 6.7.1 (28683)
06046964c022c6407d15a27b12a6a4fb OpenSSH_7.7p1 Ubuntu-4
Pour un serveur SSH standard SSH-2.0-OpenSSH_5.3, l’ensemble des algorithmes pris en charge est le suivant :
La concaténation de ces algorithmes avec un délimiteur « ; » donne le hasshServerAlgorithms, utile pour une analyse détaillée.
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,[email protected];hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96;none,[email protected]
Enfin, le hasshServer est simplement le MD5 de hasshServerAlgorithms. Voici quelques exemples :
c1c596caaeb93c566b8ecf3cae9b5a9e SSH-2.0-dropbear_2016.74
d93f46d063c4382b6232a4d77db532b2 SSH-2.0-dropbear_2016.72
2dd9a9b3dbebfaeec8b8aabd689e75d2 SSH-2.0-AWSCodeCommit
696e7f84ac571fdf8fa5073e64ee2dc8 SSH-2.0-FTP
hassh et hasshServer ont été conçus et développés par Ben Reardon (@benreardon) au sein de l’équipe Detection Cloud chez Salesforce, avec l’inspiration et les contributions d’Adel Karimi (@0x4d31) et de l’équipe JA3 : John B. Althouse, Jeff Atkinson et Josh Atkins.
| Fonction | Algorithmes observés dans les paquets SSH_MSG_KEXINIT |
|---|
| Méthodes d’échange de clés | [email protected],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,[email protected],diffie-hellman-group15-sha256,[email protected],[email protected],diffie-hellman-group16-sha256,[email protected],[email protected],[email protected] |
| Chiffrement | 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 |
| Authentification de message | hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-sha2-256,hmac-sha2-512 |
| Compression | [email protected],zlib,none |
| Fonction | Algorithmes observés dans les paquets SSH_MSG_KEXINIT |
|---|
| Méthodes d’échange de clés | diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 |
| Chiffrement | aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] |
| Authentification de message | hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 |
| Compression | none,[email protected] |