久久综合伊人噜噜色,日本三级香港三级人妇电影精品,亚洲中文色资源,国产高清一区二区三区人妖

      <small id="r7w9x"></small>
          <td id="r7w9x"></td><sub id="r7w9x"><menu id="r7w9x"><samp id="r7w9x"></samp></menu></sub>
        1. <th id="r7w9x"></th>
          1. 汶上信息港

            標(biāo)題: IP欺騙的技術(shù) [打印本頁]

            作者: 雜七雜八    時(shí)間: 2011-1-13 17:01
            標(biāo)題: IP欺騙的技術(shù)
            。 9 N* S1 C! N$ v+ V" p& a
            IP欺騙的技術(shù)比較復(fù)雜,不是簡單地照貓畫老虎就能掌握,但作為常規(guī)攻擊手段,有必要理解其原理,至少有利于自己的安全防范,易守難攻嘛。
            % W3 @/ f  H' s5 {- Z0 a  b& G! h$ J7 U" h; \' Q) o; V# }
            假設(shè)B上的客戶運(yùn)行rlogin與A上的rlogind通信: - m" g8 z$ w( `" Z# Y9 p: g

            & D4 j3 \/ z/ B2 q- ?# y/ A1. B發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)段通知A需要建立TCP連接。并將TCP報(bào)頭中的sequence number設(shè)置成自己本次連接的初始值ISN。 ' ~5 W  r# v* p1 M8 C0 b3 ~2 a! g* h
            7 R. T2 |  l+ a- H/ x
            2. A回傳給B一個(gè)帶有SYS+ACK標(biāo)志的數(shù)據(jù)段,告之自己的ISN,并確認(rèn)B發(fā)送來的第一個(gè)數(shù)據(jù)段,將acknowledge number設(shè)置成B的ISN+1。 4 d, [9 w- S! [) s) b* W
            . b5 A# o, I# b; \  m0 q" r
            3. B確認(rèn)收到的A的數(shù)據(jù)段,將acknowledge number設(shè)置成A的ISN+1。 7 ?8 t1 l' z; m0 [( }, M  l
            & B# x' K3 `% B  H" |$ F
            B ---- SYN ----> A , {. H. a( c' x$ Z( x4 o$ B9 M
            B <---- SYN+ACK A
            + L+ [* C! W' C* [6 C6 PB ---- ACK ----> A
            & o3 }2 S- o" G3 P9 c% J3 F4 U" D8 p' E+ D1 ^+ `9 ^+ u
            TCP使用的sequence number是一個(gè)32位的計(jì)數(shù)器,從0-4294967295。TCP為每一個(gè)連接選擇一個(gè)初始序號ISN,為了防止因?yàn)檠舆t、重傳等擾亂三次握手,ISN不能隨便選取,不同系統(tǒng)有不同算法。理解TCP如何分配ISN以及ISN隨時(shí)間變化的規(guī)律,對于成功地進(jìn)行IP欺騙攻擊很重要。
            - B' ^& d  S: o% T4 V9 q1 C
            + P5 q' t( u: O7 ~7 K基于遠(yuǎn)程過程調(diào)用RPC的命令,比如rlogin、rcp、rsh等等,根據(jù)/etc/hosts.equiv以及$HOME/.rhosts文件進(jìn)行安全校驗(yàn),其實(shí)質(zhì)是僅僅根據(jù)信源IP地址進(jìn)行用戶身份確認(rèn),以便允許或拒絕用戶RPC。關(guān)于上述兩個(gè)文件請man,不喜歡看英文就去Unix版看看我以前灌過的一瓢水。
            0 p' `! {( g9 G8 m; @* n4 \
            / t+ p( S7 ~0 Z9 p) H" SIP欺騙攻擊的描述:
            4 R+ x- }/ k# @6 U
            4 D+ Q6 n- M+ _  w1. 假設(shè)Z企圖攻擊A,而A信任B,所謂信任指/etc/hosts.equiv和$HOME/.rhosts中有相關(guān)設(shè)置。注意,如何才能知道A信任B呢?沒有什么確切的辦法。我的建議就是平時(shí)注意搜集蛛絲 & E% j' |* ?0 R; ~/ c* j( O
            馬跡,厚積薄發(fā)。一次成功的攻擊其實(shí)主要不是因?yàn)榧夹g(shù)上的高明,而是因?yàn)樾畔⑺鸭膹V泛翔實(shí)。動(dòng)用了自以為很有成就感的技術(shù),卻不比人家酒桌上的巧妙提問,攻擊只以成功為終極目標(biāo),不在乎手段。
            " z" L! J/ Z! W0 j% t% i; u/ u
            ; l2 N; B  `$ _, @, o1 d2. 假設(shè)Z已經(jīng)知道了被信任的B,應(yīng)該想辦法使B的網(wǎng)絡(luò)功能暫時(shí)癱瘓,以免對攻擊造成干擾。著名的SYN flood常常是一次IP欺騙攻擊的前奏。請看一個(gè)并發(fā)服務(wù)器的框架:
              l' b4 {: {3 i0 p4 c8 F6 _
            7 Y( J! u0 n; m( hint initsockid, newsockid;
            $ ?7 a8 _9 Z& A+ G0 M' kif ((initsockid = socket(...)) <0) { 3 `1 O; E. Q6 F5 }* M7 O9 M* ?1 z* N
            error("can't create socket");
            $ V# K. I+ _+ T) b8 e: p- B( D9 X} , H* h$ Q" r( }( s' o
            if (bind(initsockid, ...) <0) {
            . W+ t$ z  ], X2 l# B1 K2 d' serror("bind error"); $ x  e/ }( D* f3 p
            }
            1 X; j" w, t) p! l/ Xif (listen(initsockid, 5) <0) { ( n. i" o' H9 H5 \
            error("listen error");
            : f  t# b4 j1 x7 G' c/ Q- K* ^} & B3 S7 o+ i5 P$ y' q' Y1 W2 _
            for (;;) { 4 K' X1 [# }$ j9 y
            newsockid = accept(initsockid, ...); /* 阻塞 */
            8 ~  y# M2 r/ `. W0 E! n  Oif (newsockid <0) {
            ( Q/ A: k$ W( S" K' I% W" ]error("accept error"); # N4 W0 u0 c+ f0 f  |# P$ u$ O8 b6 a
            }
            7 f$ A1 m7 ~! h" F' S& t8 g( Dif (fork() == 0) { /* 子進(jìn)程 */
            ( _" [' N" j7 g7 g$ _1 Q  yclose(initsockid);   c: J% B9 g( M: N# Y: k
            do(newsockid); /* 處理客戶方請求 */ ! Z* r9 N) Z! b& ?% N& }
            exit(0); ) H# t6 ?& R: I" |5 l& C6 y$ O
            }
            & W' H% q/ Y% \: {# F0 w- vclose(newsockid);
            6 u5 u1 e, h$ N- T} 6 D$ k6 i- ]- T) V: h9 r
            ; ~2 \1 }% A$ x) i! O
            listen函數(shù)中第二個(gè)參數(shù)是5,意思是在initsockid上允許的最大連接請求數(shù)目。如果某個(gè)時(shí)刻initsockid上的連接請求數(shù)目已經(jīng)達(dá)到5,后續(xù)到達(dá)initsockid的連接請求將被TCP丟棄。注意一旦連接通過三次握手建立完成,accept調(diào)用已經(jīng)處理這個(gè)連接,則TCP連接請求隊(duì)列空出一個(gè)位置。所以這個(gè)5不是指initsockid上只能接受5個(gè)連接請求。SYN flood正是一種Denial of Service,導(dǎo)致B的網(wǎng)絡(luò)功能暫 碧被盡?nbsp;
            0 _, N3 x$ }: F
            # h0 O. t: Y" ]$ rZ向B發(fā)送多個(gè)帶有SYN標(biāo)志的數(shù)據(jù)段請求連接,注意將信源IP地址換成一個(gè)不存在的主機(jī)X;B向子虛烏有的X發(fā)送SYN+ACK數(shù)據(jù)段,但沒有任何來自X的ACK出現(xiàn)。B的IP層會報(bào)告B的TCP層,X不可達(dá),但B的TCP層對此不予理睬,認(rèn)為只是暫時(shí)的。于是B在這個(gè)initsockid上再也不能接收正常的連接請求。 0 D& U$ o! X+ r6 l3 _4 m

            ! S+ \% P5 x; L; e! N$ DZ(X) ---- SYN ----> B % p. X6 u- {9 _. E) W% p, R# O$ \4 t
            Z(X) ---- SYN ----> B : y4 A* X3 M- |0 v9 I
            Z(X) ---- SYN ----> B
            * k  ]$ m2 T5 ~. _" ^, J( xZ(X) ---- SYN ----> B
            , i% G, O* Q1 FZ(X) ---- SYN ----> B / ~& _1 V) P, ^' e
            ...... 7 d# H" ~" i+ M; z4 i/ X0 E& A
            X <---- SYN+ACK B
            2 m* ~/ o2 F, e+ F, X; i5 LX <---- SYN+ACK B
            6 \7 j$ V" k  g- \5 [X <---- SYN+ACK B
            1 @$ z. y" t! w( ]- pX <---- SYN+ACK B 6 B& L  L; [0 B5 w  a" c- d2 i
            X <---- SYN+ACK B 9 R7 r0 q6 k1 ^9 q# \* g
            ......
            " {6 [: N' g1 J. H- m* y" d& g) l
            + b; F4 ^3 w3 t7 r作者認(rèn)為這樣就使得B網(wǎng)絡(luò)功能暫時(shí)癱瘓,可我覺得好象不對頭。因?yàn)锽雖然在initsockid上無法接收TCP連接請求,但可以在another initsockid上接收,這種SYN flood應(yīng)該只對特定的 3 N0 D3 H* A& ~8 g, s' x
            服務(wù)(端口),不應(yīng)該影響到全局。當(dāng)然如果不斷地發(fā)送連接請求,就和用ping發(fā)洪水包一個(gè)道理,使得B的TCP/IP忙于處理負(fù)載增大。至于SYN flood,回頭有機(jī)會我單獨(dú)灌一瓢有關(guān)DoS的。如何使B的網(wǎng)絡(luò)功能暫 碧被居 很多辦法,根據(jù)具體情況而定,不再贅述。 ; D9 g; y& @+ F# E' V5 B

            ( X# c5 ], J/ p  V* b; B3. Z必須確定A當(dāng)前的ISN。首先連向25端口(SMTP是沒有安全校驗(yàn)機(jī)制的),與1中類似,不過這次需要記錄A的ISN,以及Z到A的大致的RTT(round trip time)。這個(gè)步驟要重復(fù)多次以便求出 & j' E! P( U1 w" Z
            RTT的平均值?,F(xiàn)在Z知道了A的ISN基值和增加規(guī)律(比如每秒增加128000,每次連接增加64000),也知道了從Z到A需要RTT/2的時(shí)間。必須立即進(jìn)入攻擊,否則在這之間有其他主機(jī)與A連接,
            * |* ?) E0 j7 m7 V4 n7 \ISN將比預(yù)料的多出64000。
              |# s! n; \1 s6 L* C( X* `. U
            # ~; L; g  P6 C, l* j4. Z向A發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)段請求連接,只是信源IP改成了B,注意是針對TCP513端口(rlogin)。A向B回送SYN+ACK數(shù)據(jù)段,B已經(jīng)無法響應(yīng)(憑什么?按照作者在2中所說,估計(jì)還達(dá)不到這個(gè)效果,因?yàn)閆必然要模仿B發(fā)起connect調(diào)用,connect調(diào)用會完成全相關(guān),自動(dòng)指定本地socket地址和端口,可事實(shí)上B很可能并沒有這樣一個(gè)端口等待接收數(shù)據(jù)。除非Z模仿B發(fā)起 1 o% K' k9 N% U, J; _2 I
            連接請求時(shí)打破常規(guī),主動(dòng)在客戶端調(diào)用bind函數(shù),明確完成全相關(guān),這樣必然知道A會向B的某個(gè)端口回送,在2中也針對這個(gè)端口攻擊B??墒侨绻@樣,完全不用攻擊B,bind的時(shí)候
            # u" c  B' Q0 X. S$ C指定一個(gè)B上根本不存在的端口即可。我也是想了又想,還沒來得及看看老外的源代碼,不妥之處有待商榷??傊X得作者好象在蒙我們,他自己也沒有實(shí)踐成功過吧。),B的TCP層只是 4 E0 F0 s( U/ [) ?1 v! _: P- M, R
            簡單地丟棄A的回送數(shù)據(jù)段。 % W6 l( w6 e% z9 B. J; D  S. ^+ Y" b
            * H& P% y$ v! m9 s6 }$ P  M6 f
            5. Z暫停一小會兒,讓A有足夠時(shí)間發(fā)送SYN+ACK,因?yàn)閆看不到這個(gè)包。然后Z再次偽裝成B向A發(fā)送ACK,此時(shí)發(fā)送的數(shù)據(jù)段帶有Z預(yù)測的A的ISN+1。如果預(yù)測準(zhǔn)確,連接建立,數(shù)據(jù)傳送開始。問題在于即使連接建立,A仍然會向B發(fā)送數(shù)據(jù),而不是Z,Z仍然無法看到A發(fā)往B的數(shù)據(jù)段,Z必須蒙著頭按照rlogin協(xié)議標(biāo)準(zhǔn)假冒B向A發(fā)送類似 "cat + + >> ~/.rhosts" 這樣的命令,于是攻擊完成。如果預(yù)測不準(zhǔn)確,A將發(fā)送一個(gè)帶有RST標(biāo)志的數(shù)據(jù)段異常終止連接,Z只有從頭再來。 ( ~! {" f7 J. {" O
            % z( S4 ]) d+ M& C, _) _/ c
            Z(B) ---- SYN ----> A
            1 y' T* x* J' X( W5 V( ^B <---- SYN+ACK A 0 @' F. p0 H+ e! u+ ~5 A
            Z(B) ---- ACK ----> A . n9 m9 E( V. ^5 D( v# X
            Z(B) ---- PSH ----> A ' s* b+ T% Y, L* Y: _
            ......
            % G# S7 m9 `0 v" X$ D4 A- }( I8 i# x6 Q
            6. IP欺騙攻擊利用了RPC服務(wù)器僅僅依賴于信源IP地址進(jìn)行安全校驗(yàn)的特性,建議閱讀rlogind的源代碼。攻擊最困難的地方在于預(yù)測A的ISN。作者認(rèn)為攻擊難度雖然大,但成功的可能性
            7 c0 N  P) [! ?+ J/ b, o$ t也很大,不是很理解,似乎有點(diǎn)矛盾??紤]這種情況,入侵者控制了一臺由A到B之間的路由器,假設(shè)Z就是這臺路由器,那么A回送到B的數(shù)據(jù)段,現(xiàn)在Z是可以看到的,顯然攻擊難度 9 H/ I" I. i( ^  W( ^3 G$ t
            驟然下降了許多。否則Z必須精確地預(yù)見可能從A發(fā)往B的信息,以及A期待來自B的什么應(yīng)答信息,這要求攻擊者對協(xié)議本身相當(dāng)熟悉。同時(shí)需要明白,這種攻擊根本不可能在交互狀態(tài)下完 ; r0 J: w1 f2 y/ t
            成,必須寫程序完成。當(dāng)然在準(zhǔn)備階段可以用netxray之類的工具進(jìn)行協(xié)議分析。 * w: `- W6 d) U6 y  i4 f! d
            + i5 e% t$ M1 h7 {7 J, G! c
            7. 如果Z不是路由器,能否考慮組合使用ICMP重定向以及ARP欺騙等技術(shù)?沒有仔細(xì)分析過,只是隨便猜測而已。并且與A、B、Z之間具體的網(wǎng)絡(luò)拓?fù)溆忻芮嘘P(guān)系,在某些情況下顯然大幅度 $ u0 V: C$ T/ i9 T
            降低了攻擊難度。注意IP欺騙攻擊理論上是從廣域網(wǎng)上發(fā)起的,不局限于局域網(wǎng),這也正是這種攻擊的魅力所在。利用IP欺騙攻擊得到一個(gè)A上的shell,對于許多高級入侵者,得到目標(biāo)主 0 e' k$ z- a3 o5 H+ p2 x
            機(jī)的shell,離root權(quán)限就不遠(yuǎn)了,最容易想到的當(dāng)然是接下來進(jìn)行buffer overflow攻擊。
            2 ^9 h0 {* \% J6 c  x
            ; k+ o  W6 L$ j  I8. 也許有人要問,為什么Z不能直接把自己的IP設(shè)置成B的?這個(gè)問題很不好回答,要具體分析網(wǎng)絡(luò)拓?fù)?,?dāng)然也存在ARP沖突、出不了網(wǎng)關(guān)等問題。那么在IP欺騙攻擊過程中是否存在ARP沖突問題?;叵胛仪懊尜N過的ARP欺騙攻擊,如果B的ARP Cache沒有受到影響,就不會出現(xiàn)ARP沖突。如果Z向A發(fā)送數(shù)據(jù)段時(shí),企圖解析A的MAC地址或者路由器的MAC地址,必然會發(fā)送ARP請求包,但這個(gè)ARP請求包中源IP以及源MAC都是Z的,自然不會引起ARP沖突。而ARP Cache只會被ARP包改變,不受IP包的影響,所以可以肯定地說,IP欺騙攻擊過程中不存在ARP沖突。相反,如果Z修改了自己的IP,這種ARP沖突就有可能出現(xiàn),示具體情況而言。攻擊中連帶B一起攻擊了,其目的無非是防止B干擾了攻擊過程,如果B本身已經(jīng)down掉,那是再好不過(是嗎?)。 9 I1 A3 N7 `. b. x8 L8 o
            8 q$ j/ H! g( ?7 P/ k$ Q8 x
            9. fakeip曾經(jīng)沸沸揚(yáng)揚(yáng)了一下,我對之進(jìn)行端口掃描,發(fā)現(xiàn)其tcp端口113是接收入連接的。和IP欺騙等沒有直接聯(lián)系,和安全校驗(yàn)是有關(guān)系的。當(dāng)然,這個(gè)東西并不如其名所暗示,對IP層沒有任何動(dòng)作。
            1 B' h' I  {7 a- \3 b' a. B- J3 G' |/ U& y3 Q6 C
            10. 關(guān)于預(yù)測ISN,我想到另一個(gè)問題。就是如何以第三方身份切斷A與B之間的TCP連接,實(shí)際上也是預(yù)測sequence number的問題。嘗試過,也很困難。如果Z是A與B之間的路由器,就不用說了;或者Z動(dòng)用了別的技術(shù)可以監(jiān)聽到A與B之間的通信,也容易些;否則預(yù)測太難。作者在3中提到連接A的25端口,可我想不明白的是513端口的ISN和25端口有什么關(guān)系?看來需要看看TCP/IP內(nèi)部實(shí)現(xiàn)的源代碼。
            ) D3 j# i9 y  u% L. \6 p" m
            ; J# D' n6 {! I& c( i  z未雨綢繆
            # R4 k) j9 O" ^2 D% E/ O% R5 ~! d
            雖然IP欺騙攻擊有著相當(dāng)難度,但我們應(yīng)該清醒地意識到,這種攻擊非常廣泛,入侵往往由這里開始。預(yù)防這種攻擊還是比較容易的,比如刪除所有的/etc/hosts.equiv、$HOME/.rhosts文件,修改/etc/inetd.conf文件,使得RPC機(jī)制無法運(yùn)做,還可以殺掉portmapper等等。設(shè)置路由器,過濾來自外部而信源地址卻是內(nèi)部IP的報(bào)文。cisio公司的產(chǎn)品就有這種功能。不過路由器只防得了外部入侵,內(nèi)部入侵呢?
              T' o# N) W1 E/ S6 T7 G: D. m; ]9 k# t7 V3 }
            TCP的ISN選擇不是隨機(jī)的,增加也不是隨機(jī)的,這使攻擊者有規(guī)可循,可以修改與ISN相關(guān)的代碼,選擇好的算法,使得攻擊者難以找到規(guī)律。估計(jì)Linux下容易做到,那solaris、irix、hp-unix還有aix呢?sigh 7 n: m0 l2 t8 C& t
            5 Z( }, `& t8 u1 c2 O* Y
            雖然作者紙上談兵,但總算讓我們了解了一下IP欺騙攻擊,我實(shí)驗(yàn)過預(yù)測sequence number,不是ISN,企圖切斷一個(gè)TCP連接,感覺難度很大。作者建議要找到規(guī)律,不要盲目預(yù)測,這需要時(shí)間和耐心?,F(xiàn)在越發(fā)明白什么是那種鍥而不舍永遠(yuǎn)追求的精神,我們所向往的傳奇故事背后有著如此沉默的艱辛和毅力,但愿我們學(xué)會的是這個(gè),而不是浮華與喧囂。一個(gè)現(xiàn)成的bug足以讓你取得root權(quán)限,可你在做什么,你是否明白?我們太膚淺了......
            6 p8 c: C* D/ O$ R+ W
            淺了......





            歡迎光臨 汶上信息港 (http://m.junkejituan.com/) Powered by Discuz! X3.5