本記事はAnthrotech Advent Calendar 2025の11日目の記事となります。
はじめに
Anthrotech Talk #4 でHack The Boxについて話しましたが、よく使うツールについて詳しく話機会がなかったので、ここで紹介して行きます。
ハッキングの各フェーズ
まずハッキングのフェーズを軽く紹介します。ハッキングは基本的に5フェーズに分けられ、偵察、スキャニング、アクセスの取得、アクセスの維持、痕跡の消去1になります。今回はスキャニングからアクセスの維持フェーズまで使うツールを紹介します。
nmap
ターゲットサーバの空いているポートを調べるためのツールです。ターゲットが分かったらほとんどの場合最初に実行するツールがnmapです。nmapはポートスキャナーなのでスキャニングフェーズに該当します。nmapを使うと、ターゲットのサーバのどのポートが空いているのと、そのポートに使われているソフトウェア名やバージョンの情報も取得できます(誤検知の可能性もあります)。つまり、攻撃経路はどこから始まるのかぐらいの情報を得られます。
自分がよく使っているオプション:
T='REPLACE'; nmap -p- -sSVC -o $T.nmap --min-rate=5000 $T
T='REPLACE': ターゲットを変数にすると複数の箇所に使えます-p-: とりあえずすべてのポートスキャンします-sSVC:-sSはステルススキャン、-sVはバージョン特定スキャン(できない可能性があります)、-sCデフォルトスクリプトを使用する(一般的な情報を取得するため)。全部合わせて-sSVCと書けます-o $T: 結果をファイルに書き込みます--min-rate=5000: 1秒あたりに送信するプローブの最小値を5000にします(スキャンを早くします)
nmap以外にも、rustscan、masscanがあります。
ffuf
ポートスキャンの結果を見てウェブサーバがあった時、又はウェブアプリを診断する場合、ファジングツールをよく使います。これもスキャニングフェーズです。ffuf(Fuzz Faster U Fool)は、あるウェブサーバにどんなパス・サブドメインがあるのかを調べるためのツールです。一般的に、ウェブサーバはウェブブラウザに対するリクエストを返します。例えば、ウェブサーバにGET /blogのリクエストが来たら、/blogに該当するものを返します。ユーザが/blogというパスが分かっているので、そのパスにアクセスできますが、分からない場合、当ててみないとアクセスできません。多くの場合、ウェブアプリケーションはCMS(コンテンツ管理システム)や開発者専用ページなどのウェブサイトに記載されていないページが存在します。ファジングツールで調べてみると、攻撃できるところの情報を手に入れられる可能性があります。
ファジングをするために、ワードリストが必要です。ワードリストは、よくあるディレクトリ集のファイルです。Kali Linuxを使えば/usr/share/wordlistsに一部入っていますが、私はよくSecListsにあるものを使います。SecListsの中では、よくあるディレクトリ名やよくあるパスワード、よく使われるウェブシェルまで様々なリストが入っています。正しいワードリストを選択するのはファジングの鍵になります。
ディレクトリファジングによく使うコマンド:
T='REPLACE'; ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -u "http://$T/FUZZ"
-w: ワードリストを指定するオプションです。基本的にdirectory-list-2.3-small.txtを使う-u: ターゲットです。FUZZキーワードをファジングしたい場所に入れます
サブドメインファジングによく使うコマンド:
T='REPLACE'; ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.$T" -u "http://$T"
-H: ヘッダーです。サブドメインを探すときに、Hostヘッダーに対する反応を見ます。結果をフィルタリングする必要がある場合は-fs(ファイルサイズでフィルタリング)や-fc(レスポンスコードでフィルタリング)などのフラグでフィルタリングを行います
Burp Suite
Burp Suiteは中間プロキシサーバです。スキャニングとアクセスの取得フェーズで使えます。ブラウザのリクエストをキャプチャして、サーバに送信する前にユーザ側でリクエストを改変できるツールです。それ以外にも、リクエストを再送信したり、ファジングしたりの機能もあります。ウェブ診断士の十徳ナイフみたいなものです。無料版ではプロジェクトを保存できないのですが、InterceptやRepeaterぐらいの基本的な機能は使えます。
Burp Suite以外にも、Caido、HTTP Toolkit、mitmproxyがありますが、企業の設定ではほとんどBurp Suite Professionalを使っています。TUIツール好きな人はmitmproxyをおすすめです。
PEASS-ng
サーバに侵入したあとで使うツールです。アクセスの維持フェーズの一つの要素として、権限昇格があります。権限昇格がどこからできるかをスキャン・列挙してくれるツールはPEASS-ng (Privilege Escalation Awesome Scripts Suite new generation)になります。Linuxの場合、PEASS-ngの中にlinpeas.shを使います。linpeas.shの結果は長いですが、手動であまり思いつかないようなものまでスキャンしてくれますのでかなり便利です。linpeas.shの結果見ても権限昇格できる箇所が見つからない場合は、手動で探索する必要があります。
gtfobins
gtfobinsはget the fxxx outするべきバイナリ(消えていくべきバイナリ)のリストです。これも主に権限昇格になります。なぜ消えていくべきかというと、このリストに入っているバイナリは権限昇格に悪用できる可能性が高いからです。例えばあるサーバでbobという一般ユーザがsudoコマンド経由でrootユーザとしてnanoを実行する権限があるとしますと、bobがsudo /usr/bin/nanoを実行して、gtfobinsのこのページに書いてる情報を使えば、nanoからシェルにアクセスすることができます。bobがsudoでnanoをrootユーザとして実行しましたので、nanoから実行するシェルはrootユーザのシェルです。シェルまでアクセスできますと、rootユーザとして任意のコマンドを実行できます。
終わりに
久しぶりにブログ書きました。セキュリティエンジニアが日々使うツールの紹介ですが、ソフトウェア開発者だとあまり馴染みのないツールかもしれません。ぜひ自分で開発したサービス(又は診断許可をもらったターゲット)にこれらのツールを使って診断してみてください。もちろんこれらのツールだけでは足りない時もありますし、ターゲットの種類に合わせて使わないといけないツールもあったりあします。この記事だけですべて紹介できないのですが、参考になれたらと思います。