31 august 2018
Era o dupa-amiaza ciudata si fumata in San Francisco. Aparent, vecinii mei de la parter nu au auzit niciodata de vapori, iar Sierra Nevada a luat foc. Planuisem sa-mi petrec restul zilei atacand functiile de localizare ale utilizatorilor din aplicatiile de intalnire populare. Am vrut sa vad daca vreunul dintre ei era vulnerabil la atacuri care ar putea inversa pozitia de utilizator al victimei. Planul meu era sa rasfirme mii de solicitari catre fiecare aplicatie vizata, sa pretind ca fiecare cerere a fost trimisa dintr-o locatie diferita si de fiecare data sa intreb aplicatia cat de departe era de tinta mea fata de pozitia mea actuala, falsificata. As combina rezultatele folosind matematica si ingeniozitate pentru a incerca sa scutur o locatie exacta.
Proiectul a inceput bine. Folosind Burp Suite, un proxy HTTP popular, am putut inspecta, edita si reda toata comunicarea HTTP trimisa intre telefonul meu si serverele indepartate ale diferitelor aplicatii de intalnire. Dar cand am inceput sa probez o aplicatie de mare succes, am lovit imediat un zid de caramida. Am constatat ca comunicarea sa nu apare in Burp sau in niciunul din alte instrumente standard, axate pe HTTP. Mi-am petrecut mult timp verificand si verificand dublu setarile si configuratiile. Pana la urma m-a lovit – nu au folosit deloc HTTP. Foloseau un alt protocol, misterios, dar tot bazat pe TCP, cu care instrumentele mele normale, cum ar fi Burp, nu au putut sa lucreze.
Intrigat, dar grijuliu, mi-am luat ceva timp sa construiesc un proxy TCP generic care sa poata gestiona orice protocol bazat pe TCP, nu doar HTTP. Odata finalizata, proxy-ul meu mi-a permis sa inspectez comunicatiile aplicatiei necooperante cu serverele sale. Aceasta a insemnat ca as putea continua sa ma incolac pe profilul meu fals de manechin, cu cateva rezultate promitatoare.
In aceasta serie in patru parti, va voi arata cum sa construiti un proxy TCP. La sfarsitul proiectului veti putea folosi proxy-ul pentru a intercepta, inregistra, edita si reda tot traficul TCP al smartphone-ului dvs., nu doar HTTP. Veti afla multe despre multe dintre tehnologiile cheie care stau la baza internetului, inclusiv DNS, TLS si TCP. Si tu, de asemenea, vei putea incerca sa redescoperi locul exact al propriului Testington McTest, in varsta de 28 de ani, care locuieste in San Francisco, ii place „Testarea”.
1. Ce este un proxy?
Proxy este un intermediar care trimite mesaje catre un server in numele unui client. Cand navigati pe internet folosind un proxy, nu intrebati direct Google „cum sa trisez la poker?” In schimb, trimiteti o solicitare catre mandatarul dvs., solicitandu-i sa intrebe Google cum sa insele la poker pentru dvs. Proxy-ul dvs. solicita Google si va trimite inapoi raspunsul. Google stie ca vorbea cu proxy-ul tau, dar nu stie neaparat ca erai tu de cealalta parte.
Proxy-urile sunt utilizate pe scara larga pentru confidentialitate, filtrarea continutului, ocolirea cenzurii, caching si testarea penetrarii securitatii.
Vom construi un anumit tip de proxy cunoscut sub numele de „om-in-mijloc” (MITM). Proxy-urile MITM sunt utilizate in mod obisnuit de testerele de penetrare a securitatii pentru a citi, inregistra si modifica datele pe care un client (precum un smartphone) le schimba cu un server de la distanta (precum o aplicatie de intalnire).
Sa presupunem ca ati dorit sa utilizati un proxy MITM (care ruleaza pe propriul laptop) pentru a inspecta traficul trimis catre si din aplicatia preferata de intalnire. Ati instrui telefonul smartphone sa-si trimita traficul pe proxy-ul MITM, in loc sa-l trimita direct pe serverele aplicatiei de intalnire. Smartphone-ul dvs. nu ar mai intreba serverele aplicatiei de intalnire „cat de departe este Alex?”. Mai degraba, ar solicita mandatarului dumneavoastra MITM sa intrebe aplicatia de intalnire cat de departe este Alex in numele dvs.
Proxy-ul dvs. MITM ar face aceasta solicitare si ar trimite inapoi smartphone-ului dvs. orice raspuns pe care l-a primit. De asemenea, va inregistra continutul cererii si raspunsul la un fisier, permitandu-va sa vedeti ce contineau. Aceasta este ceea ce face ca un proxy sa fie un barbat in mijloc. Puteti utiliza informatiile din aceste jurnale pentru a modifica cererile de la smartphone-ul lor de iesire sau chiar pentru a va propaga propriile solicitari complet de la zero.
2. Proxy Design
Proxy-ul nostru va fi format din 3 componente, fiecare rezolvand o problema diferita:
- Un server DNS fals, pentru a-ti pacali smartphone-ul in a-si trimite traficul TCP catre proxy-ul nostru
- Un server proxy, pentru a gestiona fluxul de date intre smartphone-ul dvs. si serverul de la distanta
- O autoritate de certificare falsa, care sa se ocupe de criptarea TLS intre smartphone-ul dvs. si proxy-ul nostru
Acest proiect este impartit in 4 transe. Aceasta prima transa ofera o imagine de ansamblu asupra designului proxy-ului si o introducere a protocoalelor si tehnicilor pe care le vom folosi. Ultimele trei transe descriu fiecare cum sa construiti una dintre componentele de mai sus si sa ofere un plus de culoare tehnologiilor implicate.
2.1 Construirea unui server DNS fals
Vom incepe sa construim un server DNS fals si sa il folosim pentru a convinge smartphone-ul dvs. sa-si trimita traficul catre proxy-ul nostru.
Noi, oamenii, ne gandim sa trimitem date pe internet folosind nume de gazda , cum ar fi robertheaton.com. Cu toate acestea, internetul ne orienteaza datele catre destinatia sa folosind adrese IP , cum ar fi 104.18.33.191. Aceste doua sisteme de adrese sunt complet distincte. Adresele IP sunt incomode pentru oameni („vizitati site-ul meu la 104.18.33.191” nu sunt foarte infocate), dar numele de gazda nu inseamna absolut nimic pentru coloana vertebrala a internetului.
Dispozitivele, precum smartphone-ul dvs., se traduc intre nume de gazda si adrese IP folosind protocolul DNS ( Domain Name System (DNS)). Exista 20 de servere DNS gratuite si publice, care fiecare (aproximativ vorbind) pastreaza o baza de date cu toate maparile de la nume de gazda la adrese IP. Google are un server DNS cu adresa IP 8.8.8.8. Verisign are una la 64.6.64.6.
Sa presupunem ca navigati pe site-ul meu web, pe robertheaton.com. Inainte ca dispozitivul dvs. sa poata trimite o solicitare serverului meu, trebuie sa transforme acest nume de gazda intr-o adresa IP pe care coloana vertebrala a internetului o poate intelege. Creeaza DNS O cerere de inregistrare (denumita de acum inainte doar „cerere DNS”) catre un server DNS, solicitandu-i-o sa traduca robertheaton.com intr-o adresa IP. Odata ce serverul DNS raspunde la 104.18.33.191, browserul dvs. trimite o solicitare HTTP pe internet, adresata acestei adrese IP.
Puteti alege ce server DNS utilizeaza smartphone-ul dvs. pentru a realiza aceste traduceri DNS, tastand adresa IP a serverului in setarile de sistem ale smartphone-ului. Toate serverele DNS majore ar trebui sa ofere aceleasi raspunsuri corecte, asa ca, de obicei, aceasta alegere nu prea conteaza.
Obisnuit.
2.1.1 Ce este un server DNS fals?
Nu este nimic special despre un server DNS. Este doar un server care asculta si raspunde la solicitarile DNS din portul UDP 53. De fapt, putem rula un server DNS propriu pe laptopul tau si putem configura telefonul smartphone pentru a utiliza acest server DNS fals in loc de Google sau Verizon .
Aceasta este mai mult decat o simpla ciudatenie. Putem programa serverul nostru fals DNS pentru a trimite inapoi orice raspuns DNS care ne place. Putem face chiar sa-i trimita inapoi minciuni totale. Sa presupunem ca serverul nostru DNS primeste o solicitare DNS pentru un nume de gazda ale carui solicitari dorim sa o parcurgem prin proxy-ul nostru (sa spunem, api.targetapp.com). Vom programa serverul nostru pentru a raspunde, nu cu adresa IP reala a api.targetapp.com, ci cu adresa IP locala a laptopului.
Telefonul dvs. nu va sti ca mintim si nu va vedea nimic in neregula cu raspunsul nostru. Acesta va accepta ca api.targetapp.com rezolva adresa de IP locala a laptopului dvs. si va trimite toate datele pe care doreste sa le trimita pe api.targetapp.com pe laptop.
Pentru a profita de acest comportament si a primi aceste date redirectionate, va trebui sa configurati un al doilea server pe laptop. Acesta va fi serverul proxy real. Va fi responsabil pentru primirea datelor de pe telefon; citind-o si imprimand-o astfel incat sa o putem inspecta; si in final sa o transmita destinatarului sau.
2.1.2 De ce nu putem face doar ce face Burp?
Proxy-urile HTTP / S precum Burp nu trebuie sa faca nicio jiggery-pokery DNS pentru ca telefonul smartphone sa le poata trimite date. De ce proxy-ul nostru TCP?
Raspunsul este ca proxy-urile HTTP / S precum Burp ne fac sa oferim mai multe caracteristici de prima clasa ale protocolului HTTP care exista doar pentru a ajuta proxii. Acestea includ cererile CONNECT si antetul gazda HTTP, mai multe despre care ulterior.
Toate smartphone-urile sensibile profita de aceste functii si, prin urmare, functioneaza bine cu proxy-urile HTTP / S. Smartphone-ul dvs. are o setare de sistem care va permite sa specificati un proxy pe care ar trebui sa-l foloseasca pentru toate solicitarile HTTP. Pentru a utiliza un proxy HTTP MITM precum Burp, conectati mai intai laptopul si smartphone-ul la aceeasi retea, apoi spuneti-i telefonului smartphone sa foloseasca adresa IP locala a laptopului ca proxy HTTP. Iti deschizi proxy Burp pe laptop si smartphone-ul iti transmite ascultator tot traficul HTTP / S catre laptop. Burp-ul functioneaza instantaneu.
Dar, deoarece dorim ca proxy-ul nostru sa poata gestiona toate protocoalele bazate pe TCP, nu doar HTTP, nu putem profita de nicio caracteristica specifica HTTP. Acesta este motivul pentru care trebuie sa recurgem la hijinks-urile noastre DNS. Alte protocoale bazate pe TCP pe care le intalniti pot avea propriile caracteristici echivalente proxy, dar in egala masura pot sa nu. Si nu veti sti daca protocolul particular pe care il inspectati are astfel de caracteristici pana cand nu veti putea inspecta cererile sale folosind un proxy si nu veti sti cum sa le proxy cererile sale pana cand nu le-ati inspectat cererile, si … In loc sa te intrebi daca puiul sau oul au venit pentru prima data, nu vei avea altceva decat un pui de gol si vise rupte.
Acum ca stim cum sa-ti pacalesti smartphone-ul in a-si trimite datele TCP pe laptop, hai sa vedem cum putem face ceva cu acesta.
2.2 Serverul proxy
A doua piesa a sistemului nostru este serverul proxy in sine. Acesta va fi un server care ruleaza pe laptop. Acesta va accepta traficul de pe telefonul dvs. smartphone (cu putin ajutor de la serverul nostru fals DNS), il va transmite catre serverul de la distanta al aplicatiei tinta si va trimite orice raspuns pe care il primeste inapoi la smartphone.
Principala problema pe care va trebui sa o rezolvam este sa ne asiguram ca proxy-ul nostru stie ce server de la distanta pentru a trimite traficul smartphone-ului dvs. Proxi-urile, ca toate programele de calculator, sunt mut ca caramizile. Ei nu stiu in mod magic ce sa faca cu datele primite si singurul mod in care pot sti este daca li se spune explicit.
Cand doriti sa aranjati cina cu prietenul dvs., trimiteti un text la numarul lor de telefon care spune „Vrei sa iei cina in seara asta?” Acest lucru functioneaza bine, cu exceptia cazului in care prietenul tau este deosebit de neclintit sau chiar nu iti place atat de mult.
Acum imaginati-va ca aveti un asistent personal pe care il angajati ca proxy pentru toate textele dvs. Va trimiteti toate textele in PA, si le transmite prietenilor si dusmanilor in numele dvs. Daca trimiteti un text la PA, spunand pur si simplu „Vrei sa iei cina diseara?” atunci nu vor sti cui sa o transmita. Avand in vedere ca ati fost un sef foarte neiertator, asistentul dvs. sarac, probabil neplatit va intra in panica, va sterge mesajul si se va preface ca nu l-au primit niciodata.
Exista multe modalitati de a aborda aceasta problema de proxy PA. Puteti atasa un antet la mesajul care scrie „Send-To: 415-123-1234”. Sau puteti stabili o regula inainte de timp ca toate sugestiile de cina sa fie intotdeauna directionate catre mama.
Inca o data, proxy-urile HTTP / S pot rezolva aceasta provocare de rutare cu usurinta folosind caracteristici speciale, specifice proxy-ului protocolului HTTP. Si inca o data, nu le putem folosi, deoarece dorim ca proxy-ul nostru TCP sa fie complet aplicatie-protocol-agnostic.
Prin urmare, vom insela un pic. Vom trimite codul dur un nume de gazda in proxy-ul nostru si vom spune proxy-ului nostru sa transmita toate datele primite acestui gazda. Acest lucru este ca si cum ai spune PA-ului tau sa orienteze toate mesajele text pe care le trimiti azi catre bunul tau amic, Steve Steveington.
Aceasta este o simplificare rezonabila. De obicei, veti folosi proxy-ul dvs. pentru a inspecta datele trimise de o singura aplicatie. Aceasta aplicatie va trimite probabil toate datele sale interesante catre un singur nume de gazda, cum ar fi api.targetapp.com.
Putem analiza jurnalele serverului nostru DNS fals din sectiunea anterioara si vedem lista gazdelor pe care telefonul dvs. incearca sa le contacteze. Putem folosi intuitia si ghicitul pentru a descoperi numele de gazda care este cel mai interesant pentru noi. De exemplu, api.targetapp.com este probabil mai interesant decat stats.mobileanalytics.com. Apoi, putem coda acest nume de gazda in proxy-ul nostru si sa-i instruim proxy-ului sa trimita toate datele pe care le primeste de la telefonul dvs. smartphone catre aceasta gazda.
Retineti ca va trebui sa configuram serverul nostru fals DNS pentru a trimite doar traficul nostru de proxy care este destinat pentru acelasi nume de gazda la care proxy-ul nostru trimite toate datele sale. Pentru toate celelalte nume de gazda serverul nostru fals DNS ar trebui sa faca o cerere DNS reala catre un server DNS real si sa transmita acest raspuns real smartphone-ului dvs. Acest lucru va determina smartphone-ul dvs. sa trimita intregul trafic pentru aceste nume de gazda direct la locul potrivit, ocolind proxy-ul nostru. Daca nu am face acest lucru, proxy-ul nostru ar putea sfarsi prin redirectionarea datelor sensibile catre serverele gresite.
2.2.1 Cum solicita ruta Burp?
Am mentionat ca Burp si alte proxy-uri HTTP / S solicita ruta, folosind caracteristici speciale ale protocolului HTTP. Pentru ca noi sa stim ce ne lipseste, sa aruncam o privire la aceste caracteristici speciale si la modul in care acestea ajuta proxenele sa traseze atat traficul HTTP cat si HTTPS.
HTTP
Proxy-urile HTTP necriptate il au usor. Cererile HTTP / 1.x contin un antet de gazda, care specifica explicit numele de gazda la care trebuie trimisa solicitarea. Cererile HTTP / 2.x contin un pseudo-antet de autoritate care contine aceleasi informatii. Proxy-urile HTTP pot analiza cu usurinta aceste valori din cererea necriptata si pot trimite din nou solicitarea in consecinta. Acest lucru este similar cu includerea unui camp „Trimitere” in mesajele text catre asistentul tau.
HTTPS
Proxy-urile HTTPS o au mai greu, desi inca nu sunt la fel de dure ca noi.
Exista 2 tipuri principale de proxy HTTPS – proxy de redirectionare si man-in-the-middle. „Proxy-ul de expediere” este foarte plictisitor. Proxieaza datele HTTPS fara a le decripta vreodata. Cu toate acestea, nu poate reutiliza abordarea adoptata de proxy-urile HTTP, deoarece vede doar datele care trec prin ea ca fiind octeti de nonsens criptati de TLS. Aceasta inseamna ca nu poate citi antetul gazdei HTTP si, prin urmare, nu il poate folosi pentru a redirectiona datele care ii trec. Are nevoie de o solutie alternativa. Nu are niciun rost sa trimiteti PA-ului dvs. numele criptat al prietenului dvs.
filme porno cu studente http://m.40daysintheword.com/useraccounts/logout.aspx?returnurl=https://adult69.ro/
filme porno cu mame matre http://tastytrixie.com/cgi-bin/toplist/out.cgi?id=jensex2&url=https://adult69.ro/
filme porno brutal http://cyberdiet.com/__media__/js/netsoltrademark.php?d=adult69.ro/
filme porno frate sora http://cgi.latinol.com/clientes/fppedumedia2/track_clicks.asp?url=https://adult69.ro/filme-porno/amatori
porno elefant http://karate.sportsnavi.net/dojo/rank.cgi?mode=link&id=71&url=https://adult69.ro/filme-porno/anal
japan porno http://www.f1.paddocknews.com/goto.php?goto=https://adult69.ro/filme-porno/asiatice
filme porno cu lesbiene hd http://oldnewton.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/beeg
filme porno xnxx http://2channeler.com/out.cgi?1091=https://adult69.ro/filme-porno/blonde
porno cu mame bune http://www.connectionrealestate.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/brazzers
creampie porno https://giantnoise-dot-yamm-track.appspot.com/Redirect?ukey=1Sjhx0yMES6kGhyzSwbiri5rHbOwB17B8-WSnGn0ahiI-1850131864&key=YAMMID-28758765&link=https://adult69.ro/filme-porno/brunete
rihanna porno http://juniordaviscup.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/chaturbate
porno cu delia matache http://adacourse.org/images/dbtac_redirect.php?pageList2=https://adult69.ro/fiica-primeste-cadou-o-ejaculare-extrema
porno gr http://pipelineradio.com/__media__/js/netsoltrademark.php?d=adult69.ro/cuplul-de-negri-amatori-si-o-trag-in-fata-camerei-web
porno-hub http://www.aerogrow.com/online-catalog-june11/traffic.php?url=https://adult69.ro/doua-tarfe-se-fut-in-acelasi-timp-cu-doi-clienti
laura andresan porno http://www.e-librarian.net/__media__/js/netsoltrademark.php?d=adult69.ro/fiica-cu-tatele-mari-iubeste-pula-tatalui
porno gen http://www.calabasasgatedcommunities.com/__media__/js/netsoltrademark.php?d=adult69.ro/bruneta-fierbinte-inghite-sperma-la-birou
filme porno cu romanii https://www.newhopecelebrates.com/partner/go-magazine/?target=https://adult69.ro/pizda-scolaritei-este-fututa-bine-de-doua-limbi
youtube porno filmek http://home.artpangu.com/link.php?url=https://adult69.ro/tarfa-matura-linge-sperma-si-urina
party porno http://hpa.org.cn/goto.php?url=https://adult69.ro/bruneta-minora-isi-arata-gaura-curului-in-timp-ce-iubitul-filmeaza
porno misionar http://mu2.mahalodrink.biz/__media__/js/netsoltrademark.php?d=adult69.ro/pizda-fina-se-freaca-singura-cand-nu-are-pula
daca nu sunt in stare sa il decriptati.
Protocolul HTTPS rezolva aceasta problema trimitand proxy-urilor o solicitare CONNECT suplimentara specifica proxy-ului. Daca un client stie ca cererile sale HTTPS vor trece printr-un proxy, acesta precede fiecare dintre ele cu o cerere HTTP CONNECT separata. Aceasta solicitare spune in mod explicit proxy-ului, in textul neplacut, numele de gazda catre care ar trebui sa trimita cererea criptata care va urma la scurt timp. Aceasta inseamna ca proxy-ul nu trebuie sa decripteze sarcina utila principala pentru a putea fi orientata corect. Acest lucru este ca si cum ai trimite PA-ului tau un mesaj text preliminar, necriptat, care descrie ce ar trebui sa faca cu prostiile criptate pe care urmeaza sa le trimiti.
Al doilea tip de proxy HTTPS si tipul pe care il construim este „omul in mijloc” (MITM). Dupa cum am discutat deja, un MITM difera de un proxy de redirectionare, deoarece este capabil sa decripteze si sa citeasca datele care ii trec. Aceasta inseamna ca poate citi continutul in text al unei solicitari HTTP, si poate citi, de asemenea, destinatia dorita stocata in antetul gazda HTTP. HTTPS MITM poate trimite solicitarea catre aceasta locatie, exact in acelasi mod in care o face un proxy HTTP.
MITM-urile prefera, de obicei, sa imite proxy-uri de redirectionare si sa utilizeze solicitarile CONNECT, acolo unde este posibil. Singurul moment in care utilizeaza antetul gazdelor este atunci cand un client „non-proxy-constient” nu stie sau nu-i pasa ca sunt conectati la un proxy si nu trimit cereri preliminare CONNECT. In aceasta situatie, antetul gazdelor este un defalcare util.
Stim acum cum sa convingem smartphone-ul dvs. sa isi trimita datele catre proxy-ul nostru si cum sa ne asiguram ca proxy-ul nostru primeste aceste date in siguranta. Nu ne ramane decat sa gestionam criptarea TLS intre smartphone-ul dvs. si proxy-ul nostru.
2.3 Autoritatea de certificare falsa
Speram ca protocolul bazat pe TCP pe care incercati sa il inspectati utilizeaza criptarea TLS. Este anul 2018, internetul este inca un loc foarte periculos si nu exista nicio scuza pentru a nu cripta absolut totul.
TLS (uneori cunoscut sub numele de SSL) este forma de criptare utilizata de HTTPS pentru a va pastra in siguranta detaliile bancare online. Cu toate acestea, TLS poate fi utilizat de orice protocol bazat pe TCP, nu doar de HTTPS. Acest lucru se datoreaza faptului ca TLS nu-i pasa de datele pe care le cripteaza. Poate fi HTTP, FTP, XML sau doar o prostie totala nestructurata. Acest agnosticism inseamna ca proxy-ul nostru TCP poate reutiliza toate aceleasi tehnici TLS in mod obisnuit documentate si utilizate de proxy-urile HTTPS.
Principala problema TLS pe care va trebui sa o rezolvam este convingerea smartphone-ului dvs. sa aiba incredere in proxy-ul nostru. Dupa ce am facut acest lucru, sarcina de a decripta datele trimise de smartphone-ul dvs. va fi simpla, deoarece putem delega bibliotecile cunoscute, bine testate.
2.3.1 Certificate TLS si autoritati de certificare
Smartphone-ul dvs. este suspect si neincredere in lumea exterioara – si pe buna dreptate. Cum este de gand sa stii cui apartine acel server care pretinde sa reprezinte api.targetapp.com? In niciun caz, smartphone-ul dvs. securizeaza si cripteaza cu atentie datele dvs. daca le transmite catre persoana gresita.
Criptarea TLS calmeaza paranoia smartphone-ului dvs. si ne face treaba usor mai dificila in acelasi timp. TLS nu doar cripteaza datele inainte de a le trimite; verifica de asemenea ca trimite aceste date criptate la locul potrivit.
Conexiunile TLS sunt convenite si verificate printr-un proces cunoscut sub numele de strangere de mana TLS . In timpul unei strangeri de mana TLS, clientul si serverul se prezinta reciproc. Clientul verifica identitatea serverului (uneori, de asemenea, viceversa), iar cele doua parti sunt de acord cu cheile de criptare pe care sa le foloseasca pentru a-si asigura traficul. Acestea schimba toate aceste informatii printr-o conexiune TCP.
Smartphone-ul dvs. nu va completa o strangere de mana TLS cu proxy-ul nostru decat daca putem dovedi identitatea proxy-ului nostru prezentandu-l cu un certificat TLS valid . Va trebui sa setam numele comun al acestui certificat TLS (un camp din certificat) la numele de gazda cu care smartphone-ul dvs. crede ca vorbeste. Acest lucru va fi destul de usor. De asemenea, va trebui sa semnam certificatul TLS folosind o autoritate de certificare radacina (CA) in care smartphone-ul dvs. are incredere. Acest lucru va fi destul de dificil.
Un adevarat certificat TLS pentru un nume de gazda precum google.com, semnat de un CA adevarat precum Digicert, ar fi printre cele mai valoroase cateva mii de octeti din istoria lumii, deoarece ar permite unui actor rau sa decripteze tot traficul criptat trimis de oricine pe google.com. Daca detineti un astfel de certificat, nu mai cititi imediat si introduceti pe eBay.
Intrucat nu avem niciun certificat TLS real, semnat CA, vom face propria noastra CA falsa, numita „Autoritatea de certificare de incredere a lui Robert”. Vom genera un certificat de semnare pentru CA-ul nostru si vom instala acest certificat pe smartphone-ul dvs. ca o CA root. Acest lucru va determina smartphone-ul dvs. sa aiba incredere atat in CA, cat si, mai important, in toate celelalte certificate pe care le semneaza CA. Ori de cate ori smartphone-ul dvs. solicita mandatarului nostru sa efectueze o strangere de mana TLS, vom verifica numele de gazda cu care smartphone-ul dvs. crede ca vorbeste. Vom genera rapid un certificat pentru numele de gazda (sa spunem, api.targapp.com), il vom semna cu CA-ul nostru fals si il vom prezenta pe smartphone-ul dvs. Smartphone-ul dvs. va vedea ca acest certificat pentru api.targapp.com este semnat de „Robert’s Trusty Certificate Authority”, va vedea ca aceasta organizatie de renume se afla in lista sa de CA-uri de incredere si completeaza fericit o strangere de mana TLS cu proxy-ul nostru.
Cu o conexiune TLS intre smartphone-ul dvs. si proxy-ul nostru stabilit cu succes, restul sistemului nostru va functiona exact asa cum a fost planificat. Proxy-ul nostru TCP va fi complet.
3. Proiectul
Acest proiect este impartit in 3 sectiuni, fiecare descriind cum sa construim una dintre cele 3 componente ale proxy-ului nostru:
- Un server DNS fals – un server DNS care ruleaza pe laptop si va indeparteaza smartphone-ul pentru a-si trimite traficul TCP pe laptop
- Un server proxy – un server care ruleaza pe laptop si jongleaza traficul intre smartphone si serverul de la distanta
- O autoritate de certificare falsa – un instrument pentru a genera certificate TLS in care smartphone-ul dvs. va avea incredere
Dupa completarea celor 3 sectiuni, veti avea un proxy TCP complet pe care il puteti utiliza pentru a inspecta si analiza orice protocol bazat pe TCP. Am scris cod de exemplu pentru fiecare sectiune folosind Python3. In timp ce acest lucru inseamna ca veti fi cel mai bine sa utilizati si Python3, implementarea proiectului intr-o alta limba este, de asemenea, complet fina si realizabila.
Haideti sa inspectam cateva protocoale TCP.
Cititi mai departe – Partea 2: Server DNS fals
Mai multe despre Cum sa construiti un proxy TCP
- Cum se construieste un proxy TCP nr. 4: Autoritate de certificare falsa
- Cum se construieste un proxy TCP # 3: Server proxy
- Cum se construieste un proxy TCP nr. 2: server DNS fals








