ncat或者說nc是一款功能類似cat的工具,但是是用于網(wǎng)絡的。它是一款擁有多種功能的 CLI 工具,可以用來在網(wǎng)絡上讀、寫以及重定向數(shù)據(jù)。 它被設計成可以被腳本或其他程序調用的可靠的后端工具。同時由于它能創(chuàng)建任意所需的連接,因此也是一個很好的網(wǎng)絡調試工具。
ncat/nc既是一個端口掃描工具,也是一款安全工具,還能是一款監(jiān)測工具,甚至可以做為一個簡單的 TCP 代理。 由于有這么多的功能,它被譽為是網(wǎng)絡界的瑞士軍刀。 這是每個系統(tǒng)管理員都應該知道并且掌握它。
在大多數(shù) Debian 發(fā)行版中,nc是默認可用的,它會在安裝系統(tǒng)的過程中自動被安裝。 但是在 CentOS 7 / RHEL 7 的最小化安裝中,nc并不會默認被安裝。 你需要用下列命令手工安裝。
[root@linuxtechi ~]# yum install nmap-ncat -y
系統(tǒng)管理員可以用它來審計系統(tǒng)安全,用它來找出開放的端口然后保護這些端口。管理員還能用它作為客戶端來審計 Web 服務器、telnet 服務器、郵件服務器等, 通過nc我們可以控制發(fā)送的每個字符,也可以查看對方的回應。
我們還可以用它捕獲客戶端發(fā)送的數(shù)據(jù)以此來了解這些客戶端是做什么的。
在本文中,我們會通過 10 個例子來學習如何使用nc命令。
例子: 1) 監(jiān)聽入站連接
通過-l選項,ncat可以進入監(jiān)聽模式,使我們可以在指定端口監(jiān)聽入站連接。 完整的命令是這樣的:
$ ncat -l port_number
比如,
$ ncat -l 8080
服務器就會開始在 8080 端口監(jiān)聽入站連接。
例子: 2) 連接遠程系統(tǒng)
使用下面命令可以用nc來連接遠程系統(tǒng),
$ ncat IP_address port_number
讓我們來看個例子,
$ ncat 192.168.1.100 80
這會創(chuàng)建一個連接,連接到 IP 為 192.168.1.100 的服務器上的 80 端口,然后我們就可以向服務器發(fā)送指令了。 比如我們可以輸入下面內容來獲取完整的網(wǎng)頁內容
GET / HTTP/1.1
或者獲取頁面名稱,
GET / HTTP/1.1
或者我們可以通過以下方式獲得操作系統(tǒng)指紋標識,
GET / HTTP/1.1
這會告訴我們使用的是什么軟件來運行這個 web 服務器的。
例子: 3) 連接 UDP 端口
默認情況下,nc創(chuàng)建連接時只會連接 TCP 端口。 不過我們可以使用-u選項來連接到 UDP 端口,
$ ncat -l -u 1234
現(xiàn)在我們的系統(tǒng)會開始監(jiān)聽 UDP 的 1234 端口,我們可以使用下面的netstat命令來驗證這一點,
$netstat -tunlp | grep1234
udp 000.0.0.0:1234 0.0.0.0:* 17341/nc
udp600 :::1234:::*
假設我們想發(fā)送或者說測試某個遠程主機 UDP 端口的連通性,我們可以使用下面命令,
$ ncat -v -u {host-ip} {udp-port}
比如:
[root@localhost ~]# ncat -v -u 192.168.105.150 53
Ncat: Version6.40(http://nmap.org/ncat )
Ncat: Connected to192.168.105.150:53。
例子: 4) 將nc作為聊天工具
nc也可以作為聊天工具來用,我們可以配置服務器監(jiān)聽某個端口,然后從遠程主機上連接到服務器的這個端口,就可以開始發(fā)送消息了。 在服務器這端運行:
$ ncat -l 8080
在遠程客戶端主機上運行:
$ ncat 192.168.1.100 8080
之后開始發(fā)送消息,這些消息會在服務器終端上顯示出來。
例子: 5) 將nc作為代理
nc也可以用來做代理。比如下面這個例子,
$ ncat -l 8080 | ncat 192.168.1.200 80
所有發(fā)往我們服務器 8080 端口的連接都會自動轉發(fā)到 192.168.1.200 上的 80 端口。 不過由于我們使用了管道,數(shù)據(jù)只能被單向傳輸。 要同時能夠接受返回的數(shù)據(jù),我們需要創(chuàng)建一個雙向管道。 使用下面命令可以做到這點:
$mkfifo2way
$ncat -l80800<2way | ncat192.168.1.200801>2way
現(xiàn)在你可以通過nc代理來收發(fā)數(shù)據(jù)了。
例子: 6) 使用nc拷貝文件
nc還能用來在系統(tǒng)間拷貝文件,雖然這么做并不推薦,因為絕大多數(shù)系統(tǒng)默認都安裝了ssh/scp。 不過如果你恰好遇見個沒有ssh/scp的系統(tǒng)的話, 你可以用nc來作最后的努力。
在要接受數(shù)據(jù)的機器上啟動nc并讓它進入監(jiān)聽模式:
$ ncat -l8080 > file.txt
現(xiàn)在去要被拷貝數(shù)據(jù)的機器上運行下面命令:
$ ncat 192.168.1.100 8080 --send-only < data.txt
這里,data.txt是要發(fā)送的文件。-–send-only選項會在文件拷貝完后立即關閉連接。 如果不加該選項, 我們需要手工按下ctrl+c來關閉連接。
我們也可以用這種方法拷貝整個磁盤分區(qū),不過請一定要小心。
例子: 7) 通過nc創(chuàng)建后門
nc命令還可以用來在系統(tǒng)中創(chuàng)建后門,并且這種技術也確實被黑客大量使用。 為了保護我們的系統(tǒng),我們需要知道它是怎么做的。 創(chuàng)建后門的命令為:
$ ncat -l 10000 -e /bin/bash
-e標志將一個 bash 與端口 10000 相連?,F(xiàn)在客戶端只要連接到服務器上的 10000 端口就能通過 bash 獲取我們系統(tǒng)的完整訪問權限:
$ ncat 192.168.1.100 10000
例子: 8) 通過nc進行端口轉發(fā)
我們通過選項-c來用nc進行端口轉發(fā),實現(xiàn)端口轉發(fā)的語法為:
$ ncat -u -l80 -c'ncat -u -l 8080'
這樣,所有連接到 80 端口的連接都會轉發(fā)到 8080 端口。
例子: 9) 設置連接超時
nc的監(jiān)聽模式會一直運行,直到手工終止。 不過我們可以通過選項-w設置超時時間:
$ ncat -w 10 192.168.1.100 8080
這回導致連接 10 秒后終止,不過這個選項只能用于客戶端而不是服務端。
例子: 10) 使用-k選項強制nc待命
當客戶端從服務端斷開連接后,過一段時間服務端也會停止監(jiān)聽。 但通過選項-k我們可以強制服務器保持連接并繼續(xù)監(jiān)聽端口。 命令如下:
$ ncat -l -k 8080
現(xiàn)在即使來自客戶端的連接斷了也依然會處于待命狀態(tài)。
-
Linux
+關注
關注
87文章
11509瀏覽量
213751 -
TCP
+關注
關注
8文章
1402瀏覽量
81031 -
NC
+關注
關注
0文章
20瀏覽量
14262
原文標題:10 個例子教你學會 ncat (nc) 命令
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
labview通過JKL.net發(fā)送cmd命令行問題
使用CCG2 (CYPD2122-24LQXI) IC,對源發(fā)送的 SVDM DISCOVERY IDENTITY命令的響應有問題,怎么解決?
NC401(C10)噪聲二極管Noisecom
通過FPGA控制DAC5682Z, 計算得到的結果是64bit,怎樣通過DAC輸出?
VirtualLab Fusion應用:對超短脈沖的色散效應的研究
常用linux命令
對超短脈沖的色散效應的研究
內網(wǎng)穿透是什么?——用你家快遞的例子來告訴你
嵌入式學習-常見的shell命令之文件操作相關命令
SDRAM中的active命令介紹

評論