Subdomain Takeover

2025年3月13日Subdomain Takeover

概要

Subdomain Takeoverとは、未使用または不適切に管理されたサブドメインを攻撃者が乗っ取ることで、悪意のあるコンテンツをホストしたり、フィッシングサイトを作成したりする攻撃手法。
これは、ドメインがある特定のホスト(例: GitHub Pages,Amazon S3, Herokuなど)に設定されているが、そのホスト上に対応するリソースが存在しない場合に発生する。


仕組み

  1. DNS設定の残存
    ・企業や個人が過去に使用していたクラウドサービス(GitHub Pages, AWS S3,Heroku)などにサブドメインを設定する事がある。
    ・しかし、サービスのアカウント削除やプロジェクトの削除後もDNS設定(CNAMEやAレコード)は残っている事がある
  2. 攻撃者による検出と悪用
    ・「孤立したサブドメイン」をスキャンし、対応するクラウドサービス上で該当のリソースが存在しないことを確認。
    ・そのクラウドサービスに新たなアカウントを作成し、同じリソースを登録するとDNS設定が有効なまま攻撃者の管理下に置かれる。
  3. 悪意のあるコンテンツのホスティング
    ・攻撃者は乗っ取ったサブドメイン上にフィッシングサイト、マルウェア配布サイト、広告詐欺ページなどを設置する事ができる。
    ・企業の正規サイトとの一部として表示されるため、被害者は気づきにくく、信頼して情報を入力してしまう可能性がある。

脆弱性の検証

📌サブドメインテイクオーバの基本的な流れ

blog.example.comのレコードを調査

dig example.com

また、詳細を見たい場合は:

dig +short example.com

📌404のURL(サブドメイン)の調査フロー

①対象のサブドメインに対してdigコマンドを実行

  • CNAME(転送先)があるか確認

②実際にそのサブドメインにアクセス

  • 404エラーなら、テイクオーバの可能性あり
  • 別のエラー(403,500,502)の場合は、別の原因の可能性が高い

③CNAMEの転送先がどのクラウドサービスが特定

  • 一般的なクラウドサービスのCNAMEパターンを調査(例:*.herokudns.com → Heroku)

Googleが管理している場合、サブドメインテイクオーバのリスクは低い

(1). CNAMEがGoogle(例: www3.1.google.com)なら安全性が高い

(2). Google ColudのIPレンジ(34.x.x.x)はGoogle Cloud上のサービスの可能性が高い

(3).172.217.x.xのIPアドレスはGoogleのIPレンジ


📌次のステップ(サブドメインテイクオーバー調査)

①Aレコードをチェック

dig +short A blog.example.com
  • IPが返ってくる(テイクオーバ不可)
  • 何も返ってこない → 可能性あり

②DNSに存在するか確認

dig ANY blog.example.com @8.8.8.8
  • ANYクエリはGoogle Public DNS(8.8.8.8)を指定して試すといい
  • 何も出ない → サブドメインが未使用の可能性

レスポンス(要点)

;; ANSWER SECTION:
csp-participants-sandbox-dev-frontend.api.verily.com. 3600 IN A 34.120.239.156
csp-participants-sandbox-dev-frontend.api.verily.com. 3600 IN RRSIG A ...

意味

✅Aレコード(34.120.239.156)がある

✅このサブドメインはDNSに登録されている→テイクオーバできない可能性が高い

+traceで最終チェック

dig +trace blog.example.com
  • NXDOMAIN(ドメインなし)なら乗っ取れるかも!

📌ここまでのチェックポイント

項目状況可能性
CNAMEレコードなし低い
Aレコード(IPアドレス)34.x.x.x(Google Cloud)低い
IPアドレスが未使用かGoogle Cloudが管理している低い

📌 追加調査

hostコマンドでNXDOMAINを確認

host blog.example.com

NXDOMAIN(No Such Domain)と出たら、そのサブドメインは未登録→テイクオーバの可能性が高い!


whoisでIPアドレスの管理者を確認

whois 34.120.239.157

curlでサーバのレスポンスを確認

curl -I http://blog.example.com