Wireshark – Cheatsheet (CTF & Forensics)
Komplexný referenčný list pre prácu s Wiresharkom pri CTF, forenznej analýze sietí a penetračnom testovaní.
Obsah
- Základy rozhrania
- Spustenie & Zachytávanie
- Capture Filtre (BPF syntax)
- Display Filtre
- Užitočné kombinované filtre pre CTF & Forensiku
- Sledovanie Streamov
- Exportovanie dát
- Dekryptovanie
- Štatistiky & Analýza
- Colorizing Rules
- tshark – príkazový riadok
- CTF – Typické scenáre
- Forenzná analýza – Postup
- Klávesové skratky
- Dôležité polia pre filtrovanie
- Referencia – DNS typy záznamov
- Referencia – TCP flagy
- Nástroje dopĺňajúce Wireshark
Základy rozhrania
Hlavné panely:
Packet List – zoznam zachytených paketov
Packet Details – stromový rozklad hlavičiek (kliknuteľné)
Packet Bytes – surové bajty (hex + ASCII)
Stavový riadok:
Zobrazuje počet paketov: celkovo / zobrazených / označených
Spustenie & Zachytávanie
wireshark # GUI
wireshark -i eth0 # zachytávať na konkrétnom rozhraní
wireshark -r file.pcap # otvoriť súbor
wireshark -k -i eth0 # okamžite začať zachytávať
# CLI alternatíva (headless)
tshark -i eth0 # zachytávať v termináli
tshark -r file.pcap # čítať pcap
tshark -r file.pcap -Y "http" # s display filtrom
tshark -i eth0 -w out.pcap # zachytávať a uložiť
tshark -r file.pcap -T fields \
-e ip.src -e ip.dst -e tcp.port # exportovať konkrétne polia
Capture Filtre (BPF syntax)
Aplikujú sa pred zachytávaním – ovplyvňujú čo sa uloží.
Iná syntax ako display filtre!
# Protokoly
tcp
udp
icmp
arp
dns
http
# Porty
port 80
port 443
port 22
not port 53
portrange 1-1024
# IP adresy
host 192.168.1.1
src host 10.0.0.1
dst host 10.0.0.1
net 192.168.1.0/24
src net 10.0.0.0/8
# Kombinácie
tcp and port 80
host 192.168.1.1 and not port 22
src host 10.0.0.1 and dst port 443
tcp or udp
not arp and not icmp
# Veľkosť paketu
less 128
greater 512
len == 0
# Flagy
tcp[13] & 0x02 != 0 # SYN pakety
tcp[13] & 0x01 != 0 # FIN pakety
tcp[13] & 0x04 != 0 # RST pakety
tcp[13] == 0x18 # PSH+ACK
Display Filtre
Aplikujú sa po zachytávaní – iba filtrujú zobrazenie.
Základná syntax
# Operátory
== eq rovná sa
!= ne nerovná sa
> gt väčší ako
< lt menší ako
>= ge väčší alebo rovný
<= le menší alebo rovný
&& and logické AND
|| or logické OR
! not negácia
~ matches regex (PCRE)
contains obsahuje reťazec
IP & Sieť
ip.addr == 192.168.1.1 # zdroj ALEBO cieľ
ip.src == 192.168.1.1 # iba zdroj
ip.dst == 192.168.1.1 # iba cieľ
ip.addr == 192.168.1.0/24 # celá sieť
ip.ttl < 10 # nízke TTL
ip.ttl == 64
ip.proto == 6 # TCP (6=TCP, 17=UDP, 1=ICMP)
!ip.addr == 192.168.1.1 # vylúčiť IP
ip.flags.mf == 1 # fragmentované pakety
TCP
tcp.port == 80
tcp.srcport == 443
tcp.dstport == 22
tcp.flags.syn == 1 # SYN
tcp.flags.fin == 1 # FIN
tcp.flags.rst == 1 # RST
tcp.flags.ack == 1 # ACK
tcp.flags.push == 1 # PSH
tcp.flags == 0x002 # iba SYN (bez ACK)
tcp.flags == 0x012 # SYN+ACK
tcp.analysis.retransmission # retransmisie
tcp.analysis.duplicate_ack # duplicate ACK
tcp.analysis.zero_window # zero window
tcp.len > 0 # pakety s dátami (nie iba ACK)
tcp.stream == 0 # sledovať konkrétny stream
UDP
udp.port == 53
udp.srcport == 4444
udp.length > 100
HTTP
http # všetka HTTP prevádzka
http.request # iba requesty
http.response # iba odpovede
http.request.method == "GET"
http.request.method == "POST"
http.request.uri contains "login"
http.request.uri matches "\.php$"
http.response.code == 200
http.response.code == 404
http.response.code >= 400 # chybové odpovede
http.host == "example.com"
http.host contains "google"
http.user_agent contains "Mozilla"
http.cookie contains "session"
http.content_type contains "json"
http.authorization # pakety s autorizáciou
HTTPS / TLS
tls # všetka TLS prevádzka
tls.handshake # TLS handshake pakety
tls.handshake.type == 1 # Client Hello
tls.handshake.type == 2 # Server Hello
tls.record.version == 0x0303 # TLS 1.2
ssl.handshake.extensions_server_name contains "example.com" # SNI
DNS
dns # všetka DNS prevádzka
dns.qry.name == "example.com"
dns.qry.name contains "evil"
dns.qry.type == 1 # A záznam
dns.qry.type == 28 # AAAA záznam
dns.qry.type == 15 # MX záznam
dns.qry.type == 16 # TXT záznam
dns.flags.response == 0 # iba DNS requesty
dns.flags.response == 1 # iba DNS odpovede
dns.resp.len > 512 # veľké odpovede (DNS amplification)
dns.count.answers > 10 # podozrivo veľa odpovedí
ICMP
icmp # všetko ICMP
icmp.type == 8 # Echo Request (ping)
icmp.type == 0 # Echo Reply
icmp.type == 3 # Destination Unreachable
icmp.type == 11 # Time Exceeded (traceroute)
icmp.data_len > 100 # veľké ICMP (možný tunel/exfil)
ARP
arp # všetok ARP
arp.opcode == 1 # ARP Request
arp.opcode == 2 # ARP Reply
arp.src.hw_mac == aa:bb:cc:dd:ee:ff
arp.duplicate-address-detected # ARP spoofing detekcia
DHCP / BOOTP
dhcp # DHCP prevádzka
bootp.option.dhcp == 1 # DHCP Discover
bootp.option.dhcp == 2 # DHCP Offer
bootp.option.dhcp == 3 # DHCP Request
bootp.option.dhcp == 5 # DHCP ACK
bootp.hw.mac_addr == aa:bb:cc:dd:ee:ff
FTP
ftp # FTP príkazy
ftp.request.command == "USER"
ftp.request.command == "PASS"
ftp.request.command == "RETR" # stiahnutie súboru
ftp.request.command == "STOR" # nahratie súboru
ftp-data # FTP dátový prenos
ftp.response.code == 230 # úspešné prihlásenie
SMB
smb # SMB v1
smb2 # SMB v2/3
smb.cmd == 0x72 # Negotiate Protocol
smb2.cmd == 1 # Session Setup
smb2.filename contains "password"
smb2.tree contains "C$" # admin share
SMTP / E-mail
smtp # SMTP
smtp.req.command == "AUTH"
smtp.req.command == "MAIL"
smtp.req.command == "RCPT"
smtp.req.command == "DATA"
imap # IMAP
pop # POP3
Užitočné kombinované filtre pre CTF & Forensiku
# Prihlásenia cez HTTP (POST na login stranky)
http.request.method == "POST" and http.request.uri contains "login"
# Exfiltrácia cez DNS (dlhé subdomény)
dns and dns.qry.name matches "[a-f0-9]{20,}"
# Exfiltrácia cez ICMP (veľké pakety)
icmp.type == 8 and data.len > 100
# Nmap SYN scan
tcp.flags == 0x002 and not tcp.flags.ack == 1
# Port scan (veľa RST)
tcp.flags.rst == 1
# Reverse shell / netcat
tcp.dstport == 4444 or tcp.srcport == 4444
# Podozrivé User-Agenty
http.user_agent contains "curl"
http.user_agent contains "python"
http.user_agent contains "sqlmap"
http.user_agent contains "nmap"
# SQL injection pokusy
http.request.uri contains "UNION"
http.request.uri contains "SELECT"
http.request.uri contains "--"
http.request.uri contains "1=1"
# Credentials v čistom texte (HTTP Basic Auth)
http.authorization contains "Basic"
# Cleartext FTP heslá
ftp.request.command == "PASS"
# Telnet (cleartext session)
telnet
# Cleartext SMTP autentifikácia
smtp.req.command == "AUTH"
# Skenovanie (veľa SYN na rôzne porty)
tcp.flags.syn == 1 and tcp.flags.ack == 0
# ARP spoofing
arp.opcode == 2 and arp.duplicate-address-detected
# DNS tunneling (podozrivo veľa DNS)
dns and frame.len > 200
# Podozrivé destinácie (mimo bežných portov)
tcp and not (tcp.port == 80 or tcp.port == 443 or tcp.port == 22 or tcp.port == 53)
# Hľadanie flagov v tele HTTP odpovede (CTF)
http.response and frame contains "flag{"
http.response and frame contains "CTF{"
Sledovanie Streamov
# GUI:
Pravý klik na paket → Follow → TCP Stream
Pravý klik na paket → Follow → UDP Stream
Pravý klik na paket → Follow → HTTP Stream
Pravý klik na paket → Follow → TLS Stream
# Filter pre konkrétny stream (číslo z Follow dialógu):
tcp.stream == 0
tcp.stream == 5
udp.stream == 2
# Zobrazenie: Show data as → ASCII / HEX / Raw
Exportovanie dát
Exportovanie súborov z prevádzky
# GUI: File → Export Objects
HTTP – extrahuje súbory prenesené cez HTTP (obrázky, exe, html...)
SMB – súbory z SMB prenosu
DICOM – medicínske súbory
IMF – e-mailové správy
TFTP – TFTP prenosy
# tshark – export HTTP objektov
tshark -r file.pcap --export-objects http,./output_dir/
tshark -r file.pcap --export-objects smb,./output_dir/
Exportovanie paketov
# GUI: File → Export Specified Packets
# Uložiť len zobrazené (filtrované) pakety
# CLI
tshark -r input.pcap -Y "http" -w filtered.pcap # filtrovať + uložiť
tshark -r file.pcap -Y "tcp.stream == 3" -w stream3.pcap
editcap -r file.pcap out.pcap 1-100 # pakety 1 až 100
mergecap -w merged.pcap file1.pcap file2.pcap # spojiť pcap súbory
Exportovanie polí (CSV / JSON)
# Základný export polí do CSV
tshark -r file.pcap -T fields \
-e frame.number \
-e frame.time \
-e ip.src \
-e ip.dst \
-e tcp.srcport \
-e tcp.dstport \
-e frame.len \
-E header=y -E separator=, > output.csv
# JSON export
tshark -r file.pcap -T json > output.json
# PDML (XML)
tshark -r file.pcap -T pdml > output.xml
Dekryptovanie
HTTPS / TLS s SSL key logom
# 1. Nastaviť premennú prostredia pred spustením prehliadača:
export SSLKEYLOGFILE=~/ssl_keys.log
google-chrome &
# 2. V Wireshark:
# Edit → Preferences → Protocols → TLS
# → (Pre-)Master-Secret log filename: ~/ssl_keys.log
# CLI:
tshark -r file.pcap -o "tls.keylog_file:ssl_keys.log"
WPA/WPA2 WiFi
# GUI: Edit → Preferences → Protocols → IEEE 802.11
# → Decryption keys → Add
# Typ: wpa-pwd
# Kľúč: heslo:SSID
# Formáty kľúčov:
wpa-pwd password:NetworkName
wpa-psk a1b2c3d4... (64 hex znakov – PSK)
# Podmienka: pcap musí obsahovať 4-way handshake!
# Filter pre handshake:
eapol
RSA privátny kľúč (starší TLS bez PFS)
# Edit → Preferences → Protocols → TLS → RSA keys list → Add
# IP: server IP
# Port: 443
# Protocol: http
# Key file: server.key
# Funguje IBA ak session nepoužíva DHE/ECDHE (forward secrecy)
Štatistiky & Analýza
Statistics → Summary – prehľad súboru, časy, počty paketov
Statistics → Protocol Hierarchy – percentuálne zastúpenie protokolov
Statistics → Conversations – zoznam všetkých spojení (TCP/UDP/IP/Ethernet)
Statistics → Endpoints – zoznam všetkých IP/MAC adries
Statistics → IO Graphs – grafický priebeh prevádzky v čase
Statistics → Flow Graph – vizuálny diagram komunikácie medzi hostmi
Statistics → HTTP → Requests – všetky HTTP požiadavky
Statistics → HTTP → Load Dist. – rozdelenie záťaže medzi servermi
Statistics → DNS – prehľad DNS dopytov a odpovedí
Analyze → Expert Information – automatické upozornenia na anomálie
Colorizing Rules
# View → Colorize Packet List → Manage Color Rules
Čierna/červená – TCP chyby, RST
Tmavočervená – Bad TCP
Svetložltá – SMB
Svetlomodrá – DNS
Tmavozelená – HTTP
Fialová – TCP
Sivá – TCP ACK
# Vlastné pravidlo:
# View → Colorize Packet List → New
# Názov: Suspicious DNS
# Filter: dns.qry.name matches "[a-f0-9]{30,}"
# Farba: červená pozadie
tshark – príkazový riadok
Základy
tshark -D # zoznam dostupných rozhraní
tshark -i eth0 # zachytávať na eth0
tshark -i any # všetky rozhrania
tshark -i eth0 -c 100 # zachytiť 100 paketov
tshark -i eth0 -a duration:60 # zachytávať 60 sekúnd
tshark -i eth0 -f "port 80" # capture filter
tshark -r file.pcap # čítať súbor
tshark -r file.pcap -Y "http" # display filter
tshark -r file.pcap -V # verbose (všetky detaily)
tshark -r file.pcap -q # quiet (len summary)
tshark -r file.pcap -z io,stat,0 # IO štatistiky
One-liners
# Všetky unikátne IP adresy
tshark -r file.pcap -T fields -e ip.src | sort -u
# Top komunikujúce páry
tshark -r file.pcap -q -z conv,tcp
# Všetky HTTP requesty
tshark -r file.pcap -Y "http.request" -T fields \
-e ip.src -e http.host -e http.request.method -e http.request.uri
# DNS requesty
tshark -r file.pcap -Y "dns.flags.response == 0" -T fields \
-e ip.src -e dns.qry.name -e dns.qry.type
# Hľadanie reťazca v paketoch
tshark -r file.pcap -Y 'frame contains "password"'
# FTP prihlasovacie údaje
tshark -r file.pcap \
-Y 'ftp.request.command == "USER" or ftp.request.command == "PASS"' \
-T fields -e ip.src -e ftp.request.arg
# HTTP POST dáta
tshark -r file.pcap -Y "http.request.method == POST" -T fields \
-e ip.src -e http.host -e http.request.uri -e http.file_data
# Počet paketov podľa protokolu
tshark -r file.pcap -q -z io,phs,
# Dlhé DNS mená (DNS tunel)
tshark -r file.pcap -Y "dns" -T fields -e dns.qry.name | awk 'length > 50'
# Extrahovanie všetkých URL
tshark -r file.pcap -Y "http.request" -T fields \
-e http.host -e http.request.uri | sed 's/\t//' | sort -u
# Štatistiky portov
tshark -r file.pcap -q -z conv,tcp | sort -k9 -rn | head -20
CTF – Typické scenáre
Hľadanie credentialov
# HTTP Basic Auth (base64 encoded)
http.authorization contains "Basic"
# → Packet Details → Credentials → dekódovať base64
# FTP
ftp.request.command == "USER" or ftp.request.command == "PASS"
# Telnet (každý znak zvlášť)
telnet
# → Follow TCP Stream → ASCII → čítať
# SMTP autentifikácia
smtp.req.command == "AUTH"
# POP3
pop.request.command == "USER" or pop.request.command == "PASS"
# IMAP
imap and imap.request contains "LOGIN"
# HTTP POST formuláre
http.request.method == "POST"
# → Packet Details → HTML Form URL Encoded → Form item
Hľadanie flagov
# Display filtre
frame contains "flag{"
frame contains "CTF{"
frame contains "FLAG{"
# Regex
frame matches "flag\\{[^}]+\\}"
# V HTTP tele
http contains "flag{"
http.file_data contains "flag"
# tshark
tshark -r file.pcap -Y 'frame contains "flag{"' \
-T fields -e frame.number -e ip.src
# V exportovaných súboroch
# File → Export Objects → HTTP
grep -r "flag{" ./exported/
Extrakcia súborov
# 1. File → Export Objects → HTTP
# 2. Filtrovať konkrétne typy
http.request.uri contains ".jpg"
http.content_type contains "image"
http.content_type contains "application/zip"
http.content_type contains "octet-stream"
# 3. tshark export
tshark -r file.pcap --export-objects http,./files/
tshark -r file.pcap --export-objects smb,./files/
# 4. Rekonštrukcia FTP súborov
# Follow TCP Stream na ftp-data → Save as Raw
ftp-data
# 5. Extrahovať raw bajty paketu
tshark -r file.pcap -Y "frame.number == 42" -T fields -e data.data
Analýza sieťového skenovania
# Nmap ping sweep
icmp.type == 8
# SYN scan (half-open)
tcp.flags == 0x002
# Otvorené porty (SYN-ACK odpovede)
tcp.flags == 0x012
# Uzavreté porty (RST odpovede)
tcp.flags.rst == 1 and tcp.flags.ack == 1
# UDP scan – port unreachable = zatvorený port
icmp.type == 3 and icmp.code == 3
# Xmas scan (FIN+PSH+URG)
tcp.flags == 0x029
# NULL scan
tcp.flags == 0x000
# OS detection – TTL analýza
ip.ttl < 10
Detekcia malvéru & C2
# Beacon (pravidelné spojenia)
# Statistics → IO Graphs → filter tcp.flags.syn == 1
# Nezvyčajné porty
tcp.dstport == 4444 # Metasploit default
tcp.dstport == 1337
tcp.dstport == 31337
# DNS exfiltrácia
dns.qry.name matches "^[a-f0-9]{20,}"
dns.qry.name matches "\.onion\."
# ICMP tunel
icmp and data.len > 64
# HTTP beaconing
http.request.uri == "/check"
http.user_agent == "" # prázdny User-Agent
# Base64 v URL (exfiltrácia)
http.request.uri matches "[A-Za-z0-9+/]{30,}={0,2}"
# PowerShell download
http.user_agent contains "PowerShell"
http.user_agent contains "WindowsPowerShell"
WiFi analýza
wlan # všetka 802.11 prevádzka
wlan.fc.type_subtype == 0x00 # Association Request
wlan.fc.type_subtype == 0x08 # Beacon
wlan.fc.type_subtype == 0x0b # Authentication
wlan.fc.type_subtype == 0x0c # Deauthentication
eapol # WPA handshake (4-way)
# Filtrovanie konkrétnej SSID
wlan_mgt.ssid == "NetworkName"
wlan.bssid == aa:bb:cc:dd:ee:ff
# Deauth útok
wlan.fc.type_subtype == 0x0c and wlan.da == ff:ff:ff:ff:ff:ff
Forenzná analýza – Postup
1. ORIENTÁCIA
Statistics → Summary – časy, veľkosť, rozhranie
Statistics → Protocol Hierarchy – čo v súbore dominuje
Statistics → Conversations – kto s kým komunikuje
Statistics → Endpoints – aktívne hostitele
2. IDENTIFIKÁCIA ANOMÁLIÍ
Analyze → Expert Information – automatické varovania
Hľadať: retransmisie, RST, chyby
3. FILTROVANIE PODOZRIVEJ PREVÁDZKY
Pozrieť HTTP, DNS, ICMP, neštandardné porty
4. SLEDOVANIE STREAMOV
Follow TCP/HTTP Stream na zaujímavé spojenia
5. EXTRAKCIA SÚBOROV
File → Export Objects
6. HĽADANIE CITLIVÝCH DÁT
Credentials, flagy, kľúče, tokeny
7. ČASOVÁ OS
View → Time Display Format → Date and Time
Zoradiť podľa času, hľadať súvislosti
Klávesové skratky
| Skratka | Akcia |
|---|---|
Ctrl+E |
Spustiť/zastaviť zachytávanie |
Ctrl+K |
Nastavenia zachytávania |
Ctrl+O |
Otvoriť súbor |
Ctrl+S |
Uložiť |
Ctrl+Shift+S |
Uložiť ako |
Ctrl+F |
Hľadať v paketoch |
Ctrl+G |
Prejsť na paket číslo |
Ctrl+R |
Reload súbor |
Ctrl+D |
Zobraziť/skryť Packet Details |
Ctrl+B |
Zobraziť/skryť Packet Bytes |
Ctrl+1 |
Zobraziť iba Packet List |
Ctrl+2 |
Packet List + Details |
Ctrl+3 |
Všetky tri panely |
Space |
Ďalší paket |
Backspace |
Predchádzajúci paket |
Ctrl+↓ |
Ďalší zaujímavý paket |
Tab |
Nasledujúce pole v Packet Details |
Ctrl+M |
Označiť/odznačiť paket |
Ctrl+Shift+N |
Ďalší označený paket |
Ctrl+Alt+F |
Použiť ako filter |
= |
Zoom in |
- |
Zoom out |
Dôležité polia pre filtrovanie
frame.number # číslo paketu
frame.time # čas
frame.len # celková dĺžka
frame.cap_len # zachytená dĺžka
frame.marked # označený paket
eth.src / eth.dst # MAC adresy
eth.type # 0x0800=IPv4, 0x0806=ARP
ip.src / ip.dst
ip.proto # 6=TCP, 17=UDP, 1=ICMP
ip.ttl
ip.len
ip.flags.df # Don't Fragment bit
ip.fragment # fragmenty
tcp.srcport / tcp.dstport
tcp.seq / tcp.ack # sekvenčné čísla
tcp.window_size
tcp.payload
tcp.stream # ID TCP streamu
udp.srcport / udp.dstport
udp.length
data # surové dáta (payload)
data.data # hex payload
data.len # dĺžka payloadu
Referencia – DNS typy záznamov
| Typ | Číslo | Popis |
|---|---|---|
| A | 1 | IPv4 adresa |
| NS | 2 | Name server |
| MX | 15 | Mail exchange |
| TXT | 16 | Textový záznam |
| AAAA | 28 | IPv6 adresa |
| SRV | 33 | Service record |
| ANY | 255 | Všetky záznamy |
Referencia – TCP flagy
| Flag | Bit | Popis |
|---|---|---|
| FIN | 0x01 | Koniec spojenia |
| SYN | 0x02 | Synchronizácia |
| RST | 0x04 | Reset spojenia |
| PSH | 0x08 | Push (odoslať ihneď) |
| ACK | 0x10 | Potvrdenie |
| URG | 0x20 | Urgentné dáta |
| ECE | 0x40 | ECN Echo |
| CWR | 0x80 | Congestion Window Reduced |
Nástroje dopĺňajúce Wireshark
# Konverzia formátov
editcap -F pcap input.pcapng output.pcap # pcapng → pcap
editcap -i 60 big.pcap split.pcap # rozdeliť po 60 sek.
mergecap -w merged.pcap a.pcap b.pcap # spojiť súbory
# Rýchla analýza
capinfos file.pcap # info o súbore
tcpdump -r file.pcap -nn -v # čítať bez DNS lookupov
tcpdump -r file.pcap -nn "port 80" # s filtrom
tcpdump -i eth0 -w out.pcap # zachytávať
# Zeek (Bro) – generovanie logov zo pcap
zeek -r file.pcap
# Scapy – Python knižnica na analýzu/tvorbu paketov
from scapy.all import *
pkts = rdpcap("file.pcap")
pkts[0].show()