Vrei sa faci ca si cum un calculator s-a conectat la un anumit site si nu stii cum?

Vrei sa faci ca si cum un calculator s-a conectat la un anumit site/server TCP?

Raspunsul la intrebare este insusi acest post, dar o sa mai explic si alte mici parti ale conexiunilor TCP (adica folosind protocolul TCP), adica majoritatea conexiunilor.
Acest post explica baza unei conexiuni (desi multi fac programe prin care un client se conecteaza la server fara sa stie de fapt ce se intampla).

Nu este mare lucru, dar ideea de baza de aici poate fi folosita pentru a face atacuri complexe si efective.

In mod normal pentru ca sa faci o conexiune TCP/IP trebuie sa trimiti un pachet SYN, sa primesti unul SYN+ACK si sa o inchizi cu ACK.

Noi nu avem cum sa primim SYN+ACK ca sa "inchidem" conexiunea.

Poate va intrebati "Ce este asa de important in acel pachet?"
Raspunsul este acknowledgment number (care este important doar daca primim ACK), un numar pe care trebuie sa il trimitem inapoi ca sa aratam ca noi suntem cu adevarat calculatorul care a trimis cererea de conexiune.

Dar, folosind wireshark oricine poate observa ca acel numar este aproape intotdeauna 1.

Asa ca putem face acest lucru usor.

1. Folosind ip-ul victimei si portul X tu trimiti un pachet cu care arati ca vrei sa faci o conexiune noua (SYN).
2. Trimitem pachetul cu SYN+ACK aproape imediat (nu vrem sa ajunga primul, pentru ca desi rar, se mai intampla).
3. Dupa aceea putem trimite de exemplu cererea unei pagini cu un pachet simplu si date: "GET /index.html HTTP/1.1" .

Dupa aceste 3 pachete TCP/IP victima o sa primeasca pe portul X un pachet SYN+ACK (cel pe care noi l-am ghicit) si continutul paginii index.html de pe serverul pe care am deschis noi conexiunea si poate si alte pachete ca RST (in cazul in care serverul vrea sa reseteze conexiunea) sau FIN+ACK in cazul in care vrea sa o inchida (asta se intampla la serverele web, serverul vrand sa inchida conexiunea imediat dupa ce a trimis continutul paginii).

Ca sa nu las oarecum neterminat (pentru ca orice conexiune se si inchide) o sa incerc sa explic si cum se inchide o conexiune.

Acest lucru este un pic mai complicat (si nu o sa poti ghici asa de usor acknowledgement number).
Notam calculatorul care vrea sa inchida conexiunea cu A si pe celalalt cu B.
A ii trimite lui B FIN+ACK;
B ii trimite lui A ACK;
B ii trimite lui A FIN+ACK;
A ii trimite lui B ACK.

Dar dupa ce te-ai conectat nu mai poti ghici acknowlidgement number ca sa inchizi conexiunea. (cel putin eu nu am reusit)

Este facut de mine de la 0 din ceea ce am citit pe wikipedia, dar am mai folosit si wireshark ca sa observ reteaua, netul sau simple programe ale mele.

Astept pareri.

Niciun comentariu: