
サイバーセキュリティにおいて、フィンガープリンティングとは、対象となるシステムやサービスのタイプ、バージョン、コンフィギュレーション、その他の詳細を、その特徴的な情報を分析することによって特定するための技術である。フィンガープリンティングはしばしば、生物学でフィンガープリンティングが使用されるのと同様に、システムやサービスの「アイデンティティ」を特定するために使用されます。このようにして、攻撃者と防御者は、適切な攻撃戦略や防御戦略を開発するための貴重な情報を得ることができる。本稿では、フィンガープリント検出の分類、使用法、ツール、防御について詳しく説明します。
指紋検出の分類
指紋検出は、ターゲットシステムと能動的に相互作用するか否かに基づいて、能動的指紋検出と受動的指紋検出の2つのカテゴリーに分類することができる。
1.アクティブ指紋検出
能動的フィンガープリント検出とは、率先して特定の検出要求またはパケットをターゲットシステムに送信し、ターゲットから返された応答データを分析してその特徴情報を推論することを指します。
この方法は精度が高いが、ターゲット・システムに警告を発し、発見される確率を高める可能性があるため、リスクもある。
アクティブ指紋検出の一般的な手段には、以下のものがある:
● プロトコルの相互作用ターゲット・システムのプロトコル・スタックと相互作用することによって、そのオペレーティング・システムのタイプを特定することができる。
例えば、Nmapツールには-Oオプションがあり、これはTCP/IPスタックの違いによってオペレーティングシステムを識別する。スタックがどのように処理されるかの詳細(例えば、パケットサイズ、応答時間、特定のフラグビットなど)は、オペレーティングシステムごとに異なる場合があり、その結果、システムタイプが明らかになる。
:: サービス・バージョンの検出::攻撃者は、ターゲットシステム上の特定のポート(HTTP、SSHなど)にリクエストを送り、返されたバナーメッセージを分析することで、そこから使用されているサービスのバージョンを推測することができる。
例えば、HTTPサーバーのバナーは "Apache/2.4.29 (Ubuntu) "のようなメッセージを返し、攻撃者にオペレーティング・システムのバージョンとウェブ・サーバーの種類を知る手がかりを与える。
:: 特殊パケット検出::攻撃者は、異常なフォーマットや一般的でないパケットを送信し、ターゲットシステムがそれをどのように処理するかを観察することができる。
例えば、チェックサムの計算方法、シーケンス番号の生成規則などから、ターゲット・システムのタイプや構成がわかるかもしれない。
2.パッシブ指紋検出
受動的フィンガープリント検知は能動的検知とは異なり、ターゲットシステムと直接相互作用するのではなく、ターゲットシステムによりネットワーク内で送信されるデータトラフィックを盗聴し分析することでターゲットの特徴を推測します。このアプローチは直接的な相互作用を伴わないため、比較的隠密であり、ターゲットによって容易に検出されることはありません。
一般的な受動的指紋検出法には以下のようなものがある:
:: 交通パターンの分析::ネットワークで生成されるデータ・トラフィックのパターンは、オペレーティング・システムやアプリケーションによって異なる場合がある。攻撃者はTTL値(Time-to-Live)、TCPウィンドウ・サイズ、その他の特徴から、ターゲット・システムのオペレーティング・システムのタイプを推測する。
オペレーティング・システムによってネットワーク・パケットの扱いが異なるため、トラフィックの詳細がシステムの特性を反映することがある。
:: アプリケーション層のプロファイリング::一部のアプリケーションプロトコル(HTTP、SMTPなど)は、通信中に特定の識別情報を伝える。
例えば、HTTP ヘッダの「Server」フィールドは通常ウェブサーバのタイプとバージョンを返す。さらに、SSL/TLS 証明書の組織情報と公開鍵アルゴリズムもフィンガープリントの基礎として使用できます。
:: 機器の特性評価::モノのインターネット(IoT)デバイスのフィンガープリンティングにおいて、特定のデバイスはユニークな通信動作または MAC アドレスプレフィックスを持つ可能性があり、これらの特徴はデバイスタイプまたはベンダー情報を特定するために使用することができます。
指紋検出の用途
フィンガープリントプロービング技術は攻撃側と防御側の両方の利用を含む幅広い応用分野があります。攻撃者と防御者双方にとってフィンガープロービングの主な目的は、後続の攻撃や防御の戦略を立てるためにシステムやサービスに関する詳細な情報を得ることです。
1.攻撃側の視点
攻撃者にとって、フィンガープリント・プロービングは攻撃を実行する前の重要なステップです。フィンガープリント・プロービングを通して攻撃者は以下の情報を得ることができる:
:: ターゲットの脆弱性を特定する::攻撃者は、ターゲットとなるシステムのOSバージョンやサービスバージョンを特定することで、そのシステムに既知の脆弱性があるかどうかを判断することができる。例えば、Apacheサーバーの特定のバージョンにはリモート・コード実行の脆弱性があるかもしれないし、Windowsオペレーティング・システムの特定のバージョンにはSMBの脆弱性があるかもしれない。
:: 攻撃負荷のカスタマイズ::異なるオペレーティングシステムやサービスは異なる攻撃方法の使用を必要とします。攻撃者はフィンガープリントプロービングの結果に基づいて特定の攻撃ペイロードをカスタマイズすることができます。例えば、Windows システムの攻撃方法は Linux システムのそれとは異なる可能性があり、フィンガープリントは攻撃者が最も適切な攻撃方法を選択するのに役立ちます。
2.ディフェンダーの視点
防御者は攻撃からシステムをよりよく守るためにフィンガープリント検出を利用する:
ネットワーク資産の監視::フィンガープリンティングを定期的に実行することで、防御者はネットワーク上の未承認デバイスやサービスを特定することができます。例えば、未承認デバイスは特定のMACアドレスやサービスバージョンによって検出され、隔離または削除するためのタイムリーなアクションを取ることができます。
:: 異常行動の検出::マルウェアや攻撃者の中には正当なサービスやデバイスを装うものもあります。フィンガープリント検出を通して、ディフェンダーはこれらの偽装を検出することができます。例えば、攻撃者はウェブサーバーを装うかもしれませんが、そのフィンガープリントは正当なサーバーのものとは一致しません。
III.一般的な指紋検出ツール
指紋検出は、いくつかの専門的なツールなしにはできませんが、ここではいくつかの一般的な指紋検出ツールを紹介します:● エヌマップ
- 正式な住所 https://nmap.org/
- オープンソースのアドレス https://github.com/nmap/nmap
Nmapは、最も一般的に使用されているネットワークスキャンツールの1つで、サービスバージョンの検出(-sV)やオペレーティングシステムの識別(-O)など、さまざまなフィンガープリンティング機能を提供する。Nmapは、ターゲットのプロトコルスタックと相互作用することで、ターゲットのオペレーティングシステム、オープンポート、サービスバージョンなどの情報を推測することができる。
● マスカンマスカン
Masscanは、大規模なIPアドレス空間をわずかな時間でスキャンできる高性能なポート・スキャン・ツールで、多くの場合Nmapの数十倍の速さでスキャンできます。MasscanはNmapと同様のスキャン・アプローチを採用していますが、高速スキャンと効率的な同時処理に重点を置いて設計されています。Masscanは、Nmapと同様のスキャン・アプローチを採用していますが、高速スキャンと効率的な同時処理に重点を置いて設計されています。Masscanは、広い範囲にわたってオープン・ポートを検出することができ、Nmapと組み合わせて、さらなるサービス・バージョンのプロービングやフィンガープリンティングに使用できます。
- オープンソースのアドレス https://github.com/robertdavidgraham/masscan
● ワイヤーシャーク::
Wiresharkは、ネットワーク・トラフィックをキャプチャして分析することで、パッシブ・フィンガープリントを行うための強力なネットワーク分析ツールです。Wiresharkは、TCP、HTTP、SSLなどの幅広いプロトコルの詳細な分析をサポートしており、ネットワーク内の異常なトラフィック・パターンを特定するのに役立ちます。
- 正式な住所 https://www.wireshark.org/
- オープンソースのアドレス https://github.com/wireshark/wireshark
● フォファ
fofa は、インターネット上に公開されているデバイスの発見に特化した検索エンジンです。ウェブ・サーバー、ルーター、モニタリング・デバイスなど、フィンガープリントのプロービングを通じて、インターネット上で一般に公開されているすべてのデバイスに関する情報を収集し、表示する。shadonもある、ズームアイ360quakeなど。
- 正式な住所 https://fofa.info/
- オープンソースアドレス:オープンソース版は公開されていない(商用ツール)
● ネットキャット
Netcat (nc) は TCP/IP 接続を行うシンプルだが強力なネットワーキング・ツールであり、ネットワーク接続のテスト、データ転送、リモートサービスのプローブに使用できる。Netcat 自体は専用のフィンガープリント作成ツールではありませんが、手動でプロービングリクエストを送信し、ターゲットのレスポンスに基づいたフィンガープリント情報を得るために使用できます。
- オープンソースのアドレス https://github.com/diegocr/netcat
● ホワットウェブ
WhatWebはウェブサーバー、CMS(コンテンツ管理システム)、ウェブフレームワーク、プラグインなどのタイプやバージョンを特定するためにデザインされたウェブアプリケーションフィンガープリントツールです。特定のHTTPリクエストを送信し、レスポンス内の特徴情報を分析することでフィンガープリントを行います。
- オープンソースのアドレス https://github.com/urbanadventurer/WhatWeb
● Xプローブ2
XProbe2はオープンソースのリモートOSフィンガープリント・ツールです。一連の特定のパケットを送信し、ターゲットシステムの応答を分析することで、OSのタイプとバージョンを推測します。
- オープンソースのアドレス https://github.com/eternalblue-xploit/xprobe2
● P0f
P0fはパッシブOSフィンガープリンティング・ツールであり、(ターゲット・システムと相互作用することなく)ネットワーク上のデータ・トラフィックをリッスンし、ターゲット・システムのOSタイプとバージョンを推測する。他のアクティブフィンガープリントツールとは異なり、P0fはアクティブにプローブパケットを送信しないため、ターゲットに検出されるリスクを回避します。
- オープンソースのアドレス https://github.com/holman/p0f
● バナー・グラビング
バナー・グラビングとは、特定のポート(HTTP、SSHなど)に接続することで、ターゲット・ホストから返されるバナー・メッセージを取得する方法である。これらのバナーメッセージには通常、ターゲットサービスのタイプ、バージョン、その他の重要な情報が含まれています。
- 公式アドレス:公式アドレスは一つしかなく、通常バナー・グラビングはNetcat、Nmap、Telnetなどのツールを使って行われる。
指紋検出に対する防御
防衛側にとって、フィンガープリントの検出を防ぐ鍵は、露出する機密情報の量を最小限に抑え、暗号化された通信と同様に難読化技術を採用し、検出のリスクを減らすことである。
1.被曝の最小化
● 不要なサービスとポートを閉じる無関係なサービスをインターネットに公開せず、システムのオープンポートを定期的にチェックし、不要なポートやサービスを閉じる。
● バナー情報の変更または非表示多くのサービスは起動時にバナーメッセージを返し、そのタイプとバージョンをクライアントに知らせます。フィンガープリンティングのリスクを減らすために、この情報はコンフィギュレーションによって変更したり隠したりすることができます。例えば、ウェブサーバーの「サーバー」フィールドを変更することで、詳細なバージョン情報を明らかにしないようにすることができます。
2.紛らわしい指紋
● 難読化技術の使用特定のツール(例:ModSecurity)を使用したり、ネットワークデバイスを構成して均一なTCPウィンドウサイズ、TTL値、その他のパラメータなどのプロトコルスタックの特性を難読化することで、トラフィックパターン分析によるフィンガープリンティングの可能性を減らす。
● 侵入検知システムの使用侵入検知システム(IDS)の中にはフィンガープリント・プロービング行動を識別しブロックし、異常なプロービング要求をタイムリーに検知し応答できるものもあります。
3.暗号化と認証
● VPNまたはTLSによる暗号化通信暗号化された通信はパッシブフィンガープリント検知を効果的に防ぐことができます。VPN や TLS プロトコルを通してネットワークトラフィックを暗号化することにより、攻撃者はアプリケーションレイヤーでの情報にアクセスすることができなくなり、フィンガープリント検出の難易度が大幅に上がります。
● 不正アクセスの制限ファイアウォールルールやIPホワイトリストなどを設定し、対象サービスへのアクセスを許可されたユーザーのみに制限することで、悪意のあるプローブの可能性を減らす。
4.定期的なアップデート
● 脆弱性へのタイムリーなパッチ適用システムおよびソフトウェアのセキュリティアップデートを定期的にチェックし、バージョン公開による既知の脆弱性の悪用を回避する。
V. 結論
フィンガープリント検出技術は、ネットワーク・セキュリティにおいて重要な役割を果たしており、攻撃者と防御者の両方が、適切な戦略を立てることができるように、ターゲット・システムに関する詳細な情報を得るために使用することができる。
サイバー攻撃手法が進化し続ける中、防御者はフィンガープリント検出に対する防御を強化する必要があり、露出した情報を最小限にし、フィンガープリントを難読化し、通信を暗号化することで検出のリスクを最小限にする必要があります。
同時に、システムを定期的に更新し、脆弱性にパッチを当て、フィンガープリント検知に常に注意を払うことは、ネットワークセキュリティを確保するための重要な対策である。