Otisk JA3
Author
Albert FloresTakzvaný JA3 je kryptografickým otiskem vytvořeným Johnem Althousem, Jeffem Atkinsonem a Joshem Atkinsem. Proto nese označení JA3. Jedná se o otisk (anglicky fingerprint) založený na detekci atributů šifrovaného spojení. Lze jej vypočítat jak pro klienta, tak i pro server, a do výpočtu se zahrnuje verze protokolu (např. TLSv1.2), podpora šifrovacích algoritmů, rozšíření potokolu, informace o eliptických křivkách.
Otisku se používá především pro detekci známého chování pro oblast počítačové bezpečnosti, především detekci známého malware jako je např. Emotet malware, či Trickbot malware.
Jelikož malware často komunikuje zašifrovanou formou, je možné provést otisk pro klientskou i serverovou část. Pro serverovou část se používá tzv. +more JA3S, kde písmeno "S" značí, že se jedná o otisk serveru.
Atributy a reprezentace
Pro výpočet samotného otisku se uvažuje následujících atributů šifrovaného spojení v přesně daném pořadí:
* verze protokolu TLS * podpora šifer * podpora rozšíření protokolu * podporované typy eliptických křivek * formáty bodů eliptických křivek
Pomocí překladu jednotlivých atributů do jejich číselné reprezentace můžeme získat hodnotu například následující hodnotu: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53-10,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0 Jelikož je tento řetězec příliš dlouhý pro ověřování inteligentními IDS systémy, používá se tzv. MD5 hashe ze získané hodnoty, což nám v tomto případě dá: 66918128f1b9b03303d77c6f2eefd128 Jedná se o mnohem kratší řetězec usnadňující detekci. +more Jako funkce pro výpočet hashe se používá funkce MD5.
Atributy a reprezentace pro JA3S
Pro výpočet serverového otisku se používá podobného principu, ovšem s tím rozdílem, že se uvažuje pouze následujících atributů spojení, které posílá server samotný:
* verze protokolu TLS * podpora šifer * podpora rozšíření protokolu
Stejně jako v případě JA3 provedeme překlad atributů do jejich číselné reprezentace, čímž získáme například: 769,47,65281-0-11-35-5-16 Z této hodnoty vygenerujeme MD5 hash, a vznikne nám hodnota: 836ce314215654b5b1f85f97c73e506f Výhodou využití MD5 hashe je to, že nám vždy zajistí stejnou délku, a ted nezáleží na tom, kolik šifer server podporuje, protože ačkoliv máme libovolně dlouhý vstupní řetězec, je jeho MD5 hash ve své hexadecimální reprezentaci vždy dlouhý právě 32 znaků.
Příklady
Běžný TOR klient:
JA3 = e7d705a3286e19ea42f587b344ee6865 (TOR klient)
JA3S = a95ca7eab4d47d051a5cd4fb7b6005dc (odpověď TOR serveru)
Trickbot malware:
JA3 = 6734f37431670b3ab4292b8f60f29984 (Trickbot malware)
JA3S = 623de93db17d313345d7ea481e7443cf (odpověď od řídícího serveru malware Trickbot)
Emotet malware:
JA3 = 4d7a28d6f2263ed61de88ca66eb011e3 (Emotet malware)
JA3S = 80b3a14bccc8598a1f3bbe83e71f735f (odpověď od řídícího serveru malware Emotet)
Implementace
Samotný princip otisků JA3 a JA3S byl implementován jako otevřený software se zdrojovými kódy dostupnými na serveru GitHub a je dostupný zde:
* https://github.com/salesforce/ja3
Ověřování
K ověřování jednotlivých JA3 hashů je možné využít webovou stránku ja3er.com:
* https://ja3er.com/