はじめに
ポストコンプロマイズ/ペネトレーションテストでのローカル列挙作業を短縮するための代表的な自動化スクリプトを紹介し、使い方のポイント・長所・短所・運用上の注意を実践的にまとめる。ツールは“見落としが発生する可能性がある”前提で、手動確認と組み合わせて使うこと。
1. 全体の考え方 — 自動化ツールは補助であり最終判断は人
自動化ツールは大量のチェックを短時間で実行してくれるが、環境依存(インストール済み言語/コマンド・カスタム設定)やスクリプトの網羅性の限界で見落としが出ることがある。必ず手動で重要ポイント(SUID/SGIDバイナリ、パスワード平文、cron、サービス設定、capabilities、docker/socket 等)を確認する。
2. 主要ツール一覧(短説明・実行例・利点/欠点)
linPEAS(PEASS-ng の linux 用スクリプト)
-
概要:幅広いチェック(パーミッション、ワールド書き込み、システム情報、スクリプトの可能性あるバイナリ、ネットワーク情報など)を網羅して出力を色付け表示する。
-
ダウンロード / 実行(ターゲット上に
curlがある想定):curl -sSL https://raw.githubusercontent.com/peass-ng/PEASS-ng/master/linPEAS/linpeas.sh -o linpeas.sh chmod +x linpeas.sh ./linpeas.sh quick # オプションはバージョンにより異なる -
長所:チェック範囲が広く、出力が見やすい。プラットフォーム互換性が高い。
-
短所:検査量が多くログが冗長になること、環境によってはスクリプト自体が実行できない(
bash/awk/perl等の依存)。
LinEnum
-
概要:シンプルで読みやすいシェルスクリプト。システム情報/ユーザ情報/権限・環境設定・サービスなどを段階的にチェックする。歴史が長く CTF や演習で広く使われる。
-
実行例:
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh -O LinEnum.sh chmod +x LinEnum.sh ./LinEnum.sh -
長所:軽量で読みやすく、手動フォローしやすいレポートを生成する。
-
短所:linPEAS と比べるとチェック項目が限定的で、より深い解析は別ツールが必要
LES / Linux Exploit Suggester(および後継)
-
概要:カーネルバージョンや環境情報をもとに既知のローカルエクスプロイト候補を提示するツール群(
linux-exploit-suggesterやlinux-exploit-suggester-2などの派生あり)。本番環境での実行は慎重に。 -
実行例(古典的スクリプト):
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh chmod +x linux-exploit-suggester.sh ./linux-exploit-suggester.sh -k `uname -r` -
長所:既知のカーネル脆弱性に対する“候補探索”が素早くできる。
-
短所:候補は公開エクスプロイトに依存するため、環境に当てはまらない/false positive がある。最新化(DB/ルール)の管理が必要。GitHub+1
Linux Smart Enumeration(LSE / lse.sh)
-
概要:CTF とペンテスト向けに設計されたシェルスクリプト。実行中にプロセス監視を行う機能など便利なユーティリティを持つ。冗長だが情報密度は高い。
-
実行例:
curl -sSL https://raw.githubusercontent.com/diego-treitos/linux-smart-enumeration/master/lse.sh -o lse.sh chmod +x lse.sh ./lse.sh -
長所:verbosity レベルやプロセス監視など柔軟な実行制御が可能、CTF で有用
-
短所:標準環境にないツールが多いと動かない部分がある。監査ログを大量に出すため、解析の工夫が必要
linuxprivchecker(sleventyeleven / フォーク多数)
-
概要:昔からある Python ベースの権限昇格チェックスクリプト。基本的な検査を手早く行える。フォークが多数存在する。GitHub+1
-
実行例(ターゲットに python がある場合):
wget https://raw.githubusercontent.com/sleventyeleven/linuxprivchecker/master/linuxprivchecker.py python3 linuxprivchecker.py -
長所:軽量・古典的で素早く環境の“粗取り”ができる。
-
短所:メンテナンス状況がリポジトリによって差があり、最新カーネルや新しい攻撃面はカバーできない可能性。GitHub
3. 実践での使い方(チェックリスト)
-
環境確認:
uname -a、id、which bash/python/perl等を先に確認し、実行可能なスクリプトを選ぶ。 -
順序:まず軽量ツール(LinEnum / linuxprivchecker)で素早く情報を取り、続けて linPEAS / LSE など網羅的なツールを実行する。
-
ログ収集:出力はファイルに保存して差分比較・検索(
grep/rg)で把握する。./linpeas.sh | tee linpeas-$(date +%F).log -
手動追跡:自動ツールで「怪しい」項目が出たら、手動で詳細確認(SUID バイナリの挙動、cron のスクリプト中のパス、サービス設定ファイルの読み取り)を行う。
-
依存関係:ターゲットに
curl/wgetが無い場合はecho "base64..." | base64 -d > script.shのような転送手段を使う。
4. 注意点(運用と倫理)
- 実行許可:許可のある環境(自分の VM、CTF 演習環境、明示的に許可された顧客環境)でのみ実行する。無許可環境での実行は違法。
- ログ・痕跡:大量のコマンド実行は監査ログに残るため、実運用での検査は許諾の上で行う。
- ツールの出所確認:信頼できるリポジトリから取得し、可能ならハッシュ検証を行う。改竄されたスクリプトは危険。
- 自動で exploit を実行しない:自動列挙ツールは“候補”を出すに留め、実際のエクスプロイト実行・証跡変更は慎重に行う。
まとめ
自動化列挙ツールは「時間短縮」と「見落とし防止」に強力に寄与するが、万能ではない。linPEAS / LinEnum / LES 系 / LSE / linuxprivchecker といったツールを目的に応じて組み合わせ、必ず人による確認と追加調査を行うこと。ツールのバージョン・ソースを確認し、実行は必ず適法な範囲で行う。
参考リンク(公式リポジトリ等)
- PEASS-ng / linPEAS(PEASS-ng)
- LinEnum — rebootuser / LinEnum(GitHub)
- linux-exploit-suggester / linux-exploit-suggester-2 — mzet / jondonas(GitHub)および Kali ページ
- Linux Smart Enumeration(lse.sh)
- linuxprivchecker