Vraag Monitoring van HTTP-verkeer met tcpdump


Om HTTP-verkeer tussen een server en een webserver te bewaken, gebruik ik momenteel tcpdump. Dit werkt prima, maar ik wil graag af van een aantal overbodige gegevens in de uitvoer (ik weet het tcpflow en wireshark, maar ze zijn niet direct beschikbaar in mijn omgeving).

Van de tcpdump man pagina:

Voor het afdrukken van alle IPv4-HTTP-pakketten van en naar poort 80, d.w.z. alleen pakketten afdrukken die gegevens bevatten, niet bijvoorbeeld SYN- en FIN-pakketten en alleen pakketten met ACK.

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

Dit commando

sudo tcpdump -A 'src example.com en tcp-poort 80 en (((ip [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '

levert de volgende uitvoer:

19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Vlaggen [P.], volg 918827135: 918827862, ack 351213824, win 4316, opties [nop, nop, TS val 4093273405 ecr 869959372], lengte 727

E ..... @ ....... .... P..6.0 ......... D ......   __ .. e = 3 ...__ HTTP / 1.1 200 OK   Server: Apache / 2.2.3 (Red Hat)   Inhoudstype: tekst / html; charset = UTF-8   Datum: za, 14 nov 2009 18:35:22 GMT   Leeftijd: 7149
  Inhoud-lengte: 438

<HTML>   <Head>     <TITLE> Voorbeeldwebpagina </ TITLE>   </ HEAD>   <Body>
  <p> U hebt deze webpagina bereikt ... </ p>   </ BODY>   </ HTML>

Dit is bijna perfect, behalve het gemarkeerde gedeelte. Wat is dit, einde - wat nog belangrijker is - hoe kom ik er vanaf? Misschien is het een beetje tweak aan de uitdrukking aan het einde van het commando?


41
2017-11-14 18:58


oorsprong




antwoorden:


tcpdump drukt complete pakketten af. "Garbage", ziet u, zijn eigenlijk TCP-pakketheaders.

je kunt de output zeker masseren met d.w.z. een perl-script, maar waarom dan niet tshark, de tekstversie van wireshark gebruiken?

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

het heeft dezelfde argumenten nodig als tcpdump (dezelfde bibliotheek) maar omdat het een analyzer is, kan het diepe pakketinspectie uitvoeren, zodat je je filters nog meer kunt verfijnen, d.w.z.

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R'http.request.method == "GET" || http.request.method == "HEAD"'


38
2017-11-14 21:29



Bedankt - na het uitproberen van alle suggesties lijkt tshark de beste tool voor de klus. Ik gebruik momenteel "tshark -d tcp.port == 8070, http -R 'http.request of http.response'". Nu, als ik maar de kans zou krijgen "de tcp-stream te volgen", net als wireshark kan (dit wordt veel gevraagd, maar ik heb het antwoord nog steeds niet gevonden). "-V" geeft informatie over de TCP- en IP-pakketten enzovoort, waar ik niet in geïnteresseerd ben. Maar ik denk dat ik dat met behulp van een script kan verwijderen. - otto.poellath
U kunt ook zoeken naar "GET" in een capture-filter door de ASCII-waarden voor elk teken te vergelijken: tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420. Ik heb een tijdje geleden een pagina toegevoegd aan de Wireshark-website die u helpt bij het maken van tekenfilters voor het matchen van tekenreeksen: wireshark.org/tools/string-cf.html - Gerald Combs


kijk eens naar ngrep - Het is misschien iets voor jou.

als referentie voor anderen httpry [server lijkt nu te zijn, maar ik hoop dat het tijdelijk is] en tshark zijn ook handig voor passieve protocolanalyse - eerst voor http, second - voor veel meer.


18
2017-11-14 21:56



+1 voor ngrep. Zeer nuttig hulpmiddel. - tylerl
ngrep en httpry zien er zeker goed uit, maar ngrep is niet op de hoogte van HTTP en AFAIK, httpry werkt alleen met HTTP-headers en kan de payload-gegevens niet weergeven. - otto.poellath
@sapporo - sure - ngrep is protocol agnostisch, maar u kunt pcap filter "poort 80" toevoegen en krijgt .. in [de meeste gevallen] http-verkeer alleen. - pQd
Imo, ngrep is 100000x beter dan tcpdump - DanFromGermany


Proberen httpry of justniffer

Justniffer werkt goed op tcp-pakketten en herordent opnames en ip-fragmentatie


5
2017-09-13 18:22



Bedankt! justniffer is waar ik naar op zoek was (volgens mij is het de enige genoemde tool die heel eenvoudig is en duur van het verzoek om maatregelen). - gkop


Ik zou willen voorstellen een gedumpte tcpdump-opdrachtregel te gebruiken die alles in een pcap-bestand opslaat voor postprocessing. Afhankelijk van wat u precies aan het kijken bent, werkt tcpflow uitstekend om communicatie op een coherente manier weer samen te brengen voor analyse.

Een andere goede informatie, inclusief enkele gebruiken voor httpry, is te vinden op: http://taosecurity.blogspot.com/2008/06/logging-web-traffic-with-httpry.html


1
2017-11-15 03:24





Maakt de webserver die je gebruikt geen logs aan? Dat zou toch een veel betere manier zijn om HTTP-verkeer te monitoren, er is een overvloed aan hulpmiddelen om de gegevens te analyseren en elke competente webserver moet betrouwbare logs produceren.


0
2017-11-14 21:31



Duidelijk. Ik kan me voorstellen dat hij daar al aan heeft gedacht. Soms is het handig om de feitelijke gegevens te controleren die worden verzonden tussen punt A en punt B. - tylerl


Er zijn verschillende tools beschikbaar op de markt die speciaal zijn ontworpen voor het bewaken van het HTTP-verkeer. Fiddler2 (http://www.fiddler2.org) en HTTP-foutopsporing Pro zijn voorbeelden van dergelijke tools.


0
2017-07-03 07:46



Bedankt voor uw suggesties. Helaas lijken beide hulpmiddelen alleen op Windows te werken. Ik had het niet genoemd, maar ik ben op zoek naar iets dat op Linux werkt. - otto.poellath