こんにちは、ゆるいぞITチャンネルです。
それでは今回は「ハッキングの偵察フェーズ」や「ペネトレーションテスト」で使用できるオススメのツール(コマンド)を紹介していきたいと思います。
調査や偵察というのは簡単にいうとターゲットホストに対して「どんな攻撃が有効か? 誤った設定や不要な設定をしていないか? 公開する対象に誤りがないか?」といったものを判断する為の情報収集行為になります。
ツール(コマンド)毎の取得できる情報が異なるので、演習の際などに参考にしてみてください。
※Youtubeでは動画版をご視聴いただけます。
- 偵察フェーズ(Recon)で「まず何を調べるべきか」を整理したい
- nmap / masscan / gobuster などの用途をざっくり理解したい
- ローカルの演習環境(VirtualBox、検証用Web、CTFなど)で使うコマンド例が欲しい
- 収集結果から「次に何を確認するか?」を判断できるようになりたい
※実務や演習等を除き、インターネット上のサーバへクラッキングすることは違法行為となりますのでご注意ください。
1.nmap
nmapはターゲットホストに対して「ポートスキャンを実行するツール」になります。
nmapを実行することで「開放しているポート情報」や「使用中のサービス」といった情報を取得することができます。
コマンドはnmapにオプションを付けて、ターゲットホストのIPアドレスもしくはホスト名を指定します。
$ nmap -Pn -sS -sV -T4 10.0.0.105
表示結果としては「開いているポート番号」、「関連するサービス名」、「使用しているソフトウェアのバージョン」などが表示されます。

-Aプションを付けることにより、詳細な情報を確認できるようになってます。
実行したスキャン結果を足掛かりとして「使用しているサービスに脆弱性がないか?」といったことを探っていくような使い方になります。

2.masscan
masscanもポートスキャン用のツールの一つになりますが、nmapとの違いとしては「高速スキャンが可能で特定のネットワーク内を広範囲にスキャンをかけたい時」などに使用すると便利なツールになっています。
例えば、10系のセグメント内のHTTP、HTTPS、NetBIOS、SMBを対象としてスキャンを実行してみると…
$ masscan -p80,139,443,445 10.0.0.0/24 –rate=1000000
このようにスキャン対象のポートが開いているホストの一覧が表示されます。

全ポート(1~65535)に対してスキャンをかけることもできますが、かなり時間がかかるので可能な限りスキャン範囲は絞った方がいいと思います。
$ masscan -p1-65535 10.0.0.0/24 –rate=1000000

masscanはネットワーク帯域やターゲットに対して、かなり負荷がかかるやり方なので脆弱性診断やペネトレーションテストで使用する場合は注意が必要になります。
rateオプションでどれぐらいの帯域を使うか設定できるので、実行する場合はその辺で調整するといいかもしれません。

3.amass
amassはDNS関連の検索ツールで「主にサブドメインの情報収集を得意とするツール」になっています。
サブドメインというのは、例えば「yuruizo.com」というドメインがあったとすると…
- メール用の「mail.yuruizo.com」
- ファイルサーバ用の「file.yuruizo.com」
- ツール用の「tool.yuruizo.com」
このように使用用途ごとに分けて使うドメインのことになります。
スキャンできるドメインがないので今回はサンプルになりますが、コマンドはamassにオプションをつけて検索したいドメイン名を指定します。
$ amass enum -d example.com
本来であればこのように使用されているサブドメインがズラズラと表示されるスキャン結果になっています。

大きいサイトはサブドメインを結構使っていたりするので、そういった場合に「意図せず公開されているサブドメインがないか?」といったものを検索する場合に使うと便利なツールになっています。

4.Nikto
Niktoは「Webサーバーに対する脆弱性をスキャンする脆弱性診断ツール」になります。
主にWebサーバーに対するセキュリティスキャンを目的としており、既知の脆弱性、設定ミス、不適切なファイル構成などの検出が得意なツールになっています。
スキャンするターゲットホストを指定して、使用しているWebのポートを設定します。
$ nikto -h 10.0.0.105 -port 80
表示結果としては…
「header is not set:ヘッダーが設定されていません」といった内容や「Apache mod_negotiation is enable ~:有効になっていると攻撃される可能性があります」、「Apache のバージョンが古いです」といった内容も記載されています。
あとは「テスト用のスクリプトが配置されっぱなしです…」といった指摘も表示されてます。



こういった状態のまま外部に公開するとマズいので、サーバ構築やテスト時に実施しておいた方がいいツールになってます。

5.whois
whoisは「対象のドメインが持っている登録情報を取得してくるツール」になります。
whoisというドメイン名やIPアドレスの登録情報を参照できるサービスがあり、そこから情報を引っ張ってくるコマンドになっています。
whois自体は公開されている情報なので誰でも参照することができます。
例えば「google.com」をwhoisサイトで参照してみると、ドメイン名、有効期限、管理者情報、有効ネームサーバーの情報などが確認できます。

それをコマンドで実行すると同じような情報が取得できますといった感じになっています。
$ whois google.com
取得結果としては先ほどのWhoisサイトで見たのと同じような内容になってます。

これはWhoisサイトを使っても、コマンドで情報を引っ張ってきても、好みの方を使ってもらって問題ないと思います。
6.gobuster
gobusterはWebサーバ上に配置されている「ディレクトリやファイルなどの情報をスキャンすることができるツール」になります。
Webサーバのディレクトリやファイルを簡単に説明すると…
例えば「yuruizo.com」のWebサーバがあったとします。
その中には「/yuruizo.com/account」、「/yuruizo.com/file/xxxx.txt」、「/yuruizo.com/test」 といった感じで用途に合わせたフォルダやファイルが格納されています。
それらの情報を検出することができるツールがgobusterになっています。
ディレクトリやファイルにはアクセス権が設定されているので必ずしも中身が見れるという訳ではありませんが、フォルダ内の構成や情報を把握できるので便利なツールになっています。
gobusterでターゲットサイトを指定して、あとは使用するワードリストを設定します。
$ gobuster dir -u http://10.0.0.105 -w /usr/share/wordlists/dirb/common.txt
※ワードリストはKaliLinuxにデフォルトで用意されているもの or 自作したもの、どちらを使用しても大丈夫です。
表示結果としては「ディレクトリ名」、「HTTPのステータスコード(403:閲覧禁止、301:リダイレクト、200:閲覧OK)」などが表示されます。

-xのオプションを付けることでファイル検索も可能となっています。
このように先ほどは出てなかったファイル名が表示されています。

ディレクトリ検索の詳細について下記ページをご参照ください。
他にも「feroxbuster」、「Fuzz」といった探索ツールもありますが、そちらについても実施しています。
7.wpscan
wpscanは「WordPressを使用しているサイト向けに特化した脆弱性診断ツール」になります。
WordPressのバージョン、それに関連する脆弱性、インストールされているプラグインやテーマに関連する情報、ユーザー名の列挙といったWordPress関連の情報を収集することができます。
コマンドはwpscanでターゲットのURLを指定します。
$ wpscan –url http://10.201.56.149 –enumerate u
表示結果としては「ヘッダー情報」、「robot.txt(検索エンジンに渡す情報)」、「readme」、「WordPressのバージョン情報」、「管理者のユーザー名」といった情報がスキャン結果として含まれています。


とりあえずWebサイトをスキャンするなら一緒に実行してみた方がいいツールになっています。

8.enum4linux
enum4linuxは「Sambaを介して対象ホストの情報を収集できるツール」になります。
Sambaというのは簡単に言うとLinux上でWindowsのネットワーク機能を実現する為のソフトウェアみたいなものになります。
例えば、Windowsのファイルサーバーと同じ役割をもたせたり、ADサーバとしての使ったり、Linux上でWindows関連の機能が使いたい時に使うツールになっています。
コマンドはenum4linuxでターゲットホストのIPアドレスを指定します。
$ enum4linux 10.0.0.105 -a
表示結果としては「Sambaのバージョン情報」、「ユーザー情報」、「共有フォルダ」、「パスワードポリシー」、「プリンター情報」といった情報が収集できます。





Sambaの機能を有効化してるサーバーも結構多いと思うので、情報収集をするのであれば、こちらも実行しておきたいツールの一つになってます。

9.wafw00f
wafw00fは「WAFの情報を収集する為のツール」になります。
仮想環境上にWAFの環境を再現するのは難しいのでネットで調べた情報になりますが…
例えば、AmazonだとAWSのCroudFront(自社製)というWAFを使用しているということになります。



スキャン以外の機能としてはHTTPリクエストを実行したり、クロスサイトスクリプティング(XSS)でのアタックといった処理も実行してくれるようです。
nmapと併用して詳細な情報を収集することもできるみたいです。
このツールはアタックを仕掛けることになるので、サービスとして運営されてるサイトにはあんまりやらない方がいいかなと思います…
この辺は自己責任になるので、実行する場合はご注意ください。
どの製品を使ってるかってことが分かっただけでも、そこから該当する脆弱性を調べたりといったことができるので、調査する上ではこちらも有用なツールだと思います。

10.nbtscan
nbtscanはネットワーク内の「NetBIOS関連の情報、IPアドレス、MACアドレスなどを収集するツール」になります。
コマンドはnbtscanでスキャン対象のセグメントを指定します。
$ nbtscan -v -s : 10.0.0.0/24
表示結果としては「PCのコンピュータ名」、「IPアドレス」、「MACアドレス」といった感じで、その辺の情報が表示されてます。

ネットワーク内にあるデバイスの情報を収集したい時などに使用すると便利なツールになっています。

11.まとめ
今回紹介したツールを実行すると…
- 外部公開しているポート情報、サービス名
- DNS関連の情報
- Webサーバの設定情報と脆弱性情報
- ディレクトリとファイル関連の情報
- WordPress関連の情報
- システムで使用しているFWの情報
- ネットワーク内のデバイス情報
この辺りの情報を収集することができるので、調査や偵察フェーズで実施する情報収集として十分じゃないかなと思います。
あとから確認して足りていない情報があれば、追加で必要なツールを実施するという感じですね。
今回紹介したツールは一部を除いて基本的には情報収集をする為のツールになりますが、公式なサイト向けに実施すると攻撃扱いになる可能性があるので、実行する場合は十分にお気をつけください。
ということで、今回はここまでにしたいと思います。
それではまた次回お会いしましょう!