LinPEAS (Linux Privilege Escalation Awesome Script) は、Carlos Polop の PEASS-ng (Privilege Escalation Awesome Scripts SUITE - next gen) プロジェクトが開発した シェルスクリプト。ある Linux/Unix マシンに一般ユーザとして入った後、そこから root へ昇格できそうな「糸口」を自動で一気に列挙するのが役目だ。重要なのは、LinPEAS 自身は何も exploit しないこと。あくまで kernel バージョン・sudo 権限・SUID バイナリ・capabilities・cron・書き込み可能な PATH・ファイル中の平文パスワードといった情報を集めて見やすく並べる「列挙 (enumeration) ツール」であり、出力を色分けして「ここが権限昇格に使える可能性が高い」と優先度付けしてくれる点が最大の価値になる。Windows 版の WinPEAS と対になる存在だ。
LinPEAS とは — PEASS-ng と「色による優先度付け」 #
権限昇格 (privilege escalation / privesc) では、まず 「今いるユーザから何ができるか」を徹底的に調べる列挙作業が出発点になる。これを手で find や sudo -l を打って延々とやる代わりに、定番の確認項目を一括で走らせて結果をまとめてくれるのが LinPEAS だ。PEASS-ng プロジェクトの一部で、Linux/Unix 用が LinPEAS、Windows 用が WinPEAS という関係になっている。
LinPEAS が他の列挙スクリプトと一線を画すのは、大量の出力を「色」でトリアージしてくれる点。膨大な情報の中から「どれが昇格に効きそうか」を人間が探すのは大変だが、LinPEAS は怪しい項目を RED / YELLOW でハイライトしてくれる。
| 色 | 意味 |
|---|---|
| RED + YELLOW | 権限昇格ベクタである可能性が高い (公式ドキュメントいわく約 95% の確度)。最優先で確認すべき項目 |
| RED 単体 | 重要 / 特別な情報。注目に値する設定や発見 |
| その他の色 | 分類・見出し・参考情報。文脈把握のための装飾 |
LinPEAS は 糸口を見つけて指し示すところまでしかやらない。たとえば「この SUID バイナリが GTFOBins に載っている」「sudo のバージョンが既知の脆弱性に該当する」と教えてはくれるが、そこから実際に root を取る手順 (exploit) は人間が判断して実行する。だから LinPEAS の出力は「答え」ではなく「ここを調べろという地図」として読む。色が付いた箇所から優先的に裏取りしていくのが基本の流れだ。
法的・倫理的な注意 #
LinPEAS は exploit しないとはいえ、システムの内部情報 (設定・認証情報・鍵・ユーザ一覧など) を根こそぎ収集する強力な偵察ツールだ。さらに、見つけたベクタを使って実際に権限昇格まで行えば、それは明確な侵入行為になる。許可なく他人のマシンで LinPEAS を走らせること、ましてそこで見つけた糸口を使って root を奪うことは、日本の不正アクセス禁止法に問われ得る違法行為になりうる。
- 自分が所有・管理しているマシン — 自分の検証環境、自分が契約している VPS、隔離した学習用ラボ
- 書面で明示的に許可された対象 — ペネトレーションテスト契約で、対象ホスト・期間・権限昇格の検証がスコープとして文書化されているもの
- 正規の学習プラットフォーム — Hack The Box、TryHackMe、各種 CTF など、運営が権限昇格の演習を許可している環境
権限昇格の列挙は「すでに侵入した後」に行う性質上、そのマシンに正規にアクセスできる立場かどうかが決定的に重要になる。他人のサーバに無断で入り込み LinPEAS で内部を漁った時点でアウトであり、見つけたベクタで root を取れば被害は一層重くなる。対象と許可を必ず先に確認すること。
何をチェックするのか — 列挙対象の全体像 #
LinPEAS は「Linux の権限昇格でよく使われる経路」をひと通り自動でなめていく。代表的な確認項目は次の通り。
| 分類 | LinPEAS が調べる主な内容 |
|---|---|
| kernel | カーネルバージョンと、それに対応する既知のエクスプロイト候補 |
| sudo | sudo -l の許可内容、sudo のバージョン (脆弱な版に該当しないか) |
| SUID / SGID | SUID/SGID が立ったバイナリと、GTFOBins に載る悪用可能な一致 |
| capabilities | ファイルに付与された capabilities (例: cap_setuid 等) |
| cron | cron ジョブ、特に書き込み可能なスクリプトを root が定期実行していないか |
| PATH | $PATH 中に書き込み可能なディレクトリが混じっていないか |
| writable | 誰でも書き込める (world-writable) ファイル・ディレクトリ |
| secrets | ファイル中に平文で残ったパスワードや秘密情報、SSH 秘密鍵 |
| env / software | 環境変数、インストール済みソフトとそのバージョン |
| network | 待ち受けポート・サービス、内部向けに開いている口 |
| container | docker / lxc の有無とコンテナからのブレイクアウトの糸口 |
| その他 | NFS の no_root_squash、読み取り可能な /etc/shadow など |
これらを 1 本のスクリプトで一気に確認し、怪しい箇所を色付きで提示する。手で sudo -l・find / -perm -4000・getcap -r /・cat /etc/crontab … と順番に叩く作業を、取りこぼしなく自動化してくれるのが価値だ。
LinPEAS は昇格ベクタだけでなく、横展開や別アカウント奪取に使える「お宝 (loot)」も拾う。設定ファイルに残った DB のパスワード、history ファイル、SSH 鍵、ブラウザや各種アプリの認証情報などだ。権限昇格に直接効かなくても、別ユーザへの水平移動や次の足がかりになる情報をまとめて回収できる。
実行方法 — curl ワンライナー / ファイル転送 / 保存 #
LinPEAS の動かし方は大きく 2 通り。ディスクに書かずメモリ上で実行するか、ファイルを転送してから実行するかだ。
メモリ上で直接実行 (ディスクに書かない) #
最新リリースを curl で取得し、そのまま sh にパイプして実行する。ターゲットのディスクにスクリプトを残さないので、フォレンジック痕跡を最小化できる (要・外向き通信)。
$ curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
# -L リダイレクトを追従して最新リリースの linpeas.sh を取得
# そのまま sh にパイプ、ファイルを書かずにメモリ上で実行ファイルを転送してから実行 #
外向き通信が無い環境などでは、ローカルで落とした linpeas.sh を SCP などでターゲットへ送り、実行権を付けて起動する。
$ chmod +x linpeas.sh
$ ./linpeas.sh
# 書き込み可能で目立たないディレクトリ(例: /dev/shm)から走らせると安全出力をファイルに保存する #
出力が膨大なので、後で読み返すためにファイルへ残すことが多い。tee なら画面表示しつつ保存できる。ディスクに触れたくないなら、メモリ上の /dev/shm へリダイレクトする。
$ ./linpeas.sh | tee linpeas.txt
# 画面に出しつつ linpeas.txt にも保存
$ ./linpeas.sh > /dev/shm/out.txt
# メモリ上の /dev/shm に書けばディスクに痕跡を残しにくいLinPEAS の生命線は色によるトリアージだが、素直にファイルへリダイレクトすると ANSI の色情報が落ちて白黒になってしまう。RED/YELLOW のハイライトが見えないと優先度付けの価値が失われる。色を保ったまま読みたいときは後述の less -r でページャに流すか、色対応の方法で保存すること。
主要オプション — -a / -s / -e / -o と運用 Tips #
LinPEAS は「どこまで深く・どれだけ静かに調べるか」をオプションで選ぶ。CTF なら徹底的に、実戦の診断なら静かに、と使い分ける。
| オプション | 効果 |
|---|---|
-a |
全チェック。最も網羅的だが、その分うるさく遅い。CTF 向き |
-s |
superfast & stealth。チェックを絞ってノイズを減らす。時間のかかる/目立つ列挙を省く |
-e |
追加列挙 (extra)。一部チェックをより深掘りする |
-o <checks> |
指定したチェックグループだけを実行 (カンマ区切り、例: -o SysI,Devs,Net) |
-h |
ヘルプ表示 |
$ ./linpeas.sh -a
# CTF: 取りこぼしを無くす全チェック(遅い・うるさい)
$ ./linpeas.sh -s
# 実戦: 静かに・速く。フットプリントを抑えたいとき
$ ./linpeas.sh -o SysI,Devs,Net
# 指定グループだけ(システム情報・デバイス・ネットワーク)色を保ったままページャでゆっくり読むなら、less -r (raw control chars) に流すのが定石。
$ ./linpeas.sh -a | less -r
# -r で ANSI 色を生のまま通すので RED/YELLOW が見える- 書き込める・目立たないディレクトリから走らせる —
/dev/shmや/tmp配下など。怪しい場所に置くと検知・調査の手がかりになる。 - CTF なら
-a、実戦なら-s— 演習では網羅性、実際の診断ではフットプリント低減を優先する。 - まず RED+YELLOW を上から潰す — 全部を読む前に、色付きの「昇格ベクタ候補」から裏取りすると効率がよい。
- 色を捨てない — 保存するなら
tee+less -r等で色を確認できる形を確保する。
関連ツールと防御視点 — 出力はハードニングのチェックリスト #
Linux 権限昇格の列挙ツールは LinPEAS だけではない。それぞれ性格が違うので、状況で使い分ける。
| ツール | 位置づけ |
|---|---|
LinPEAS | PEASS-ng の Linux 版。最も網羅的で、色による自動トリアージが強み。情報量が多い分ノイズも多い |
WinPEAS | 同じ PEASS-ng プロジェクトの Windows 版。LinPEAS の兄弟で思想は共通 |
LinEnum | 古参の列挙スクリプト。LinPEAS より軽量・シンプル |
lse.sh (linux-smart-enumeration) | 段階的に詳細度を上げられる列挙スクリプト。出力が読みやすい |
pspy | root 無しで プロセス・cron をリアルタイム監視。LinPEAS が静的に見る cron を「動いている瞬間」で捉える補完役 |
linux-exploit-suggester | kernel バージョンから該当する既知エクスプロイトを提案することに特化 |
LinPEAS は最も網羅的で、かつ自動で優先度付けしてくれる点で、これらの中でも「まず一発撃つ」立ち位置になりやすい。pspy で cron の挙動を観察したり、linux-exploit-suggester で kernel の線を詰めたりと、他ツールと組み合わせて裏取りするのが実戦的だ。
LinPEAS が赤く光らせる項目は、そっくりそのまま 防御側が潰すべき設定不備でもある。攻撃側の偵察ツールは、裏返せば自分の環境を点検する道具になる。具体的には、不要な SUID バイナリを削る、sudoers を監査して過剰な許可を取り除く、不要な capabilities を落とす、cron スクリプトの所有者・書き込み権限を締める、設定ファイルから平文の秘密情報を排除する、kernel を最新に保つ — これらを順に実施すれば、LinPEAS で「昇格に使える」と判定される面を着実に減らせる。自分のサーバに LinPEAS を走らせ、RED/YELLOW が出なくなるまで締めるのは、現実的で効果の高いハードニング手順だ。