私が時々行う必要があることの1つは、たとえばサイトのサブドメインを見つけることです。
example.comで始まる
- sub1.example.com
- other.example.com
- another.example.com
これらのターゲットで偵察を実行する追加の方法を探しています。ドメインのすべてのサブドメインのリストを取得したいと考えています。
私は現在、多くのことを行っています
今までに見つけたものよりもたくさんあると思いますが、今はアイデアがありません。
ペンテスターとして、サイトのサブドメインを見つけることができるようになることはよくあります。それで、私がツールを書いた SubBrute 私がそう言った場合、これは非常にうまく機能する。要するに、これは他のツール(fierce2)よりも優れておりはるかに高速で、正確で、操作が簡単です。このツールには、Webスパイダーから取得した実際のサブドメインのリストが付属しています。このサブドメインリストはfierce2のサイズの16倍以上であり、サブブルートは、ホーム接続でこのリストを使い果たすのに約15分かかります。出力は、改行で区切られたきれいなリストで、nmapやWebアプリケーションの脆弱性スキャナーなどの他のツールの入力として簡単に使用できます。
一部のネームサーバーは、通常は意図せずに、インターネット上の誰にでもDNSゾーン転送を許可します。この質問では、さらに説明されています: DNSゾーン転送攻撃 。
その質問の2番目の回答 は、WindowsとLinuxの両方でテストする方法を示しています。
ウィンドウズ:
nslookup > server <DNS you are querying> > set type=any > ls -d <target>
Unix(nslookupはUnixでは非推奨):
Dig -t axfr @<DNS you are querying> <target>
(-axfr
が機能していないように見えるため、Unixを編集しました。-t axfr
を指定する必要がありました。)
DNSSECはDNSレコードに署名するので、正しい答えを確実に受け取ることができます(信頼できるルートと仲介者がいる場合)。しかし、何かが存在しないことをどのように証明しますか。 nonexistentsub.example.com
を探すとき、example.com
のネームサーバーはサブドメインが存在しないことをどのように証明しますか?署名キーはありません(署名は管理者がゾーンを更新するときに行われます)。
DNSSecはどのように機能しますか?既知の制限または問題はありますか? への回答では、 / u/tylerl について説明しています。
当然、その応答には署名が必要ですが、通常、DNSサーバー自体は署名キーにアクセスできず、応答をオンザフライで署名できません。署名はすべて事前に「オフライン」で作成されます。これにより、DNSサーバーが危険にさらされた場合にキーが公開されるのを防ぎます。
したがって、代わりに、サブドメインをアルファベット順に並べて、「mail.example.comとpop.example.comの間のすべての名前について、他のサブドメインは存在しません」と言って、そのアサーションに署名します。次に、誰かがnachos.example.comを要求すると、その応答(すでに署名されている)を与えるだけでよく、クライアントはnachos.example.comがアルファベット順にmail.example.comとpop.example.comの間にあるため、その場合、「このドメインは存在しません」という応答は正しく署名されていると見なされ、実際にはあなたからのものです。
これが問題になるのは、「XとYの間に応答が存在しないことを明示的に示すこれらの否定応答のセットを用意することで、ゾーン全体に存在するドメインを正確に簡単にマッピングできます。「X」が存在することがわかります。 、そして「Y」が存在し、それらの間に他に何もないことを知っている。ランダムに少し突っ込むだけで、存在するすべてのレコードのリストをすばやくコンパイルできます。
「pop.example.comがなくなるまで」を指定するレコードは、NSEC(Next SECure record)と呼ばれます。
回避策はこのために設計されました:NSEC3。名前がハッシュされるため、mail
は1d6e1c...
になり、pop
は4f197c9...
になります。それらが2つの唯一のサブドメインであると想像してください。そうすると、署名された応答は、「b21afc...
とb83a88...
の間にレコードが存在しません」と表示します。繰り返しますが、アルファベット順に動作し、すべてを取得できますが、今回は、サブドメインが何かを知る前に、各ハッシュをクラックする必要があります。
私の経験では、ほとんどの場合NSEC3拡張機能が有効になっています。
NSEC3Walker は列挙とクラッキングの両方を行います。クラッキングの効率を保証することはできませんが、それは間違いなくCPUベースのみです。 NSEC3はSHA1(少なくとも元々)を使用しているため、おそらくより良いクラッキングプログラムがあります。
dnsrecon
もそれを実行できるようです:dnsrecon -z -d example.com
。情報が掲載された公式ウェブサイトがあるかどうかはわかりませんが、Debian Stretchではapt-get install dnsrecon
を使用できます。
いくつかを推測することにより、多くの場合、同様の範囲で応答が見つかります。 www.
が存在し、mail.
が存在することがわかっていて、どちらも192.168.3.x
に解決される場合は、さらに多くの可能性があります。 192.168.3.0-255
の範囲(/24
)内のすべてのアドレスを逆引きしてみてください。ドメイン.example.com
でさらに多くの名前が見つかります。
dnsrecon
はこれを行うことができます:
dnsrecon -t rvl -r 192.168.1.0/24
ここで、-t rvl
は「タイプの逆ルックアップ」を意味し、-r
はIP範囲をCIDR表記で渡します。情報が掲載された公式ウェブサイトがあるかどうかはわかりませんが、Debian Stretchではapt-get install dnsrecon
を使用できます。
たとえば、サービス検出用に SRV(サービス)レコード を設定できます。たとえば、_sip._tcp.example.com
はポート5060のsipserver.example.com
をポイントできます。サービス名( "sip
「例では)は通常、IANAに登録されている標準的なものであり、それらを反復処理できます。
dnsrecon
はこれを行うことができます:
dnsrecon -t srv -d example.com
マニュアルページ(man dnsrecon
)で説明されているように、未知のメソッドによって選択された既存のサービス名のサブセットを取得します。
あなたはそれらのいくつかをすでに述べました。それらは非常に自明であり、ターゲット上で実行されているアプリケーション(FTPなど)に依存するか、サードパーティに依存するか、またはそれらについて言うことはほとんどないため、詳細には触れません。 。
検索結果からサブドメインが明らかになる場合があります。この場合も、dnsrecon
は-t goo
オプションを使用してこれを実行できます(具体的にはGoogleを使用します)。
他のTLDで同じ名前を確認すると、他のバリアントまたはIPアドレスが明らかになる場合があります。例えば。 example.com
が存在する場合、example.org
も存在する可能性があります。 dnsrecon
はdnsrecon -t tld -d example.com
でもこれを行うことができます。
Webサイトをクロールしたり、他の場所で参照を見つけたりすると、ヒントが得られる場合があります。 (必要なヘルプ:使用するツールは?)
TLS証明書を確認すると、多くの場合、結果が得られます。 HTTPS、SMTP(S)、FTP(S)などのポートを確認し、STARTTLSを使用してください。
ドメイン内のサブドメインを一覧表示できるサードパーティツールがあります。それらの方法はあまり明確ではありませんが、インターネットや履歴の記録(おそらくドメインの移管がかつて可能でしたか?)をクロールすることはしばしばその一部です。 (必要なヘルプ:推奨事項はありますか?私はそれが存在することだけを覚えています。)
最後のオプションは、辞書(私はそれをお勧めします)またはブルートフォースによる推測です。これはワイルドカードによって難しくなりますが、多くのツールがこれを検出して解決しようとします。
Fierceはこれを行うために構築されました: https://github.com/mschwager/fierce
Kali Linuxにデフォルトでインストールされます。
/ u/rookこのスレッドの別の回答で述べられている として、彼らはこの目的のためにSubbruteを作成しました: https://github.com/TheRook/subbrute
dnsrecon
はdnsrecon -t brt -d example.com
でこれを行うことができます。 -f
を使用して、「レコードを保存するときに、ワイルドカードで定義されたIPアドレスに解決されるブルートフォースドメインルックアップレコードを除外します」(そのマニュアルページを引用)。辞書ファイルに-D
を渡すことができます。
私はまだ(推測/力ずくで)良い辞書を探していますが、ここに私が知っているいくつかがあります。このリストを完成させてください!可能性でソートされている限り、大きいほど良いです。
dnsrecon
には、namelist.txt
という名前のリストが付属しています。 dpkg -L dnsrecon
は、それがインストールされている場所を示します。アルファベット順にソートされています。knock で試してみますが、注意してください。ブラックリストに登録されるリスクがあります。
残念ながら、ゾーン転送が機能しない場合、総当り攻撃を回避する方法はありません。
Jason Haddixが、お気に入りのサブドメイン/ホスト名検出ツールを作成しました。このツールは、最新バージョンのrecon-ngに依存しています-ここから入手できます https://github.com/jhaddix/domain
サブブルートはまともです、fierce -dns <domain>
よく働く、 dnsmap <domain> -r file.txt
も有効です。嫌いな理由は何もありませんknock -wc <domain>
(ノックの他の機能が疑われる場合があります)。ただし、これらのツールはすべて、年齢を示している手法を使用しています。これらの攻撃改善のいくつかの秘訣は、ターゲットに特化したホスト名を含むカスタマイズされたファイルを作成することです。
ただし、DNS検出のチェーンソーはdnsreconです。それはすべてを行います。
これらすべてのツールよりもはるかに多くのことができるRiskIQなどの商用製品を検討することもできます。彼らのテクニックには、ほとんどの人が思いつかないような多くの調査が含まれています。
[更新]別のお気に入り(主にサブドメインではなくホスト名の場合-OPは両方に興味がありますか?)- https://github.com/tomsteele/blacksheepwall
スタックオーバーフローのオーバー 、Paul Meliciは WolframAlpha の使用を提案しました。 (自分でスクリーンショット)
検索ボックスにドメインを入力して、検索を実行します。 (例
stackexchange.com
)上から3番目のセクション(「すべてのstackexchange.comのWeb統計」という名前)で、Subdomainsをクリックします。
[サブドメイン]セクションでMoreをクリックします
そこでサブドメインのリストを見ることができます。私はそれがすべてのサブドメインを表示しないと思いますが。
http://ha.ckers.org/fierce/ をご覧ください。辞書ファイルだけでなく総当たりも可能です。カーリーにも含まれています。
最初は、サイトのサブドメインを見つけるためにパッシブDNSデータベースをよく使用します。この方法の欠点は、データベースにリストされているサイトしか見つけられないことです。しかし、利点は、単語リストにリストされていないサイトを見つけることができることです。
参考のためにいくつかのデータベース:
https://www.virustotal.com/en/domain/stackexchange.com/information/