国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

網(wǎng)絡(luò)流量分析(一)
2007-01-22   

以往關(guān)于入侵分析的文章都把注意力集中在可疑的數(shù)據(jù)包(TCP包或者保留的IP地址)上.但是弄清楚什么是正常的網(wǎng)絡(luò)數(shù)據(jù)流也是非常重要的.知道什么是正常數(shù)據(jù)流最好的辦法就是先產(chǎn)生一些正常的數(shù)據(jù)流,然后攔截?cái)?shù)據(jù)包進(jìn)行分析.在本文中,本人介紹一些截獲數(shù)據(jù)包的工具并對截獲數(shù)據(jù)進(jìn)行一些分析,順帶說一下非正常的數(shù)據(jù)流.學(xué)習(xí)本文的前提在于你已經(jīng)有TCP/IP的基礎(chǔ).

現(xiàn)在已經(jīng)有了 很多截獲數(shù)據(jù)包的工具,最有名的是UNIX下的TCPDUMP和WINDOWS下面的WINDUMP.我在自己家98的機(jī)器上用過WINDUMP2.1,用CABLE MODEM上網(wǎng)攔截?cái)?shù)據(jù)包,不過需要指出的是:未經(jīng)授權(quán)而攔截?cái)?shù)據(jù)包時(shí)你可千萬要小心啊.
WINDUMP基礎(chǔ)
WINDUMP使用起來很簡單,在它的站點(diǎn)上你可以找到使用文件.我經(jīng)常用的命令是WINDUMP –N –S,或者WINDUMP –n –S –v 或者WINDUMP –n-S-vv.-N是不顯示計(jì)算機(jī)名而直接顯示IP地址;-S是顯示TCP/IP的實(shí)際進(jìn)程數(shù),如果不選擇這個(gè)選項(xiàng),可能出現(xiàn)的就是近似值,比如:如果現(xiàn)在的進(jìn)程數(shù)是87334271,下一秒變成了多了一個(gè),就會顯示出來是87334272.-V和-VV是讓機(jī)器顯示更加全面的信息,顯示諸如存活時(shí)間/IP的ID等信息.
在開始剖析例子之前,我們先看一下WINDUMP記錄的不同種類的數(shù)據(jù)包,這里有一個(gè)TCP的例子,
13:45:19.184932 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: P 4138420250:4138420282(32) ack
87334272 win 32120 (DF)

13:45:19.184932 [timestamp]??sshserver.xx.yy.zz.22 [source address and port]??>
mypc.xx.yy.zz.3164: [destination address and port]??P [TCP flags]??4138420250:4138420282
[sequence numbers]??(32) [bytes of data]??ack 87334272 [acknowledgment flag and number]??win
32120 [window size]??(DF) [don't fragment flag is set]

and then gives the number of data bytes in the packet:
下一個(gè)是UDP的例子,里面也是該有的全有了:時(shí)戳/數(shù)據(jù)源地址和端口/目的地地址和端口,最后還招供了使用的協(xié)議(UDP)和數(shù)據(jù)包里面的數(shù)據(jù)數(shù)
15:19:14.490029 208.148.96.68.23079 > mypc.xx.yy.zz.6976:?udp 401

ICMP包格式也是類似的,只是注意一下最后,出現(xiàn)了存活時(shí)間和IP的ID,當(dāng)然,你要使用-V選項(xiàng)
18:33:45.649204 mypc.xx.yy.zz > 64.208.34.100: icmp: echo request (ttl 4, id 56693)

最后,WINDUMP也抓獲ARP請求和回復(fù).我們來看看:第一行是ARP請求;在這個(gè)例子里,MYPC把MAC地址為24.167.235.1的機(jī)器信息發(fā)送MYPC.XX.YY.ZZ(MYPC的IP地址),第二行則顯示了ARP回復(fù),包含著24.167.235.1這個(gè)MAC地址.
13:45:13.836036 arp who-has 24.167.235.1 tell mypc.xx.yy.zz
13:45:13.841823 arp reply 24.167.235.1 is-at 0:xx:xx:xx:xx:xx

UDP和ICMP例子
上面我們已經(jīng)看過了WINDUMP的記錄格式,接下來我們看看數(shù)據(jù)包:MYPC使用DHCP來獲得IP地址,而DHCP租用是定時(shí)更新的,這個(gè)過程是從MYPC的68端口到DHCP機(jī)器的67端口,然后由DHCP服務(wù)器回送到MYPC
18:47:02.667860 mypc.xx.yy.zz.68 > dnsserver.xx.yy.zz.67:?xid:0x8d716e0f C:mypc.xx.yy.zz [|bootp]
18:47:03.509471 dnsserver.xx.yy.zz.67 > mypc.xx.yy.zz.68:?xid:0x8d716e0f C:mypc.xx.yy.zz
Y:mypc.xx.yy.zz [|bootp]
WINDUMP的一個(gè)好處就在于它可以自動識別協(xié)議和記錄的其他信息,在這個(gè)例子里,他就識別出這是一個(gè)BOOTP,所以它不僅記錄了標(biāo)準(zhǔn)的UDP記錄,而且記錄了BOOTP的特定信息:XID,C,Y.
現(xiàn)在我們來看看一些ICMP數(shù)據(jù):一個(gè)例子就是你在98機(jī)器上使用TRACERT命令時(shí)出現(xiàn)的數(shù)據(jù)流,WINDOWS使用ICMP來識別系統(tǒng)之間的跳(UNIX則使用UDP).
WINDOWS在執(zhí)行路由追蹤時(shí)先向目的主機(jī)發(fā)送3個(gè)ICMP包,將存活時(shí)間設(shè)為1,這意味著當(dāng)數(shù)據(jù)包到達(dá)第一跳時(shí),數(shù)值會降為0.此時(shí).第一跳的機(jī)器會將ICMP超時(shí)錯(cuò)的信息回送到主機(jī),主機(jī)就再發(fā)出3個(gè)ICMP包,將跳數(shù)設(shè)為2,所以這會就可以在時(shí)延結(jié)束前到達(dá)第二跳的機(jī)器,第二跳的機(jī)器就又將時(shí)延錯(cuò)回送到主機(jī),主機(jī)重新再發(fā)ICMP包,如此這般,直到找到目標(biāo)機(jī)或者中間有一關(guān)將數(shù)據(jù)流截?cái)酁橹?
which is one of the intermediate network devices between mypc and 64.208.34.100.
這里就有一個(gè)路由追蹤的例子,ICMP的時(shí)延值已經(jīng)被設(shè)為1,2,3而且都已經(jīng)過期,由于尚未到達(dá)最終目的機(jī),WINDOWS開始發(fā)送時(shí)延設(shè)為4的ICMP包,這里是第一個(gè)數(shù)據(jù)包和回復(fù) ,請注意雖然第一個(gè)數(shù)據(jù)包的目的地址是64.208.34.100,回復(fù)卻來自于24.95.80.133,這是MYPC和64.208.34.100之間的一個(gè)網(wǎng)絡(luò)設(shè)施的地址.
18:33:45.649204 mypc.xx.yy.zz > 64.208.34.100: icmp: echo request (ttl 4, id 56693)
18:33:45.668638 24.95.80.133 > mypc.xx.yy.zz: icmp: time exceeded in-transit (ttl 252, id 0)

在收到時(shí)延錯(cuò)誤信息的千分之一秒內(nèi),MYPC發(fā)出后續(xù)的ICMP包,在收到數(shù)據(jù)包的錯(cuò)誤信息時(shí),機(jī)器立即發(fā)送出第三個(gè)ICMP包:
18:33:45.669968 mypc.xx.yy.zz > 64.208.34.100: icmp: echo request (ttl 4, id 56949)
18:33:45.690719 24.95.80.133 > mypc.xx.yy.zz: icmp: time exceeded in-transit (ttl 252, id 0)
18:33:45.691863 mypc.xx.yy.zz > 64.208.34.100: icmp: echo request (ttl 4, id 57205)
18:33:45.710787 24.95.80.133 > mypc.xx.yy.zz: icmp: time exceeded in-transit (ttl 252, id 0)

請注意這些數(shù)據(jù)相當(dāng)近似,只是每一個(gè)ICMP回應(yīng)請求中IP的ID號不同,這點(diǎn)很重要,我們應(yīng)該對IP的ID號雷同的現(xiàn)象引起高度的重視.

檢測SSH進(jìn)程
SSH是一個(gè)更加典型的數(shù)據(jù)流.我在工作站上裝了個(gè)SSH的客戶并連接到一個(gè)開了俺帳戶的機(jī)器上.
我有用于連接到SSH服務(wù)器上的SSH的客戶端軟件.我的機(jī)器并不直到SSH服務(wù)器的IP地址,所以他需要DNS的服務(wù),不幸的是,我的機(jī)器上又使不了DNS,所以沒辦法的辦法之一就是先使ARP取得默認(rèn)網(wǎng)關(guān)的MAC地址.
13:45:13.836036 arp who-has gateway.xx.yy.zz tell mypc.xx.yy.zz
13:45:13.841823 arp reply gateway.xx.yy.zz is-at 0:xx:xx:xx:xx:xx

would expect with a DNS query:
現(xiàn)在可以連接到網(wǎng)關(guān)上了,MYPC可以發(fā)出如下所示的DNS請求,請注意MYPC使用了大于1023的端口,要求建立到DNS的53端口的連接,這種請求使用的是UDP協(xié)議
13:45:13.841920 mypc.xx.yy.zz.3163 > dnsserver.xx.yy.zz.53:?1+ A? sshserver. (32)

DNS請求的結(jié)果是”1+A SSHSERVER”,我們可以認(rèn)為這是一個(gè)IP地址的進(jìn)程,因?yàn)锳和+證明我們要求的是一個(gè)循環(huán)進(jìn)程,1是DNS請求數(shù),用于匹配DNS的請求和回復(fù),SSHSERVER則是我們要解析的名字
以下是DNS服務(wù)器的回應(yīng):
13:45:13.947208 dnsserver.xx.yy.zz.53 > mypc.xx.yy.zz.3163:?1 q: sshserver. 3/4/6 sshserver. CNAME
ssh2server., ssh2server. CNAME ssh3server., ssh3server. A sshserver.xx.yy.zz (283)

回復(fù)情況由"1 q: sshserver. 3/4/6"體現(xiàn),1是DNS的進(jìn)程序號, "q: sshserver."是顯示我們的請求,3/4/6是顯示有3個(gè)回復(fù),4個(gè)標(biāo)準(zhǔn)記錄和6個(gè)額外記錄,和SSHSERVER連接的IP地址方在A后面
現(xiàn)在我們知道了SSH服務(wù)器的IP地址,就可以連上去了,MYPC開始三次握手:


13:45:13.956853 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: S 87334271:87334271(0) win 65535?(DF)
13:45:14.059243 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: S 4138420249:4138420249(0) ack 87334272
win 32120?(DF)
13:45:14.059475 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: . 87334272:87334272(0) ack 4138420250
win 65535 (DF)

三次握手完成,記住:即使2臺機(jī)器在SSH端口建立了連接,我也沒有登錄到SSH服務(wù)器上去,在3次握手完成前機(jī)器間并沒有數(shù)據(jù)交流.SSH客戶和服務(wù)器是建立了SSH進(jìn)程,通過下面的數(shù)據(jù)包進(jìn)行交流:
13:45:19.184932 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: P 4138420250:4138420282(32) ack
87334272 win 32120 (DF)
13:45:19.201814 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: P 87334272:87334314(42) ack 4138420282
win 65503 (DF)
13:45:19.300401 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: . 4138420282:4138420282(0) ack 87334314
win 32120 (DF)
13:45:19.300616 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: P 87334314:87334690(376) ack 4138420282
win 65503 (DF)
13:45:19.303977 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: P 4138420282:4138421210(928) ack
87334314 win 32120 (DF)
13:45:19.422141 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: . 4138421210:4138421210(0) ack 87334690
win 32120 (DF)
13:45:19.488282 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: . 87334690:87334690(0) ack 4138421210
win 64575 (DF)

sshserver's port 22.
我敲了密碼,正式作為用戶登錄了進(jìn)去,所有我使用SSH服務(wù)器所產(chǎn)生的數(shù)據(jù)流都很類似,在MYPC的3136端口和SERVER的22端口之間,有PSH/ACK和ACK包.
我從SSHSERVER注銷的時(shí)候,服務(wù)器和客戶機(jī)之間也有數(shù)據(jù)流產(chǎn)生,客戶機(jī)收到來自服務(wù)器的最后數(shù)據(jù):
13:45:33.791528 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: P 87335442:87335474(32) ack 4138426586
win 64359 (DF)
13:45:33.902690 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: . 4138426586:4138426586(0) ack 87335474
win 32120 (DF)

一旦收到這個(gè)數(shù)據(jù),客戶機(jī)就自動斷開連接,服務(wù)器確認(rèn)斷開:
13:45:33.902909 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: F 87335474:87335474(0) ack 4138426586
win 64359 (DF)
13:45:34.002179 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: . 4138426586:4138426586(0) ack 87335475
win 32120 (DF)
13:45:34.003336 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.3164: F 4138426586:4138426586(0) ack 87335475
win 32120 (DF)
13:45:34.003492 mypc.xx.yy.zz.3164 > sshserver.xx.yy.zz.22: . 87335475:87335475(0) ack 4138426587
win 64359 (DF)

所以,我們可以歸納出SSH連接的5個(gè)步驟:
(1)使用ARP確認(rèn)MYPC的默認(rèn)網(wǎng)關(guān)的MAC地址
(2)發(fā)出DNS請求確認(rèn)SSH服務(wù)器的IP地址
(3)MYPC的高端口和SSHSERVER低端口間的三次TCP握手
(4)MYPC和SSHSERVER之間的數(shù)據(jù)交流,包括建立SSH連接,用戶認(rèn)證和數(shù)據(jù)傳輸.
(5)MYPC和服務(wù)器間的TCP連接斷開
在這個(gè)例子里,SSH客戶機(jī)使用的是高端口(高于1023).在一般連接里,客戶機(jī)使用的高端口而服務(wù)器使用的是低端口,但是需要引起注意的是很多SSH的客戶機(jī)也使用低端口,所以千萬別讓一個(gè)和本文例子不同的情況把你給弄糊涂了

在和SSH類似的連接里,有更多的如TELNET等協(xié)議
結(jié)論
對例行的網(wǎng)絡(luò)流量進(jìn)行分析是好好了解TCP/IP和我們環(huán)境的好辦法,每次我攔截?cái)?shù)據(jù)包時(shí),我總能學(xué)到點(diǎn)新東西,如果你對本文有了興趣, 我強(qiáng)烈建議你生產(chǎn)/攔截并分析你自己的數(shù)據(jù)包, 我只是稍微進(jìn)行 了一些介紹,后面將繼續(xù)介紹更多的數(shù)據(jù)流分析,尤其是FTP和HTTP.


以下為作者簡介:
Karen Frederick is a senior security engineer for NFR Security. Karen has a B.S. in Computer Science and is completing her Master's thesis in intrusion detection through the University of Idaho's Engineering Outreach program. She holds several certifications, including Microsoft Certified Systems Engineer + Internet, Check Point Certified Security Administrator, and SANS GIAC Certified Intrusion Analyst. Karen is one of the authors and editors of "Intrusion Signatures and Analysis", a new book on intrusion detection that was published in January 2001.

[1]

熱詞搜索:

上一篇:鏈接廣泛度全攻略(二)
下一篇:網(wǎng)絡(luò)流量分析(二)

分享到: 收藏
主站蜘蛛池模板: 漠河县| 宜章县| 东城区| 洪雅县| 石河子市| 横峰县| 五华县| 安图县| 榆林市| 肃南| 施甸县| 巴青县| 桃园县| 兴国县| 江永县| 五常市| 阳泉市| 襄樊市| 珲春市| 天峻县| 石渠县| 南开区| 宁津县| 察雅县| 华蓥市| 山西省| 东阳市| 兴国县| 德江县| 青河县| 盘锦市| 德保县| 南皮县| 岑溪市| 竹溪县| 罗甸县| 岳阳市| 安乡县| 和林格尔县| 资阳市| 高邮市|