1723 - Pentesting PPTP

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

Point-to-Point Tunneling Protocol (PPTP) はリモートアクセスに使われる古いVPNトンネリングプロトコルです。制御チャネルには TCP port 1723 を使用し、PPPペイロードの輸送には IP protocol 47GRE)を使用します。トンネル内のトラフィックは一般に MPPE で保護され、認証はしばしば MS-CHAPv2 に基づいています。

攻撃側の観点では、興味深いのは通常制御接続自体ではなく、PPTP/MS-CHAPv2ハンドシェイクをキャプチャすると、オフラインでのパスワードまたはNT-hashの回復が可能になりますという点です。また、ホストがTCP/1723で応答しても、トンネルは GRE (protocol 47)がフィルタされている ために失敗することがある点に注意してください。

デフォルトポート:1723

列挙

nmap -Pn -sSV -p1723 <IP>
nmap -Pn -sO --protocol 47 <IP>

tcp/1723 のみを確認して GRE を見逃すと、VPN が到達可能だという誤った印象を簡単に持ってしまいます。トラブルシューティングやスニッフィングの際には、制御トラフィックとカプセル化されたトラフィックの両方をキャプチャしてください:

sudo tcpdump -ni <iface> 'tcp port 1723 or gre' -w pptp-handshake.pcap
tshark -r pptp-handshake.pcap -Y 'pptp || gre || ppp || chap'

Brute Force

攻撃ノート

MS-CHAPv2 handshake のキャプチャ

PPTP では、関連するデータは GRE 内で運ばれる PPP の authentication exchange です。MS-CHAPv2 ではレスポンスは以下に依存します:

  • サーバー AuthenticatorChallenge
  • クライアント Peer-Challenge
  • ユーザー名 username
  • NT-Response

つまり、packet capture があれば攻撃をオフラインで行えることが多いです。初期接続をスニッフできるなら、ユーザーに再接続を依頼するか、on-path に位置取りして、handshake をキャプチャし、challenge/response データを抽出してください。

便利なクイックフィルタ:

tshark -r pptp-handshake.pcap -Y 'chap'
tshark -r pptp-handshake.pcap -Y 'ppp and chap'

chapcrack で解析・復号する

chapcrack は依然として PPTP キャプチャを処理する最も扱いやすい方法の一つです:

chapcrack.py parse -i pptp-handshake.pcap

基になる秘密情報を回復できれば、PPTPのパケットキャプチャを復号できます:

chapcrack.py decrypt -i pptp-handshake.pcap -o pptp-decrypted.pcap -n <recovered_nt_hash_or_token>

これは、目的が資格情報の回復だけでなく、セッションの復号化や認証後のトラフィック解析である場合に特に有用です。

Crack challenge/response material

すでに challenge/response ペアを抽出している場合、asleap は PPTP/MS-CHAPv2 のデータに対して直接使用できます:

asleap -C 58:16:d5:ac:4b:dc:e4:0f -R 50:ae:a3:0a:10:9e:28:f9:33:1b:44:b1:3d:9e:20:91:85:e8:2e:c3:c5:4c:00:23 -W /usr/share/wordlists/rockyou.txt

asleap は packet captures や precomputed lookup tables からの処理もサポートしますが、PPTP assessments における最も一般的なワークフローは次のとおりです:

  1. PPTP handshake をキャプチャする
  2. challenge/response を抽出する
  3. asleapchapcrack、またはカスタムワークフローで offline cracking を実行する

Recent tradecraft では NT-hash-first ワークフロー(例: assless-chaps)も使われており、prepared hash database を使って MS-CHAPv2/NTLMv1 の challenge-response から NT hash を回復します。良質な NT-hash corpus を維持していれば、従来の password cracking より速くなることがあります:

./assless-chaps <challenge> <response> <hashes.db>

これは重要です。PPTPでは、回収されたNT hash自体が運用上価値を持ちます。一度入手すれば、クラックの検証、キャプチャの復号、そしてWindows向けの再利用チェックへのピボットに使用できます。

プロトコルの脆弱性の要約

  • PPTPは別個の GRE データチャネルに依存しているため、ファイアウォールはしばしばtcp/1723を公開していてもトンネルを内部的に切断していることがある。
  • MS-CHAPv2のセキュリティは実質的にDES由来の材料/NT-hash相当の秘密の回収に還元されるため、パッシブキャプチャは現代のVPNに比べてはるかに危険になる。
  • パスワードがすぐに回復されない場合でも、ハンドシェイクは通常保存して後でオフラインで攻撃できる

参考

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする