必威电竞|足球世界杯竞猜平台

會話劫持
來源:互聯(lián)網(wǎng)

在現(xiàn)實生活中,比如你去市場買菜,在交完錢后你要求先去干一些別的事情,稍候再來拿菜;如果這個時候某個陌生人要求把菜拿走,賣菜的人會把菜給陌生人嗎?!當(dāng)然,這只是一個比喻,但這恰恰就是會話劫持的喻意。所謂會話,就是兩臺主機之間的一次通訊。

你有一張某商場的禮品卡,但是禮品卡別人偷了,偷卡的人拿著你的禮品卡去商場消費,商戶還是會認(rèn)的對吧,認(rèn)卡不認(rèn)人,會話劫持同理。

內(nèi)容簡介

例如你Telnet到某臺主機,這就是一次Telnet會話;你瀏覽某個網(wǎng)站,這就是一次HTTP會話。而會話劫持(Session Hijack),就是結(jié)合了嗅探以及欺騙技術(shù)在內(nèi)的攻擊手段。例如,在一次正常的會話過程當(dāng)中,攻擊者作為第三方參與到其中,他可以在正常數(shù)據(jù)包中插入惡意數(shù)據(jù),也可以在雙方的會話當(dāng)中進(jìn)行監(jiān)聽,甚至可以是代替某一方主機接管會話。

我們可以把會話劫持攻擊分為兩種類型:

1)中間人攻擊(Man In The Middle,簡稱MITM),

2)注射式攻擊(Injection);

并且,還可以把會話劫持攻擊分為兩種形式:

1)被動劫持,

2)主動劫持;

被動劫持實際上就是在后臺監(jiān)視雙方會話的數(shù)據(jù)流,從中獲得敏感數(shù)據(jù);而主動劫持則是將會話當(dāng)中的某一臺主機“踢”下線,然后由攻擊者取代并接管會話,這種攻擊方法危害非常大,攻擊者可以做很多事情,比如“cat etc/master.passwd”(FreeBSD下的Shadow文件)。

原理結(jié)構(gòu)

會話劫持利用了TCP/IP工作原理來設(shè)計攻擊。TCP使用端到端的連接,即TCP用(源IP,源TCP端口號,目的IP,目的TCP端號)來唯一標(biāo)識每一條已經(jīng)建立連接的TCP鏈路。另外,TCP在進(jìn)行數(shù)據(jù)傳輸時,TCP報文首部的兩個字段序號(seq)和確認(rèn)序號(ackseq)非常重要。序號(seq)和確認(rèn)序號(ackseq)是與所攜帶TCP數(shù)據(jù)凈荷(payload)的多少有數(shù)值上的關(guān)系:序號字段(seq)指出了本報文中傳送的數(shù)據(jù)在發(fā)送主機所要傳送的整個數(shù)據(jù)流中的順序號,而確認(rèn)序號字段(ackseq)指出了發(fā)送本報文的主機希望接收的對方主機中下一個八位組的順序號。因此,對于一臺主機來說,其收發(fā)的兩個相臨TCP報文之間的序號和確認(rèn)序號的關(guān)系為:它所要發(fā)出的報文中的seq值應(yīng)等于它所剛收到的報文中的ackseq的值,而它所要發(fā)送報文中ackseq的值應(yīng)為它所收到報文中seq的值加上該報文中所發(fā)送的TCP凈荷的長度。

TCP會話劫持的攻擊方式可以對基于TCP的任何應(yīng)用發(fā)起攻擊,如HTTP、斷點續(xù)傳、Telnet等。對于攻擊者來說,所必須要做的就是窺探到正在進(jìn)行TCP通信的兩臺主機之間傳送的報文,這樣攻擊者就可以得知該報文的源IP、源TCP端口號、目的IP、目的TCP端號,從而可以得知其中一臺主機對將要收到的下一個TCP報文段中seq和ackseq值的要求。這樣,在該合法主機收到另一臺合法主機發(fā)送的TCP報文前,攻擊者根據(jù)所截獲的信息向該主機發(fā)出一個帶有凈荷的TCP報文,如果該主機先收到攻擊報文,就可以把合法的TCP會話建立在攻擊主機與被攻擊主機之間。帶有凈荷的攻擊報文能夠使被攻擊主機對下一個要收到的TCP報文中的確認(rèn)序號(ackseq)的值的要求發(fā)生變化,從而使另一臺合法的主機向被攻擊主機發(fā)出的報文被被攻擊主機拒絕。TCP會話劫持攻擊方式的好處在于使攻擊者避開了被攻擊主機對訪問者的身份驗證和安全認(rèn)證,從而使攻擊者直接進(jìn)入對被攻擊主機的的訪問狀態(tài),因此對系統(tǒng)安全構(gòu)成的威脅比較嚴(yán)重。

方法步驟

找到一個活動的會話

會話劫持的第一步要求攻擊者找到一個活動的會話。這要求攻擊者嗅探在子網(wǎng)上的通訊。攻擊者將尋找諸如斷點續(xù)傳之類的一個已經(jīng)建立起來的TCP會話。如果這個子網(wǎng)使用一個集線器,查找這種會話是很容易的。一個交換的網(wǎng)絡(luò)需要攻擊者破壞地址解析協(xié)議。

猜測正確的序列號碼

下一步,攻擊者必須能夠猜測正確的序列號碼。請記住,一個基本的TCP協(xié)議設(shè)計是傳輸?shù)臄?shù)據(jù)的每一個字節(jié)必須要有一個序列號碼。這個序列號用來保持跟蹤數(shù)據(jù)和提供可靠性。最初的序列號碼是在TCP協(xié)議握手的第一步生成的。目的地系統(tǒng)使用這個值確認(rèn)發(fā)出的字節(jié)。這個序列號字段長度有32個字節(jié)。這就意味著可能有大約4,294,967,295個序列號。一旦這個序列號一致,這個賬戶就會隨著數(shù)據(jù)的每一個字節(jié)逐步增加。

把合法的用戶斷開

一旦確定了序列號,攻擊者就能夠把合法的用戶斷開。這個技術(shù)包括拒絕服務(wù)、源路由或者向用戶發(fā)送一個重置命令。無論使用哪一種技術(shù),這個目的都是要讓用戶離開通訊路徑并且讓服務(wù)器相信攻擊者就是合法的客戶機

如果這些步驟取得成功,攻擊者現(xiàn)在就可以控制這個會話。只要這個會話能夠保持下去,攻擊者就能夠通過身份驗證進(jìn)行訪問。這種訪問能夠用來在本地執(zhí)行命令以便進(jìn)一步利用攻擊者的地位。

預(yù)防檢測

處理會話劫持問題有兩種機制:預(yù)防和檢測。預(yù)防措施包括限制入網(wǎng)的連接和設(shè)置你的網(wǎng)絡(luò)拒絕假冒本地地址從互聯(lián)網(wǎng)上發(fā)來的數(shù)據(jù)包。

加密也是有幫助的。如果你必須要允許來自可信賴的主機的外部連接,你可以使用Kerberos或者IPsec工具。使用更安全的協(xié)議,斷點續(xù)傳和Telnet協(xié)議是最容易受到攻擊的。SSH是一種很好的替代方法。SSH在本地和遠(yuǎn)程主機之間建立一個加密的頻道。同時,有些網(wǎng)站也用Https代替Http協(xié)議。Https在本地和遠(yuǎn)程主機之間建立一個加密的頻道。通過使用IDS或者IPS系統(tǒng)能夠改善檢測。交換機、SSH等協(xié)議和更隨機的初始序列號的使用會讓會話劫持更加困難。此外,網(wǎng)絡(luò)管理員不應(yīng)該麻痹大意,有一種安全感。雖然會話劫持不像以前那樣容易了,但是,會話劫持仍是一種潛在的威脅。允許某人以經(jīng)過身份識別的身份連接到你的一個系統(tǒng)的網(wǎng)絡(luò)攻擊是需要認(rèn)真對付的。

參考資料 >

生活家百科家居網(wǎng)