今日のデジタル世界では、サイバーセキュリティは個人、組織、さらには国家にとって重要な問題となっています。さまざまな脅威の中でも、「ボット トラフィック」またはボット ネットワーク トラフィックが大きな懸念事項として浮上しています。
ボットトラフィックは、主に自動化されたスクリプトやプログラムによって生成され、次のようなさまざまな悪意のある活動に広く使用されています。 DDoS攻撃、スパムメールの送信、フィッシング、不正な広告クリックなど、さまざまな悪意のある行為がボットトラフィックを誘発します。これらの悪意のある行為は、個々のユーザーのプライバシーと金銭的安全性を脅かすだけでなく、企業、組織、さらには国家ネットワークインフラストラクチャのサイバーセキュリティに重大なリスクをもたらします。そのため、ボットトラフィックの研究と防御は、サイバーセキュリティの分野で重要なトピックとなっています。このガイドは、TLSフィンガープリンティング技術を使用してボットトラフィックを検出および識別し、サイバーセキュリティをより効果的に保護する方法を説明することを目的としています。
TLS フィンガープリンティングの概要
TLS は Transport Layer Security の略で、データの安全な送信を保証するためにネットワーク通信でよく使用されるプロトコルです。TLS はデータの送受信プロセス中に暗号化技術を使用して、データの傍受や改ざんを防ぎ、情報の整合性と機密性を保護します。
TLS は、Web ブラウジング、登録とログイン、支払い取引、ストリーミング メディアから、ますます普及しているモノのインターネット (IoT) まで、インターネット上のトラフィックの大部分を暗号化するために使用されます。そのセキュリティは、マルウェアの通信トラフィックを隠すために TLS を使用する悪意のある攻撃者にも好まれています。
TLS 接続の開始時に、クライアントは TLS Client Hello パケットを送信します。このパケットはクライアント アプリケーションによって生成され、サポートされている暗号と推奨される通信方法についてサーバーに通知し、プレーンテキストで送信されます。TLS Client Hello パケットは各アプリケーションまたはその基盤となる TLS ライブラリごとに一意であり、このパケットから計算されるハッシュ値は TLS フィンガープリントと呼ばれます。
図1: TLSハンドシェイクプロセス
現在、TLS フィンガープリントの主な用途は、Salesforce のオープンソース JA3 と JA4 です。JA4 は、より多くの検出ディメンションとシナリオを含む JA3 のアップグレード版です。したがって、この記事では、ボット軽減における JA4 ベースの TLS フィンガープリントの適用と実践に主に焦点を当てています。
1. JA3とJA3S
JA3 メソッドは、クライアントの Client Hello パケット内の次のフィールドからバイトの 10 進値を収集します: TLS バージョン、暗号スイート、拡張リスト、楕円曲線、楕円曲線形式。次に、これらの値を出現順に連結し、各フィールドをコンマで区切り、フィールド内の各値をハイフンで区切ります。
例:
771,4865-4866-4867-49195-49196-52393-49199-49200-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-51-45-43-21,29-23-24,0
JA3 フィンガープリントは、連結された文字列に 32 ビットの MD5 ハッシュを適用することによって取得されます。
JA3: f79b6bad2ad0641e1921aef10262856b
JA3 フィンガープリントの計算中は、TLS 拡張機能に含まれる GREASE フィールドの値を無視する必要があります。Google が使用するこのメカニズムは、TLS エコシステムにおける拡張性の障害を防止します。
図2: クライアントHelloメッセージ
JA3 フィンガープリントを生成した後、同様の方法を使用してサーバー側 (つまり、TLS Server Hello メッセージ) のフィンガープリントを識別します。JA3S 方式では、Server Hello パケットの次のフィールドからバイトの 10 進数値を収集します: TLS バージョン、暗号スイート、および拡張機能リスト。これらの値は、表示される順序で連結され、各フィールドはカンマで区切られ、フィールド内の各値はハイフンで区切られます。
例:
771,49200,65281-0-11-35-16-23
JA3S フィンガープリントは、連結された文字列に 32 ビットの MD5 ハッシュを適用することによって取得されます。
JA3S: d154fcfa5bb4f0748e1dd1992c681104
図3: サーバーHelloメッセージ
2. JA4+
JA4+ は、2017 年に導入された JA3 TLS フィンガープリント標準に代わる、使いやすく共有可能なモジュール式ネットワーク フィンガープリント システムを提供します。JA4 検出方法は読みやすさを向上させ、より効果的な脅威の探索と分析に役立ちます。すべての JA4+ フィンガープリントは a_b_c としてフォーマットされ、フィンガープリントのさまざまな部分が分離されています。これにより、ab、ac、または c のみを使用して検索と検出が可能になります。たとえば、着信アプリケーションの Cookie のみを分析したい場合は、JA4H_c を参照できます。この新しい局所性保持形式により、シンプルで使いやすく、スケーラブルなまま、より深く豊富な分析が可能になります。
JA4+ 指紋には次の寸法が含まれます。
- JA4 — TLS クライアント
- JA4S — TLSサーバーの応答
- JA4H — HTTP クライアント
- JA4L — 光の距離/位置
- JA4X — X509 TLS 証明書
- JA4SSH — SSH トラフィック
この記事では主に JA4 のアプリケーションについて紹介します。その他の側面に関する詳細については、JA4 オープンソース リポジトリを参照してください。 https://github.com/FoxIO-LLC/ja4.
図4: JA4 回路図
JA4 は、JA4_a、JA4_b、および JA4_c で構成されています。
JA4_r = JA4_a(t13d1516h2)_JA4_b(ソートされた暗号スイート)_JA4_c(ソートされた拡張機能_元の暗号化アルゴリズム)
JA4_ア: t13d1516h2 には、クライアントの TLS バージョン、SNI、暗号スイートの数、拡張機能の数、および ALPN が含まれます。ALPN は、TLS ネゴシエーションが完了した後にアプリケーションが通信するプロトコルを示します。「00」は ALPN がないことを示します。多くの IoT デバイスは HTTP/2 経由で通信するため、ALPN「h2」の存在は必ずしもブラウザを示すわけではないことに注意してください。ただし、ALPN がない場合は、クライアントが Web ブラウザではない可能性があります。JA4 は、トラフィックが TCP 経由か HTTP 経由かに関係なく、クライアントのフィンガープリントを作成します。 クイックQUIC は、TLS1.3 を UDP パケットにカプセル化する新しい HTTP/3 標準で使用されるプロトコルです。
JA4_b: ソートされた暗号スイートに対して SHA256 を実行し、最初の 12 文字を取得します。例:
002f、0035、009c、009d、1301、1302、1303、c013、c014、c02b、c02c、c02f、c030、cca8、cca9 = 8daaf6152771
JA4_c: ソートされた拡張子と元の暗号化アルゴリズムに対して SHA256 を実行し、最初の 12 文字を取得します。例:
0005,000a,000b,000d,0012,0015,0017,001b,0023,002b,002d,0033,4469,ff01_0403,0804,0401,0503,0805,0501,0806,0601 = e5627efa2ab1
ボット対策における JA4 フィンガープリンティングの応用
検出原理
さまざまなクライアント (ブラウザ、コンピュータ ソフトウェア、プログラム) が、さまざまなプロトコル バージョン、暗号スイート、拡張機能、暗号化アルゴリズムをサポートしています。TLS ハンドシェイク中、Client Hello はプレーンテキストで送信され、JA4 フィンガープリントを計算してクライアントの実際のプロパティを識別できます。
- Firefox (JA4 クライアント Hello) ≠ Chrome (JA4 クライアント Hello)
- Chrome 120 (JA4 クライアント Hello) ≠ Chrome 80 (JA4 クライアント Hello)
- Chrome iOS (JA4 クライアント Hello) ≠ Chrome Android (JA4 クライアント Hello)
- Heritrix (JA4 クライアント Hello) ≠ Chrome (JA4 クライアント Hello)
クライアントが悪意を持って改ざんされていない場合、JA4 フィンガープリントは安定したままです。
応募方法
で ボットの緩和 シナリオでは、クライアント識別に JA4 フィンガープリントを適用するには、クライアント IP 情報、クライアント オペレーティング システム情報、クライアント デバイス名、バージョン番号などの他の情報と組み合わせる必要があります。これらのシナリオでは、JA4 フィンガープリントには、フィンガープリントの一意性の検出とフィンガープリントの一貫性の検出という 2 つの主な適用方法があります。
- 一意性の検出:
一部のクライアント プログラムは、固有の JA4 フィンガープリントを持つように設計されており、これらのクライアントのフィンガープリントはめったに変更されません。一意性の検出により、このような異常なクライアントを効果的に識別できます。
応用 | JA4+ 指紋 |
クロム | JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (初期) |
JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (再接続) | |
ファイアフォックス | JA4=t13d1715h2_5b57614c22b0_7121afd63204(初期) |
JA4=t13d1715h2_5b57614c22b0_7121afd63204 (再接続) | |
サファリ | JA4=t13d2014h2_a09f3c656075_14788d8d241b |
相続人 | JA4=t13d491100_bd868743f55c_fa269c3d986d |
検出されないChromeドライバ | JA4=t13d1516h2_8daaf6152771_02713d6af862 |
IcedID マルウェア | JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8 |
sqlマップ | JA4= t13i311000_e8f1e7e78f70_d41ae481755e |
アプリスキャン | JA4= t12i3006h2_a0f71150605f_1da50ec048a3 |
表1: 一般的なクライアントJA4のフィンガープリント
- 一貫性検出:
フィンガープリントの一貫性検出の原理は、クライアントが宣言したデバイス情報 (オペレーティング システム、ブラウザーの種類、バージョン番号) を JA4 フィンガープリントと比較し、フィンガープリントに対応する実際のデバイス情報と一致するかどうかをチェックすることです。
クライアントが申告したデバイス情報 | クライアント JA4 フィンガープリント | 一貫性 |
「ブラウザ」:「Chrome」、 “ブラウザバージョン”: “89.8.7866”, 「OS」: 「Windows」、 “os_version”: “7”、 |
t12d290400_11b08e233c4b_017f05e53f6d | 異常な |
「ブラウザ」:「Chrome」、 “ブラウザバージョン”: “93.0.4622”, 「OS」: 「Windows」、 “os_version”: “10” |
t13d431000_c7886603b240_5ac7197df9d2 | 異常な |
「ブラウザ」:「Python リクエスト」、 “ブラウザバージョン”: “2.31” |
t13d1516h2_8daaf6152771_02713d6af862 | 異常な |
「ブラウザ」:「Chrome」、 “ブラウザバージョン”: “93.0.4577”, 「OS」: 「Windows」、 “os_version”: “10”、 |
t13d1516h2_8daaf6152771_e5627efa2ab1 | 普通 |
「ブラウザ」:「Firefox」、 “ブラウザバージョン”: “116.0”, 「OS」: 「Ubuntu」、 |
t13d321200_1b30506679d3_58ed7828516f | 異常な |
「ブラウザ」:「エッジ」、 “ブラウザバージョン”: “14.14393”, 「OS」: 「Windows」、 “os_version”: “10” |
t12d040400_a6a9ac001284_255c81f47ac1 | 異常な |
「ブラウザ」:「Safari」、 “ブラウザバージョン”: “15.6”, 「OS」:「Mac OS X」、 “os_version”: “10.15.7” |
t13d2014h2_a09f3c656075_f62623592221 | 普通 |
表2: JA4 一貫性検出
- JA4 指紋データベース
ボット緩和シナリオでは、JA4 の一意性または一貫性特性のいずれを介しても、基礎となるロジックは、JA3 フィンガープリントと同様に、データ サポートのために膨大な JA4 フィンガープリント データベースに依存します。したがって、包括的なフィンガープリント データベースを構築することは、ボット トラフィックの識別における JA4 の成功を決定する重要な要素の 1 つです。
公式の JA4+ フィンガープリント データベース、関連アプリケーション、推奨検出ロジックはまだ構築中であるため、現在利用可能なフィンガープリント データベースはありません。そのため、CDNetworks セキュリティ ラボは、特定のボット緩和シナリオ用の一般的なクライアント フィンガープリントを収集し、対応する検出アルゴリズムを実装しました。
結論
この分析は、TLS フィンガープリントが非常に効果的なツールであることを示しています。TLS クライアントの Client Hello パケットのさまざまなフィールドを詳細に分析することで、固有の JA4 フィンガープリントを生成し、これらのフィンガープリントを使用して特定の悪意のあるボット トラフィックを識別できます。
TLS フィンガープリントはボット トラフィックを効果的に検出できますが、一定の制限もあります。攻撃者は継続的にアップグレードして戦略を変更するため、TLS フィンガープリントは改ざんまたは偽造され続けます。したがって、攻撃と防御の継続的な戦いで優位性を維持するために、検出メカニズムを継続的に更新および改善する必要があります。
ボット緩和シナリオでは、TLS フィンガープリンティングは強力な識別メカニズムを提供しますが、他のセキュリティ対策に代わるものではありません。包括的なボット セキュリティ戦略の一部として考え、脅威インテリジェンス、ブラウザー フィンガープリンティング、その他の対策と組み合わせて使用することで、徹底した保護を実現する必要があります。