這起事件,經查證為利用 IP spoofing 發起的攻擊。攻擊模式如下圖:
以上是粗略的架構圖,介於 user 和 server 之間的 router 是整個網路中某個 router。
attacker 在 router 處進行竊聽,並針對特定封包發起攻擊。
當 attacker 偵測到 user 對某特定 web server 發出 HTTP GET 的請求時,便搶在 web server 回送 web 封包之前,送假封包至 user 端。儘管 web server 送出的封包最終仍會送至 user 端,但因為 user 已經收到所期望封包(某個特定的 sequence number),因此便會忽略掉 web server 送來的「真」封包。
attacker 送來的假封包,包含了另一個網頁的資訊,brower 收到後理所當然會呈現另一個網頁,偽造出 DNS 被入侵使得某網址被轉址的錯誤猜測。
再網頁資訊正確送至 user 端後,attacker 主動發出 FIN 封包,要求 user 結整與 web server 的連線。user 收到此封包後,理所當然會回到 FIN 封包給 web server。由於 web server 沒有送 FIN 封包給 user,因此 web server 收到回也會回送 FIN 封包。但 user 端早已中斷連線,因此 user 並不會對 web server 送出的 FIN 封包做處理,也因此整個攻擊並不會因為額外的封包而受阻。
這樣的攻擊手段可以將網頁轉址至惡意網站,可自動殖入木馬等惡意軟體。甚至在攻擊後期,attacker 嘗試讓 user 感覺不出任何異樣,卻能夠確實轉址並殖入木馬。
另外,這起攻擊的核心在於竊聽 router 上的封包。若 attacker 不能得知 user 與 web server 間來往的封包內容,attacker 便不能在正確的時機傳送正確的「假封包」。
IP spoofing 的攻擊源自 IP 封包的無安全性。這樣的漏洞讓 attacker 有機可乘。但以 TCP/IP 為核心的網路架構難以輕易變動,因此現階段只能憑藉 application 端的防護措施。