はじめに(この記事で分かること)#
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経路と対策で扱う。
出典#
- ShadowDragon — OSINT Techniques(temporal analysis、posting timelineによるタイムゾーン推定)
- Knowlesys — Behavioral Pattern Analysis Through Social Media OSINT(diurnal cycles、timezone maskingの検出)
- vectra.ai — OPSEC Failures(脅威行為者の失敗パターンの分析)
- Hive Security — Your Favicon Is Leaking Your Entire Infrastructure(faviconハッシュによるインフラ一括特定の実例)