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

3.2 端口監(jiān)聽與連接
如果想要測試兩臺主機是否能夠通過某個開放端口聯通,可以在一臺機器上用 nc 監(jiān)聽該端口,然后在另一臺機器上用 nc 嘗試連接。
如果兩臺機器能夠正常連通的話,就可以相互發(fā)送數據并顯示
- 3.2.1 TCP 協議監(jiān)聽連接
服務端監(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 協議監(jiān)聽連接服務端監(jiān)聽端口,指定 udp 協議
nc -l -u 127.0.0.1 10086

客戶端連接服務端,指定 udp 協議
nc -v -u -p 10087 127.0.0.1 10086

3.3 文件傳輸
通過 nc 可以實現便捷的文件傳輸,只要配合相關命令將機器上的輸入輸出重定向即可
- 3.3.1 服務端接收客戶端文件
服務端啟動監(jiān)聽,并重定向 nc 輸出到指定文件,則接收到的遠端數據將被輸出到文件中
nc -l 127.0.0.1 10086 > fi.txt
客戶端連接服務端,重定向輸入為指定文件,則在連接上服務端時會將文件內容發(fā)送出去
nc -v -p 10087 127.0.0.1 10086 < fi.txt
- 3.3.2 服務端發(fā)送文件到客戶端
服務端啟動監(jiān)聽,重定向輸入為指定文件,則在客戶端連接上時會發(fā)送文件數據到遠端
nc -l -k 127.0.0.1 10086 < fi.txt
客戶端連接服務端,重定向輸出到指定文件,則接收到服務端數據時會將其輸出到文件
nc -v -p 10087 127.0.0.1 10086 > fi.txt
- 3.3.3 使用 pv(Pipe Viewer)工具顯示文件傳輸進度服務端重定向 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 打包傳輸文件夾
服務端通過 tar 命令打包文件夾,并將其輸出通過管道層層傳遞,將其重置為 nc 連接的輸入
tar -zvcf - test | pv | nc -l 127.0.0.1 10086

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

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

