tags: wireshark Filtri_Wireshark Wireshark_Filtri
Mettere apposto l’orario dei pacchetti
CTRL + ALT + 1Filtrare per Protocollo
Per utilizzare questo filtro è sufficiente mettere il nome del protocollo della barra dei filtri:
Esempio:
http
dns
ssl
arp
Metodi del protocollo
http.request.method == "POST"
http.request.method == "GET"
Filtrare per Porta (TCP e UDP)
Per utilizzare questo filtro possiamo utilizzare la seguente sintassi:
tcp.port == [numero_porta] #Mostra i pacchetti TCP con porta sorgente **o** destinazione uguale a `[numero_porta]`
tcp.srcport == [numero_porta] #Mostra i pacchetti TCP con porta sorgente uguale a `[numero_porta]`
tcp.dstport == [numero_porta] #Mostra i pacchetti TCP con porta destinazione uguale a `[numero_porta]`
Questo torna utile quando non è presente un filtro per un protocollo perchè possiamo vedere quale porta utilizza e filtrare su quella porta.
Per le porte udp la sintassi è la stessa basta sostituire tcp. con udp.
Operatori di Confronto:
** Puoi usare diversi operatori di confronto:
==(uguale a)!=(diverso da)>(maggiore di)<(minore di)>=(maggiore o uguale a)<=(minore o uguale a)
Esempi
tcp.port == 80 #Mostra tutti i pacchetti TCP che usano la porta 80 (HTTP).
udp.srcport == 53 #Mostra tutti i pacchetti TCP diretti alla porta 443 (HTTPS - porta destinazione tipica del server web).
tcp.port >= 1024 #Mostra tutti i pacchetti TCP che usano porte con numero maggiore o uguale a 1024 (porte "alte", spesso usate per connessioni client).
tcp.port != 22 #Mostra tutti i pacchetti TCP che _non_ usano la porta 22 (SSH).
Combinare Filtri con Operatori Logici
Puoi combinare più filtri usando operatori logici per creare filtri più complessi e specifici.
- Operatori Logici:
ando&&: “E” logico. Entrambi i filtri devono essere veri per mostrare il pacchetto.oro||: “O” logico. Almeno uno dei filtri deve essere vero per mostrare il pacchetto.noto!: “NON” logico. Nega il filtro successivo.
Esempi
#Mostra i pacchetti che sono _sia_ HTTP _che_ DNS
http and dns oppure http && dns
#Mostra i pacchetti TCP che usano la porta 80 _o_ la porta 443 (traffico web HTTP e HTTPS).
tcp.port == 80 or tcp.port == 443 oppure tcp.port == 80 || tcp.port == 443
#Mostra i pacchetti provenienti dall'indirizzo IP 192.168.1.100 e diretti alla porta TCP 80 (richieste HTTP da una specifica macchina)
ip.src == 192.168.1.100 and tcp.dstport == 80 oppure ip.src == 192.168.1.100 && tcp.dstport == 80
#Questo mostra le connessioni tcp delle porte 80, 443 e 8080.
tcp.port in {80 443 8080}
Filtrare per Stringhe (Contenuto Testuale nei Pacchetti)
Wireshark ti permette di cercare stringhe di testo all’interno del contenuto dei pacchetti e filtrare i pacchetti che contengono quelle stringhe.
Sintassi (Filtri di Stringa):
Tutti seguenti filtri vanno eseguiti dopo aver inserito la parte dove vogliamo cercare quella parola come per esempio `http.host contains “moviescope”
string contains "[stringa_da_cercare]" #Cerca la `[stringa_da_cercare]` in _qualsiasi parte_ del pacchetto (header, payload, dati).
frame contains "[stringa_da_cercare]" #Simile a `string contains`, cerca in tutto il frame.
tcp contains "[stringa_da_cercare]" #Cerca la `[stringa_da_cercare]` solo nel payload TCP.
http.request.uri contains "[stringa_da_cercare]" #Cerca la `[stringa_da_cercare]` specificamente nell'URI della richiesta HTTP (utile per cercare parametri GET in URL non criptate).
http.request.body contains "[stringa_da_cercare]" #Cerca la `[stringa_da_cercare]` nel corpo (body) della richiesta HTTP (utile per cercare dati POST in richieste non criptate).
http.response.body contains "[stringa_da_cercare]" #Cerca la `[stringa_da_cercare]` nel corpo (body) della risposta HTTP.
string matches "[stringa_da_cercare]" #Ricerca case-sensitive.
http.host matches "\.(php|html)"
#Puoi anche filtrare per numeri pari o dispari un determinato valore:
string(ip.ttl) matches "[02468]$" #Pari
string(ip.ttl) matches "[13579]$" #Dispari
Esempi
http.host contains "moviescope" #Mostra tutto il traffico con il sito moviescope
http.request.uri contains "password" #Mostra le richieste HTTP la cui URI (parte dell'URL dopo il nome del dominio) contiene la stringa "password" (potrebbe indicare invio di password in chiaro in GET request - _molto insicuro!_).
http.request.body contains "username" #Mostra le richieste HTTP il cui body contiene la stringa "username" (potrebbe indicare invio di username in chiaro in POST request - _insicuro_).
tcp contains "FLAG" #Mostra i pacchetti TCP che contengono la stringa "FLAG" (spesso usato in CTF per cercare la "bandiera" nascosta nel traffico).
frame contains "error" #Mostra i pacchetti che contengono la stringa "error" in qualsiasi parte del frame.Filtri per Campo
[nome_campo] == [valore] #Filtra per pacchetti dove il campo [nome_campo] è uguale a [valore].
[nome_campo] != [valore] #Diverso da.
[nome_campo] > [valore], < [valore], >= [valore], <= [valore] #Per campi numerici, puoi usare operatori di confronto numerico.
[nome_campo] contains "[stringa_da_cercare]" #Cerca una stringa dentro un valore di campo testuale.
[nome_campo] matches "[espressione_regolare]" #Usa espressioni regolari per pattern matching più avanzato nei valori dei campi testuali.
exists [nome_campo] #Verifica se un campo esiste nel protocollo (utile per protocolli opzionali o campi condizionali).
Esempi
http.request.method == "POST" && http.host contains "moviescope"
ip.addr == 192.168.1.100 #Mostra i pacchetti con indirizzo IP sorgente o destinazione uguale a 192.168.1.100 (traffico verso o da una specifica macchina).
ip.src == 192.168.1.100 #Mostra i pacchetti con indirizzo IP sorgente 192.168.1.100.
ip.dst == 10.0.0.5 #Mostra i pacchetti con indirizzo IP destinazione 10.0.0.5.
tcp.flags.syn == 1 #Mostra i pacchetti TCP con il flag SYN impostato a 1 (pacchetti di SYN, inizio di una connessione TCP). Utile per vedere tentativi di connessione.
tcp.flags.ack == 1 #Mostra i pacchetti TCP con il flag ACK impostato a 1 (acknowledgement, conferma di ricezione dati).
http.request.method == "GET" #Mostra le richieste HTTP con metodo GET.
http.response.code == 404 #Mostra le risposte HTTP con codice di stato 404 (Not Found). Utile per cercare pagine non trovate.
dns.qry.name contains "example.com" #Mostra le query DNS che contengono "example.com" nel nome del dominio interrogato.
arp.opcode == 1 #Mostra le richieste ARP (opcode 1 per "request").