Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
tko-subs — 無効なDNSレコードを持つサブドメインを検出し乗っ取るのに役立つツール | Kitploit
ツール/GitHubGitHub/anshumanbh/tko-subs
脆弱性分析ペネトレーションテストクラウドセキュリティサブドメイン列挙DNS分析
GitHubanshumanbh/tko-subs

tko-subs

無効なDNSレコードを持つサブドメインを検出し乗っ取るのに役立つツール

リポジトリを見る
7761375年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

tko-subs

このツールで可能なこと:

  • サブドメインが乗っ取られる可能性があるかどうかを確認します。以下のような場合があります:

    • CMSプロバイダー(Heroku、Github、Shopify、Amazon S3、Amazon CloudFrontなど)へのぶら下がったCNAMEが存在し、それが乗っ取られる可能性がある場合
    • 存在しないドメイン名を指すぶら下がったCNAMEがある場合
    • 攻撃者がサブドメインのDNSレコードを制御するために乗っ取ることができるネームサーバーを指す、1つ以上の誤った/タイポされたNSレコードがある場合
  • フラグ -takeover を指定することで、実際にそれらのサブドメインを乗っ取ることができます。現在、乗っ取りはGithub PagesとHeroku Appsでのみサポートされており、デフォルトでは乗っ取り機能はオフになっています。

  • providers-data.csv ファイルを介して、独自のCMSプロバイダーを指定し、それらを確認できます。そのファイルには、CMS名、そのCNAME値、検索したい文字列、HTTPのみで動作するかどうかを記述します。いくつかの例をご覧ください。

免責事項: 嫌な人間にならないでください!

言うまでもありませんが、このツールは非常に慎重に使用してください。作者は一切の結果について責任を負いません。 デフォルトでは、このツールはサブドメインの乗っ取りを許可しません。これを行う場合は、-takeover フラグを指定してください。

前提条件

GOがインストールされている必要があります。GOをインストールしたら、go get github.com/anshumanbh/tko-subs と入力してツールをダウンロードします。

ツールがダウンロードされたら、tko-subs -h と入力します。

次に必要な情報は次のとおりです:

  • GithubのPersonal Access Token - このトークンには、リポジトリ、参照、コンテンツなどを作成する権限があることを確認してください。トークンはこちらで作成できます - https://github.com/settings/tokens
  • Herokuのユーザー名とAPIキー
  • Herokuアプリ名 - Heroku上で、ホームページに表示したい任意の内容の静的アプリを作成できます。手順はこちら - https://gist.github.com/wh1tney/2ad13aa5fbdd83f6a489 に従ってください。アプリを作成したら、そのアプリ名をフラグで使用します(下記参照)。このアプリを使用してドメイン(別のHerokuアプリへのぶら下がったCNAMEを持つもの)を乗っ取ります。

注意 - これらの値が必要なのは、サブドメインを乗っ取りたい場合のみです。デフォルトでは必要ありません。

ビルドに必要なGoパッケージ。

root@kitploit:~
go get github.com/bgentry/heroku-go
go get github.com/gocarina/gocsv
go get github.com/google/go-github/github
go get github.com/olekukonko/tablewriter
go get golang.org/x/net/publicsuffix
go get golang.org/x/oauth2
go get github.com/miekg/dns

実行方法は?

すべてインストールしたら、ディレクトリに cd して次のように入力します: tko-subs -domains=domains.txt -data=providers-data.csv -output=output.csv

乗っ取りも行う場合のコマンドは次のとおりです: tko-subs -domains=domains.txt -data=providers-data.csv -output=output.csv -takeover -githubtoken=<github-token> -herokuusername=<heroku-username> -herokuapikey=<heroku-api-key> -herokuappname=<heroku-app-name>

単一のドメインのみを確認したい場合は、次のように入力します: tko-subs -domain <domain-name>

複数のドメインを確認したい場合は、次のように入力します: tko-subs -domain <domain-name-1>,<domain-name-2>

デフォルトでは:

  • domains フラグは domains.txt に設定されています
  • data フラグは providers-data.csv に設定されています
  • output フラグは output.csv に設定されています
  • takeover フラグは設定されていないため、デフォルトでは乗っ取りは行われません
  • domain フラグは設定されていないため、常に domains.txt ファイルに記載されているすべてのドメインを確認します。domain フラグが指定された場合、そのドメインのみが確認され、domains.txt ファイルは存在していても無視されます
  • threads フラグは 5 に設定されています

したがって、単に tko-subs を実行すると、上記のデフォルト値で実行されます。

providers-data.csv の形式は?

name,cname,string,http

  • name: プロバイダーの名前(例: github)
  • cname: ウェブサイトをプロバイダーのコンテンツにマッピングするために使用されるCNAME(例: github.io)
  • string: クレームされていないサブドメインに対して返されるエラーメッセージ(例: "There isn't a GitHub Pages site here")
  • http: サイトへの接続にhttps(デフォルト)ではなくhttpを使用するかどうか(true/false)

出力の形式は?

Domain,CNAME,Provider,IsVulnerable,IsTakenOver,Response

  • Domain: 確認されたドメイン
  • CNAME: ドメインのCNAME
  • Provider: ドメインが使用していることが判明したプロバイダー
  • IsVulnerable: ドメインが脆弱であることが判明したかどうか(true/false)
  • IsTakenOver: ドメインが乗っ取られたかどうか(true/false)
  • Response: サブドメインが照合されたメッセージ

デッドDNSレコードが見つかった場合、Provider は空のままです。 誤動作しているネームサーバーが見つかった場合、Provider と CNAME は空のままです。

内部で何が行われているのか?

これは、subdomains.txt ファイル内のすべてのドメインに対して(GoRoutinesを使用して並行して)反復処理を行い:

  • 誤動作している権威ネームサーバーがあるかどうかを確認します。ある場合、そのドメインを脆弱とマークします。
  • ぶら下がったCNAMEレコード、つまりデッドDNSレコードがあるかどうかを確認します。ある場合、そのドメインを脆弱とマークします。
  • サブドメインがこれら2つのテストに合格した場合、curlで接続して応答を取得し、その応答が providers-data.csv ファイルに記載されているデータプロバイダーの文字列のいずれかに一致するかどうかを確認します。
  • 応答が一致した場合、そのドメインを脆弱とマークします。
  • 次に、takeover フラグが指定されているかどうかに応じて、その脆弱なサブドメインの乗っ取りを試みます。
  • たとえば、Github Pageを乗っ取る場合、コードは次の処理を行います:
    • リポジトリを作成する
    • そのリポジトリにブランチ gh-pages を作成する
    • CNAME と index.html をそのリポジトリの gh-pages ブランチにアップロードする。ここで、CNAME には乗っ取る必要があるドメインが含まれます。index.html には、ドメインが乗っ取られた後に表示されるテキスト This domain is temporarily suspended が含まれます。
  • 同様に、Herokuアプリの場合、コードは次の処理を行います:
    • ぶら下がったドメインを(.env ファイルで名前を指定する)Herokuアプリに追加する
  • 以上です!

将来の作業

  • CMS名と正規表現をユーザーまたは.envファイルから取得し、ツールに自動的にフックして見つけられるようにする。 完了
  • さらに多くのCMSの乗っ取りを追加する
  • さらに多くのCMSプロバイダーを追加する

クレジット

  • Luke Young (@TheBoredEng) 氏、go-githubライブラリについての助けに感謝します。
  • Frans Rosen (@fransrosen) 氏、一部の乗っ取りに必要な技術的詳細を説明してくれたことに感謝します。
  • Mohammed Diaa (@mhmdiaa) 氏、プロバイダーデータ機能の実装とコードの進行に時間を割いてくれたことに感謝します。
  • high-stakes氏、待望のコードリフレッシュに感謝します。

変更履歴

5/27

  • イメージサイズを削減した新しいDockerfileを追加
  • テスト用のサンプルdomains.txtファイルを追加
  • mhmdiaa氏がデッドDNS乗っ取りのロジックを追加。ドキュメントを更新。ありがとうございます!

11/6

  • high-stakes氏が、いくつかのバグを修正しコードをよりクリーンにする多くの新しいコードを含むPRを発行

9/22

  • 単一ドメインを確認するためのオプションフラグを追加
  • インストールと実行をより簡単に

6/25

  • goroutineを実装してコードを大幅に高速化
  • GolangのnetパッケージのLookupCNAME関数を使用する代わりに、デッドDNSレコードも取得できるdigを使用するように変更。攻撃対象領域が増加!!
ツールをダウンロード