常见语法
过滤器支持的函数:
过滤器的语言还有下面几个函数:
upper(string-field)-把字符串转换成大写
lower(string-field)-把字符串转换成小写
upper((和lower((在处理大小写敏感的字符串比较时很有用。例如:
upper(ncp.nds_stream_name) contains "MACRO"
lower(mount.dump.hostname) =="angel"
协议字段类型
每个协议的字段都有规定的类型。这些类型是:
unsigned integer 无符号整数(8比特、16比特、24比特、32比特)
signed integer 有符号整数(8比特、16比特、24比特、32比特)
Boolean 布尔值
Ethernet address 以太网地址(6字节)
Byte array 字节数组
IPv4 address IPv4地址
IPv6 address IPv6地址
IPX network number IPX网络地址
Text string 文本串
Double-precision floating point number 双精度浮点值
三种进制表示方法:
frame.pkt_len>10
frame.pkt_len>012
frame.pkt_len>0xa
布尔值用1 0表示
以太网地址
eth.dst eq ff:ff:ff:ff:ff:ff
aim.data == 0.1.0.d
fddi.src == aa-aa-aa-aa-aa-aa
echo.data == 7a
ipv4和主机名
ip.dst eq www.mit.edu
ip.src == 192.168.1.1
示例:
获取from或to ip 111.111.111.111
host 172.18.5.4
获取from或to ip 段
net 192.168.0.0/24 or net 192.168.0.0 mask 255.255.255.0
from ip段
src net 192.168.0.0/24 or src net 192.168.0.0 mask 255.255.255.0
to ip地址段
dst net 192.168.0.0/24 or dst net 192.168.0.0 mask 255.255.255.0
指定port数据
port 53 //53是dns
port段
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)
或
tcp portrange 1501-1549
指定协议:如:Ethernet type EAPOL,ip
ether proto 0x888e
ip
目标地址不是某个ethernet
not ether dst 01:80:c2:00:00:0e
除去广播数据
not broadcast and not multicast
显示http 80 get数据
port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 GET 16进制是0x474554
位过滤
IP Filters |
ip[0] & 0x0f | low nibble: header length in 4octet words. should be 5 | ip[1] | type of service/QoS/DiffServ | ip[2:2] | total length of datagram in octets | ip[4:2] | IP ID number | ip[6] & 0x80 | reserved bit (possibly used for ECN) | ip[6] & 0x40 | DF bit | ip[6] & 0x20 | MF bit | ip[6:2] & 0x1fff | fragment offset (number of 8octet blocks) | ip[8] | ttl | ip[9] | protocol | ip[10:2] | header checksum | ip[12:4] | source IP | ip[16:4] | destination IP | Samples | | (ip[12:4] = ip[16:4]) | Src IP = Dest IP (land attack) | ip[0] & 0xf0 | high nibble: IP version. almost always 4 | (ip[0] & 0xf0 != 0x40) | IP versions !=4 | (ip[0:1] & 0x0f > 5) | IP with options set | (ip[19] = 0xff) | Broadcasts to x.x.x.255 | (ip[19] = 0x00) | Broadcasts to x.x.x.0 | (ip and ip[1] & 0xfc == 0xb8) | search for EF in DSCP | (ip and ip[1] & 0xfc == 0x28) | search for AF11 in DSCP | (ip and ip[1] & 0xfc != 0x00) | search for DCSP Packets != 0 | (ip[6] & 0x20 != 0) && (ip[6:2] & 0x1fff = 0) | initial fragments | (ip[6] & 0x20 != 0) && (ip[6:2] & 0x1fff != 0) | intervening fragments | (ip[6] & 0x20 = 0) && (ip[6:2] & 0x1fff != 0) | terminal fragments | (ip[0] & 0x0f) != 5 | has ip options (or is truncated, or is just some sort of freak...) | ip[8] < 5 | short TTL value | ip[6] = 32 | MF set | iip[2:2] > 999 | IP Packet greater then 999 |
|
|
ICMP Filters |
icmp[0] | type | icmp[1] | code | icmp[2:2] | checksum | Samples | | icmp[0]=0x# | all Packets with ICMP Type | icmp[0]=0x# and icmp[1]=0x# | all Packets with ICMP Type X and Code = Y | icmp[0]=8 | ICMP Request Messages | icmp[8]=0 | ICMP Request Replay | icmp[0]=0x11 | ICMP Address Mask Request | icmp[0]=0x12 | ICMP Address Mask Replay | icmp[0]=11 and icmp[1]=0 | ICMP Time Exeedet | icmp[0]=3 and icmp[1]=4 | ICMP Time Exeedet | icmp[0]=8 and ip[2:2] > 64 | Large ICMP Packets |
|
|
TCP Filters |
tcp[0:2] | source port | tcp[2:2] | destination port | tcp[4:4] | sequence number | tcp[8:4] | ack number | tcp[12] | header length | tcp[13] | tcp flags | | ---- --S- 0000 0010 = 0x02 normal syn | | ---A --S- 0001 0010 = 0x12 normal syn-ack | | ---A ---- 0001 0000 = 0x10 normal ack | | --UA P--- 0011 1000 = 0x38 psh-urg-ack. interactive stuff like ssh | | ---A -R-- 0001 0100 = 0x14 rst-ack. it happens. | | ---- --SF 0000 0011 = 0x03 syn-fin scan | | --U- P--F 0010 1001 = 0x29 urg-psh-fin. nmap fingerprint packet | | -Y-- ---- 0100 0000 = 0x40 anything >= 0x40 has a reserved bit set | | XY-- ---- 1100 0000 = 0xC0 both reserved bits set | | XYUA PRSF 1111 1111 = 0xFF FULL_XMAS scan | tcp[14:2] | window size | tcp[16:2] | checksumt | tcp[18:2] | urgent pointer | Samples | | tcp[13] = 0x02 | is SYN. nothing else. | (tcp[13] & 0x02) != 0 | contains SYN. we don't care what else... | (tcp[13] & 0x03) = 3 | is some kind of SYN-FIN. realy Bad | | winnuke (not tested) | tcp[20:4] = 0x47455420 | GET in request |
|
|
UDP Filters |
udp[0:2] | source port | udp[2:2] | destination port | udp[4:2] | datagram length | udp[6:2] | UDP checksum |
|
|
protocols |
ip[9] == 8 | EGP | ip[9] == 9 | IGP | ip[9] == 88 | EIRGP | ip[9] == 50 | ESP | ip[9] == 51 | AH | ip[9] == 89 | OSPF | ip[9] == 124 | ISIS | | other, see /etc/protocols |
|
|
Routing Protocols |
(udp and port 520) or (host 224.0.0.9) | RIP 1 + 2 | tcp and port 179 | BGP | ip[9] == 8 | EGP | ip[9] == 9 | IGP | ip[9] == 88 | EIRGP | ip[9] == 89 | OSPF | ip[9] == 124 | ISIS |
|
|
ether Filters |
ether[20:2] == 0x2000 | CDP pakets | ether[12:2] == 0x0806 | ARP pakets |
|
|
IPv6 |
ip6 | filters native IPv6 traffic (including ICMPv6) | icmp6 | filters native ICMPv6 traffic | proto ipv6 | filters tunneled IPv6-in-IPv4 traffic | TCP | | ip6 and (ip6[6] == 0x06) | IPv6 TCP | ip6 and (ip6[6] == 0x06) and (ip6[53] == 0x02) | IPv6 TCP Syn | ip6 and (ip6[6] == 0x06) and (ip6[53] == 0x10) | IPv6 TCP ACK | ip6 and (ip6[6] == 0x06) and (ip6[53] == 0x12) | IPv6 TCP Syn/ACK | UDP | | ip6 and (ip6[6] == 0x11) | IPv6 TCP | ICMP | | (ip6[6] == 0x3a) | ICMP v6 | (ip6[6] == 0x3a) and (ip6[40] == 0x01) | ipv6 and type 1 Dest Unreachable | (ip6[6] == 0x3a) and (ip6[40] == 0x02) | ipv6 and type 2 Packet too big | (ip6[6] == 0x3a) and (ip6[40] == 0x03) | ipv6 and type 3 Time Exeedet | (ip6[6] == 0x3a) and (ip6[40] == 0x04) | ipv6 and type 4 Parameter Problem | (ip6[6] == 0x3a) and (ip6[40] == 0x80) | ipv6 and type 128 Echo Request | (ip6[6] == 0x3a) and (ip6[40] == 0x81) | ipv6 and type 129 Echo Reply | (ip6[6] == 0x3a) and (ip6[40] == 0x86) | ipv6 and type 133 Router Solicitation | (ip6[6] == 0x3a) and (ip6[40] == 0x87) | ipv6 and type 134 Router Advertisement | (ip6[6] == 0x3a) and (ip6[40] == 0x88) | ipv6 and type 135 Neighbor Solicitation | (ip6[6] == 0x3a) and (ip6[40] == 0x89) | ipv6 and type 136 Neighbor Advertisement |
|
|
MY Filters |
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' | IP broadcast or multicast packets that were not sent via ethernet broadcast or multicast: |
|
|