8個(gè)nc命令的實(shí)用案例
1. 前言
netcat(簡(jiǎn)稱nc)是一個(gè)簡(jiǎn)單但功能強(qiáng)大的網(wǎng)絡(luò)命令行工具,用于執(zhí)行Linux中與TCP、UDP或Unix套接字相關(guān)的任何操作。
netcat可用于端口掃描,端口重定向,啟動(dòng)端口監(jiān)聽器;它還可以用來(lái)打開遠(yuǎn)程連接和許多其他事情。此外,您可以使用它作為后門訪問(wèn)目標(biāo)服務(wù)器。
在本文中,我們將通過(guò)使用案例解釋netcat使用命令。
2. 如何在Linux中安裝和使用netcat
要在系統(tǒng)上安裝netcat包,請(qǐng)使用Linux發(fā)行版的默認(rèn)包管理器。
基于CentOS或RHEL體系安裝nc命令
- yum install nc
基于Fedora 22+ 或 RHEL 8安裝nc命令:
- dnf install nc
基于Debian或Ubuntu安裝nc命令:
- sudo apt-get install netcat
一旦安裝了netcat包,您可以在下面的示例中進(jìn)一步學(xué)習(xí)netcat命令的用法。
3. 使用nc命令掃描端口
netcat可用于端口掃描:了解目標(biāo)服務(wù)器上哪些端口是打開的并正在運(yùn)行服務(wù)。它可以掃描一個(gè)或多個(gè)或一系列打開的端口。
使用nc命令掃描端口
下面是一個(gè)示例,-z選項(xiàng)將nc設(shè)置為只掃描偵聽守護(hù)進(jìn)程,而不實(shí)際向它們發(fā)送任何數(shù)據(jù)。-v選項(xiàng)啟用詳細(xì)模式,而-w指定無(wú)法建立連接的超時(shí)。
掃描單個(gè)端口:
- nc -v -w 2 z 192.168.56.1 22
掃描多個(gè)端口:
- nc -v -w 2 z 192.168.56.1 22 80
掃描端口范圍:
- nc -v -w 2 z 192.168.56.1 20-25
4. 在Linux服務(wù)器之間傳輸文件
netcat允許您在兩臺(tái)Linux服務(wù)器之間傳輸文件,這兩個(gè)系統(tǒng)都必須安裝nc。
例如,要將ISO映像文件從一臺(tái)計(jì)算機(jī)復(fù)制到另一臺(tái)計(jì)算機(jī)并監(jiān)視傳輸過(guò)程(使用pv實(shí)用程序),請(qǐng)?jiān)诎l(fā)送者(存在ISO文件的地方)上運(yùn)行以下命令。
先安裝pv命令,比如在CentOS系統(tǒng)上執(zhí)行以下命令安裝pv程序:
- yum -y install pv
這將在端口3000上以監(jiān)聽模式(-l選項(xiàng))運(yùn)行nc,在服務(wù)器上運(yùn)行以下命令:
服務(wù)器的IP地址為192.168.192.134
- tar -zcf - zcwyou.rar | pv | nc -l -p 3000
在接收端/客戶端計(jì)算機(jī)上,運(yùn)行以下命令來(lái)獲取文件。
- nc 192.168.192.134 3000 | pv | tar -zxf -
5. 創(chuàng)建一個(gè)命令行聊天服務(wù)器
您還可以使用netcat立即創(chuàng)建一個(gè)簡(jiǎn)單的命令行消息傳遞服務(wù)器。與前面的使用示例一樣,必須在聊天室使用的兩個(gè)系統(tǒng)上安裝nc。
在一個(gè)系統(tǒng)上,運(yùn)行以下命令創(chuàng)建在端口5000上偵聽的聊天服務(wù)器。
- nc -l -vv -p 5000
創(chuàng)建一個(gè)命令行聊天服務(wù)器
在另一個(gè)系統(tǒng)上,運(yùn)行以下命令,在運(yùn)行消息傳遞服務(wù)器的機(jī)器上啟動(dòng)聊天會(huì)話。
- nc 192.168.192.134 5000
命令行聊天客戶端
6. 創(chuàng)建一個(gè)基本的Web服務(wù)器
使用nc命令的-l選項(xiàng)創(chuàng)建基本的、不安全的web服務(wù)器。為了演示這一點(diǎn),創(chuàng)建如下所示的html文件。
- vim index.html
在文件中添加以下HTML行:
- <html>
- <head>
- <title>Test Page</title>
- </head>
- <body>
- <p>Serving this file using Netcat Basic HTTP server!</p>
- </body>
- </html>
保存文件中的更改并退出。
使用nc命令創(chuàng)建一個(gè)簡(jiǎn)單的Web服務(wù)器
然后通過(guò)運(yùn)行以下命令提供服務(wù)提供HTTP服務(wù),這將使HTTP服務(wù)器能夠連續(xù)運(yùn)行。
- while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done
使用nc命令提供HTTP服務(wù)
然后打開web瀏覽器,可以使用以下地址訪問(wèn)內(nèi)容:
- http://192.168.1.1:8080
使用真實(shí)的服務(wù)地址替換192.168.1.1
注意,您可以通過(guò)按[Ctrl+ C]來(lái)停止Netcat HTTP服務(wù)器。
7. 解決Linux服務(wù)器連接問(wèn)題
netcat的另一個(gè)實(shí)用功能是解決服務(wù)器連接問(wèn)題。在這里,您可以使用netcat來(lái)驗(yàn)證服務(wù)器發(fā)送什么數(shù)據(jù)來(lái)響應(yīng)客戶機(jī)發(fā)出的命令。
使用下面的命令查看example.com的主頁(yè):
- printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80
上述命令的輸出包括web服務(wù)器發(fā)送的頭部,可用于故障排除目的。
8. 查找在端口上運(yùn)行的服務(wù)
您還可以使用netcat獲得端口詳細(xì)信息。在這種情況下,它將告訴您在某個(gè)端口后運(yùn)行的是什么服務(wù)。例如,要了解特定服務(wù)器上端口22后面運(yùn)行的是什么類型的服務(wù),可以運(yùn)行以下命令(使用目標(biāo)服務(wù)器的IP地址替換192.168.56.110)。選項(xiàng)-n意味著禁用DNS解析。
- nc -v -n 192.168.56.110 80
9. 創(chuàng)建一個(gè)流套接字
netcat還支持創(chuàng)建unix流套接字。下面的命令將創(chuàng)建并偵聽一個(gè)unix流套接字。
- nc -lU /var/tmp/mysocket &
檢查:
- ss -lpn | grep "/var/tmp/"
10. 創(chuàng)建一個(gè)后門
你也可以把netcat當(dāng)成一個(gè)后門。然而,這需要更多的工作。如果netcat安裝在目標(biāo)服務(wù)器上,您可以使用它來(lái)創(chuàng)建后門,以獲得遠(yuǎn)程命令提示符。
要啟用一個(gè)后門,你需要netcat監(jiān)聽一個(gè)選擇的端口(比如:端口3001),然后您可以按照如下方式從您的計(jì)算機(jī)連接到這個(gè)端口。
在遠(yuǎn)程服務(wù)器上運(yùn)行以下命令,其中-d選項(xiàng)禁止從stdin讀取,而-e選項(xiàng)指定要在目標(biāo)系統(tǒng)上運(yùn)行的命令。
- nc -L -p 3001 -d -e cmd.exe
本文鏈接:https://www.linuxrumen.com/cyml/1800.html