做應用識別這一塊經常要對應用產生的數據流量進行分析。
抓包采用wireshark,提取特征時,要對session進行過濾,找到關鍵的stream,這里總結了wireshark過濾的基本語法,供自己以后參考。(腦子記不住東西)
?
wireshark進行過濾時,按照過濾的語法可分為協議過濾和內容過濾。
對標準協議,既支持粗粒度的過濾如HTTP,也支持細粒度的、依據協議屬性值進行的過濾如tcp.port==53、http.request.method=="GET"。
對內容的過濾,既支持深度的字符串匹配過濾如http contains "Server",也支持特定偏移處值的匹配過濾如tcp[20:3] == 47:45:54。
?
wireshark有兩種過濾器:
?
捕捉過濾器(CaptureFilters):用于決定將什么樣的信息記錄在捕捉結果中。
顯示過濾器(DisplayFilters):用于在捕捉結果中進行詳細查找。
?
捕捉過濾器在抓抱前進行設置,決定抓取怎樣的數據;顯示過濾器用于過濾抓包數據,方便stream的追蹤和排查。
捕捉過濾器僅支持協議過濾,顯示過濾器既支持協議過濾也支持內容過濾。
兩種過濾器它們支持的過濾語法并不一樣。
?
?
捕捉過濾器-- 捕捉前依據協議的相關信息進行過濾設置
?
語法: | Protocol | Direction | Host(s) | Value | Logical Operations | Other expression |
例子: | tcp | dst | 10.1.1.1 | 80 | and | tcp dst 10.2.2.2 3128 |
?
?
示例:
?
(host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8 |
?
捕捉IP為10.4.1.12或者源IP位于網絡10.6.0.0/16,目的IP的TCP端口號在200至10000之間,并且目的IP位于網絡 10.0.0.0/8內的所有封包。
?
字段詳解:
Protocol(協議):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果沒指明協議類型,則默認為捕捉所有支持的協議。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的協議。
Direction(方向):
可能值: src, dst, src and dst, src or dst
如果沒指明方向,則默認使用 “src or dst” 作為關鍵字。
”host 10.2.2.2″與”src or dst host 10.2.2.2″等價。
Host(s):
可能值: net, port, host, portrange.
默認使用”host”關鍵字,”src 10.1.1.1″與”src host 10.1.1.1″等價。
Logical Operations(邏輯運算):
可能值:not, and, or.
否(“not”)具有最高的優先級。或(“or”)和與(“and”)具有相同的優先級,運算時從左至右進行。
“not tcp port 3128 and tcp port 23″與”(not tcp port 3128) and tcp port 23″等價。
“not tcp port 3128 and tcp port 23″與”not (tcp port 3128 and tcp port 23)”不等價。
?
?
顯示過濾器-- 對捕捉到的數據包依據協議或包的內容進行過濾
1.協議過濾語法
語法: | Protocol | . | String 1 | . | String 2 | Comparison?operator | ? Value | Logical?Operations | Other?expression |
例子: | http | ? | request | ? | method? | == | "POST" | or | icmp.type |
?
string1和string2是可選的。
依據協議過濾時,可直接通過協議來進行過濾,也能依據協議的屬性值進行過濾。
?
按協議進行過濾:
?
snmp || dns || icmp | 顯示SNMP或DNS或ICMP封包。 |
?
按協議的屬性值進行過濾:
ip.addr == 10.1.1.1 |
?
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6 |
ip.src == 10.230.0.0/16 | 顯示來自10.230網段的封包。 |
?
tcp.port == 25 | 顯示來源或目的TCP端口號為25的封包。 |
tcp.dstport == 25 | 顯示目的TCP端口號為25的封包。 |
?
http.request.method== "POST" | 顯示post請求方式的http封包。 |
http.host == "tracker.1ting.com" | 顯示請求的域名為tracker.1ting.com的http封包。 |
?
?
tcp.flags.syn == 0×02 | 顯示包含TCP SYN標志的封包。 |
?
2.內容過濾語法
2.1深度字符串匹配
contains ?: Does the protocol, field or slice contain a value
示例
?
tcp contains "http" | 顯示payload中包含"http"字符串的tcp封包。 |
?
?
http.request.uri contains "online" | 顯示請求的uri包含"online"的http封包。 |
?
2.2特定偏移處值的過濾
tcp[20:3] == 47:45:54? ?/* 16進制形式,tcp頭部一般是20字節,所以這個是對payload的前三個字節進行過濾 */
http.host[0:4] == "trac"
過濾中函數的使用(upper、lower)
?
upper(string-field) - converts a string field to uppercase
lower(string-field) - converts a string field to lowercase
示例
upper(http.request.uri) contains "ONLINE"
wireshark過濾支持比較運算符、邏輯運算符,內容過濾時還能使用位運算。
?
如果過濾器的語法是正確的,表達式的背景呈綠色。如果呈紅色,說明表達式有誤。
參考:
wireshark的HELP-Manual Pages-Wireshark Filter
http://blog.csdn.net/yhwxxx/article/details/5643095
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
