中文字幕精品亚洲无线码,99视频在线观看精品29,亚州十八禁免费不卡在线视颖,亚洲香蕉网久久综合影视

<sub id="xxpls"></sub><sub id="xxpls"></sub>

  • <listing id="xxpls"><u id="xxpls"></u></listing>
    <sub id="xxpls"></sub>

  • <sub id="xxpls"><ol id="xxpls"></ol></sub>
    <style id="xxpls"><u id="xxpls"></u></style>
  •  找回密碼
     注冊

    QQ登錄

    只需一步,快速開始

    IP欺騙的技術(shù)

    [復(fù)制鏈接]
    1#
    發(fā)表于 2011-1-13 17:01:50 | 只看該作者 |倒序?yàn)g覽 |閱讀模式
    ' \# |5 w# z+ P, U, T$ g; V- l
    IP欺騙的技術(shù)比較復(fù)雜,不是簡單地照貓畫老虎就能掌握,但作為常規(guī)攻擊手段,有必要理解其原理,至少有利于自己的安全防范,易守難攻嘛。 / ^6 z' p# g: w/ Y: T$ N# i, r

    + K  {, Z& r3 ]: M& t假設(shè)B上的客戶運(yùn)行rlogin與A上的rlogind通信:
    ; J2 C8 R4 p9 x  p6 y: X; A1 A5 e. a/ C# {  W
    1. B發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)段通知A需要建立TCP連接。并將TCP報(bào)頭中的sequence number設(shè)置成自己本次連接的初始值ISN。
    & `0 V. q6 O. t: a
    0 z; b+ O! ?! l4 I, h2. A回傳給B一個帶有SYS+ACK標(biāo)志的數(shù)據(jù)段,告之自己的ISN,并確認(rèn)B發(fā)送來的第一個數(shù)據(jù)段,將acknowledge number設(shè)置成B的ISN+1。
    * }: _. D9 ?% p; v
    1 g$ n% `! _6 M1 M0 F% G0 C# b3. B確認(rèn)收到的A的數(shù)據(jù)段,將acknowledge number設(shè)置成A的ISN+1。 * c6 o7 D2 H% }' D
    1 d0 e3 M& }$ R7 x! w
    B ---- SYN ----> A 9 k/ w& E8 B; ^1 V3 r; Z8 B7 q/ s
    B <---- SYN+ACK A
    + u* N& i" j4 o8 L: ^& v. G1 h9 V  [B ---- ACK ----> A
    ! J# Y% k) |9 u: [+ i' F& ^- b4 J8 x) Y9 l2 d1 e. j+ `, f
    TCP使用的sequence number是一個32位的計(jì)數(shù)器,從0-4294967295。TCP為每一個連接選擇一個初始序號ISN,為了防止因?yàn)檠舆t、重傳等擾亂三次握手,ISN不能隨便選取,不同系統(tǒng)有不同算法。理解TCP如何分配ISN以及ISN隨時間變化的規(guī)律,對于成功地進(jìn)行IP欺騙攻擊很重要。
    3 ?* V3 i$ U7 n* |
    ) s" \+ W6 I9 v基于遠(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)于上述兩個文件請man,不喜歡看英文就去Unix版看看我以前灌過的一瓢水。 9 V% R  A" M/ s2 ^

    , z/ M/ t+ Y) H" b' B6 `IP欺騙攻擊的描述: ; l& d; m; Q# U

    0 c7 S" o) s5 I1 `, ]1. 假設(shè)Z企圖攻擊A,而A信任B,所謂信任指/etc/hosts.equiv和$HOME/.rhosts中有相關(guān)設(shè)置。注意,如何才能知道A信任B呢?沒有什么確切的辦法。我的建議就是平時注意搜集蛛絲
    - A) g/ C, w9 x2 ^, B( N7 W馬跡,厚積薄發(fā)。一次成功的攻擊其實(shí)主要不是因?yàn)榧夹g(shù)上的高明,而是因?yàn)樾畔⑺鸭膹V泛翔實(shí)。動用了自以為很有成就感的技術(shù),卻不比人家酒桌上的巧妙提問,攻擊只以成功為終極目標(biāo),不在乎手段。
    ' z# q5 F) b3 g& @6 U8 R' n, g9 ]
    7 b& n2 U8 f* Q2. 假設(shè)Z已經(jīng)知道了被信任的B,應(yīng)該想辦法使B的網(wǎng)絡(luò)功能暫時癱瘓,以免對攻擊造成干擾。著名的SYN flood常常是一次IP欺騙攻擊的前奏。請看一個并發(fā)服務(wù)器的框架: # v" T7 K. t+ x' A$ n  ]
    7 p/ j; h3 k2 Z2 `* d. M# y
    int initsockid, newsockid;
    7 d: ~7 [; s2 ?if ((initsockid = socket(...)) <0) { - b7 l5 J! s& z" P8 T6 k
    error("can't create socket"); 1 k$ u0 V, N. G: j- y- n7 x# j
    } , c9 r9 f+ g; z6 z0 B
    if (bind(initsockid, ...) <0) {
    ' r$ \% d/ O1 h* F) H# b% |% C/ cerror("bind error");
    : s& {$ Z/ ^( T' E1 Q) [5 w; `} 0 D0 {$ v0 W4 j8 p% Q. }2 a
    if (listen(initsockid, 5) <0) { 0 F6 k- B+ E, M/ g
    error("listen error"); ) S7 Q, C4 m1 h$ T, c
    } $ ?- R: x! j4 a% k3 O, w- P) _
    for (;;) { 0 E4 E8 t3 `" k/ M
    newsockid = accept(initsockid, ...); /* 阻塞 */ # K% s, t# r; ^$ \9 ]
    if (newsockid <0) { 5 p! e7 s: h$ D( q: \
    error("accept error"); 7 {4 ~1 D  @5 J
    }
      }/ R. z4 o' C( a! t% Xif (fork() == 0) { /* 子進(jìn)程 */ * u$ m9 x' y4 a5 _1 t3 E4 m
    close(initsockid); 6 q/ ~9 y. [+ ?& |. S( N8 L# Q
    do(newsockid); /* 處理客戶方請求 */ ; W9 E( c% s/ q, j
    exit(0);
    / B$ ~% c2 G% [. ], v} ' e5 V& n% C8 x+ {- W) X
    close(newsockid); ) Y1 e( v& e' z! v
    } ! [. _, F7 x( k$ \- Z6 o+ b# O3 ^

    $ Q0 v! ]: k4 e3 j; u1 W: nlisten函數(shù)中第二個參數(shù)是5,意思是在initsockid上允許的最大連接請求數(shù)目。如果某個時刻initsockid上的連接請求數(shù)目已經(jīng)達(dá)到5,后續(xù)到達(dá)initsockid的連接請求將被TCP丟棄。注意一旦連接通過三次握手建立完成,accept調(diào)用已經(jīng)處理這個連接,則TCP連接請求隊(duì)列空出一個位置。所以這個5不是指initsockid上只能接受5個連接請求。SYN flood正是一種Denial of Service,導(dǎo)致B的網(wǎng)絡(luò)功能暫 碧被盡?nbsp;% e$ h7 d5 A* T; ^5 q
    : X& J1 s6 S$ |# f2 u& c
    Z向B發(fā)送多個帶有SYN標(biāo)志的數(shù)據(jù)段請求連接,注意將信源IP地址換成一個不存在的主機(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)為只是暫時的。于是B在這個initsockid上再也不能接收正常的連接請求。 $ @: X# s* S% E& I2 N+ P3 l

      G4 f/ m2 w! Q% N) r  C4 rZ(X) ---- SYN ----> B
    ( A3 l6 f* G7 e5 T+ X/ |1 ^Z(X) ---- SYN ----> B
    - ]7 Y5 X) S7 `( h  T) @% hZ(X) ---- SYN ----> B # u2 X9 w; M4 L8 \3 r: `2 N
    Z(X) ---- SYN ----> B ! e; u* m  s" E3 \6 Q. E: \
    Z(X) ---- SYN ----> B
    % |' C0 o: {$ J0 O. |, V! o3 J......
    : G. G$ [% ^+ P: R( u+ I8 {X <---- SYN+ACK B
    3 _# H1 a  l, TX <---- SYN+ACK B ) a, w% O- x- O7 ~4 ^
    X <---- SYN+ACK B
    - ]2 X& w, d/ n5 Y' I3 ~$ WX <---- SYN+ACK B % I/ l0 ^4 R$ d. u0 z( L
    X <---- SYN+ACK B ( K8 h/ O& p3 n6 W/ y
    ......
    5 C" `* w9 D! Q7 e3 x9 O8 |% k, N' d. M3 _0 E* [: _; d
    作者認(rèn)為這樣就使得B網(wǎng)絡(luò)功能暫時癱瘓,可我覺得好象不對頭。因?yàn)锽雖然在initsockid上無法接收TCP連接請求,但可以在another initsockid上接收,這種SYN flood應(yīng)該只對特定的
    0 |# L' }" O5 O; R. \服務(wù)(端口),不應(yīng)該影響到全局。當(dāng)然如果不斷地發(fā)送連接請求,就和用ping發(fā)洪水包一個道理,使得B的TCP/IP忙于處理負(fù)載增大。至于SYN flood,回頭有機(jī)會我單獨(dú)灌一瓢有關(guān)DoS的。如何使B的網(wǎng)絡(luò)功能暫 碧被居 很多辦法,根據(jù)具體情況而定,不再贅述。
    . [9 I: V* O4 v" D1 r1 I8 D; `  X* ]7 i" v0 S$ ^
    3. Z必須確定A當(dāng)前的ISN。首先連向25端口(SMTP是沒有安全校驗(yàn)機(jī)制的),與1中類似,不過這次需要記錄A的ISN,以及Z到A的大致的RTT(round trip time)。這個步驟要重復(fù)多次以便求出 $ K5 x  e8 c& U. f1 X
    RTT的平均值?,F(xiàn)在Z知道了A的ISN基值和增加規(guī)律(比如每秒增加128000,每次連接增加64000),也知道了從Z到A需要RTT/2的時間。必須立即進(jìn)入攻擊,否則在這之間有其他主機(jī)與A連接,
    ! Q0 G, W9 K8 }8 o% VISN將比預(yù)料的多出64000。
    4 t' E% ]2 A# L
    ! C3 J' t3 V* f$ q: k" u4. 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á)不到這個效果,因?yàn)閆必然要模仿B發(fā)起connect調(diào)用,connect調(diào)用會完成全相關(guān),自動指定本地socket地址和端口,可事實(shí)上B很可能并沒有這樣一個端口等待接收數(shù)據(jù)。除非Z模仿B發(fā)起
    8 L9 _" r8 s$ f: _連接請求時打破常規(guī),主動在客戶端調(diào)用bind函數(shù),明確完成全相關(guān),這樣必然知道A會向B的某個端口回送,在2中也針對這個端口攻擊B??墒侨绻@樣,完全不用攻擊B,bind的時候
    " n1 @, Q6 K. g& Q: g指定一個B上根本不存在的端口即可。我也是想了又想,還沒來得及看看老外的源代碼,不妥之處有待商榷??傊?,覺得作者好象在蒙我們,他自己也沒有實(shí)踐成功過吧。),B的TCP層只是 ( \1 t! r6 d3 p0 ?7 g$ z
    簡單地丟棄A的回送數(shù)據(jù)段。 % D1 x- J/ W3 x! e# n; Z+ q

      ^  J: j0 k2 }4 P2 C7 e5. Z暫停一小會兒,讓A有足夠時間發(fā)送SYN+ACK,因?yàn)閆看不到這個包。然后Z再次偽裝成B向A發(fā)送ACK,此時發(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ā)送一個帶有RST標(biāo)志的數(shù)據(jù)段異常終止連接,Z只有從頭再來。 * e5 j2 D4 q* q7 a4 J
    : y1 q! x( m9 X, t! X" W
    Z(B) ---- SYN ----> A
    & E% S( T" ~3 i) T8 }5 [9 FB <---- SYN+ACK A ! }% h& w. Z% X( B# @, S( u8 o5 E
    Z(B) ---- ACK ----> A ; w! e, F2 @, w2 A1 \
    Z(B) ---- PSH ----> A 9 k8 Q6 r! `7 f3 K+ z
    ...... 8 n0 K5 \8 ^: Z/ f) b2 x5 ^

    9 \/ ?( Z# o1 Y. c  m6. IP欺騙攻擊利用了RPC服務(wù)器僅僅依賴于信源IP地址進(jìn)行安全校驗(yàn)的特性,建議閱讀rlogind的源代碼。攻擊最困難的地方在于預(yù)測A的ISN。作者認(rèn)為攻擊難度雖然大,但成功的可能性
    8 c/ b' ~7 H' r8 g9 R3 ?也很大,不是很理解,似乎有點(diǎn)矛盾??紤]這種情況,入侵者控制了一臺由A到B之間的路由器,假設(shè)Z就是這臺路由器,那么A回送到B的數(shù)據(jù)段,現(xiàn)在Z是可以看到的,顯然攻擊難度 # {( m) w1 H0 t3 `8 P
    驟然下降了許多。否則Z必須精確地預(yù)見可能從A發(fā)往B的信息,以及A期待來自B的什么應(yīng)答信息,這要求攻擊者對協(xié)議本身相當(dāng)熟悉。同時需要明白,這種攻擊根本不可能在交互狀態(tài)下完 ) n5 [! y; M. @6 x  O/ |5 m7 j$ k
    成,必須寫程序完成。當(dāng)然在準(zhǔn)備階段可以用netxray之類的工具進(jìn)行協(xié)議分析。
    - w9 t1 U6 L" p
    6 G, b8 R* D+ i, H+ p- `7. 如果Z不是路由器,能否考慮組合使用ICMP重定向以及ARP欺騙等技術(shù)?沒有仔細(xì)分析過,只是隨便猜測而已。并且與A、B、Z之間具體的網(wǎng)絡(luò)拓?fù)溆忻芮嘘P(guān)系,在某些情況下顯然大幅度
    8 ]$ l) [4 w; F) C! u降低了攻擊難度。注意IP欺騙攻擊理論上是從廣域網(wǎng)上發(fā)起的,不局限于局域網(wǎng),這也正是這種攻擊的魅力所在。利用IP欺騙攻擊得到一個A上的shell,對于許多高級入侵者,得到目標(biāo)主
    9 \& n/ b) L- c! j機(jī)的shell,離root權(quán)限就不遠(yuǎn)了,最容易想到的當(dāng)然是接下來進(jìn)行buffer overflow攻擊。 # J/ q" f' j* Q0 c
    2 T8 M+ z5 G1 F6 b' n
    8. 也許有人要問,為什么Z不能直接把自己的IP設(shè)置成B的?這個問題很不好回答,要具體分析網(wǎng)絡(luò)拓?fù)洌?dāng)然也存在ARP沖突、出不了網(wǎng)關(guān)等問題。那么在IP欺騙攻擊過程中是否存在ARP沖突問題。回想我前面貼過的ARP欺騙攻擊,如果B的ARP Cache沒有受到影響,就不會出現(xiàn)ARP沖突。如果Z向A發(fā)送數(shù)據(jù)段時,企圖解析A的MAC地址或者路由器的MAC地址,必然會發(fā)送ARP請求包,但這個ARP請求包中源IP以及源MAC都是Z的,自然不會引起ARP沖突。而ARP Cache只會被ARP包改變,不受IP包的影響,所以可以肯定地說,IP欺騙攻擊過程中不存在ARP沖突。相反,如果Z修改了自己的IP,這種ARP沖突就有可能出現(xiàn),示具體情況而言。攻擊中連帶B一起攻擊了,其目的無非是防止B干擾了攻擊過程,如果B本身已經(jīng)down掉,那是再好不過(是嗎?)。
    - i2 _6 Y: v9 P& N
    # Q& @$ s* O8 Z: W9. fakeip曾經(jīng)沸沸揚(yáng)揚(yáng)了一下,我對之進(jìn)行端口掃描,發(fā)現(xiàn)其tcp端口113是接收入連接的。和IP欺騙等沒有直接聯(lián)系,和安全校驗(yàn)是有關(guān)系的。當(dāng)然,這個東西并不如其名所暗示,對IP層沒有任何動作。
    ! a+ b& G0 M" F& z
    * v& w/ }9 m( L8 j! }# Y" \10. 關(guān)于預(yù)測ISN,我想到另一個問題。就是如何以第三方身份切斷A與B之間的TCP連接,實(shí)際上也是預(yù)測sequence number的問題。嘗試過,也很困難。如果Z是A與B之間的路由器,就不用說了;或者Z動用了別的技術(shù)可以監(jiān)聽到A與B之間的通信,也容易些;否則預(yù)測太難。作者在3中提到連接A的25端口,可我想不明白的是513端口的ISN和25端口有什么關(guān)系?看來需要看看TCP/IP內(nèi)部實(shí)現(xiàn)的源代碼。 - a% l# n" H) x  W$ y8 H

    + e! @' b  d5 ]! f未雨綢繆 : s. x* u! I8 H( M
    7 E! F( W1 X" t; p  B/ P
    雖然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)部入侵呢? & o8 j3 O2 E& {+ W5 a
    ) M" U' S: H/ Q, C; m) W- {
    TCP的ISN選擇不是隨機(jī)的,增加也不是隨機(jī)的,這使攻擊者有規(guī)可循,可以修改與ISN相關(guān)的代碼,選擇好的算法,使得攻擊者難以找到規(guī)律。估計(jì)Linux下容易做到,那solaris、irix、hp-unix還有aix呢?sigh
    2 `# l8 R% m0 ?
    1 F2 n# s  s3 k6 C. l& O- T$ H' |雖然作者紙上談兵,但總算讓我們了解了一下IP欺騙攻擊,我實(shí)驗(yàn)過預(yù)測sequence number,不是ISN,企圖切斷一個TCP連接,感覺難度很大。作者建議要找到規(guī)律,不要盲目預(yù)測,這需要時間和耐心?,F(xiàn)在越發(fā)明白什么是那種鍥而不舍永遠(yuǎn)追求的精神,我們所向往的傳奇故事背后有著如此沉默的艱辛和毅力,但愿我們學(xué)會的是這個,而不是浮華與喧囂。一個現(xiàn)成的bug足以讓你取得root權(quán)限,可你在做什么,你是否明白?我們太膚淺了...... 4 Q5 e+ b1 S5 ]* ^. C  i! \
    淺了......
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規(guī)則

    QQ|本地廣告聯(lián)系: QQ:905790666 TEL:13176190456|Archiver|手機(jī)版|小黑屋|汶上信息港 ( 魯ICP備19052200號-1 )

    GMT+8, 2025-8-12 16:00

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回復(fù) 返回頂部 返回列表