相關背景
首先要知道反彈連線埠的原理:
簡單地說,就是由木馬的
服務端主動連線
客戶端所在IP對應的電腦的80連線埠。相信沒有哪個
防火牆會攔截這樣的連線(因為它們一般認為這是用戶在瀏覽網頁),所以反彈連線埠型木馬可以穿牆。
以下是在“
網路神偷”的介紹中挖下來的:道高一尺、魔高一丈,不知哪位高人分析了
防火牆的特性後發現:防火牆對於連入的連線往往會進行非常嚴格的過濾,但是對於連出的連線卻疏於防範。於是,與一般的軟體相反,反彈連線埠型軟體的
服務端(被控制端)主動連線
客戶端(控制端),為了隱蔽起見,
客戶端的監聽連線埠一般開在80(提供HTTP服務的連線埠),這樣,即使用戶使用
連線埠掃描軟體檢查自己的連線埠,發現的也是類似 TCP UserIP:1026 ControllerIP:80 ESTABLISHED 的情況,稍微疏忽一點你就會以為是自己在瀏覽網頁(
防火牆也會這么認為的)。看到這裡,有人會問:既然不能直接與
服務端通信,那如何告訴
服務端何時開始連線自己呢?答案是:通過主頁空間上的檔案實現的,當
客戶端想與服務端建立連線時,它首先登錄到FTP伺服器,寫主頁空間上面的一個檔案,並打開
連線埠監聽,等待服務端的連線,服務端定期用HTTP協定讀取這個檔案的內容,當發現是客戶端讓自己開始連線時,就主動連線,如此就可完成連線工作。
反彈連線埠型木馬:利用反彈連線埠原理,躲避
防火牆攔截的一類木馬的統稱。國產的優秀反彈連線埠型木馬主要有:
灰鴿子、上興遠程控制、
PcShare等。
基本簡介
1 一般木馬的工作過程
木馬程式有兩部分組成,一部分是伺服器(Server)端程式,
服務端運行後,會在本機打開一個特定的網路連線埠監聽客戶端的連線。另一部分是客戶(Client)端程式,即控制在攻擊者手中的程式,攻擊者通過它獲取遠程計算機的數據並通過它控制遠程計算機。攻擊者用客戶端去連線
服務端計算機的特定連線埠,進行登錄,發出控制命令等,進而取得對計算機的控制許可權,可以任意查看或刪改服務端檔案,操作服務端的註冊表 ,獲取服務端的系統信息 ,竊取口令等 ,就如同訪問他自己的計算機一樣方便。
其過程可用 VB 實現如下:(Horse_Server 和Horse_Client 均為 Winsock控制項) :
服務端:
Horse_Server. LocalPort = 31339 (打開一個特定的
網路連線埠)
Horse_Server.Listen(監聽客戶端的連線)
客戶端
Horse_Client . RemoteHost = RemotelP (設遠端地址為伺服器端IP位址)
Horse_Client . RemotePort = 31339(設遠程連線埠為
服務端程式起動的特定連線埠)
Horsec_Client . Connect (連線
服務端計算機)
一旦
服務端接到客戶端的連線請求 ConnectionRequest ,就接受連線。
Private Sub Horse_Server_ConnectionRequest (ByVal requestlD As Long)
Horse_Server.Accept requestlD
End Sub
客戶機端用 Horse_Client . SendData 傳送命令 ,而伺服器在 Horse_Server_DataArrive事件中接受並執行命令(如:修改註冊表、
刪除檔案等) 。
Private Sub Horse_Server_Close ()
Horse_Server. Close (關閉連線)
Horse_Server.Listen(再次監聽)
End Sub[1 ]
2 反彈連線埠型木馬的工作原理
一般木馬
服務端運行後,會用郵件、ICQ 等方式發出信息通知入侵者,同時在本機打開一個網路連線埠監聽
客戶端的連線(時刻等待著客戶端的連線) 。收到信息後,入侵者再運行客戶端程式向伺服器的這一連線埠提出連線請求(Connect Request) ,伺服器上的
守護進程就會自動運行,來應答客戶機的請求。
目前,由於大部分
防火牆對於連入的連線往往會進行非常嚴格的過濾,能對非法連線埠的IP包進行有效的過濾,非法連線被攔在牆外,客戶端主動連線的木馬,現已很難穿過防火牆。
與一般的軟體相反,反彈連線埠型木馬是把
客戶端的信息存於有固定IP的第三方FTP伺服器上,
服務端從 FTP 伺服器上取得信息後計算出客戶端的IP和連線埠,然後主動連線客戶端。另外,
網路神偷的
服務端與
客戶端在進行通信 ,是用合法連線埠,把數據包含在像HTTP或FTP的
報文中,這就是黑客們所謂的“隧道”技術。其過程如下:
服務端:
Horse_Server. RemoteHost = RemotelP(設遠端地址為從指定FTP伺服器取得的客戶端IP位址)
Horse_Server. RemotePort = RemotePort (設遠程連線埠為客戶端程式起動的特定連線埠,如:80、21等)
Horse_Server. Connect (連線客戶端計算機)
客戶端:
Horse_Client . LocalPort = LocalPort (打開一個特定的
網路連線埠,如:80、21等)一旦客戶端接到
服務端的連線請求 ConnectionRequest ,就接受連線。
Private Sub Horse_Client_ConnectionRequest(ByVal requestlD As Long)
Horse_Client .Accept requestlD
End Sub
Horse_Client .Listen(監聽客戶端的連線)客戶機端用Horse_Client . SendData 傳送命令,而伺服器在 Horse_Server DataArrive事件中接受並執行命令。如果客戶下線,則伺服器端關閉連線:
Private Sub Horse_Server_Close ()
Horse_Server. Close (關閉連線)
End Sub
之後每隔一段時間
服務端就會向客戶發一個連線請求:Horse_Server. Connect (連線客戶端計算機)
目前,大部分
防火牆對於連入的連線往往會進行非常嚴格的過濾,但對於連出的連線卻疏於防範。像這種“反彈連線埠”原理的木馬,又使用“隧道”技術,客戶端的監聽連線埠開在
防火牆信任的連線埠上,把所有要傳送的數據全部封裝到合法的
報文里進行傳送,防火牆就不會攔截。如80(提供HTTP服務的連線埠)或21(提供FTP服務的連線埠),它會認為內部用戶在瀏覽網頁或進行
檔案傳輸,則木馬穿過
防火牆。其實即使用戶使用連線埠掃描軟體檢查自己的連線埠,對類似TCP local address :1026 foreign address :80 ESTABLISHED的情況也未必注意。這樣,反彈連線埠型木馬不但可以穿過
防火牆,而且可以通過HTTP、SOCKS4/ 5 代理,甚至還能訪問區域網路內部的電腦。像用NAT
透明代理和HTTP的 GET型代理等的區域網路,還有
撥接、ISDN、ADSL 等的主機,都有可能。
3 查殺方法
對是不是中了反彈連線埠型木馬我們可以做如下檢查:
(1)關掉所有的網路
連線程式(如:IE瀏覽器、FTP服務等) ,轉入命令行狀態用netstat -a命令,netstat命令的功能是顯示網路連線、路由表和網路接口信息,可以讓用戶得知目前都有哪些網路連線正在運行。
(2)用網路監視軟體,如:sniffer、IParmor 等查一下自己懷疑的連線埠是否被偵聽。如在(1)中發現類似TCP local address :1026 foreign address :HTTP ESTABLISHED(或者是類似TCP local address :1045 foreign address:FTPESTABLISHED)的情況或在(2)中發現懷疑的連線埠被偵聽,有可能中了此類木馬。
目前發現的反彈連線埠型木馬有
網路神偷和
灰鴿子(輻射版)兩種。如果中了反彈連線埠型的木馬,對於
網路神偷,我們可以用下面的方法清除:
(1)查看註冊表啟動項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中的可疑鍵值(鍵名是在生成
服務端時由用戶設定的)並刪除(做這一步必須對Windows註冊表非常熟悉),重啟後,再刪除系統目錄(C:\Windows\System)中的服務端程式(檔案名稱也是由用戶設定的) 。
(2)在中了木馬的機器上運行客戶端程式,可以再生成並運行新的配置正確的
服務端,就會把原來的服務端衝掉。重新運行客戶間 ,在
客戶端的“服務端線上列表”找到自己並連線上,再用選單“網路” — >“遠程卸載” ,就可以徹底清除。
對於
灰鴿子,由於此軟體原理與其他同類軟體不同,它的
服務端只有生成它的客戶端才能訪問,其他人是不可能訪問的,所以不能用自動
卸載的方法清除它 ,只能手工清除:先刪除註冊表啟動項
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices)
(HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)
中的可疑鍵值(鍵名是在生成服務端時由用戶設定的)。重啟後,再刪除系統目錄(C:\Windows\System)中的服務端程式(檔案名稱也是由用戶設定的)。最後檢查一下是不是
木馬程式與EXE關聯,如果與EXE關聯則修改註冊表:(HKEY_CLASSES_ROOT\exefile\shell\open\command\)默認值為:“%1”% 3。否則刪除服務端程式後什麼程式也不能運行了。
由於以前的木馬都是
客戶端主動連線,所以目前大部分
防火牆對於連入的連線往往會進行非常嚴格的過濾,對付木馬我們只要在防火牆上設定為只能連出不能連進,就可一勞永逸了。然而反彈連線埠型木馬的出現對傳統的
防火牆提出了新的要求:防火牆不但要防外還要防內,即應用程式訪問網路規則,過濾那些存在於用戶計算機內部的各種不法程式對網路的套用,從而可以有效的防禦像“反彈式木馬”那樣的騙取系統合法認證的
非法程式。當用戶計算機內部的應用程式訪問網路的時候,必須經過
防火牆的內牆的審核。但這也帶來一些問題:我們在訪問網路的時候必須手工確認哪些程式合法,這個工作可能非常煩瑣。再者對一個電腦入門者,決策哪些程式合法也是一個非常困難的問題。防,隨著攻的發展始終存在不完善之處,但是卻始終遵循一個原則:魔高一尺,道高一丈。