Wireshark Filter

ช่วงนี้มีเรื่องเยอะหน่อยที่ต้องลงลึกถึงใต้สมุทเพื่อดักข้อมูลมาวิเคราะหาข้อผิดพลาด ด้านล่างจะเป็นการโน็ตคำสั่งต่างที่ใช้ประจำเพื่อหาสิ่งที่ต้องการ ปัดฝุ่นหน่อยหลังไม่ได้ใช้มานาน

Wireshark มีหลายๆ คำสั่งกรองที่น่าสนใจ

ip.addr == x.x.x.x

กรองแพ็คเก็ตที่มีที่อยู่ IP ที่ระบุไว้ (x.x.x.x) ในฟิลด์ที่อยู่ IP ต้นทางหรือปลายทาง.


ip.src == x.x.x.x && ip.dst == y.y.y.y

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น x.x.x.x และที่อยู่ IP ปลายทางเป็น y.y.y.y.


tcp.port == zzzz

กรองแพ็คเก็ตที่มีพอร์ต TCP zzzz ในฟิลด์พอร์ตต้นทางหรือปลายทาง.


udp.port == zzzz

กรองแพ็คเก็ตที่มีพอร์ต UDP zzzz ในฟิลด์พอร์ตต้นทางหรือปลายทาง.


tcp.flags.syn == 1

กรองแพ็คเก็ตที่มีธง SYN TCP ตั้งค่าเป็น 1, ซึ่งบ่งชี้ว่าเริ่มต้นการสื่อสาร TCP.


frame contains "text"

กรองแพ็คเก็ตที่มี "text" อยู่ใน payload. สามารถใช้สำหรับการค้นหาข้อความหรือข้อมูลที่ระบุไว้ใน payload.


http.request.method == "GET"

กรองแพ็คเก็ตที่เป็น HTTP GET requests.


http.response.code == 200

กรองแพ็คเก็ตที่เป็น HTTP responses ที่มีรหัสคำตอบ 200 (OK).


!(arp or icmp or dns)
สัญลักษณ์ที่ใช้ในการกรอง:
== หมายถึง 'เท่ากับ'
!= หมายถึง 'ไม่เท่ากับ'
&& หมายถึง 'และ'
|| หมายถึง 'หรือ'
! หมายถึง 'ไม่'

กรองเอาแพ็คเก็ตที่ไม่ใช่ ARP, ICMP, หรือ DNS ออก.


http.host == "www.example.com"

กรองแพ็คเก็ตที่มีฟิลด์ "host" ของ HTTP ตรงกับ "www.example.com".


tcp.flags.reset == 1

กรองแพ็คเก็ตที่มีธง RESET TCP ตั้งค่าเป็น 1 ซึ่งบ่งชี้ว่าการสื่อสาร TCP ถูกยกเลิก.


tcp.len > 0

กรองแพ็คเก็ต TCP ที่มีข้อมูล payload (TCP length มากกว่า 0) ซึ่งเป็นแพ็คเก็ตที่ทำการส่งข้อมูลจริง ๆ.


wifi.addr == xx:xx:xx:xx:xx:xx

กรองแพ็คเก็ตที่มีที่อยู่ MAC ที่ระบุในฟิลด์ MAC ต้นทางหรือปลายทาง.


eth.dst == xx:xx:xx:xx:xx:xx

กรองแพ็คเก็ตที่มีที่อยู่ MAC ปลายทางเป็น xx:xx:xx:xx:xx:xx.


ssl.handshake.type == 1

กรองแพ็คเก็ตที่เป็นการสื่อสาร SSL handshake แบบ client hello.


dns.qry.name == "www.example.com"

กรองแพ็คเก็ตที่เป็น DNS query สำหรับ "www.example.com".


icmp.type == 8 && icmp.code == 0

กรองแพ็คเก็ตที่เป็น ICMP echo request (ping).


ip.version == 6

กรองแพ็คเก็ต IPv6 ทั้งหมด.


ip.version == 4

กรองแพ็คเก็ต IPv4 ทั้งหมด.


tcp.flags.syn == 1 && tcp.flags.ack == 1

กรองแพ็คเก็ต TCP ที่มีธง SYN และ ACK ตั้งค่าเป็น 1, ซึ่งบ่งชี้ว่าเป็นส่วนหนึ่งของการจับมือของ TCP.


frame.len >= 64

กรองแพ็คเก็ตที่มีขนาดทั้งหมดเท่ากับหรือมากกว่า 64 ไบต์.


ssl

กรองแพ็คเก็ต SSL/TLS ทั้งหมด.


http or dns

กรองแพ็คเก็ตที่เป็น HTTP หรือ DNS.


tcp.port >= 1024

กรองแพ็คเก็ตที่มีพอร์ต TCP 1024 หรือมากกว่า.


ip.addr == 192.168.0.0/16

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางหรือปลายทางในระบบเครือข่าย 192.168.0.0/16.


http.user_agent contains "Mozilla/5.0"

กรองแพ็คเก็ตที่มีสตริง "Mozilla/5.0" อยู่ในฟิลด์ User-Agent ของ HTTP.


arp.opcode == 1

กรองแพ็คเก็ตที่เป็น ARP requests.


tcp.analysis.retransmission

กรองแพ็คเก็ต TCP ที่เป็นการส่งซ้ำ (retransmissions) ซึ่งเป็นที่มาของปัญหาเกี่ยวกับการสื่อสารข้อมูลในเครือข่าย.


udp contains "keyword"

กรองแพ็คเก็ต UDP ที่มี "keyword" อยู่ใน payload.


ssl.record.version == 0x0303

กรองแพ็คเก็ตที่ใช้งาน SSL/TLS version 1.2 (0x0303 คือการแสดงรหัส hexadecimal ของ version 1.2).


dns.flags.response == 1

กรองแพ็คเก็ต DNS ที่เป็นการตอบสนอง (responses).


frame.number == 101

กรองแพ็คเก็ตที่มีหมายเลข frame 101.


tcp.stream eq 1

กรองแพ็คเก็ตที่อยู่ใน TCP stream 1.


tcp.analysis.ack_lost_segment

กรองแพ็คเก็ตที่พบการสูญเสีย segment ใน TCP ACK.


http.request.uri contains "example"

กรองแพ็คเก็ต HTTP ที่ URI ของการ request มีคำว่า "example".


ssl.record.content_type == 23

กรองแพ็คเก็ต SSL/TLS ที่เป็น application data.


http.cookie contains "session_id"

กรองแพ็คเก็ตที่มีคำว่า "session_id" อยู่ในฟิลด์คุกกี้ของ HTTP.


tcp.analysis.duplicate_ack

กรองแพ็คเก็ตที่เป็นการ ACK ซ้ำ (duplicate ACKs) ซึ่งมักแสดงว่ามีแพ็คเก็ต TCP ที่สูญหาย.


tcp.window_size == 0

กรองแพ็คเก็ตที่มีขนาด window ของ TCP เท่ากับ 0, ซึ่งบ่งชี้ว่าไม่มีพื้นที่ที่สามารถรับข้อมูลใหม่ได้.


ssl.handshake.extensions_server_name == "www.example.com"

กรองแพ็คเก็ต SSL/TLS ที่มีชื่อเซิร์ฟเวอร์ (server name) ในการจับมือ (handshake) เป็น "www.example.com".


wlan.fc.type_subtype == 0x08

กรองแพ็คเก็ต Wi-Fi ที่เป็น Data frames.


dns.flags.recursion_desired == 1

กรองแพ็คเก็ต DNS ที่มีธงการร้องขอการเรียกคืน (recursion desired) ตั้งค่าเป็น 1.


smb2.cmd == 0x05

กรองแพ็คเก็ต SMBv2 ที่เป็นคำสั่ง create.


ntp.version == 4

กรองแพ็คเก็ต NTP ที่ใช้ version 4.


rtsp.request.method == "DESCRIBE"

กรองแพ็คเก็ต RTSP ที่มีการร้องขอใช้เมธอด "DESCRIBE".


icmp.type == 0

กรองแพ็คเก็ตที่เป็นการตอบสนองของ ICMP Echo (ping reply).


udp.length <= 64

กรองแพ็คเก็ต UDP ที่มีความยาวน้อยกว่าหรือเท่ากับ 64 ไบต์.


tcp.analysis.zero_window

กรองแพ็คเก็ตที่สำหรับ ZeroWindow ซึ่งบ่งชี้ว่าอุปกรณ์ทางปลายทางไม่สามารถรับข้อมูลเพิ่มเติมได้.


tcp contains "GET"

กรองแพ็คเก็ตที่เป็น TCP และมีคำว่า "GET" ใน payload.


http.request.method == "POST"

กรองแพ็คเก็ตที่เป็น HTTP และใช้เมธอด POST.


ssl.record.content_type == 22

กรองแพ็คเก็ต SSL/TLS ที่เป็น handshake.


eth.src == 00:11:22:33:44:55

กรองแพ็คเก็ตที่มีที่อยู่ MAC ต้นทางเป็น 00:11:22:33:44:55.


ip.src != 192.168.1.1

กรองแพ็คเก็ตที่ที่อยู่ IP ต้นทางไม่เท่ากับ 192.168.1.1.


tcp.flags.syn == 1 && tcp.flags.ack == 0

กรองแพ็คเก็ตที่เป็นการจับมือของ TCP SYN.


dns.qry.type == 1 && dns.resp.addr == 192.168.1.1

กรองแพ็คเก็ตที่เป็น DNS Query ประเภท A และการตอบสนองมีที่อยู่ 192.168.1.1.


tcp contains http

กรองแพ็คเก็ต TCP ที่มีข้อมูล HTTP ภายใน payload.


http contains "username"

กรองแพ็คเก็ต HTTP ที่มีคำว่า "username" อยู่ใน payload.


!(arp or icmp or dns)

กรองแพ็คเก็ตที่ไม่ได้เป็น ARP, ICMP หรือ DNS.


tcp.port eq 80 and tcp.flags.syn eq 1

กรองแพ็คเก็ต TCP ที่มีพอร์ต 80 และมีธง SYN.


(ip.addr eq 192.168.0.1 and ip.addr eq 192.168.0.2) and tcp.port eq 80

กรองแพ็คเก็ต TCP ที่มีที่อยู่ IP ต้นทางหรือปลายทางเป็น 192.168.0.1 หรือ 192.168.0.2 และพอร์ต TCP เป็น 80.


ip.addr == 192.168.0.1 and tcp.port == 22 and tcp.flags.syn == 1

กรองแพ็คเก็ต TCP SYN ที่มีที่อยู่ IP ต้นทางเป็น 192.168.0.1 และพอร์ต TCP เป็น 22.


frame[0] & 1

กรองแพ็คเก็ตที่มีบิตแรก (บิต 0) ของ frame ตั้งค่าเป็น 1.


eth.dst[0:3] == 00:00:00

กรองแพ็คเก็ตที่มี 3 ไบต์แรกของที่อยู่ MAC ปลายทางเท่ากับ 00:00:00.


frame contains "password"

กรองแพ็คเก็ตที่มีคำว่า "password" อยู่ใน payload ของ frame.


http.request.uri matches ".*secret.*"

กรองแพ็คเก็ตที่มี URI ของการ request HTTP ที่ตรงกับ regular expression ".secret.".


http.request.method == GET and http.request.uri contains "login"

กรองแพ็คเก็ตที่เป็นการร้องขอ HTTP GET และ URI มีคำว่า "login".


(ip.dst == 192.168.0.2 and tcp.dstport == 80) and tcp.flags.syn == 1 and tcp.flags.ack == 0

กรองแพ็คเก็ตที่มีที่อยู่ IP ปลายทางเป็น 192.168.0.2 และพอร์ตปลายทางเป็น 80 และเป็นการจับมือ TCP SYN.


ip.addr == 10.0.0.1 and !(icmp or dns)

กรองแพ็คเก็ตที่มีที่อยู่ IP เป็น 10.0.0.1 แต่ไม่ได้เป็น ICMP หรือ DNS.


http contains ".exe" or http contains ".msi"

กรองแพ็คเก็ต HTTP ที่มี ".exe" หรือ ".msi" อยู่ใน payload.


(tcp.port >= 137 and tcp.port <= 139) or (tcp.port >= 445 and tcp.port <= 445)

กรองแพ็คเก็ตที่มีพอร์ต TCP อยู่ระหว่าง 137-139 หรือ 445.


frame.time_epoch > 1500000000.0

กรองแพ็คเก็ตที่ถูกแกะสลักหลังจาก UNIX timestamp 1,500,000,000.0.


ssl.record.length > 200

กรองแพ็คเก็ต SSL/TLS ที่มีความยาว record มากกว่า 200.


dns.qry.name matches ".*google.*"

กรองแพ็คเก็ต DNS ที่ชื่อของการร้องขอตรงกับ regular expression ".google.".


frame.len < 64

กรองแพ็คเก็ตที่มีความยาว frame น้อยกว่า 64.


ip.src == 10.0.0.1 and ip.dst == 10.0.0.2 and tcp.port == 22 and tcp.flags.push == 1

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น 10.0.0.1, ที่อยู่ IP ปลายทาง



http.cookie contains "sessionid"

กรองแพ็คเก็ต HTTP ที่มีคุกกี้ที่มีคำว่า "sessionid".


tcp.window_size_value < 300

กรองแพ็คเก็ต TCP ที่มีขนาดของ TCP window น้อยกว่า 300.


dns.flags.response == 1

กรองแพ็คเก็ต DNS ที่เป็นการตอบสนอง.


tcp.stream eq 1

กรองแพ็คเก็ตที่อยู่ใน TCP stream ที่ 1.


ssl.handshake.type == 11

กรองแพ็คเก็ต SSL/TLS ที่เป็น Certificate (handshake type 11).


wlan.fc.type_subtype == 0x08

กรองแพ็คเก็ต WLAN ที่เป็น Data (frame type 0x08).


ip.addr == 192.168.1.1 && (dns or http or ssl)

กรองแพ็คเก็ตที่มีที่อยู่ IP เป็น 192.168.1.1 และเป็น DNS, HTTP, หรือ SSL/TLS.


tcp.flags.ack == 1 and tcp.flags.reset == 1

กรองแพ็คเก็ต TCP ที่มีธง ACK และ RST.


ip.addr eq 192.168.1.1 and udp.length > 200

กรองแพ็คเก็ตที่มีที่อยู่ IP เป็น 192.168.1.1 และมีความยาวของแพ็คเก็ต UDP มากกว่า 200 ไบต์.


frame[48:4] == 46:4f:4f:42

กรองแพ็คเก็ตที่มีข้อมูล "FOOB" (อักขระ ASCII 46 4f 4f 42) เริ่มต้นที่ไบต์ที่ 48.



icmp.type eq 8 and ip.dst eq 8.8.8.8

กรองแพ็คเก็ต ICMP Echo Request (ping) ที่มีที่อยู่ IP ปลายทางเป็น 8.8.8.8.


tcp.port in {80 443 8080}

กรองแพ็คเก็ตที่มีพอร์ต TCP อยู่ในกลุ่ม {80, 443, 8080}.


tcp.flags.syn == 1 and tcp.flags.ack == 0 and ip.dst == 192.168.0.1

กรองแพ็คเก็ตที่เป็น TCP SYN และมีที่อยู่ IP ปลายทางเป็น 192.168.0.1.


http.user_agent contains "Mozilla/5.0"

กรองแพ็คเก็ตที่มี user agent ของ HTTP ที่มี "Mozilla/5.0".


!(arp or dns or http or icmp)

กรองแพ็คเก็ตที่ไม่ได้เป็น ARP, DNS, HTTP หรือ ICMP.


ip.addr eq 10.0.0.1 and tcp.dstport eq 22 and tcp.flags.syn eq 1

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น 10.0.0.1, พอร์ตปลายทาง TCP เป็น 22, และเป็น TCP SYN packet.


tcp contains "GET / HTTP/1.1" and ip.src == 192.168.0.1

กรองแพ็คเก็ตที่มีข้อมูล "GET / HTTP/1.1" ใน TCP และมีที่อยู่ IP ต้นทางเป็น 192.168.0.1.


dns.flags.response == 1 and dns.resp.len > 20

กรองแพ็คเก็ต DNS ที่เป็นการตอบสนองและมีความยาวของการตอบสนองมากกว่า 20.


ip.src == 192.168.1.1 and (tcp or udp)

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น 192.168.1.1 และเป็น TCP หรือ UDP.


ssl.record.version == 0x0303 and ssl.record.content_type == 22

กรองแพ็คเก็ต SSL/TLS


http.request.method == "POST" and http.request.uri contains "login"

กรองแพ็คเก็ตที่เป็นการร้องขอ HTTP POST และ URI มีคำว่า "login".


ip.addr == 192.168.0.1 and tcp.flags.syn == 1 and tcp.flags.ack == 1

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น 192.168.0.1 และเป็น TCP SYN-ACK packet.


wlan.sa == 00:0b:81:ab:cd:ef

กรองแพ็คเก็ตที่มีที่อยู่ MAC ต้นทาง (source) ของ WLAN เป็น 00:0b:81:ab:cd:ef.


http and ip.src == 192.168.1.1 and frame.len > 200

กรองแพ็คเก็ต HTTP ที่มีที่อยู่ IP ต้นทางเป็น 192.168.1.1 และมีความยาว frame มากกว่า 200.


udp contains "keyword"

กรองแพ็คเก็ต UDP ที่มีคำว่า "keyword" ภายใน payload.


tcp.seq == 1 and tcp.ack == 1

กรองแพ็คเก็ต TCP ที่มีหมายเลขลำดับ (sequence number) และหมายเลขยืนยัน (acknowledgment number) เท่ากับ 1.


dns.qry.name contains "google"

กรองแพ็คเก็ต DNS ที่ชื่อของการร้องขอมีคำว่า "google".


http.request.uri matches ".*\.zip"

กรองแพ็คเก็ตที่ URI ของการร้องขอ HTTP ตรงกับ regular expression ".*.zip", สิ่งนี้จะช่วยหาการดาวน์โหลดไฟล์ zip.


tcp.flags.syn == 1 and tcp.flags.ack == 1 and ip.dst == 10.0.0.2

กรองแพ็คเก็ตที่เป็น TCP SYN-ACK และมีที่อยู่ IP ปลายทางเป็น 10.0.0.2.


ip.src == 10.0.0.1 and dns

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น 10.0.0.1 และเป็นแพ็คเก็ต DNS.


eth.addr == 00:0b:81:86:4a:fb

กรองแพ็คเก็ตที่มีที่อยู่ MAC เท่ากับ 00:0b:81:86:4a:fb.


dns.qry.type == 1 and dns.qry.class == 1

กรองแพ็คเก็ต DNS ที่มีการสอบถามชนิด (query type) 1 (A records) และการสอบถาม class 1 (Internet).


http.request.method == "POST" and http contains "password="

กรองแพ็คเก็ต HTTP POST ที่มีคำว่า "password=" อยู่ใน payload.


tcp.flags.fin == 1

กรองแพ็คเก็ต TCP ที่มีธง FIN.


ip.dst != 192.168.0.1

กรองแพ็คเก็ตที่ที่อยู่ IP ปลายทางไม่ใช่ 192.168.0.1.


ssl.handshake.extensions_server_name contains "example.com"

กรองแพ็คเก็ต SSL/TLS ที่มี Server Name Indication (SNI) มีคำว่า "example.com".


ip.src == 10.0.0.1 and ip.dst == 10.0.0.2 and tcp

กรองแพ็คเก็ตที่มีที่อยู่ IP ต้นทางเป็น 10.0.0.1, ที่อยู่ IP ปลายทางเป็น 10.0.0.2, และเป็นแพ็คเก็ต TCP.


http.host == "www.example.com"

กรองแพ็คเก็ต HTTP ที่ host header เป็น "www.example.com".


tcp.len > 100

กรองแพ็คเก็ต TCP ที่มีความยาวของ payload มากกว่า 100.


wlan.fc.type_subtype == 0x04

กรองแพ็คเก็ต WLAN ที่เป็น Probe Request (frame type 0x04).


0
214