晴耕雨読

working in the fields on fine days and reading books on rainy days

OSINT (Open Source Intelligence)

オープンソースインテリジェンス(OSINT)は、オープンソース(無料/有料で法的に倫理的に許容される方法で入手できる公開された情報)を使用して、ターゲット企業や個人に関する情報を収集し、ターゲットの考察を行う作業です。データを収集するためには主にインターネットを使いますが、テレビ、ラジオ、印刷媒体なども使います。「インテリジェンス」とはターゲットに関するパターンとプロファイルを作成するために必要な、それぞれの情報間の関係を構築することを意味します。収集した情報は、分析、評価、相互に紐付けを行い、ターゲットについて考察を行います。

OSINTは、公開されている(登録や認証が不要な)アクセス可能なソースからターゲット企業に関する情報を受動的に収集することだけを行います。能動的にスキャンをしたり攻撃をしたりしてはいけません。以下はOSINTの対象内と対象外の行為の例をまとめたものです。

  • OSINTの対象行為 (OK)
    • SNSで従業員情報を探す
    • 企業のウェブサイトを閲覧する
    • WebサイトからSSL/TLS証明書を取り出して証明書の透明性からサブドメインを見つける
    • 第三者がスキャンツールを使って収集した企業情報などを公開しているサイトから情報を見つける
  • OSINTの対象外 (NG)
    • 企業のウェブサイトに対するディレクトリブルートフォース
    • 企業のサブドメインブルートフォース
    • ターゲットとメールなどで連絡をやりとりして情報を収集する
    • スキャンツールを使って直接ターゲット企業から情報を収集する

OSINTの対象外にある行為を許可なく実行した場合は違法(犯罪)になります。

ブラウザログの取り方

ブラウザからアクセスして調査する場合は、調査用とレポート用(調査依頼主に対する報告用)で2つのブラウザが必要です。 調査用のブラウザでは、検索エンジンで探して興味深い情報がないか探します。 レポート用では、調査で見つかった情報に対してどのようにたどり着いたのかを示すために、対象ページに最短ルートでアクセスする方法をログに残して、最終的にレポートに出力します。 レポート用では以下のプラグインを使います。

  • History Master : ブラウザのアクセスログの記録と、一覧結果を出力するためのプラグイン
  • SingleFile : アクセスしたサイトを1つのHTMLファイルにまとめて保存するプラグイン

レポートでは、見つかった情報とその情報をどのように検出したのかという手順を示すことが重要です。

情報調査

会社情報はフィッシング、スピアフィッシング、ホエーリングなど(例えば詐欺メールの作成など)に使われます。 OSINTで、まずは会社の概要を理解します。

  • 会社の従業員数
  • 会社の目的・方針
  • 会社の社会的な・市場の位置付け
  • 会社の業績(攻撃する目的に影響するため)
  • 会社の社内ツール(導入事例として紹介されている場合あり)
  • 会社の提供サービス
  • 会社の住所(複数拠点あるか確認)
  • 会社の物理的なセキュリティ対策(Google Mapsのストリートビューで確認)
  • 顧客との連絡手法
  • 会社の評判
  • 会社の組織図(部門・部署)
  • 仕事内容

次に従業員調査を行います。 SNSは個人のプロフィールや私生活の共有のために使われますが、会社や製品の技術に関する情報を公開するためにも使われます。 以下は取得したい従業員や製品に関する情報です。

  • 開発製品
  • 利用技術
  • 開発者(作業従事者)
  • 参加している会議名
  • 製品の利用先・利用者

企業インフラの情報も収集します。 インフラ情報からターゲット企業の管理者がどの程度経験を積んでいるかを大まかに把握することができます。

  • 会社のITの設定・管理者(導入事例のインタビューなどで情シス担当者がわかる場合あり)
  • 管理者の連絡先
  • セキュリティ基準を満たしているか
  • 使用している技術(Active Directoryなど)
  • ドメイン情報
  • 証明書
  • 会社に登録されているドメインの一覧
  • ASN
  • IPアドレスの範囲
  • クラウドなどの第三者のサービスの使用有無と使用目的
  • 外からアクセス可能なサーバ
  • 利用可能なメールアドレス

内部のデータが情報漏洩した場合、数年前に削除された情報でもアーカイブなどで保存されていると、簡単に見つけることができます。

  • WayBack Machine
  • Archive.fo
  • ウェブ魚拓

ソースコード共有サービスや技術者向け質問サイトには、会社の内部の情報やサービスの機能の内部処理がアップロードされている場合があります。

  • StackOverflow
  • teratail
  • GitHub
  • Pastebin

以下は情報と情報リソースの対応関係表です。

[会社情報] Webサイト Files SNS 検索エンジン 開発PF QAサイト 漏洩情報
組織 O   O O      
場所 O   O O      
従業員 O O O O O   O
連絡先 O   O O     O
業績 O O O O      
サービス O O O     O  
SNS O   O O   O  
[企業インフラ] Webサイト Files SNS 検索エンジン 開発PF QAサイト 漏洩情報
ドメイン情報     O O O   O
ドメインレコード       O O   O
ドメイン構造 O     O O   O
利用クラウド O     O O   O
メールアドレス O   O O O   O
サードパーティ O O O O O O O
SNS O   O O O O  
利用技術 O O O O O O O
[情報漏洩] Webサイト Files SNS 検索エンジン 開発PF QAサイト 漏洩情報
機密情報   O     O   O
ソースコード O O   O O O O

各種情報リソース

企業に関する情報の収集方法は、以下の情報リソースを利用して収集します。

  • Webサイト
    • wget
    • 社内を撮影した画像から使用技術を特定(OS, 利用ソフトなど)
    • cloud buckets (Google検索で inurl:core.windows.net などで見つける)
      • GCP
        • https://www.googleapis.com/storage/v1/b/<bucket-name>/iam
      • Azure
        • https://<bucket-name>.core.windows.net/<container>/
        • https://<bucket-name>.blob.core.windows.net/<container>/
      • AWS
        • https://<bucket-name>.s3.amazonaws.com
        • https://s3-<region>.amazonaws.com/<company-name>
    • BuiltWith (Technology Lookup)
  • Files
    • exiftool (メタ情報、内部情報の取得)
  • SNS
    • Twitter (#企業名), LinkedIn, Instagram, Snapchat, YouTube, WeChat, Facebook
    • 逆画像検索:TinEye, Google Images
    • Google Dork: intext:"@企業ドメイン" inurl:twitter.com
  • 検索エンジン
    • Google Maps, Google Earth, ShowMyStreet, Emailrep.io
    • Google Dork 1
      • cache: Webページのキャッシュ表示。例:cache:securitytrails.com
      • allintext: Webページに含まれるキーワードの検索。例:allintext: hacking tools
      • allintitle: タイトルに含まれるキーワードの検索。例:allintitle: Security Companies
      • allinurl: URLに含まれるキーワードの検索。例:allinurl:clientarea
      • filetype: ファイルの拡張子で検索。例:filetype:pdf
      • inurl: allinurlの単一キーワード版2。例:inurl:admin
      • intitle: allintitleの単一キーワード版2。例:intitle:hacking
      • inanchor: リンクのテキストに含まれるキーワードの検索。例:inanchor:"cyber security"
      • intext: allintextの単一キーワード版。例:intext:"safe internet"
      • site: 指定したドメインで検索。例:site:securitytrails.com
      • *: ANY検索。任意のキーワードが入る
      • |: OR検索。空白と同じ意味
      • +: 単語の結合。ダブルクオートで囲む場合と同じ意味
      • : 検索キーワードの除外。例:「暗号技術 -暗号資産」
      • 以下情報漏洩データや管理画面などを見つけるための検索方法
      • Log files: allintext:username filetype:log
      • Vulnerable web servers: inurl:/proc/self/cwd
      • Open FTP servers: intitle:"index of" inurl:ftp
      • ENV files: filetype:env "DB_PASSWORD"
      • SSH private keys:
        • intitle:index.of id_rsa -id_rsa.pub
        • filetype:log username putty
      • Email lists: filetype:xls inurl:"email.xls"
      • Live cameras: intitle:"webcamXP 5"
      • MP3, Movie, and PDF files:
        • intitle: index of mp3
        • intitle: index of pdf
        • intext: .mp4
      • Weather: intitle:"Weather Wing WS-2"
      • Zoom videos: inurl:zoom.us/j and intext:scheduled for
      • SQL dumps: "index of" "database.sql.zip"
      • WordPress Admin: intitle:"Index of" wp-admin
      • Apache2: intitle:"Apache2 Ubuntu Default Page: It works"
      • phpMyAdmin: "Index of" inurl:phpmyadmin
      • JIRA/Kibana:
        • inurl:Dashboard.jspa intext:"Atlassian Jira Project Management Software"
        • inurl:app/kibana intext:Loading Kibana
      • cPanel password reset: inurl:_cpanel/forgotpwd
      • Government documents: allintitle: restricted filetype:doc site:gov
      • その他の一般的なDorks : Google Hacking Database (GHDB) - Google Dorks, OSINT, Recon
      • robots.txtを配置してクローラを拒否することでGoogle Dorksはある程度防げる。逆にrobots.txtを読めば見られたくないリソースがどこにあるかわかるので、ペネトレの際は必ずrobots.txtの内容を自分の目で確認すること

        User-agent: *
        Disallow: /admin/
        
    • whois, dig, MXToolbox, DNSdumpster
    • CTRF, Certificate Transparency, crt.sh, Shodan, Spyse (spyse.com), C99.nl (Subdomain Finder), PentestTools (Virtual host discovery)
    • ip2provider
    • theHarvester
  • 漏洩情報
    • WayBack Machine, Archive.fo, ウェブ魚拓
      • 削除申請があれば削除されるため、エビデンスとして残す場合は必ずローカルに保存すること
  • 開発プラットフォーム
    • Github, GitLab, Google Code, Bitbucket, SEOptimer
    • Google Dorks: intext:"@企業ドメイン" inurl:github.com
  • フォーラム(QAサイトなど)
    • Reddit, StackOverflow
    • 企業の口コミ・評判のサイトなど
  • 漏洩情報

全ての情報を収集したら、ターゲットに関するパターンとプロファイルを作成します。内容の精査、脆弱性の有無の調査、出来事のタイムライン化、各出来事の前後関係から企業の内部に関する考察などをして、インテリジェンス(諜報)を行います。 最後に、依頼主に何の情報がどのようにして取得できたかをレポートにして報告します。

以上です。

参考文献


  1. Google Dorkingしていると定期的にreCAPTCHAを求められます 

  2. allin* と in* は引数がどこまで続くかが異なります。例えば検索で「allintitle: Security Companies」はタイトルに「Security Companies」を含むページの一覧を表示しますが、「intitle: Security Companies」はタイトルに「Security」を含むページで本文などに「Companies」が含むような複合検索になってしまいます。in* で複数単語を指定する場合は「intitle:"Security Companies"」のようにダブルクオートで囲むようにしましょう  2