做應(yīng)用識別這一塊常常要相應(yīng)用產(chǎn)生的數(shù)據(jù)流量進行分析。
抓包採用wireshark,提取特征時,要對session進行過濾,找到關(guān)鍵的stream,這里總結(jié)了wireshark過濾的基本的語法,供自己以后參考。(腦子記不住東西)
wireshark進行過濾時,依照過濾的語法可分為協(xié)議過濾和內(nèi)容過濾。
對標準協(xié)議,既支持粗粒度的過濾如HTTP,也支持細粒度的、根據(jù)協(xié)議屬性值進行的過濾如tcp.port==53、http.request.method=="GET"。
對內(nèi)容的過濾,既支持深度的字符串匹配過濾如http contains "Server",也支持特定偏移處值的匹配過濾如tcp[20:3] == 47:45:54。
wireshark有兩種過濾器:
捕捉過濾器(CaptureFilters):用于決定將什么樣的信息記錄在捕捉結(jié)果中。
顯示過濾器(DisplayFilters):用于在捕捉結(jié)果中進行具體查找。
捕捉過濾器在抓抱前進行設(shè)置,決定抓取如何的數(shù)據(jù);顯示過濾器用于過濾抓包數(shù)據(jù),方便stream的追蹤和排查。
捕捉過濾器僅支持協(xié)議過濾,顯示過濾器既支持協(xié)議過濾也支持內(nèi)容過濾。
兩種過濾器它們支持的過濾語法并不一樣。
捕捉過濾器 -- 捕捉前根據(jù)協(xié)議的相關(guān)信息進行過濾設(shè)置
語法: | 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位于網(wǎng)絡(luò)10.6.0.0/16,目的IP的TCPport號在200至10000之間,而且目的IP位于網(wǎng)絡(luò) 10.0.0.0/8內(nèi)的全部封包。
字段具體解釋:
Protocol(協(xié)議):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
假設(shè)沒指明協(xié)議類型,則默覺得捕捉全部支持的協(xié)議。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的協(xié)議。
Direction(方向):
可能值: src, dst, src and dst, src or dst
假設(shè)沒指明方向,則默認使用 “src or dst” 作為keyword。
”host 10.2.2.2″與”src or dst host 10.2.2.2″等價。
Host(s):
可能值: net, port, host, portrange.
默認使用”host”keyword,”src 10.1.1.1″與”src host 10.1.1.1″等價。
Logical Operations(邏輯運算):
可能值:not, and, or.
否(“not”)具有最高的優(yōu)先級?;?“or”)和與(“and”)具有同樣的優(yōu)先級,運算時從左至右進行。
“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)”不等價。
顯示過濾器 -- 對捕捉到的數(shù)據(jù)包根據(jù)協(xié)議或包的內(nèi)容進行過濾
1.協(xié)議過濾語法
語法: | Protocol | . | String 1 | . | String 2 | Comparison?operator | ? Value | Logical?Operations | Other?expression |
樣例: | http | ? | request | ? | method? | == | "POST" | or | icmp.type |
string1和string2是可選的。
根據(jù)協(xié)議過濾時,可直接通過協(xié)議來進行過濾,也能根據(jù)協(xié)議的屬性值進行過濾。
按協(xié)議進行過濾:
snmp || dns || icmp | 顯示SNMP或DNS或ICMP封包。 |
按協(xié)議的屬性值進行過濾:
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網(wǎng)段的封包 。 |
tcp.port == 25 | 顯示來源或目的TCPport號為25的封包。 |
tcp.dstport == 25 | 顯示目的TCPport號為25的封包。 |
http.request.method== "POST" | 顯示post請求方式的http封包。 |
http.host == "tracker.1ting.com" | 顯示請求的域名為 tracker.1ting.com 的 http封包。 |
tcp.flags.syn == 0×02 | 顯示包括TCP SYN標志的封包。 |
2.內(nèi)容過濾語法
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字節(jié),所以這個是對payload的前三個字節(jié)進行過濾 */
http.host[0:4] == "trac"
過濾中函數(shù)的使用(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過濾支持比較運算符、邏輯運算符,內(nèi)容過濾時還能使用位運算。
假設(shè)過濾器的語法是正確的,表達式的背景呈綠色。假設(shè)呈紅色,說明表達式有誤。
參考:
wireshark的HELP-Manual Pages-Wireshark Filter
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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