Full Packet Friday: ngrep

för dagens inlägg ska jag ta en kort titt på det snygga kommandoradsverktyget ngrep. Detta är ett mycket användbart verktyg som jag alltid har till hands för en riktigt snabb PCAP-analys. Det är faktiskt ganska funktionsrik, och möjliggör paketdumpning också. Låt oss ta en titt på några funktioner:

enkelt uttryckt är ngrep ett verktyg som ger grep funktioner i nätverkslagret. ngrep kan användas för att undersöka paket fånga (“PCAP”) filer, samt fånga levande trafik på ett lokalt gränssnitt. Analytiker kan mata in antingen vanliga eller hex-uttryck som ska matchas mot paket, Berkeley Packet Filter (“BPF”) syntax när du sniffar, och verktyget känner igen en myriad av trafiktyper. Inte illa för ett litet kommandoradsverktyg!

här är ett exempel på övervakning av lokal trafik:

ngrep eth0

skärmdump av utdata från kommandot ngrep eth0

efter att ha kört kommandot berättar verktyget att det övervakar det angivna gränssnittet. Varje ” # ” som spelas in är ett mottaget paket. Utan någon form av filtrerings-eller Utmatningsalternativ bekräftar vi i huvudsak bara paket som kommer över ett gränssnitt. Låt oss lägga till några fler alternativ:

ngrep -d eth0 port 80

skärmdump av utdata från kommandot ngrep-d eth0 port 80

i exemplet ovan angav vi trafik på port 80, uppenbarligen letar efter HTTP-trafik. Jag gick sedan och öppnade http://www.firefox.com, vilket vi tydligt kan se från några av de första paketen. Nu ser det lite mer bekant ut!

meddelande Vi har de förväntade fälten från denna typ av trafik, inklusive användaragent, HTTP-metod, src/dst IP-adresser, etc. Det är dock fortfarande lite invecklat. Vi har inte gjort någon form av matchning. Låt oss använda kraften i en regex för att faktiskt ge oss data som vi kan vara särskilt intresserade av:

ngrep -d eth0 '^GET' port 80

i kommandot ovan fortsatte jag att ange eth0 – gränssnittet och övervakningsporten 80, men den här gången har jag angett en regex av ^GET, och frågade verktyget att bara ge mig rader där GET är de tre första tecknen — i huvudsak fokuserar endast på HTTP GET-förfrågningar. Här är vår produktion:

skärmdump av utdata från kommandot ngrep – d eth0 ‘^GET ‘ port 80

mycket renare! Jag gjorde en begäran till yahoo.com, vilket innebar massor av andra paket, men bara en får begäran matchad. Notera även de andra ” # ” tecken runt trafiken. Dessa är ytterligare paket som observerades men ignorerades eftersom de inte matchade det angivna mönstret. Vi kan faktiskt ta bort dem med en -q flagga.

ngrep utdata kan också sparas i en lokal PCAP-fil med -O – omkopplaren. Detta kanske inte är den mest funktionsrika paket fånga verktyg, men det är verkligen ett snabbt och enkelt sätt att snabbt ta trafik!

ngrep med PCAPs

nu när vi har gått igenom några korta och söta alternativ vid övervakning av levande trafik kan vi också tillämpa samma logik på historiska PCAP-filer. Här är ett exempel:

ngrep -I http.cap '^GET' port 80

jag drog ner provfilen http.cap från Wiresharks SampleCaptures-sida för detta test. Här är vår produktion:

skärmdump av utdata från kommandot ngrep-i http.cap ‘^GET ‘ port 80

Lägg märke till att verktyget fortfarande visar omgivande paket, men vi får bara detaljer som matchar vår regex. Vi kan också titta på att använda ett enkelt textfilter för att hitta paket nyttolastdata som matchar ett intressant ord. Jag ska söka på samma http.cap letar efter ordet Linux:

#> ngrep -I http.cap 'Linux' port 80 -q | wc -l
99

genom att använda-q-utgången ignorerar vi paket som inte matchar. Jag piped till wc -l för att räkna hur många paket som har Linux i dem. Låt oss titta på de första raderna:

ngrep -I http.cap 'Linux' port 80 -q | head

skärmdump av utdata från kommandot ngrep-i http.cap ‘Linux’ port 80-q / head

Lägg märke till att våra hashmärken är borta, och vi har en enda radmatchning. Detta exakta syfte är vad jag ofta använder ngrep för; snabbt bestämma om innehåll Jag är intresserad av är inom PCAP jag har. Det kan dock också finnas nedgångar. Tänk på följande kommando:

ngrep -I dhcp.pcap

skärmdump av produktionen från ngrep-i dhcp.pcap

Lägg märke till att i det här fallet, där vi inte nödvändigtvis har ASCII-text, får vi det som ser ut som rådata. Det är här särskilt protokollintrospektion, som vad som erbjuds av Wireshark, blir extremt användbart. Vi kan dock kasta ngrep A-x-flaggan för att få den råa hex-utgången:

ngrep -I dhcp.pcap -x

skärmdump av produktionen från ngrep-i dhcp.pcap-x

här är Wireshark för jämförelse:

skärmdump av ett DHCP-Förfrågningspaket i Wireshark

uppenbarligen är det inte så rent, men det kan inte vara den bästa användningen för ngrep. Men åtminstone är det ett kraftfullt verktyg för att inspektera både historisk och levande trafik och tillhandahålla filter för att zooma in på bara det som är viktigt. Eftersom det är script-able, kan vi också Pipa ngrep utgång till en myriad av andra verktyg, inklusive potentiellt grep själv! ngrep kan också användas för att söka igenom en lista över IOC, vilket kan hitta snabba vinster.

Lämna ett svar

Din e-postadress kommer inte publiceras.