Ce este ICMP?
ICMP (Internet Control Message Protocol) este un protocol pe care dispozitivele de rețea (de exemplu, routere) le utilizează pentru a genera mesaje de eroare atunci când problemele de rețea împiedică pachetele IP să treacă prin.
Protocolul de control al mesajelor de internet este unul dintre sistemele fundamentale care fac ca internetul să funcționeze. Deși este posibil să nu fi auzit de ICMP, probabil că ați auzit despre una dintre caracteristicile sale: Ping. În acest ghid veți afla mai multe despre acest protocol esențial.
Istoria ICMP
ICMP face parte din Stivă de protocol TCP / IP. Acesta este staționat la sediul central Internet Layer și este un standard de mesaje de eroare care acceptă principalul protocol Internet. Definiția originală a ICMP a fost scrisă de Jon Postel, unul dintre fondatorii internetului. Primul standard a fost publicat în aprilie 1981 în RFC 777. Acesta a fost actualizat de mai multe ori. Definiția stabilă a protocolului este conținută în RFC 792, care a fost scris și de Postel și a fost publicat de către Forța de lucru pentru inginerie pe internet în septembrie 1981.
Scopul ICMP
Deși nu se presupune că nivelul inferior al nivelului de internet este asigurat de asigurarea conexiunii, ICMP oferă un pic de feedback asupra comunicațiilor atunci când lucrurile nu merg bine. Deci, chiar dacă utilizați UDP, care are un conexiune model de comunicații, este încă posibil să aflăm de ce a eșuat o transmisie. Toate dispozitivele conectate la rețea pot prelucra mesaje ICMP, astfel încât acestea includ routere, precum și dispozitive finale. ICMP a fost adaptat astfel încât să funcționeze cu IPv6 la fel de amănunțit ca a servit IPv4.
Deoarece acest protocol se află la nivel de internet, mesajele sale sunt purtate de pachete IP și astfel există la un nivel mai înalt decât structurile de operare ale comutatoarelor. Deși ICMP este transportat în pachetul IP, nu există în pachetele care transportă date. Un pachet ICMP este generat doar ca răspuns la un pachet de date primite atunci când transmiterea mesajului de intrare eșuează. Condițiile de eroare care provoacă un pachet ICMP sunt deseori rezultatul datelor conținute în antetul IP al pachetului eșuat.
Structura pachetelor ICMP
Atunci când un router ricoșează înapoi un pachet ICMP pentru a raporta o eroare, acesta recreează toate câmpurile din antetul IP original al pachetului pe care îl raportează. Așadar, un program de colectare a erorilor de pe computerul de trimitere inițial ar putea analiza antetul și să calculeze exact care dintre pachetele IP pe care le-a trimis a eșuat.
După antetul IP, vine antetul ICMP cu trei câmpuri. Acestea conțin un cod care clasifică eroarea, un câmp de sub-cod, care rafinează descrierea codului de eroare și apoi o sumă de control. După câmpul ICMP vin primii opt octeți ai sarcinii utile, care sunt de fapt antetul Transport Layer (TCP sau UDP).
Coduri de mesaje ICMP
Primul câmp de cod din blocul ICMP conține câteva informații foarte utile. Codul este numeric și iată câteva dintre cele mai interesante valori pe care le poate avea câmpul:
0: ecou răspuns – utilizat pentru ping
3: destinația de neatins
4: stingerea sursei – routerul este supraîncărcat
5: redirecționare – utilizați un router diferit
8: solicitare ecou – utilizat pentru ping
9: răspuns la reclama routerului
10: solicitare router
11: timpul depășit – utilizat pentru traceroute
Timpul sa traiesti
Unul dintre câmpurile antetului IP care este cel mai cunoscut pentru provocarea unei erori generatoare de ICMP este Timpul sa traiesti camp (TTL). Acest câmp conține un număr, care se exprimă numărul maxim de routere prin care poate trece pachetul. Acest număr este redus cu unu, de fiecare router care procesează pachetul. Dacă un router primește un pachet cu un TTL de zero, acesta va renunța la acest pachet și trimite un mesaj ICMP înapoi la inițiatorul acelei transmisii eșuate.
În cazul epuizării TTL, motivul pentru care un pachet nu reușește să ajungă la destinație nu are nicio legătură cu problemele cu routerul sau cu datele malformate din antetul pachetului. TTL este o construcție care a fost creată pentru a preveni blocarea pachetelor necinstite pe internet când erorile din tabelul routerului au dus la căi circulare. Cu toate acestea, un produs secundar al acestui câmp este un instrument de administrare a rețelei foarte util: traceroute.
Vezi si: SolarWinds Traceroute Tools Review
Traceroute cu ICMP
Traceroute este un cunoscut instrument de administrare net care arată calea tipică de la computerul de lansare până la o adresă IP de destinație dată. Utilitarul trimite o serie de pachete IP goale. Caracteristica importantă a fiecăreia dintre aceste transmisii este valoarea TTL din antetul IP.
Programul Traceroute începe să trimită un pachet un TTL de 0. Acest lucru va fi eliminat de primul router care îl primește, care este de obicei gateway-ul de rețea. Acest router trimite înapoi un pachet ICMP. Singurele informații pe care Traceroute le dorește de la acest răspuns sunt timpul necesar pentru a reveni și adresa sursă a pachetului. Aceasta îi spune lui Traceroute adresa primului router de pe calea către destinație. Programul trimite apoi un pachet cu un TTL de 1. Aceasta trece prin gateway, care scade TTL cu 1. Routerul care primește pachetul urmează vede că TTL este zero, renunță la pachet și trimite înapoi un pachet ICMP. Astfel, cel de-al doilea router din calea este dezvăluit și Traceroute notează timpul necesar pentru ca acest răspuns să ajungă. Prin creșterea TTL cu 1 cu fiecare transmisie, În cele din urmă, Traceroute creează o hartă a tuturor linkurilor de pe internet la adresa dată.
Probleme de urmărire
Traceroute este un instrument foarte simplu care profită de o funcție administrativă preexistentă și face o utilitate eficientă și informativă in afara. Traceroute există câteva puncte slabe.
Un administrator de rețea va folosi probabil utilitatea pentru a vedea de ce o conexiune recentă a mers atât de prost – fie încet, fie nu a reușit. in orice caz, Traceroute nu vă poate spune ce s-a întâmplat în trecut. Acesta vă poate oferi doar feedback cu privire la evoluția rutei curente.
Fiecare routere ia fiecare decizie asupra căruia dintre vecinii lor oferă cea mai scurtă cale către adresa IP de destinație de pe un pachet. Totuși, această decizie ar putea să nu fie întotdeauna aceeași de fiecare dată. Dacă un router este congestionat sau oprit, routerele vecine află în curând despre problema și ajustați-le tabelele de rutare pentru a rezolva problema. Această informație de rutare modificată este eliminată la toate ruterele de pe internet, dar problema poate fi rezolvată înainte ca toate routerele să afle despre ea. Apoi, traseul reajustat se proliferează în întreaga lume.
O opțiune cu comanda, „-j”Vă permite să specificați adresele routerelor pe care doriți să le urmeze Traceroute ca o cale. Cu toate acestea, pentru a utiliza această facilitate, va trebui să știu deja calea pe care a luat-o o transmisie defectuoasă și puteți obține informațiile respective doar cu o execuție Traceroute exact a aceleiași căi.
Deci, dacă aveți o conexiune lentă, comanda Traceroute emisă ulterior s-ar putea să nu dezvăluie ce s-a întâmplat pentru că până atunci. Problema care a cauzat întârzierea ar fi putut fi remediată și calea dvs. Traceroute poate să nu fie aceeași cale pe care a folosit-o conexiunea lentă.
O altă problemă cu Traceroute este că oferă un afișaj interesant pe calea pe care transmisia dvs. o va duce probabil la o anumită destinație. in orice caz, nu vă oferă instrumente pentru a face nimic cu informațiile pe care le primiți. Nu este posibil să specificați o cale, și, dacă vedeți că unul dintre routerele de pe internet oferă un timp de răspuns lent, tot ce puteți face cu asta este să știți care routerul vă încetinește conexiunile. Deoarece routerul nu aparține companiei dvs. și nu îl puteți accelera, ați dobândit cunoștințe prin Traceroute, dar nu puteți acționa în acest sens.
Vezi si: Cele mai bune instrumente pentru Traceroute
Ping ICMP
Ping folosește două coduri ICMP: 8 (solicitare ecou) și 0 (raspuns ecou). Când emiteți comanda Ping la prompt, programul Ping trimite un pachet ICMP care conține codul 8 din Tip camp. Răspunsul va avea un Tip de 0. Programul are decalajul dintre trimiterea pachetului de solicitare ecou și sosirea răspunsului. Deci, puteți obține „timpul călătoriei dus-întors”A unui pachet până la destinația dată și înapoi.
Pachetul de solicitare ecou este neobișnuit, deoarece este singurul pachet ICMP care este trimis fără a fi provocat de o eroare. Deci, Ping nu trebuie să imite o condiție de eroare pentru a recupera un mesaj ICMP. Ping are două opțiuni care vă permit să specificați o listă de adrese pentru calea pe care trebuie să o ia transmisia. Acestea sunt “-j„, Ceea ce sugerează un traseu și„-k„, Care dictează traseul.
Portul ICP Ping
Poate vă întrebați ce port utilizează Ping. Raspunsul este: nici unul. Dacă un utilitar vă permite „ping” un port, nu este literalmente comanda Ping. În schimb, utilitatea respectivă folosește un pachet TCP sau UDP pentru a testa un port. Într-adevăr, acest tip de funcții este denumit „scaner port” sau „verificator port.“
Ping-ul nu poate utiliza porturi, deoarece este un protocol care există la un nivel mai mic decât cel Strat de transport, unde porturile sunt o caracteristică majoră.
Cea mai apropiată metodă la un raport port ICMP Ping disponibil este: trimiteți un pachet UDP către un anumit port. Dacă acel port nu este activ, transmisia va provoca un mesaj ICMP de la gazda de tipul 3 (destinația de neatins) subtipul 3 (portul de destinație de neatins). Deci, deși este posibil să provoace un mesaj ICMP despre un port, nu este posibil să utilizați mecanismul Ping pentru a trimite un pachet ICMP în acel port în primul rând ca o solicitare ecou. Dacă atașați un număr de port la adresa IP dintr-o comandă Ping (adică ping :), comanda nu se va lansa, dar va returna o eroare de sintaxă.
PathPing
Calificarea este o utilitate care este încorporat în sistemul de operare Windows și este disponibil în toate versiunile de la Windows NT. Acest program este o combinație de Ping și traceroute, deci exploatează trei tipuri de mesaje ICMP. Acestea sunt tipul de mesaj de solicitare ecou și răspuns de ecou (8 și 0) și timpul depășit tipul de mesaj (11).
Ca și în cazul lui Traceroute și Ping, este posibil să se dea o listă de adrese pentru o cale sugerată ca parametru pentru comandă iar utilitarul va încerca să trimită un pachet la destinație prin intermediul adreselor respective.
Căutarea produce un raport format format care arată traseul și orele de întoarcere la fiecare router. Acesta va trimite cereri de ping repetate fiecărui router din traseu, mai degrabă decât să contacteze în mod repetat destinația. Asta face Ping sau doar înregistrarea fiecărui router pe calea o dată, ceea ce face Traceroute.
Călătoria nu este la fel de rezistentă ca Ping sau Traceroute. Deși fiecare dispozitiv de pe internet este capabil să trimită mesaje ICMP, nu fiecare dispozitiv are funcțiile ICMP activate. Unii proprietari de routere și servere dezactivează în mod intenționat funcțiile ICMP ca protecție împotriva atacului hackerilor.
Dacă un router intermediar nu va utiliza ICMP, Ping trece în continuare prin acel router pentru a testa destinația. Dacă Traceroute întâlnește un router care nu va trimite pachete ICMP, pur și simplu trece la următorul router, prezentând o linie de asteriscuri pentru routerul necomunicativ. În aceeași situație, Căutarea își încheie întrebările la routerul care are ICMP dezactivat.
Atac de fumură
Motivul principal pentru care unii proprietari de echipamente dezactivează capabilitățile ICMP ale dispozitivelor lor este că sistemul poate fi folosit de hackeri ca o conductă pentru atacuri. Atacul Smurf este un astfel de caz.
Atacul Smurf folosește o strategie reflector. Nu atacă direct ținta, dar invocă alte computere și routere pentru a trimite mesaje victimei. Atacatorul elaborează adresa de difuzare folosită în rețeaua victimei și apoi trimite o solicitare de ecou ICMP (Ping). Fiecare dispozitiv din rețea va trimite o răspuns ecou înapoi la routerul care găzduiește care transmite adresa IP.
Acest atac funcționează doar pe rețele mari. Provocă efectiv un atac de refuz de distribuire (DDoS) distribuit din interiorul rețelei, în timp ce majoritatea atacurilor sunt lansate prin computere la distanță pe internet. Tipul de atac poate fi prevenit prin dezactivarea capabilităților ICMP de pe routerul gateway sau filtrând acceptarea cererilor care transportă adresa IP difuzată a rețelei pe pachetele care vin în rețea dintr-o locație îndepărtată.
Ping inundatie
O inundație Ping este o strategie DDoS cu care supraviețuiește un computer țintă Solicitări ecografice ICMP. Unele implementări ale Ping funcționează mai bine decât altele. De exemplu, atacul este mai eficient dacă comanda Ping este lansată cu „potop” opțiune. Cu toate acestea, această opțiune nu este disponibilă cu toate versiunile Ping – nu este o opțiune validă pentru versiunea încorporată în Windows, de exemplu. Faptul că opțiunea de inundație nu este universală prezintă probleme pentru hackerii care doresc să direcționeze computerele la distanță infectate cu un botnet program de control pentru a trimite solicitările Ping. Întrucât opțiunea de inundație este rară, este probabil că majoritatea dispozitivelor din botnet nu vor putea lansa atacul.
Această strategie de atac ar avea mai mult succes dacă hackerul s-ar asigura că toate computerele infectate au folosit o încercare de a lansa atacul, dacă opțiunea de inundație este disponibilă în implementările lor Ping. O modalitate de a ne asigura că ar fi să testăm calculatoarele înainte de orice atac și să categorizăm un grup care are forma potrivită de Ping, sau pentru a instala un Ping activat de inundații pe toate calculatoarele infectate de virusul botnet.
Cea mai simplă apărare împotriva unei inundații Ping este opriți capacitățile ICMP pe router. Dacă executați un server web, atunci un firewall de aplicație web ar trebui să vă protejeze împotriva inundațiilor Ping.
Ping-ul morții
Ping of Death implică trimiterea de pachete de solicitare ping de lungă durată. Cererea va avea o cantitate mare de umplere la sfârșitul acesteia în sarcina utilă. Întrucât datagrama este prea lungă pentru a fi transmisă, procesorul de protocol Internet va împărți șirul în bucăți care au dimensiunea unității de transmisie maximă a expeditorului (MTU). Receptorul va observa că acesta este un pachet suplimentar, lung, care a fost întrerupt și încercați pentru a reasambla pachetul original, lung înainte de a o trimite la cererea de destinație. Dacă lungimea pachetului este mai mare de bytes decât dimensiunea memoriei disponibile în computerul care primește, încercarea de a reasambla pachetul va bloca computerul.
Ping of Death este acum un tip de atac binecunoscut astfel încât firewall-urile și sistemele de detectare a intruziunilor să poată detecta și să-l blocheze. Ca în cazul oricărui truc de hacker care devine cunoscut, eficiența acestuia nu mai este amenințătoare. Deci, hackerii au renunțat în mare parte la strategia Ping of Death în favoarea Ping inundatie.
Tunelul ICMP
Routerele se uită doar la antetele unui pachet ICMP, inclusiv antetul TCP / UDP care ar putea fi în spatele datelor ICMP. Asa de un pachet normal cu o mulțime de date în el ar fi trecut doar atât timp cât avea o secțiune ICMP în el. Acest lucru este potențial o spate din spate pentru vizitatori să se apropie de procedurile de autentificare și de încărcare a rețelelor publice. Aceasta se numește tunel ICMP sau tunel Ping.
Nu este posibil să treceți prin gateway-uri și firewall-uri doar cu utilitatea Ping de rețea standard pe care majoritatea oamenilor o au pe computere. Ar trebui să fie programat un tunel ICMP. Aceasta este, de asemenea, o posibilă rută într-o rețea pentru un hacker. Din păcate, pentru administratorii rețelei, există o serie de pachete gratuite de tunel ICMP disponibile pentru descărcare de pe internet.
Ca și în cazul celor două tipuri anterioare de atacuri ICMP, Tunelurile Ping pot fi blocate de firewall-uri pentru aplicații web, sisteme de detectare a intruziunilor sau pur și simplu blocând toată activitatea ICMP la poarta de rețea.
Atac de twinge
Twinge este un program de atac al hackerilor. Se lansează o inundație ICMP pentru a copleși un computer țintă. Deși toate cererile Ping pe care ținta le primește par să provină din mai multe surse diferite, toate sunt de fapt din aceeași sursă, fiecare cu o adresă IP sursă falsă în antet. Twinge este probabil doar un utilitar Ping redenumit cu opțiunea „inundație” implementată. Ar face un instrument foarte util pentru botnet proprietarii să se încarce pe computerele lor zombie pentru a se lansa Ping atacuri de inundații.
In esenta, o inundație Twinge este aceeași cu o inundație Ping iar soluțiile pentru a proteja o rețea de la ea sunt aceleași ca pentru categoria principală de atac DDoS prin ICMP: opriți ICMP, instalați un firewall de aplicație web sau un firewall de stat sau instalați un sistem de detectare a intruziunilor.
Descoperire MTU de cale
Unitatea de transmisie maximă (MTU) este o setare pe dispozitive care respectă rețeaua care dictează cea mai lungă lungime de pachete IP pe care dispozitivul ar trebui să le proceseze. Se exprimă în octeții, care este un octet de opt biți. Recomandarea inițială MTU pentru Protocolul Internet a fost de 576 de octeți. Cu toate acestea, standardul Ethernet recomandă 1.500 de octeti iar acest lucru a devenit standard pentru toate dispozitivele de rețea și internet.
Este posibil să reglați setările MTU pe orice router. Asa de, dacă pachetele dvs. trec printr-un router cu un MTU mai mic, fiecare va fi împărțit în două pachete IP. Acest lucru încetinește livrarea transferurilor dvs. deoarece pachetul original trebuie reasamblat de către receptor înainte de a putea progresa la prelucrarea stratului de transport apoi treceți la aplicația de destinație.
De asemenea, este posibil să specificați în antetul IP acea divizare, care se numește „fragmentare”Nu trebuie să fie efectuat pe pachet. În acest caz, un router cu un MTU mai mic decât lungimea pachetului va renunța la pachet și va raporta înapoi cu o notificare de eroare ICMP. Acest mesaj de eroare ar fi de tipul ICMP 3 (destinația de neatins) subtipul 4 (fragmentarea necesară, dar steagul „nu fragmentează” este setat).
O tentativă de descoperire a PUT MTU se confruntă cu problema pachetelor fragmentate sau abandonate. Dacă puteți afla cel mai mic MTU pe calea pe care o va urma transmisia dvs., trebuie doar să setați propriul MTU la acea dimensiune.
Mecanismul de descoperire este implementat prin procedurile de eșec prezentate mai sus. Un pachet IP merge la o destinație cu sarcina utilă căptușită pentru a atinge dimensiunea MTU a expeditorului și „nu fragmentați”Set de steaguri. Dacă acest lucru se întâmplă, nu ar trebui să aveți probleme cu conexiunile dvs. la destinația la care ați trimis pachetul de testare. Dacă transmisia provoacă o eroare ICMP, atunci încercați testul în mod repetat, reducerea lungimii pachetului de fiecare dată. Cu aceasta, în cele din urmă, veți trimite un pachet care trece și lungimea acestui pachet vă va spune cel mai mic MTU pe calea către destinația dvs..
Ping are o opțiune pentru a seta „nu fragmentați” steag. Cu toate acestea, acest lucru va fi eficient numai dacă pachetul Ping este mai lung decât MTU-urile routerelor din calea sa. Ping-ul nu este compatibil cu dimensiunea MTU, așa că este îndoielnic că un pachet Ping scurt ar fi scăpat vreodată.
Bazat pe Linux Pachetul IPutils conține tracepat, care va efectua descoperirea MTU a căii pentru dvs. Pe ferestre calculatoare, puteți consulta utilitatea gratuită mturoute.
Lumea ICMP
Sistemul ICMP este un mecanism foarte simplu de raportare a defecțiunilor de transmisie. Totuși, este și el unul dintre cele mai puternice set de instrumente disponibile administratorilor de rețea. Vestea bună este că ICMP este gratuit și disponibil automat pe orice dispozitiv conectat la rețea. Vestea proastă este că ICMP poate fi folosit de hackeri pentru a forma atacuri sau chiar a lega conexiunile prin firewall-uri.
Faptul că ICMP poate fi folosit în mod rău încurajează o mulțime de administratori de rețea avers pentru risc să oprească sistemul de mesagerie. Este păcat, deoarece dezactivează o mulțime de utilități foarte utile care sunt descrise în acest ghid.
Dacă rulați o rețea și mai ales dacă dețineți un router care trece trafic pe internet, ia în considerare utilizarea firewall-urilor și a sistemelor de detectare a intruziunilor, pentru a bloca utilizarea abuzivă a ICMP în loc să oprească complet protocolul de mesagerie. Investigați setările și caracteristicile de firmware ale routerului dvs. pentru a vedea dacă acesta are proceduri de rezolvare a abuzului ICMP care vă vor permite să continuați să operați ICMP pe dispozitiv.
Utilizați metode ICMP pentru a verifica conexiunile dvs.? Aveți un utilitar GUI bazat pe ICMP pe care îl utilizați în mod regulat și pe care îl puteți recomanda altora? Ați oprit ICMP de pe routerul dvs. pentru a vă proteja rețeaua? Lasă un mesaj în Comentarii secțiunea de mai jos și împărtășește-ți experiențele.