Trapind traficul cu wpad

WPAD este un protocol foarte simplu pentru configurarea automată a unui server proxy. În acest articol, voi descrie modul în care este aranjat, ce opțiuni de securitate le furnizează din perspectiva atacatorului și, de asemenea, vor împărtăși idei despre modul de utilizare a acestei tehnologii pentru a intercepta parțial traficul HTTPS.

Despre protocolul

În plus față de FindProxyForURL, diferite funcții auxiliare sunt disponibile în scriptul PAC pentru o personalizare mai flexibilă. Ele pot fi folosite, de exemplu, că browser-ul ar trebui să deschidă google.com de la trei la patru ore sambata peste proxy1.com, toată ziua duminică - prin proxy2.com, în timp ce în alte momente - la toate merge direct, fără proxy server.

Cum funcționează WPAD

Să presupunem că, din setările DHCP, am aflat că numele de domeniu este msk.office.work. Apoi, Windows XP va încerca să-l găsească pe wpad.msk.office.work (domeniul rezolving va avea loc prin intermediul DNS), și apoi doar la wpad.office.work.

Windows 7 se comportă diferit: mai întâi, prin DNS, verifică domeniul complet, apoi încearcă să decodeze numele WPAD prin intermediul rezoluției Name-Link-Local Multicast Name. și apoi utilizând serviciul de nume NetBIOS. Ultimele două sunt protocoalele difuzate care sunt acceptate de Windows începând cu Vista.

Utilizarea într-o rețea locală

Imaginați-vă pe site-ul unui atacator care dorește să înceapă tot traficul local prin intermediul serverului său proxy. Dacă suntem în același segment al rețelei locale și putem utiliza NetBIOS, atunci putem folosi NBNS-spofer-ul de la Metasploit.

Trapind traficul cu wpad
Fig. 3. Spionajul NBNS în rețeaua locală

Dacă suntem într-o altă subrețea, dar rețeaua noastră are WINS-server, putem ridica Windows-gazdă cu numele WPAD, WINS pentru a răspândi informații despre noi. Acest caz este destul de lucru: l-am testat într-o rețea suficient de mare a universității, și gazdă în rețea chiar mai puțin / 24, cererile au început să vină cu sute de diferite IP.

Utilizați pe Internet

În prezent există 861 de domenii de nivel 1. Pe lângă comanda obișnuită .com. net. ru. org, printre care și mai exotice - de la .work și .school la .ninja și .vodka. Numele acestor domenii pot fi bine definite în opțiunea de nume de domeniu a serverelor DHCP. Astfel, dacă în numele de domeniu este specificat de domeniu .school și vom înregistra wpad.school domeniu, toate cererile de WPAD-fișier va ajunge la noi. Și dacă te uiți la wpad.TLD din domeniile de primul nivel, vom vedea următoarea imagine (Figura 4).

Trapind traficul cu wpad
Fig. 4. Gratuit pentru domeniile de înregistrare WPAD

Cu câțiva ani în urmă, am înregistrat domeniul wpad.co, care a început să primească numeroase cereri pentru fișierul wpad.dat. Dar există și dovezi mai recente despre posibilitatea de a intercepta ceea ce nu a fost destinat pentru noi: o lună în urmă am înregistrat domeniul wpad.work. Timp de 11 zile, el a fost abordat din 3901 unic IP.

Trapind traficul cu wpad
Fig. 5. Numărul de apeluri către wpad.work: dinamică după zilele săptămânii

Deci, am forțat utilizatorii să meargă prin serverul proxy pe care l-am controlat. Ce ne dă acest lucru? În cazul cererilor HTTP - control complet asupra traficului: anteturi și corpul solicitării și răspunsului, toți parametrii, cookie-urile, datele de transmitere a formularului și așa mai departe.

Trapind traficul cu wpad
Fig. 6. Solicitare HTTP prin intermediul unui server proxy

În cazul HTTPS, vom vedea doar metoda CONNECT. Informațiile maxime disponibile pentru noi sunt gazda și agentul utilizator. Din păcate, cel mai interesant, adică schimbul de date între client și server după strângere de mână, pentru noi va arăta doar ca un set de date binare.

Trapind traficul cu wpad
Fig. 7. Cererea HTTPS printr-un server proxy

Înapoi la PAC

Trapind traficul cu wpad
Fig. 9. Apelul FindProxyForURL în Chrome Fig. 10. Apel FindProxyForURL în Firefox

Indiferent de browserul utilizat, avem adresa URL completă. Vom încerca, folosind funcțiaResolvable, să interceptezi adresa URL. Pentru a face acest lucru, codificăm adresa URL astfel încât să fie un nume gazdă valabil și să adăugăm d.wpad.work în înregistrarea NS a cărei server DNS este înregistrată, unde răspundem la toate solicitările și le logăm.

Deci, cu ajutorul transformărilor simple:

echo 'https058047047example046en047063token061123.hacker.com' \
| | perl -lape 's / .hacker.com $ //; s / .// g; s / 0 (..) / chr ($ 1) / eg; "

Nu este un secret faptul că jetoanele OAuth sunt adesea transmise în fragmentul URL (location.hash). Astfel, în cazul utilizării Firefox, ei pot ajunge la noi.

Cu WPAD, puteți intercepta traficul local, jetoanele OAuth și alte informații de la adresa URL, indiferent de HTTPS. Același lucru se poate face și pe Internet prin înregistrarea domeniului wpad.LTD și prin încercarea de a prinde victime casual pe această capcană.

Acum, folosind cunoștințele noastre, vom vedea cum să ne protejăm de potențialele atacuri care utilizează WPAD. Mai jos sunt recomandările principale, implementarea cărora va face posibilă asigurarea traficului dvs.:

Distribuiți acest articol cu ​​prietenii dvs.:

Articole similare