Wireshark – Cheatsheet (CTF & Forensics)

Komplexný referenčný list pre prácu s Wiresharkom pri CTF, forenznej analýze sietí a penetračnom testovaní.

Obsah

{:.no_toc}

* TOC
{:toc}

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

`bash
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

`bash

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)

`bash

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

`bash

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

`bash
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

`bash

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

`bash

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

`bash

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

`bash

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()

TheOldOne · Miroslav Gensor · HTB · THM · SCADA