首頁 »
April 25, 2008

[安] 簡談網路 IP 位址的偽造或隱藏

“......基本程序, 是先對客戶端(client)發動阻斷服務(Denial of Service, DoS)攻擊(如 SYN flood), 讓它無法回應, 並預測主機端(server)所發出的初始序號(ISN)與其遞增規則(這是非加密性封包的基本驗認條件)。然後入侵者代替已被阻斷的客戶端向主機端發出 SYN 信號請求連線, 主機就會回應 SYN+ACK 信號給客戶端, 入侵者趁機在估計的 RTT/2 (round trip time)時限(極短, 故得預先寫好程式)再代替客戶端回送內含 ISN 合法遞增值(一般以 1 為遞增數)的偽造 ACK 信號(其來源[source] IP 位址偽裝成客戶端), 以完成建立 TCP session 連接的動作, 以後即可冒充被 DoS 的客戶端來使用主機的服務了(如登入帳號後下指令), 而主機所記錄下的 IP 位址都是客戶端的位址。......”

[by Verklarung|Verklarung board|Recompose:|Thu Mar 27 06:08:11 2008]
 
在 CVIC BBS 的網友 fh (牛小茜)詢以:「有什麼其他偽造(IP 位址的
)方法呀? 有簡單的方法或是軟體可以做到嗎?
」我已許久沒追蹤這方面
的進展, 不知現在有什麼簡單現成的軟體可用?手工程式一族也只要有
telnet 程式與 C 語言的編譯器就夠用了。網路 search 應該找得到吧
, 因為有不少 script-kid 只習慣用整理好的程式, 有所需求, 若想了
解箇中原理還是得要求對於一些網路協定基礎知識的了解。所以要做到
IP 位址的偽造, 與其說要「簡單」, 不如說要「有心」吧。有所了解,
也才能悉預防之徑, 這篇也只是簡單的談一些而已。
 
最「現成」的方式, 是只用 telnet 程式登入網站服務的相關 port (
如 WWW 用的 HTTP port), 自己編寫相關的應用協定 header 欄位去欺
騙伺服器的 log 系統(一些主流的 web server 是相當信賴高階層協定
的欄位內容的)。如此並不需額外的軟體, 但這反而需求對於協定封包
的內容有一些了解, 並且伺服器還有其他記錄 IP 位址的方式。
 
真正要介入兩端通訊所做的 IP 欺詐 (IP cheating), 則得在 TCP:SYN
的協議上來下功夫。基本程序, 是先對客戶端(client)發動阻斷服務 (
Denial of Service, DoS)攻擊 (如 SYN flood), 讓它無法回應, 並預
測主機端(server)所發出的初始序號(ISN)與其遞增規則(這是非加密性
封包的基本驗認條件) 。然後入侵者代替已被阻斷的客戶端向主機端發
出 SYN 信號請求連線, 主機就會回應 SYN+ACK 信號給客戶端, 入侵者
趁機在估計的 RTT/2 (round trip time)時限 (極短, 故得預先寫好程
式)再代替客戶端回送內含 ISN 合法遞增值(一般以 1 為遞增數) 的偽
造 ACK 信號 (其來源[source] IP 位址偽裝成客戶端), 以完成建立
TCP session 連接的動作, 以後即可冒充被 DoS 的客戶端來使用主機
的服務了(如登入帳號後下指令), 而主機所記錄下的 IP 位址都是客戶
端的位址。
 
在跨網域的場合(如 Internet), 上述方式下的 source IP 位址仍為客
戶端, 所以在建立 TCP 連接後所傳送的 IP 資料封包還是會到達正確
的客戶端位址, 入侵者並無法知悉兩端的傳輸內容, 但他只要能預測並
編寫假冒的客戶端封包以便與主機保持傳輸狀態, 即可獲得主機賦予客
戶端的權限來進行遠端操作。而要做到這點, 需要對相關協定標準的熟
稔, 一般會先進行兩端的傳輸協定分析 (可使用 netxray 等工具), 這
是比較技術性、也較深入的層次。
 
若相關端點處於同一個網域內(如區域網路[LAN]), 則可使用 ARP 欺詐
(ARP cheating)的手法。竊聽者可竄改 ARP 協定的回應包 (其做 IP/
MAC 位址轉換), 將其中目的(destination) IP 位址原來所對應的網路
卡實體位址(MAC 位址)給換成自己的, 這樣即可用被冒充的 IP 位址來
接收資料, 即可進行對於傳輸內容暗中窺探(snooping)的企圖。而竊聽
者得把所攔截到的資料封包再「續傳」給目的端, 才不會被它發覺到傳
輸中斷。
 
使用匿名代理伺服器(anonymous proxy)則是最簡單、又便利的隱藏 IP
位址的途徑。這本來是網路時代早期為保護上網者隱私的機制, 它會刻
意不去記錄可追蹤到使用者來源的相關 log 資訊。上網 search 看看,
或許還可以找到一些服務, 如 The Privax Network
 
近年來流行用木馬程式殖入多部電腦組成詐騙網路(spoofing network)
, 然後就可把入侵者的網路封包透過此網路中的傀儡/殭屍電腦(zombie
)來傳送, 己方的紀錄則清除乾淨, 避免回追。這類的技術如 spacking
可詳見本板這篇的描述:
 
 〈[安] Spack the traceroute!
 
當然, 僅透過伺服器端的程式漏洞或木馬程式來入侵單機也可達到使用
受害機器位址來發送資料的效果, 不過這般單槍匹馬的行動, 通常偵察
者只要勤於追查通訊路徑上其他機器的 log 就可以找尋出一定的軌跡,
因此仍以 spoofing network、或者同時配合 IP cheating 的方式會比
較「安全」。 (我不是在鼓勵什麼... :)
 
也有國家等級的作業方式。其直接在(電信業者的)幾個網路骨幹節點上
架起專用的 source IP 位址竄改機器/軟體 (filter), 由特定攻擊點
所發動或通過的封包都會被隱藏/變更 IP 位址, 這種方式很徹底, 無
該國公權力者幾乎無法追查。近年媒體時常報導疑似 P.R.C. 的「網軍
」攻擊台灣公家網站, 有的報紙還去找「高手」、「駭客」追蹤到位於
北京什麼公司的 IP 位址當做證據。但那應該不會是編制內的「網軍」
, 因為手法太天真了, 國家層級的攻擊方式並非民間人士能找出其真正
的發動點的。若政府只是要做到資訊監控, 那就應用前面所提到的通訊
窺探(snooping)技術, 在主要的網路通訊閘道(gateway)上裝置嗅探器(
sniffer)軟/硬體, 西方國家或專制國家都有在做, 可參考此篇:
 
 〈[安] [報導] 政府的網路監看、後門與 Windows' NSAKEY!
 
既然提到了 P.R.C. 當局對於資訊的管制, 也就有人為其廣大網民寫出
了可以迴避長城防火牆(Great FireWall, GFW) 網路內容過濾系統的代
理(proxy)或 IP 隧穿(tunneling)程式, 據說經過「適當」的運用即可
達到偽造或隱藏 IP 位址的效果。其實這也算是一種匿名代理伺服器的
應用。
 
另外, 如敝人在那封簡單找出 IP 位址的回信裏所提到的郵件標頭(mail
header), 當然也可以在改過 IP 位址或域名(domain name)後再寄出去
。只要用 telnet 連線 SMTP 服務直接編造 header 就可寄信了, 所以
只瞧對方的郵件標頭來找 IP 位址是極不可靠的。
 
DNS 欺詐或重定位(DNS cheating or DNS relocation)則是較迂迴的方
式, 本來是用來騙網民誤入冒充的釣魚(phishing)網站:由於客戶端所
查詢的 DNS 伺服器的 fetch cache 被誤導而存入竄改的 IP 位址, 所
以即使在瀏覽器位址列所鍵入的網址是 http://www.url.com.tw 這樣
並沒拼錯的域名, 也可能被假造的 IP 位址給導向於釣魚網站上。因此
新聞上通常會教導網路使用者多加注意「域名拼字正不正確」的方式並
無法 100% 的預防釣魚網站, 還是要確定網站的登入系統具備有安全憑
證機制才保險。而這般的技術, 反過來就可以讓追查者只能查到被偽造
後的 IP 地址:一般是以 DNS query 的方式讓 DNS 伺服器存入被偽造
的對應位址, 而該 DNS 的查詢用戶當然就會獲得錯誤的 IP 解析位址,
因此被導向於錯誤的網站(IP 位址)。另一種技術是進行 DNS 攔截的動
作, 竄改者直接介入 DNS 伺服器端與客戶端間的通訊, 運用所猜測到
的 DNS query ID 來將所偽造的位址解析封包回應給客戶端, 後者就會
把所冒充的 IP 位址當真了。
 
以上所述只是諸端之一部分, 有的方式可以將 IP 位址偽造或隱藏得很
徹底, 有的只能用來騙騙不夠細心的網管、或過於信任較高階層協定的
伺服器程式而已, 這又與網路協定的堆疊式構造及網路傳輸的路徑邏輯
相關, 要講清楚可能要寫一本書。(有人要貢獻版稅嗎? :p)
 
在廣域網路(WAN, Internet 即最大的 WAN)上預防 IP 位址被偽造的方
法是有, 就原理上很基本且簡單:只要網路世界所有的通訊閘(gateway
) 或路由器(router)硬/軟體都具備並已啟動 IP 位址驗證的功能──
能檢查聯外、聯內的 IP 封包的 source 位址是不是來自於內部、合法
的網域──那絕大部分的 IP 偽造方式都行不通了。不過, 迢迢網路數
十載, 這始終只是理想, 網路的實際運作一直受制於管理者與使用者的
習性, 仍然是一句老話:
 
 「使用電腦的安全性與便利性是成反比的。
 
當然也有技術上無從預防的。若蝙蝠俠偷偷飛進別人的家裏或某間網咖
, 用那裏的電腦上網, 那查 IP 位址也沒有用, 全世界密集度最高的村
里監視鏡頭──真正的 Taiwan No.1!──也只能拍到「蒙面人」而已
。用不需登記的免費撥接仍會留下發話號碼的紀錄, 而偷用... 呃、是
借用別人的無線上網頻寬(有不少人的無線網路存取器[wireless AP]並
沒設定成尚未被破解過的加密保護協定或者根本就不需密碼, 且查這種
「大方人士」的掃瞄程式已有一堆) , 那 IP 位址根本是別人的, 且實
體上網位置也無法確定, 要追查可難囉。所以, 不良的習慣或實體機器
的接觸, 雖然是最不「技術」性的, 卻才是最難預防的漏洞。所謂的社
會工程(social engineering)式的入侵, 過去十幾年曾成為幾本紐約時
報暢銷書榜上的書目題材, 然而其原理也不過就是如此。
 
順便再補充一點那封回信, 若對方曾寄一封 HTML 郵件給妳, 而妳在上
網時開啟過那封信, 則即使不曾回信給他, 他仍可以透過網頁蟲 (web
bug)來知悉妳的 IP 位址, 詳情請參閱本板此文:
 
 〈[安] 網頁蟲(web bug)技術論
 
 
--
☆ [不成器之板: http://blog.sina.com.tw/verklarung │Peterloo﹡ -Br. 六四]
 
------------------------------------------------------------------------------
 
文中提到的回信部分
 
作者 Verklarung (Danse 之顫音)
標題 Re: 先前網頁內容的譯文
時間 Thu Mar 27 05:58:36 2008
──────────────────────────────────────
 
※ 引述《fh (牛小茜)》之銘言:
: [Cut]
: 在網路上知道對方的ip很困難嗎?

 
有些情況並不困難, 像大部分的 BBS 會在公開版面留 IP, 一
些討論區或部落格系統也會顯示 IP。要是妳與對方出沒的網
站不會公開顯示 IP 時, 他還是可以利用妳的 ID、個人資料
、上站時間等, 比對找到妳在其他網站出沒的痕跡, 就有可能
找出妳的 IP。這招常是有人匿名鬧版時, 找出鬧版者身分的
方式。用 Google 找就可以了, 如找「fh (牛小茜)」或其他
妳的相關名稱, 可以找到妳留言過的網站。
 
另外, 如果妳曾以 IP 對 IP 的方法與對方連絡過, 如 P2P
傳檔等, 他就可以記錄妳的 IP。寄 e-mail 給他的話, 有些
ISP 會在 e-mail 的 header 註記妳的 IP, 如 HiNet ADSL
使用者寄出的信裏會有:
 
 Received: from GoodMan (122-127-123-123.dynamic.hinet.net [122.127.123.123])
      by msr36.hinet.net (8.9.3/8.9.3) with ESMTP id MAA27123
      for <badman@ms1.url.com.tw>; Mon, 24 Mar 2008 12:06:58 +0800 (CST)

 
則 GoodMan 的 IP 122.127.123.123 (舉例)就被附在 header
了。沒附的話, 也會記錄伺服器(如 msr36.hinet.net、ms7.url
.com.tw), 如果這是公司自己的機器, 就可以知道妳公司是哪
一家, 進一步可以由其他網站有留下該公司 IP 位址的留言者
紀錄中, 過濾出誰最可能是妳。(公司可換成學校等等。)
 
而像 MSN 病毒等用惡意程式來入侵以竊取資料, 那就更屬五
花八門, 此不足談了。
 
[Cut]



藤原巴黎遊回應之一:「傅科擺」←上一篇 │首頁│ 下一篇→[軟] Windows 98/Me 延壽秘方 - 支援性延展之大計篇
本文引用網址: