TLS フィンガープリントを使用して脅威を特定する

この記事では、ロシア語を話すセグメントには十分な資料がない TLS フィンガープリンティング技術についてお話したいと思います。修正してみましょう。この記事は、説明されている方法の著者の主題資料 (ここここ) を部分的に翻訳し、Acribia からの実際の実装の説明も含まれています。





SSL/TLS(以下、TLS)の仕組みについては、深く掘り下げることはしませんが、簡単に説明します。





TLS はデータを暗号化するため、使用すること自体が利点です。しかしその一方で、マルウェアの作成者はそれを使用して暗号化されたトラフィックに隠れて (この記事はこの方向に偏っているだけです)、それらを検出して無力化することを困難にしています。





TLS セッションを開始するために、クライアントは 3 ウェイ TCP ハンドシェイクの後にサーバーに hello "パケット" を送信します。この「パッケージ」とその作成方法は、クライアント アプリケーションの作成に使用されるパッケージと暗号化方法によって異なります。サーバーが TLS 接続を受け入れる場合、サーバーは hello パケットで応答し、暗号化ネゴシエーションを続行します。





TLS 暗号化ネゴシエーションはクリア テキストで送信されるため、クライアント アプリケーションを追跡および識別できます。





これが、TLS フィンガープリント技術の本質です。そして今、もう少し詳細。





TLS fingerprinting

, . « » . :





  • TLS;





  • TLS;





  • ;





  • ;





  • .





, ( ):





  • ;





  • ;





  • .   





(, ).





:





  • — TLS-. , .





  • TLS . , , , , , - .





  • , .     





TLS Fingerprinting – . , . / , , .





, Exchange , OWA, Python .





: TLS Fingerprinting TLS- TLS-. , PCAP .





, :





  • JA3 JA3S;





  • TLS – JARM.





JA3 JA3S

JA3 : TLS, , TLS, . , «,» «-» .





:





TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats
      
      



:





771,49196-49162-49195-52393-49161-49200-49172-49199-52392-49171-159-57-56-107-158-52394-51-50-103-22-19-157-53-61-156-47-60-10,0-23-65281-10-11-13-28,29-23-24-25,0
      
      



ClientHello TLS, :





769,451091009836191899,,,
      
      



MD5. JA3:





c8446f59cca2149cb5f56ced4b448c8d
      
      



JA3S – . JA3S : TLS, TLS. , , «,» «-» .





, :





TLSVersion,Cipher,Extensions
      
      



:





769,47,6528101135516
      
      



Server Hello TLS, .





:





769,47,
      
      



MD5 32- . 





JA3S:





4835b19f14997673071435cb321f5445
      
      



JA3 JA3S – TLS. JA3 , TLS, JA3S . .





JARM.





JARM

JARM , 10 TLS . TLS JARM. JARM , TLS . JARM , 62- .





JARM :





  • , TLS;





  • , , , Google, Yandex Apple;





  • ;





  • .





30 TLS, 10 . «000» , . 32 SHA256 , , x509. JARM, 30 , 32 , , , , , .





, (IOC) (IOA). / .. - , TI IP, , .. « ». , , .





- JARM IOC . , JARM, JARM , IP . , .





JARM , , , , . JARM .





, . JARM Palo Alto Networks   API JARM.





Palo Alto  ., , , Zeek ( Bro) – open-source , .





Zeek TLS, .. . , , TLS, , .





Zeek TLS JA3\JA3S.





Zeek, , SIEM ( SIEM, Zeek’ ). , SIEM . Zeek , .





JA3 – . , API JA3 – .





JA3S, , . , , , , .





JARM , Palo Alto, . github , , . JARM.





, . Splunk JA3/JA3S. . SIEM.





  • JA3\JA3S. , , Emotet TrickBot:





    JA3 = 4d7a28d6f2263ed61de88ca66eb011e3 (Emotet)
    JA3S = 80b3a14bccc8598a1f3bbe83e71f735f (C2 Server Response)
    JA3 = 6734f37431670b3ab4292b8f60f29984 (Trickbot)
    JA3S = 623de93db17d313345d7ea481e7443cf(C2 Server Response)
          
          



  • JA3, .





, , , , - – . , , .





  • JA3 .





, , . , , , . – .





  • JA3\JA3S .





.





  • C&C JARM.





TLS-, , JARM ( , SOAR), , C&C , , .





  • JA3 , .





Windows JA3 , Linux (Android/IOS), . ( / NAT). , , IT.





  • JA3 , .





Firefox Chrome ( NAT ). , , Fingerprint. .





  • JA3 , .





, C/C++. , Python Golang. , requests ( python) http ( Golang), . , , . , «» , , . JA3 , .





: JARM ( JA3S ) C&C , .





, JARM , .






, TLS Fingerprinting, , , TLS 1.3.





TLS 1.3 , — SNI (Server Name Indication). HTTPS HOST, IP HTTPS-. , fingerprint, , . , , SNI.





TLS 1.3 – Encrypted SNI (ESNI), , .





ESNI , . ESNI , , TLS fingerprinting , .





:





, SOC-;





, Threat Intelligence  @AAMinin;





, .








All Articles