はじめに(この記事で分かること)#

OSINT(Open Source Intelligence)は、公開されている情報だけから対象者を特定する手法だ。攻撃者はハッキングをしなくても、SNSの投稿、DNSの履歴、証明書のログ、faviconのハッシュから、あなたの身元とインフラを特定できる。

この記事では、OSINTの2つの攻撃面——身元へのOSINTとインフラへのOSINT——を攻撃者の道具箱として整理し、自分を点検する手順(Self-OSINT)を示す。

前提: 脅威モデルの整理#

OSINTが有効な相手は、脅威モデル入門で整理した5種類の相手のうち、主に3者だ。

プラットフォームは、あなたが公開した情報をすべて持っている。広告網・データブローカーは、複数のプラットフォームの情報を横断して照合する。標的型攻撃者は、公開情報と、その人が元から知っているあなたの情報を組み合わせる。

法執行機関もOSINTを使うが、令状や開示請求という法的手段に加えてOSINTを使うため、この記事の枠組みでは「法的手続き + OSINT」として扱う。

攻撃面1: 身元へのOSINT#

ハンドルの横断検索#

同じニックネームを複数のサービスで使っていると、検索一回で過去の投稿群がつながる。Googleでsite:twitter.com OR site:reddit.com "ニックネーム"を検索するだけで、ニックネームの横断的な使用履歴が見つかる。

Knowlesysの分析によれば、投稿の頻度、時間帯、曜日のパターン(diurnal cycle)は、タイムゾーンのマスキングを試みても露出する。投稿の間隔の統計はVPNでエグジットを切り替えても変わらない。

画像検索とメタデータ#

写真のEXIFにGPSの座標が残っていれば撮影場所が、撮影日時のタグが残っていれば撮影時刻が分かる(Exifの規格では、位置と日時は別のタグに記録される)。EXIFを消した後に残る手がかりは写真の位置特定の記事で扱う。リバース画像検索(Google Images、Yandex)で、同じ画像が他のサービスで使われていないかを確認できる。

アバターの画像を複数のサービスで使い回すと、画像のハッシュ(知覚ハッシュ)でアカウントが連結される。

発言内容からの特定#

地名、天気、時事ネタへの言及は地理的手がかりになる。「今朝 ○○駅で」という投稿一つで、位置と時刻が推定される。

文体の癖(stylometry)は、機械学習で筆者を特定する手法として研究されている。文章からあなたは特定されるで詳しく扱う。

攻撃面2: インフラへのOSINT#

faviconハッシュ#

Shodan/Censysの記事で説明したとおり、favicon.icoをMurmurHash3でハッシュ化した値をShodanで検索すると、同じfaviconを使っている全サーバーが一覧で表示される。

DNS履歴#

SecurityTrailsなどのDNS履歴サービスは、ドメインの過去のAレコードを記録している。CDNを導入する前のorigin IPが履歴に残っている場合、originのIPはすでに公開されている。

証明書ログ#

crt.shでドメインを検索すると、発行されたすべてのTLS証明書が表示される。証明書のSANに別のドメインやサブドメインが含まれていた場合、それらも紐付けられる。

メールヘッダ#

originサーバーから直接メールを送信した場合、Received:ヘッダにoriginのIPアドレスが記録される。MXToolboxなどのメールヘッダ分析ツールで誰でも確認できる。

自己監査の手順(Self-OSINT)#

自分が攻撃者だった場合、自分をどのように特定するかを、7ステップで点検する。

ステップ1: ハンドルの横断検索#

自分のニックネーム・メールアドレス・フレーズをGoogleとOSINTツールで検索する。本名との連結が可能かを確認する。

ステップ2: faviconハッシュの計算とShodan検索#

自分のサイトのfavicon.icoをMurmurHash3でハッシュ化し、Shodanでhttp.favicon.hash:を検索する。意図していないサーバーが含まれていれば、faviconをサーバーごとに別物にする。

ステップ3: 証明書ログの確認#

crt.shで自分のドメインを検索し、発行済みの全証明書を確認する。SANに意図していないドメインが含まれていないか、originのIPと紐付いた証明書が過去に発行されていないかを確認する。

ステップ4: DNS履歴の確認#

SecurityTrailsでDNS履歴を確認する。CDN導入前のIPが履歴に残っている場合、サーバーのIPを変更する。

ステップ5: サーバーの開放ポートの確認#

ShodanのInternetDBで自分のサーバーのIPを検索し、開放ポートとサービスのバナーを確認する。

ステップ6: SSHホスト鍵とTLS証明書のフィンガープリント確認#

Censysで自分のSSHホスト鍵とTLS証明書のフィンガープリントを検索し、他のサーバーとの重複を確認する。

ステップ7: メールヘッダの確認#

自分のサーバーからテストメールを送信し、Received:ヘッダにoriginのIPが含まれていないかを確認する。

限界と残るリスク#

OSINTは「消すのが難しい過去」を掘る。過去に使ったニックネーム、過去に投稿した写真、過去に発行された証明書は、今日から匿名性を高めても消えない。

自己監査で見つかった問題は、一部しか修正できない。DNS履歴は消せない。CTログは消せない。過去の投稿は、削除してもキャッシュとアーカイブに残る。

まとめ#

OSINTによる特定は、ハッキングを必要としない。公開情報の突き合わせだけで、身元とインフラの両方が特定される。

自分を守るには、攻撃者と同じツールを使って自分を点検する。この記事の7ステップの手順を、四半期に一度実行することを推奨する。

インフラのOSINTに対する具体的な対策(SSHを公開しない、origin IPを隠す)は、踏み台サーバーとWireGuardでSSHを公開しないとorigin IP探索の7経路と対策で扱う。

出典#