ペネトレーションテストや脆弱性診断で利用されるコマンドをまとめていきます。主にペネトレーションテストにおける偵察(情報収集)と列挙のフェーズで利用されるコマンドを中心にまとめていきます。本コマンドを商用環境などで実施する場合は、セキュリティ製品によって検知される可能性もあるため、取り扱いには十分気を付けて利用してください。
偵察(Reconnaissance)
偵察フェーズで利用したコマンドを示します。
〇宛先への疎通確認
HTTPのヘッダ情報だけ取得することができる。
curl -I <URL>
〇宛先への疎通確認および詳細の情報取得
ヘッダだけでなくTCPコネクションやDNSの情報などを取得できる。利用しているWebサーバの情報も取得ができる。WordPressを使っているとかがわかる。
curl -v <URL>
〇nmapを使った調査の流れ
nmapを使って宛先のオープンポートや動いているOSなどをスキャンすることができる。
まずは調査する宛先を探す(ターゲットの宛先がわかっていればスキップ。)
nmap -sn <サブネット>
次にヒットしたIPアドレスに対して具体的に調べていく。まずはオープンポートを調べていく。
nmap -sn -p- <IPアドレス>
上記で時間がかかるようである場合は-sSでSYNパケットのみを送るスキャンで高速に実行することができる。これでオープンポートがわかったので、さらにオープンポートに対してより詳細に調査を進めていく。
nmap -sn -p<port1>,<port2> -sV <IPアドレス>
またNmap Script Engineを使ってnmapで用意されている標準のスクリプトを使って調査をすることも有用である。
nmap -sn -p<port1>,<port2> -sC <IPアドレス>
-sCのオプションはデフォルトで用意されているNmap Script Engineを利用する。またオープンポートから怪しいポートが開いていたら、そのサービスに合わせたスクリプトに絞って実行することもできる。例として、mysqlのサービスが動いていることがわかっている場合を想定したコマンドを示す。
nmap -sn -p<port1>,<port2> --script=mysql* <IPアドレス>
なおNmap Script Engineの種類については以下のディレクトリに保存されている。
ls /usr/share/nmap/script
補足1:nmapの他のコマンドとして、-AでOS、詳細情報、スクリプトスキャンなどを一挙にできる。しかし、時間がかかってしまうことが難点である。
補足2:-T0~-T5でスキャンの速さを上げることができる。-T5に数字を挙げるにつれてスキャンのスピードが上がるが、その分IPSなどで検知されやすくなってしまう。
補足3:-sSでステルススキャンができる、隠密な調査として利用ができる。
補足4:nmap script Engineはあくまでもよく設定されている情報を基にパターンマッチベースで検出するので、ヒットした結果がすべてではないことだけ注意する必要がある。
〇宛先で隠れたディレクトリを見つける
dirsearchを使ってアクセス可能なディレクトリがないかどうかを確認するディレクトリブルートフォースツール。消し忘れたファイルなどを抽出することができる。
dirsearch -u <URL>
〇宛先サイトをコピーする
HTTrackを使って宛先サイトをローカルにコピーするツールです。サイト全体をコピーするので、本来公開されていないファイルをダウンロードできる可能性があります。-oを使って出力先を指定します。
HTTrack <URL> -o <Dir>
列挙(Enumeration)
列挙フェーズで使用したコマンドなどを紹介します。偵察フェーズでターゲットのOSや利用しているサービスなどがわかっていることが前提となります。
〇metasploitでauxiliaryのスキャナーを利用する
metasploitの補助ツールのスキャナーでターゲットで稼働しているサービスの調査を行うことができる。metasploitのコンソールを立ち上げる。
msfconsole -q
FTPやSMBなどサービスごとにツールが用意されているので、利用したいツールを選択する。たとえば、smbサービスのバージョンを調査する場合のコマンドは以下を実行する。
use auxiliary/scanner/smb/smb_version
基本的にはsmbと記載するところをサービス名(FTP、SSHなど)に置き換えることで同じようなツールが用意されている。ユーザリストやパスワードリストを持っている場合、各サービスのloginモジュールを使ってログイン試行ができる。ユーザリストやパスワードリストをセットしてexploitで実行する。下記にsmbの補助ツールの時のコマンド例を示す。
use auxiliary/scanner/smb/smb_version
set RHOSTS <IP Address>
set pass_file <dir>
set user_file <dir>
exploit
なお補助ツールを変更すると都度RHOSTSの設定をする必要があるので面倒となるが、以下のコマンドでグローバル設定ができる。都度RHOSTSを設定する必要はなくなる。
setg RHOSTS <IP Address>
補助ツールを探す方法は以下のコマンドでできる。
search type:auxiliary name:<namae>
〇smbで共有ファイルリストを使ってログイン試行
調査の段階でクレデンシャルを持っているかつ、smbの共有ファイルリストがあったときにsmbclientコマンドで共有ファイルにアクセスできるかどうかを自動で試行するスクリプトを示す。こちらはシェルスクリプトで共有ファイルリスト(shares.txt)を引数として読み込む。
while read share; do
smbclient //target.ine.local/$share -U josh%purple --option='client min protocol=SMB2' -c "ls" 2>/dev/null \
&& echo "[+] FOUND: $share"
done < shares.txt
〇hydraを使ったftp接続の試行
特定FTPユーザがわかっており、パスワードリストに基づいてFTPログインができるかどうかの試行をするコマンドをしめす。なお-sでポートを変更することもできる。
hydra -l <username> -P <Password List Dir> ftp://<IP Address> -s <port>
〇webdavが動いているかどうかを確認する
webdavはHTTPのプロトコルを利用してwebサーバ上のファイルやフォルダを操作するための技術でこれを悪用して攻撃を仕掛けることができる。
nmap --script http-enum -sV -p 80 <URL>
〇webdavの認証を確認する
davtestを利用してwebdavの認証を確認する。
davtest -auth <username>:<password> -url http://xxxx
〇webdavでCUIベースのインタラクティブな通信を行う
cadaverでCUIベースのインタラクティブな通信を行う。通信の中でリバースシェルなどを行うための.aspファイルなどを送り込む。
cadaver http://xxx
〇SHellshockの脆弱性確認
Shellshockの脆弱性を保有しているかどうかを確認する。cgiファイルがあれば、怪しいので確認する。
nmap --script http-shellshock --script-args "http-shellshock.uri=/xxx.cgi" <URL>

コメント