こんにちは、ゆるいぞITチャンネルです。

それでは今回は「ハッキングの偵察フェーズ」や「ペネトレーションテスト」で使用できるオススメのツール(コマンド)を紹介していきたいと思います。

調査や偵察というのは簡単にいうとターゲットホストに対して「どんな攻撃が有効か? 誤った設定や不要な設定をしていないか? 公開する対象に誤りがないか?」といったものを判断する為の情報収集行為になります。

ツール(コマンド)毎の取得できる情報が異なるので、演習の際などに参考にしてみてください。

※Youtubeでは動画版をご視聴いただけます。

この記事はこんな人にオススメ
  • 偵察フェーズ(Recon)で「まず何を調べるべきか」を整理したい
  • nmap / masscan / gobuster などの用途をざっくり理解したい
  • ローカルの演習環境(VirtualBox、検証用Web、CTFなど)で使うコマンド例が欲しい
  • 収集結果から「次に何を確認するか?」を判断できるようになりたい

※実務や演習等を除き、インターネット上のサーバへクラッキングすることは違法行為となりますのでご注意ください。

1.nmap

nmapはターゲットホストに対して「ポートスキャンを実行するツール」になります。

nmapを実行することで「開放しているポート情報」や「使用中のサービス」といった情報を取得することができます。

ポートとは?
ホスト側(サーバなど)でサービス毎に開けている扉のようなものになります。
例えば、Webサーバとして使うなら「http(tcp80) / https(tcp443)」のポートを開けておく必要があります。

コマンドはnmapにオプションを付けて、ターゲットホストのIPアドレスもしくはホスト名を指定します。

表示結果としては「開いているポート番号」、「関連するサービス名」、「使用しているソフトウェアのバージョン」などが表示されます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

-Aプションを付けることにより、詳細な情報を確認できるようになってます。

実行したスキャン結果を足掛かりとして「使用しているサービスに脆弱性がないか?」といったことを探っていくような使い方になります。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

2.masscan

masscanもポートスキャン用のツールの一つになりますが、nmapとの違いとしては「高速スキャンが可能で特定のネットワーク内を広範囲にスキャンをかけたい時」などに使用すると便利なツールになっています。

例えば、10系のセグメント内のHTTP、HTTPS、NetBIOS、SMBを対象としてスキャンを実行してみると…

このようにスキャン対象のポートが開いているホストの一覧が表示されます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

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

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

masscanはネットワーク帯域やターゲットに対して、かなり負荷がかかるやり方なので脆弱性診断やペネトレーションテストで使用する場合は注意が必要になります。

rateオプションでどれぐらいの帯域を使うか設定できるので、実行する場合はその辺で調整するといいかもしれません。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

3.amass

amassはDNS関連の検索ツールで「主にサブドメインの情報収集を得意とするツール」になっています。

サブドメインというのは、例えば「yuruizo.com」というドメインがあったとすると…

このように使用用途ごとに分けて使うドメインのことになります。

スキャンできるドメインがないので今回はサンプルになりますが、コマンドはamassにオプションをつけて検索したいドメイン名を指定します。

本来であればこのように使用されているサブドメインがズラズラと表示されるスキャン結果になっています。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

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

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

4.Nikto

Niktoは「Webサーバーに対する脆弱性をスキャンする脆弱性診断ツール」になります。

主にWebサーバーに対するセキュリティスキャンを目的としており、既知の脆弱性、設定ミス、不適切なファイル構成などの検出が得意なツールになっています。

スキャンするターゲットホストを指定して、使用しているWebのポートを設定します。

表示結果としては…

header is not set:ヘッダーが設定されていません」といった内容や「Apache mod_negotiation is enable ~:有効になっていると攻撃される可能性があります」、「Apache のバージョンが古いです」といった内容も記載されています。

あとは「テスト用のスクリプトが配置されっぱなしです…」といった指摘も表示されてます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

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

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

5.whois

whoisは「対象のドメインが持っている登録情報を取得してくるツール」になります。

whoisというドメイン名やIPアドレスの登録情報を参照できるサービスがあり、そこから情報を引っ張ってくるコマンドになっています。

whois自体は公開されている情報なので誰でも参照することができます。

例えば「google.com」をwhoisサイトで参照してみると、ドメイン名有効期限管理者情報有効ネームサーバーの情報などが確認できます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

それをコマンドで実行すると同じような情報が取得できますといった感じになっています。

取得結果としては先ほどのWhoisサイトで見たのと同じような内容になってます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

これはWhoisサイトを使っても、コマンドで情報を引っ張ってきても、好みの方を使ってもらって問題ないと思います。

6.gobuster

gobusterはWebサーバ上に配置されている「ディレクトリやファイルなどの情報をスキャンすることができるツール」になります。

Webサーバのディレクトリやファイルを簡単に説明すると…

例えば「yuruizo.com」のWebサーバがあったとします。

その中には「/yuruizo.com/account」、「/yuruizo.com/file/xxxx.txt」、「/yuruizo.com/test」 といった感じで用途に合わせたフォルダやファイルが格納されています。

それらの情報を検出することができるツールがgobusterになっています。

ディレクトリやファイルにはアクセス権が設定されているので必ずしも中身が見れるという訳ではありませんが、フォルダ内の構成や情報を把握できるので便利なツールになっています。

gobusterでターゲットサイトを指定して、あとは使用するワードリストを設定します。

※ワードリストはKaliLinuxにデフォルトで用意されているもの or 自作したもの、どちらを使用しても大丈夫です。

表示結果としては「ディレクトリ名」、「HTTPのステータスコード(403:閲覧禁止、301:リダイレクト、200:閲覧OK)」などが表示されます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

-xのオプションを付けることでファイル検索も可能となっています。

このように先ほどは出てなかったファイル名が表示されています。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

ディレクトリ検索の詳細について下記ページをご参照ください。

他にも「feroxbuster」、「Fuzz」といった探索ツールもありますが、そちらについても実施しています。

7.wpscan

wpscanは「WordPressを使用しているサイト向けに特化した脆弱性診断ツール」になります。

WordPressとは?
Webサイトやブログの作成・管理として世界的に使用されているコンテンツ管理システム (CMS)のことになります。

WordPressのバージョン、それに関連する脆弱性、インストールされているプラグインやテーマに関連する情報、ユーザー名の列挙といったWordPress関連の情報を収集することができます。

コマンドはwpscanでターゲットのURLを指定します。

表示結果としては「ヘッダー情報」、「robot.txt(検索エンジンに渡す情報)」、「readme」、「WordPressのバージョン情報」、「管理者のユーザー名」といった情報がスキャン結果として含まれています。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

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

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

8.enum4linux

enum4linuxは「Sambaを介して対象ホストの情報を収集できるツール」になります。

Sambaというのは簡単に言うとLinux上でWindowsのネットワーク機能を実現する為のソフトウェアみたいなものになります。

例えば、Windowsのファイルサーバーと同じ役割をもたせたり、ADサーバとしての使ったり、Linux上でWindows関連の機能が使いたい時に使うツールになっています。

コマンドはenum4linuxでターゲットホストのIPアドレスを指定します。

表示結果としては「Sambaのバージョン情報」、「ユーザー情報」、「共有フォルダ」、「パスワードポリシー」、「プリンター情報」といった情報が収集できます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

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

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

9.wafw00f

wafw00fは「WAFの情報を収集する為のツール」になります。

WAFとは?
Webサイト上のアプリケーションに特化したファイアウォールになります。
Google、Yahoo、Amazonなどの規模が大きいWebサイトは確実に導入しているかと思います。

仮想環境上にWAFの環境を再現するのは難しいのでネットで調べた情報になりますが…

例えば、AmazonだとAWSのCroudFront(自社製)というWAFを使用しているということになります。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】
偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

スキャン以外の機能としてはHTTPリクエストを実行したり、クロスサイトスクリプティング(XSS)でのアタックといった処理も実行してくれるようです。

nmapと併用して詳細な情報を収集することもできるみたいです。

このツールはアタックを仕掛けることになるので、サービスとして運営されてるサイトにはあんまりやらない方がいいかなと思います…

この辺は自己責任になるので、実行する場合はご注意ください。

どの製品を使ってるかってことが分かっただけでも、そこから該当する脆弱性を調べたりといったことができるので、調査する上ではこちらも有用なツールだと思います。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

10.nbtscan

nbtscanはネットワーク内の「NetBIOS関連の情報、IPアドレス、MACアドレスなどを収集するツール」になります。

NetBIOSとは?
Windowsのコンピュータ名を表したりする規格の一つになります。
※TCP/IPで使用するホスト名とは別物

コマンドはnbtscanでスキャン対象のセグメントを指定します。

表示結果としては「PCのコンピュータ名」、「IPアドレス」、「MACアドレス」といった感じで、その辺の情報が表示されてます。

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

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

偵察フェーズやペネトレーションテストで使えるオススメのツール(コマンド)10選【ハッキングスキル】

11.まとめ

今回紹介したツールを実行すると…

  • 外部公開しているポート情報、サービス名
  • DNS関連の情報
  • Webサーバの設定情報と脆弱性情報
  • ディレクトリとファイル関連の情報
  • WordPress関連の情報
  • システムで使用しているFWの情報
  • ネットワーク内のデバイス情報

この辺りの情報を収集することができるので、調査や偵察フェーズで実施する情報収集として十分じゃないかなと思います。

あとから確認して足りていない情報があれば、追加で必要なツールを実施するという感じですね。

今回紹介したツールは一部を除いて基本的には情報収集をする為のツールになりますが、公式なサイト向けに実施すると攻撃扱いになる可能性があるので、実行する場合は十分にお気をつけください。

ということで、今回はここまでにしたいと思います。

それではまた次回お会いしましょう!