Linux中Netcat工具的使用方式
Netcat(nc) 是 Linux 類系統(tǒng)上非常實用的網(wǎng)絡(luò)工具,它能在網(wǎng)絡(luò)中讀寫數(shù)據(jù),如果配合使用其他工具和重定向,可以實現(xiàn)不少強大的功能
1. 安裝 Netcat
通常在不同的操作系統(tǒng)上使用對應(yīng)的軟件管理工具都能很方便地下載 nc
以下為 CentOS 操作系統(tǒng)的下載命令
sudo yum install nc -y
2. 常用參數(shù)
nc 常用的參數(shù)如下表所示,更多參數(shù)可以使用命令 nc -h 查看詳細信息
| 參數(shù) | 功能 |
|---|---|
| -l | 綁定監(jiān)聽本地端口,以服務(wù)端模式運行 |
| -k | 以服務(wù)端模式運行時,當前連接結(jié)束后繼續(xù)監(jiān)聽 |
| -n | 不使用 DNS 解析域名展示 |
| -w | 指定連接動作的超時時間,單位秒 |
| -z | 使用 0 I/O 模式, 連接成功后立即關(guān)閉連接,不進行數(shù)據(jù)傳輸,通常在端口掃描時使用 |
| -u | 使用 udp 傳輸協(xié)議,不指定該參數(shù)默認為 tcp |
| -p | 指定本地主機與遠端的通信端口 |
| -r | 隨機選擇本地主機與遠端的通信端口 |
| -s | 設(shè)置本地主機送出數(shù)據(jù)包的網(wǎng)卡 IP,通??梢允褂?ifconfig 命令查看本地主機的網(wǎng)卡 IP |
3. 使用示例
3.1 端口掃描
nc 支持端口掃描功能,可用于發(fā)現(xiàn)一些在機器上開放的端口,以下為相關(guān)命令:
以 0 I/O 模式,使用 udp 協(xié)議掃描指定端口是否打開
nc -v -z -u -w 3 127.0.0.1 10086
掃描多個端口,默認使用 tcp 協(xié)議
nc -v -z -w 3 127.0.0.1 10086 10087
掃描端口范圍,默認使用 tcp 協(xié)議
nc -v -z -w 3 127.0.0.1 10086-10087

3.2 端口監(jiān)聽與連接
如果想要測試兩臺主機是否能夠通過某個開放端口聯(lián)通,可以在一臺機器上用 nc 監(jiān)聽該端口,然后在另一臺機器上用 nc 嘗試連接。
如果兩臺機器能夠正常連通的話,就可以相互發(fā)送數(shù)據(jù)并顯示
- 3.2.1 TCP 協(xié)議監(jiān)聽連接
服務(wù)端監(jiān)聽端口,一直保持監(jiān)聽
nc -l -k 127.0.0.1 10086
客戶端指定端口連接
nc -v -p 10087 127.0.0.1 10086
- 3.2.2 UDP 協(xié)議監(jiān)聽連接服務(wù)端監(jiān)聽端口,指定 udp 協(xié)議
nc -l -u 127.0.0.1 10086

客戶端連接服務(wù)端,指定 udp 協(xié)議
nc -v -u -p 10087 127.0.0.1 10086

3.3 文件傳輸
通過 nc 可以實現(xiàn)便捷的文件傳輸,只要配合相關(guān)命令將機器上的輸入輸出重定向即可
- 3.3.1 服務(wù)端接收客戶端文件
服務(wù)端啟動監(jiān)聽,并重定向 nc 輸出到指定文件,則接收到的遠端數(shù)據(jù)將被輸出到文件中
nc -l 127.0.0.1 10086 > fi.txt
客戶端連接服務(wù)端,重定向輸入為指定文件,則在連接上服務(wù)端時會將文件內(nèi)容發(fā)送出去
nc -v -p 10087 127.0.0.1 10086 < fi.txt
- 3.3.2 服務(wù)端發(fā)送文件到客戶端
服務(wù)端啟動監(jiān)聽,重定向輸入為指定文件,則在客戶端連接上時會發(fā)送文件數(shù)據(jù)到遠端
nc -l -k 127.0.0.1 10086 < fi.txt
客戶端連接服務(wù)端,重定向輸出到指定文件,則接收到服務(wù)端數(shù)據(jù)時會將其輸出到文件
nc -v -p 10087 127.0.0.1 10086 > fi.txt
- 3.3.3 使用 pv(Pipe Viewer)工具顯示文件傳輸進度服務(wù)端重定向 nc 輸出到指定文件
nc -l 127.0.0.1 10086 > fi.txt
客戶端使用 pv 傳輸文件
如機器上沒有 pv 工具,使用包管理工具下載即可,CentOS 系統(tǒng)下載命令為 sudo yum install pv -y
pv fi.txt | nc -v 127.0.0.1 10086

- 3.3.4 打包傳輸文件夾
服務(wù)端通過 tar 命令打包文件夾,并將其輸出通過管道層層傳遞,將其重置為 nc 連接的輸入
tar -zvcf - test | pv | nc -l 127.0.0.1 10086

客戶端連接服務(wù)端,并通過 tar 命令拆包
nc -v -p 10087 127.0.0.1 10086 | pv | tar -zvxf -

3.4 shell 反彈
這部分可以參考 遠程代碼執(zhí)行(RCE)漏洞 中反彈 shell 的段落,
實際上原理就是通過代碼執(zhí)行將被攻擊機器的輸入輸出重定向到遠端,
遠端攻擊者使用nc等工具完成滲透入侵
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux使用partprobe更新分區(qū)表的示例代碼
partprobe 是一個用于在 Linux 操作系統(tǒng)中通知內(nèi)核分區(qū)表變化的命令,它請求操作系統(tǒng)重新讀取磁盤的分區(qū)表,以便及時反映對分區(qū)所做的修改,本文給大家介紹了Linux使用partprobe更新分區(qū)表的方法,需要的朋友可以參考下2025-03-03
Linux中文件描述符fd與文件指針FILE*互相轉(zhuǎn)換實例解析
這篇文章主要介紹了Linux中文件描述符fd與文件指針FILE*互相轉(zhuǎn)換實例解析,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Linux利用traceroute命令發(fā)現(xiàn)負載均衡的實戰(zhàn)案例
在網(wǎng)絡(luò)管理和故障排除中,了解數(shù)據(jù)包的路徑和識別負載均衡節(jié)點是非常重要的,traceroute 命令是一個用于跟蹤數(shù)據(jù)包在網(wǎng)絡(luò)中經(jīng)過的路由路徑的工具,本文將詳細介紹如何利用 traceroute 命令發(fā)現(xiàn)網(wǎng)絡(luò)中的負載均,需要的朋友可以參考下2024-07-07

