Bazele rețelei pentru hackeri, TCP/IP: Partea a II-a

0

Bine ați revenit, dragii mei hackeri etici!

În prima parte a acestei serii, v-am prezentat elementele de bază ale rețelei, inclusiv adrese IP, porturi, NAT și DHCP. În această lecție, vreau să vă prezint elementele de bază ale TCP/IP, adică Protocolul de control al transmisiei (TCP) și Protocolul Internet (IP). Acestea sunt cele mai frecvente protocoale folosite pe internet pentru comunicare.

Pentru a deveni un hacker competent, un investigator criminalist sau pur și simplu să fii un bun inginer de rețea, ar trebui să înțelegi structura și anatomia acestor protocoale. Din păcate, mulți profesioniști din aceste domenii nu înțeleg elementele de bază ale TCP/IP, ceea ce înseamnă că veți avea cu siguranță un avantaj față de ei, dacă le înțelegeți.

Când încercați să creați un nou instrument de hacking sau să investigați un atac de rețea, înțelegerea acestor protocoale și a domeniilor lor este esențială. În caz contrar, pur și simplu o să vă pierdeți timpul.



Ce sunt protocoalele?

Protocoalele sunt pur și simplu o modalitate convenită de a comunica. De exemplu, pe BlackWeb.ro, am convenit asupra limbii române cu toate regulile și gramatica ei ca modalitate de a comunica cu voi, cititorii. Acesta este protocolul meu. Dacă nu am avea o modalitate de a comunica de comun acord, oamenii ar folosi multe limbi, gramatici și reguli, și niciunul dintre noi nu s-ar înțelege.

Protocoalele sunt similare. Un protocol definește pur și simplu o modalitate de comunicare cu toate regulile sale. Aceste reguli sunt de obicei definite de un RFC (Request for Comments).

Există multe protocoale utilizate pe internet. Acestea includ TCP, IP, UDP, FTP, HTTP, SMTP etc., iar fiecare are propriul set de reguli care trebuie respectate pentru a comunica eficient (similar cu regulile pe care le folosim în comunicarea prin limbaje scrise). Probabil că cele mai importante două protocoale pentru utilizare pe internet sunt IP și TCP, așa că haideți să aruncăm o privire la fiecare dintre acestea.

 

IP (Internet Protocol)

IP, sau Internet Protocol, este protocolul care este utilizat pentru a defini sursa și destinația unui pachet, pe măsură ce traversează internetul. Este adesea folosit împreună cu alte protocoale, cum ar fi TCP, de aici și conjuncția des folosită, TCP/IP.

Să aruncăm o privire la antetul unui pachet IP și să vedem ce informații conține, care pot fi utile hackerului aspirant și/sau investigatorului criminalist.



Rândul 1

  • Version: Aceasta definește versiunea de IP, fie v4, fie v6.

  • IHL: Definește lungimea antetului.

  • Type of Service (TOS): Acesta definește tipul de serviciu al acestui pachet. Acestea includ minimizarea întârzierilor, maximizarea debitului, maximizarea fiabilității și minimizarea costurilor monetare.

  • Total Length: Aceasta definește lungimea totală a datagramei IP (inclusiv datele) sau a fragmentului. Valoarea sa maximă este 65.535.

Rândul 2

  • Identification: Acest câmp identifică în mod unic fiecare pachet. Poate fi critic în reasamblarea pachetelor fragmentate.

  • IP Flags: Acest câmp definește dacă pachetul este fragmentat (M) sau nu (D). Manipularea câmpului poate fi folosită pentru a evita IDS și firewall-uri. Consultați tutorialele mele despre nmap și hping3 despre cum putem manipula pachetele pentru a evita sistemele de detectare a intruziunilor și alte dispozitive de securitate. Poate fi folosit și împreună cu câmpul Window pentru a identifica sistemul de operare al expeditorului.

  • Fragment Offset: Acest câmp este utilizat când pachetele sunt fragmentate. Acesta definește unde ar trebui să fie reasamblate pachetele de la începutul antetului IP.

Rândul 3

  • TTL: Reprezintă „durata de viață”. Aceasta definește câte salturi vor fi pe internet înainte ca pachetul să expire. Acesta variază în funcție de sistemul de operare, ceea ce face utilă identificarea sistemului de operare al expeditorului.

  • Protocol: Acest câmp definește ce protocol este utilizat cu IP. Cel mai adesea, va fi 6 sau TCP, 1 pentru ICMP, 17 pentru UDP, printre altele.

  • Header Checksum: Acesta este un câmp de verificare a erorilor. Acesta calculează suma de control (un algoritm simplu) pentru a determina integritatea datelor din antet.

Rândurile 4 & 5



  • Source / Destination: Aceste rânduri ale antetului IP reprezintă probabil cea mai importantă parte a antetului, deoarece conține sursa și destinația adresei IP.

Rândul 6

  • Options: Acest câmp este de lungime variabilă și utilizarea sa este opțională (cum v-ați putea aștepta).

  • Padding:Acest câmp este folosit pentru a completa, dacă este necesar, biții și octeții rămași ai antetului.

TCP (Transmission Control Protocol)

În antetul TCP, există numeroase domenii critice pe care hackerul aspirant și/sau investigatorul criminalist ar trebui să le înțeleagă.

Rândul 1

  • Source Port / Destination Port: Probabil cel mai important, acestea reprezintă portul sursă și portul destinație. Aceste câmpuri determină din ce port a venit comunicarea (sursă) și unde se îndreaptă (destinația).

Rândul 2



  • Sequence Number: Numărul de secvență este generat de stiva TCP a mașinii sursă și este utilizat pentru a se asigura că pachetele sunt aranjate în secvența corectă atunci când ajung. De asemenea, este important în înfrângerea atacurilor MitM.

Rândul 3

  • Acknowledgement Number: Acesta este un ecou al Numărului de secvență trimis înapoi de sistemul receptor. Practic spune: „Am primit pachetul cu Secvența #”. În acest fel, expeditorul știe că pachetul a sosit. Dacă expeditorul nu primește un număr de confirmare înapoi într-un interval de timp fix, va retrimite pachetul pentru a se asigura că destinatarul primește pachetul. În acest fel, TCP este de încredere (dimpotrivă, UDP nu face acest lucru și, prin urmare, nu este de încredere).

Rândul 4

Al patrulea rând conține câteva informații critice. Să trecem peste câmpurile Data Offset și Reserved. Asta ne duce la 8 biți aproape de mijlocul rândului 4. Acestea sunt steagurile infame ale scanărilor three-way handshake și nmap.

Primii doi biți, CWR și ECE, depășesc scopul acestei lecții. Următorii șase biți sunt steagurile URG, ACK, PSH, RST, SYN și FIN. Aceste steaguri sunt folosite de TCP pentru a comunica;



  • SYN: Deschiderea unei noi conexiuni.

  • FIN: Închiderea normală a unei conexiuni.

  • ACK: Confirmarea unui pachet. Toate pachetele după three-way handshake ar trebui să aibă acest bit setat.

  • RST: Închiderea unei conexiuni și de obicei folosită pentru a comunica că pachetul a ajuns la portul sau la IP-ul greșit.

  • URG: Acest indicator indică faptul că următoarele date sunt urgente.

  • PSH: Împinge datele dincolo de buffer către aplicație.

Dacă sunteți familiarizat cu Nmap sau Hping3 ca instrumente de recunoaștere, ați folosit scanări utilizând toate aceste steaguri. Prin crearea de pachete cu combinații de steag care nu ar trebui să fie văzute în “sălbăticie”, este posibil să putem obține un răspuns dintr-un sistem foarte sigur sau chiar să evităm detectarea.



  • Window Size: În unele diagrame, acesta este pur și simplu descris ca câmpul fereastră. Rolul său este de a comunica dimensiunea ferestrei pe care o are stiva TCP pentru a stoca pachetele. Acesta este modul în care TCP gestionează controlul fluxului. Dintr-o perspectivă de recunoaștere sau criminalistică, acest câmp singur poate fi suficient pentru a identifica sistemul de operare care a trimis pachetul. Acest câmp variază de la OS la OS și chiar de la SP la SP. Având în vedere această informație, se poate prezice cu aproximativ 80% acuratețe sistemul de operare care a trimis pachetul. De fapt, acest câmp și alte câteva (DF și TTL în antetul IP) astfel de amprente ale sistemului de operare, cum ar fi p0f, îl folosesc pentru a identifica sistemul de operare.

Rândul 5

  • Checksum: Acest câmp folosește un algoritm simplu pentru a verifica erorile. În esență, este un verificator de integritate.

  • URG Pointer: Acest câmp indică ultimul octet al numărului de secvență de date urgente. Indicatorul URG trebuie setat pentru a activa acest câmp.

Rândul 6

  • Options:La fel ca antetul IP, antetul TCP are un câmp de opțiuni care poate fi utilizat dacă este necesar și are lungime diferită.

  • Padding: Este necesar pentru a aduce antetul TCP la un multiplu de 32 de biți.

Nu uitați, dacă emisiunile de la radio vi se par prea plictisitoare, în timp ce conduceți spre muncă, abonați-vă la podcastul BlackWeb. Până data viitoare, să ne citim/auzim cu bine.



Choose your Reaction!
Leave a Comment

Your email address will not be published.

Opțiunea copy-paste a fost dezactivată pentru acest site.