Cos'è Ngrep e come usarlo?

Cos'è Ngrep e come usarlo?
Anche se Tshark e TCPDump sono gli strumenti più popolari che annusano gli strumenti che scavano al livello di bit e byte del traffico. NGREP è un'altra utilità Nix di comando che analizza i pacchetti di rete e li cerca su un determinato modello di regex.

L'utilità utilizza la libreria PCAP e GNU per eseguire ricerche String Regex. NGREP sta per la rete Grep che è simile alla normale utilità GREP. L'unica differenza è che il testo NGREP analizza i pacchetti di rete utilizzando espressioni regolari o esadecimali.

In questo articolo, apprendiamo un'utilità di comando e ricca di funzionalità nota come NGREP che è utile per l'analisi rapida PCAP e il dumping dei pacchetti.

introduzione

NGREP fornisce funzionalità simili a GREP per il terzo strato del modello OSI, ovvero lo strumento funziona con IPv4/6, TCP, UDP, ICMPV4/6, IGMP Protocolli. Quindi, l'utilità riconosce vari protocolli, cattura il traffico in tempo reale ed esamina i file PCAP acquisiti. Il miglior vantaggio dell'utilità NGREP è che un utente Grep regolare può usare la sua conoscenza di analisi del testo in NGREP.

Iniziare

Aggiorna il repository di Ubuntu e installa l'utilità NGREP tramite strumento di gestione dei pacchetti APT-get:

ubuntu@ubuntu: ~ $ sudo apt-get update
ubuntu@ubuntu: ~ $ sudo apt-get install ngrep

Lo strumento richiede che sudo-privileghi eseguisca comandi di ispezione dei pacchetti profondi. Mentre la sintassi dello strumento generale è la seguente:

ubuntu@ubuntu: ~ $ ngrep pattern/espressione

IL modelli sono l'espressione regolare che gli utenti cercano in un pacchetto di rete. IL filtro L'opzione indica Berkeley Packet Filter (BPF) che include una serie di parole chiave per specificare le regole di selezione dei pacchetti. Le parole chiave includono protocollo, origine o host di destinazione e porte, ecc.

Pacchetti di acquisizione

Nessuna opzione filtro cattura tutti i pacchetti dall'interfaccia predefinita, ad esempio, il comando seguente acquisirà tutti i pacchetti di rete da tutte le interfacce.

ubuntu@ubuntu: ~ $ sudo ngrep

Per elencare tutte le interfacce disponibili, utilizzare il comando seguente e premere la scheda più volte per superare tutte le interfacce:

ubuntu@ubuntu: ~ $ sudo ngrep -d [tab] [tab]
enp0s3 lo

Uso di base

L'output al comando sopra mostra carichi di dettagli del pacchetto sul terminale. NGREP offre un'opzione "-Q" tranquilla che interroga tutte le interfacce e i protocolli per una corrispondenza di stringa specifica, si calma l'output e stampa solo i dettagli dell'intestazione dei pacchetti del payload pertinente.

ubuntu@ubuntu: ~ $ sudo ngrep -q
[sudo] password per ubuntu:
Interfaccia: ENP0S3 (10.0.2.0/255.255.255.0)
filtro: ((ip || ip6) || (VLAN && (ip || ip6)))
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] #1
... "7c.X] e.Nu… m.'.U ... e ... u.%z ..
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] #2
… H… '.@AQ?UN.'K…
T 142.250.180.46: 443 -> 10.0.2.15: 35524 [a] #4
..

Il comando sopra con la stringa "http" visualizza/cattura i pacchetti con la stringa cercata.

ubuntu@ubuntu: ~ $ sudo ngrep -q 'http'

Aggiungi il flag t nel comando sopra per stampare un timestamp con le informazioni di corrispondenza in YYYY/MM/DD HH: MM: SS.Uuuuuu formato. Allo stesso modo, usando il T La bandiera stamperà tempo trascorso tra partite immediate e timestamp in +s.Formato uuuuuuu.

ubuntu@ubuntu: ~ $ sudo ngrep -qt 'http'
ubuntu@ubuntu: ~ $ sudo ngrep -qt 'http'
Interfaccia: ENP0S3 (10.0.2.0/255.255.255.0)
filtro: ((ip || ip6) || (VLAN && (ip || ip6)))
Match: http
T +24.714768 10.0.2.15: 48096 -> 142.250.185.35:80 [AP] #1453
Post /gts1o1core http /1.1 ... host: OCSP.pki.Goog ... Agent utente: Mozilla/5.0

Usa il -W opzione con a byline Flag per stampare l'output in un formato facile da capire e leggibile.

ubuntu@ubuntu: ~ $ sudo ngrep -q -wbyline 'http'
T 10.0.2.15: 48570 -> 142.250.185.35:80 [AP] #589
Post /gts1o1core http /1.1.
Ospite: OCSP.pki.Goog.
Utente-agente: Mozilla/5.0 (X11; Ubuntu; Linux X86_64; RV: 79.0) Gecko/20100101 Firefox/79.0.
Accetta: */ *.
Accettazione: en-us, en; q = 0.5.
Accettazione: gzip, deflate.
Content-Type: Application/OCSP-Request.
Lunghezza del contenuto: 83.
Connessione: Keep-Alive.

NGREP salva il traffico di rete catturato in un formato PCAP che può essere caricato su Wireshark per un'analisi dei pacchetti più profondi. Utilizzare l'opzione -o per scrivere l'output ricercato su un file PCAP:

ubuntu@ubuntu: ~ $ ngrep -o http_capture.PCAP -QT 'HTTP'

Proprio come qualsiasi altro strumento di sniffing di rete, NGREP consente di leggere il traffico di rete salvato in modo tale che l'opzione -QT aiuti a filtrare il traffico acquisito anziché un'interfaccia.

ubuntu@ubuntu: ~ $ ngrep -i http_capture.PCAP -QT 'HTTP'

Filtri BPF

BPF include una ricca sintassi per filtrare i pacchetti in base all'indirizzo IP, alle porte e ai protocolli. I seguenti comandi cercano al traffico per i pacchetti TCP e UDP:

ubuntu@ubuntu: ~ $ ngrep -w byline 'http' 'tcp'
ubuntu@ubuntu: ~ $ ngrep -w byline 'http' 'udp'

Per filtrare tutti i pacchetti sull'interfaccia ENP0S3 per la porta 80, eseguire il comando seguente:

ubuntu@ubuntu: ~ $ ngrep -d enp0s3 -w byline porta 80

Allo stesso modo, utilizzare i comandi indicati di seguito per abbinare le intestazioni contenenti la stringa HTTP da destinazione e host di origine:

ubuntu@ubuntu: ~ $ ngrep -q 'http' 'dst host 172.217 '
ubuntu@ubuntu: ~ $ ngrep -q 'http' host src '10.0 '

Infine, il seguente comando con un filtro host corrisponde a tutte le intestazioni dal "10.0.Indirizzo IP da 2 ".

ubuntu@ubuntu: ~ $ ngrep -q 'http' 'host 10.0.2 '

Ricerca dei pacchetti di rete basati su stringa

L'utilità NGREP può combinare i comandi sopra per cercare i pacchetti TCP sulla porta 80 per una stringa specifica di "agente utente".

ubuntu@ubuntu: ~ $ sudo ngrep -d enp0s3 -w byline -i "agente utente:" TCP e porta 80

Dove -io l'opzione ignora il caso per l'espressione di regex.

Allo stesso modo, il comando seguente visualizza tutti i pacchetti sulla porta 80 con la stringa get o pubblica.

ubuntu@ubuntu: ~ sudo ngrep -d enp0s3 -i "^get |^post" tcp e porta 80
Interfaccia: ENP0S3 (10.0.2.0/255.255.255.0)
Filtro: (TCP e porta 80) e ((IP || ip6) || (VLAN && (IP || ip6)))
Match: ^get | ^post
#######
T 10.0.2.15: 59876 -> 34.122.121.32:80 [AP] #7
Get / http / 1.1 ... host: controllo della connettività.Ubuntu.com ... accetta:
###########
T 10.0.2.15: 48634 -> 34.107.221.82:80 [AP] #18
Ottieni /successo.txt http/1.1 ... host: rilevante.Firefox.com ... agente utente: Mozilla/5.0
#######

Conclusione

L'articolo introduce NGREP, uno strumento di sniffing del pacchetto che analizza il traffico utilizzando espressioni regolari. Discutiamo e copriamo tutte le basi per far avanzare i comandi e le opzioni NGREP che facilitano gli amministratori di rete nelle loro attività quotidiane.