Содержание
- Filters
- Top 100 Wireshark Filters for Investigating Attacks or Hacker Activity
- 1. Basic Traffic Monitoring
- 2. Suspicious TCP/UDP Traffic
- 3. DNS-Related Activity
- 4. HTTP/HTTPS Traffic
- 5. FTP/SMB/Other Protocols
- 6. Email Traffic (SMTP/POP3/IMAP)
- 7. ARP/ICMP/DHCP
- 8. VPN/Encrypted Traffic
- 9. Indicators of Compromise
- 10. File Transfer Protocols
- 11. Malformed/Bogus Packets
- 12. High Traffic Volume
- 13. Others
- General Wireshark Filters
Filters
Search http request wiht string “UNION”
http.request && http contains "UNION"
Search SQLi attempt
http.request.uri contains "1=1" or http.request.uri matches "(?i)and%20" or http.request.uri matches "(?i)--"
Database-specific commands ‘UNION SELECT’ or ‘INFORMATION_SCHEMA’
http.request.uri contains "INFORMATION_SCHEMA"
Top 100 Wireshark Filters for Investigating Attacks or Hacker Activity
1. Basic Traffic Monitoring
- Traffic to/from a specific IP address:
ip.addr == x.x.x.x - HTTP traffic on port 80:
tcp.port == 80 - DNS traffic:
udp.port == 53 - ICMP (ping) traffic:
icmp - TCP traffic:
ip.proto == 6 - UDP traffic:
ip.proto == 17 - HTTP requests:
http.request - HTTP responses:
http.response
2. Suspicious TCP/UDP Traffic
- SYN packets (potential scanning activity):
tcp.flags.syn == 1 and tcp.flags.ack == 0 - FIN scans:
tcp.flags.fin == 1 and tcp.flags.ack == 0 - Push flag set (might indicate data exfiltration):
tcp.flags.psh == 1 - TCP retransmissions (could indicate DoS or network issues):
tcp.analysis.retransmission - Traffic on port 4444 (common for Metasploit):
tcp.port == 4444 - TFTP traffic (can be used for file transfers in attacks):
udp.port == 69 - IKE (potential VPN activity):
udp.port == 500 - NAT-T (VPN traffic):
udp.port == 4500
3. DNS-Related Activity
- DNS query for a specific domain:
dns.qry.name == "malicious.com" - A record DNS queries:
dns.qry.type == 1 - Queries containing suspicious strings:
dns.qry.name.contains == "suspicious" - Responses with TTL set to 0 (can indicate fast-flux DNS):
dns.resp.ttl == 0 - Queries for a bad domain:
dns.flags.response == 0 and dns.qry.name == "bad.domain.com" - Truncated DNS packets (could indicate large payloads):
dns.flags.truncated == 1
4. HTTP/HTTPS Traffic
- HTTP traffic to/from a specific domain:
http.host == "malicious.com" - POST requests (used in data exfiltration):
http.request.method == "POST" - Suspicious user agents:
http.user_agent contains "SuspiciousUserAgent" - Session cookies:
http.cookie contains "sessionID" - TLS client hello (can be useful to identify SSL/TLS versions):
tls.handshake.type == 1 - Encrypted application data (can indicate hidden data):
tls.record.content_type == 23 - Possible command injection via URI:
http.request.uri contains "cmd.exe"
5. FTP/SMB/Other Protocols
- FTP login attempts:
ftp.request.command == "USER" - FTP file uploads:
ftp.request.command == "STOR" - All SMB traffic (useful for identifying lateral movement):
smb - SMB2 session setup (potential lateral movement):
smb2.cmd == 5 - Access to specific SMB shares:
smb2.tree == "\\malicious\share" - NTLM authentication attempts with specific usernames:
ntlmssp.auth.username == "admin" - Kerberos traffic for administrator accounts:
kerberos.CNameString == "administrator"
6. Email Traffic (SMTP/POP3/IMAP)
- SMTP parameters containing suspicious strings:
smtp.req.parameter contains "malicious" - Capturing the data part of an email:
smtp.req.command == "DATA" - Email recipient addresses:
smtp.req.parameter == "RCPT TO" - POP3 login attempts:
pop.request.command == "USER" - Specific usernames in POP3:
pop.request.parameter contains "admin" - IMAP login attempts:
imap.request.command == "LOGIN" - Emails from specific addresses:
smtp.mailfrom == "attacker@example.com"
7. ARP/ICMP/DHCP
- Duplicate ARP addresses (potential MITM):
arp.duplicate-address-frame - ARP requests from a specific IP:
arp.src.proto_ipv4 == x.x.x.x - ICMP Echo Requests (pings):
icmp.type == 8 and icmp.code == 0 - Destination unreachable (could indicate scanning):
icmp.type == 3 - DHCP requests for specific IPs:
dhcp.option.requested_ip_address == x.x.x.x - All DHCP traffic:
dhcp
8. VPN/Encrypted Traffic
- IPsec ESP traffic:
ip.addr == x.x.x.x and ip.proto == 50 - OpenVPN traffic:
udp.port == 1194 - GRE traffic (potential VPN):
gre - SSL/TLS Client Hello:
ssl.handshake.type == 1 - SSL/TLS SNI field:
ssl.handshake.extensions_server_name == "vpn.example.com"
9. Indicators of Compromise
- Traffic to/from known bad IPs:
ip.addr == bad_ip - HTTP traffic to known malicious domains:
http.host == "knownmalicious.com" - Attempts to access WordPress login pages:
http.request.uri contains "/wp-login.php" - Accessing potential web shells:
http.request.uri contains "/shell" - DNS queries for C2 servers:
dns.qry.name == "command-and-control.com" - Suspicious traffic on non-standard ports:
tcp.port == 1337 - Traffic to/from specific countries:
ip.geoip.country == "CN" - Traffic with low TTL values (potential indication of IP spoofing):
ip.ttl == 1
10. File Transfer Protocols
- TFTP traffic (often used for transferring files):
tftp - FTP data transfer:
ftp-data - NFS traffic:
nfs - TFTP file transfers with suspicious filenames:
tftp.request.filename contains "malware"
11. Malformed/Bogus Packets
- Malformed IP packets:
ip.len < 20 - Malformed TCP headers:
tcp.hdr_len < 20 - **Broadcast traffic (often
used in network scanning):**
eth.dst == ff:ff:ff:ff:ff:ff
- TCP flags analysis (captures potential anomalies):
tcp.analysis.flags - Redirect (could be part of a routing attack):
icmp.type == 5 - Non-standard DNS response codes:
dns.flags.rcode != 0
12. High Traffic Volume
- Large packets:
frame.len > 1000 - Zero window size (potential signs of DoS):
tcp.window_size == 0 - Traffic to/from specific IPs with large time gaps:
ip.addr == x.x.x.x and frame.time_delta > 1 - Long TCP streams:
tcp.stream eq 0 and frame.time_relative > 60
13. Others
- Captures MSS options in TCP (can identify unusual setups):
tcp.options.mss - TCP SACK options (can identify specific attack vectors):
tcp.options.sack_perm == 1 - Fragmented IP traffic (often used in evasion techniques):
ip.frag_offset > 0 - Traffic from specific MAC addresses:
eth.src == xx:xx:xx:xx:xx:xx - Traffic to specific MAC addresses:
eth.dst == xx:xx:xx:xx:xx:xx - Source country (can be filtered based on geographic info):
ip.geoip.src_country == "RU" - Destination country (same as above):
ip.geoip.dst_country == "RU" - TLSv1.2 traffic:
ssl.record.version == 0x0303 - TLSv1.0 traffic:
ssl.record.version == 0x0301 - Specific cipher suites:
ssl.handshake.ciphersuite == 0xcca9 - TCP SYN/ACK packets:
tcp.flags.syn == 1 and tcp.flags.ack == 1
General Wireshark Filters
- Filter by IP Address (Source)
ip.src == 192.168.1.1 - Filter by IP Address (Destination)
ip.dst == 192.168.1.1 - Filter by Protocol
tcp - Filter by Port (TCP)
tcp.port == 80 - Filter by Port (UDP)
udp.port == 53 - Filter by Subnet
ip.addr == 192.168.1.0/24 - Filter by HTTP Requests
http.request - Filter by DNS Traffic
dns - Filter by ARP Traffic
arp - Filter by ICMP (Ping) Traffic
icmp - Filter by SSL/TLS Traffic
ssl or tls - Filter by DHCP Traffic
bootp - Filter by TCP SYN Packets
tcp.flags.syn == 1 - Filter by TCP SYN-ACK Packets
tcp.flags == 0x12 - Filter by TCP FIN Packets
tcp.flags.fin == 1 - Filter by Packet Size
frame.len > 1000 - Filter by MAC Address (Source)
eth.src == 00:11:22:33:44:55 - Filter by MAC Address (Destination)
eth.dst == 00:11:22:33:44:55 - Filter by TCP RST Packets
tcp.flags.rst == 1 - Filter by TCP Window Size
tcp.window_size == 0 - Filter by Packet Containing a String
frame contains "example" - Filter by VLAN ID
vlan.id == 10 - Filter by Specific Hostname in DNS
dns.qry.name == "example.com" - Filter by HTTP Response Code
http.response.code == 200 - Filter by IP Address Range
ip.addr >= 192.168.1.1 and ip.addr <= 192.168.1.10 - Filter by TCP Sequence Number
tcp.seq == 1000 - Filter by User-Agent in HTTP
http.user_agent contains "Mozilla" - Filter by TCP Retransmissions
tcp.analysis.retransmission - Filter by TCP Duplicate ACKs
tcp.analysis.duplicate_ack - Filter by ICMP Echo Request
icmp.type == 8 - Filter upload file
mime_multipart.type == "multipart/form-data" && http.request.method == POST