Rețeaua de protocol stivă și TCP hacking

Rețeaua de protocol stiva de formare înlănțuire și date între gazde, dezvoltat pentru cea mai bună interacțiune între diferitele straturi de rețea. În acest articol, vom încerca să descrie mișcarea datelor prin stivă aranjate în niveluri și să încerce să pună în aplicare un modul kernel Linux, care ne ajută pentru a capta și afișa datele care curg prin stratul TCP. Mai jos este un program care arată cum se instalează un nou element în sistemul de fișiere proc. Și cel mai important, acest program rupe protocolul TCP ține evidența tuturor datelor care trec prin nivelul TCP, și le afișează în / proc / TCPdata.

Rețeaua de protocol stiva de formare înlănțuire și date între gazde, dezvoltat pentru cea mai bună interacțiune între diferitele straturi de rețea. În acest articol, vom încerca să descrie mișcarea datelor prin stivă aranjate în niveluri și să încerce să pună în aplicare un modul kernel Linux, care ne ajută pentru a capta și afișa datele care curg prin stratul TCP. Având în vedere că discuția de toate tipurile de conexiuni de rețea este dincolo de domeniul de aplicare al acestui articol, ne vom concentra pe conexiunile TCP / IP.

Rețeaua de protocol stivă

Trecând la stratul de transport, putem găsi stratul INET, formând un strat intermediar între stratul de transport și priza de aplicare. Cu ajutorul prize INET care aparțin aplicațiilor de nivel sprijinit. La acest nivel, am efectuat toate operatiile specifice de prize.

BSD - structură abstractă de date ce cuprinde soclu INET. Cerere de aplicații pentru a conecta, citi sau scrie priza este transformată în funcțiune cu ajutorul BSD INET.

Structura generală de pachete. Acestea sunt într-o structură comună de date numită sk_buff. Toate nivelurile folosi această structură de date. Imediat după copierea datelor din spațiul utilizator kernel spațiu, acestea sunt plasate în sk_buff și pentru a trece la niveluri diferite. La rândul său, se adaugă nivelul structurii pozițiilor sale. Sk_buff conține link-uri la toate informațiile cu privire la pachetul, dispozitivul său de soclu, date traseu locație etc.

Funcții de rețea Linux

Pentru interfață normală programator de rețea de servicii de rețea disponibile prin următoarele rutine de bibliotecă S.

socket (), bind (), ascultă (), conectați (), accepta (), trimite (), sendto (), recv (), recvfrom (), getsockopt (), și setsockopt ().

Funcția socket () este folosită pentru a crea un nou socket. Toate operațiunile au loc cu protocoale diferite, folosind prize. Deoarece funcția socket () returnează descriptorul, atunci acesta poate avea acces la funcționarea normală a acestui tip de citire fișier (), scrie ().

Funcția asculta () este utilizat pentru software-ul de server. După crearea unui soclu și conectarea acestuia la funcția de port asculta () stabilește o priză în starea de ascultare. Acest lucru înseamnă că o priză așteaptă o conexiune de la alte gazde.

Funcția Când apelați pe serverul acceptă () este o priză de anchetă continuă până când apare o solicitare de conectare de la o altă gazdă. Odată ce procesul de trezire program server de conectare și oferă posibilitatea de a procesa o solicitare de la o serie de alte persoane. Pe partea de client folosind funcția de conectare (), care arată serverul pe care clientul dorește să deschidă o conexiune pe un soclu și trimite o cerere.

Structura datelor necesare

Aceasta structura este baza pentru punerea în aplicare a interfeței socket BSD. Setarea și Inițializarea acestei structuri are loc prin intermediul socket () apel de sistem.

Această structură controlează compușii individuali pachetele recepționate și trimise de la gazdă. În acest caz, un tampon de intrare-ieșire.

Această structură controlează diferite părți ale prizelor, în funcție de rețea particulară. Este necesar pentru prize TCP, UDP si RAW.

Această structură cuprinde o serie de operații identice pentru toate protocoalele.

module de nucleul Linux

Miezuri constau din module de kernel Linux. Unele părți ale miezului de memorie sunt în mod constant (de tip Scheduler), iar unele sunt descărcate după cum este necesar. De exemplu, sistemul de fișiere VFAT pentru a citi discuri, încărcate numai atunci când este necesar. Această caracteristică permite kernel spațiul kernel-ul Linux pentru a ocupa puțin spațiu.

Astfel, este esențial pentru a proiecta protocolul, drivere, precum și orice fel de software ca modulele de kernel de bază și introduceți-le în kernel-ul din spațiul utilizator. După inserare, modulul devine imobilă, până când iese din spațiul de bază. Singurul lucru pe care trebuie să fie un utilizator privilegiat pentru a introduce sau scoate module. Acesta este un modul kernel de intrare format comun.

proiect modul hacker pentru protocolul TCP.

Modulul nostru nucleu este foarte simplu, este practic poziționat între operațiile de interfață soclu pentru transmiterea de pachete TCP și nivelul TCP. Acum, toate pachetele de date care trec printr-o priză, înregistrată cu protocolul TCP va fi interceptate modulul de kernel. Aceste date vor fi transferate în / proc / TCPdata.

Structura de date utile

tcp_prot -> conține indicii pentru toate operațiunile efectuate de TCP

Struct msg_iov -> este în msghdr, acesta conține indicii la date

Înainte de a începe de codificare, trebuie să înțelegem valoarea sistemului de fișiere / proc. Sistemul de fișiere proc se numește atât datorită faptului că este localizat în directorul / proc pe majoritatea mașinilor Linux. Sistemul este un instrument puternic, aplicațiile utilizate în mod frecvent. Acesta face parte din mecanismul prin care miezul este asociat cu spațiul utilizator și vice-versa. Deși este conceput ca un sistem de fișiere cu structura de directoare a inodes și, în același timp, este de fapt o componentă a funcțiilor înregistrate, furnizarea de informații variabile importante.

Atunci când creați un fișier în / proc, se înregistrează imediat cu un set de funcții care spune kernel-ul ce să facă atunci când deschideți fișierul sau să-l scrie. Cele mai multe dintre fișierele de suport read-only, și doar câteva pot scrie.

Acum vom începe de codificare

Acest program a fost testat pe kernel 2.4, astfel încât să puteți compila folosind:

Acum, pentru a înțelege codul, voi da o explicație. Întregul program - este doar un mod viclean pentru utilizarea pointeri la funcții. Dar trebuie să fii atent când utilizați propriile stivuitoare, deoarece amplasarea necorespunzătoare a unui indice funcțional poate face ca sistemul să stea. După cum sa menționat, acest lucru este minimul de hacking-ul TCP. Puteți crea un nou strat pe partea de sus a nivelului TCP ca aceasta, care va interveni în toate tipurile de locuri de muncă care au făcut TCP. Același lucru se poate face cu UDP.

concluzie

Cea mai importantă concluzie derivată programul lor descris mai sus este că nu este întotdeauna necesar să se modifice codul sursă al kernel-ului, atunci când ne Efectuăm orice modificare de protocol aferente. Este o implementare orientată spre obiect al kernel-ului Linux, care ne permite să manipuleze obiecte de date in interiorul nucleului.

  • Rețeaua de protocol stivă și TCP hacking
  • Rețeaua de protocol stivă și TCP hacking
  • Rețeaua de protocol stivă și TCP hacking
  • Rețeaua de protocol stivă și TCP hacking