nc
? ? nc命名netcat琳拨,直譯為網(wǎng)絡(luò)貓辐怕。在CentOS 7查看幫助的解釋如下所示:
ncat - Concatenate and redirect sockets
翻譯過(guò)來(lái)就是可以連接和重定向Sockets。通過(guò)查詢其他資料从绘,可以看到nc命令功能確實(shí)非常多寄疏,它可以打開(kāi)TCP連接是牢,發(fā)送UDP包陕截,監(jiān)聽(tīng)TCP/UDP端口驳棱,進(jìn)行端口掃描等等农曲。
基本語(yǔ)法
nc [選項(xiàng)] [主機(jī)名] [端口]
常用參數(shù)如下所示:
參數(shù) | 說(shuō)明 |
---|---|
-4 | 僅使用IPv4 |
-6 | 僅使用IPv6 |
-c,--sh-exec [command] | 執(zhí)行給定的命令,同/bin/sh |
-e,--exec [command] | 執(zhí)行給定的命令 |
-m,--max-conns [n] | 設(shè)置同時(shí)連接的最大數(shù) |
-d,--delay [time] | 設(shè)置讀/寫(xiě)的等待時(shí)間 |
-o,--output [filename] | 將會(huì)話的數(shù)據(jù)保存為文件 |
-i,--idle-timeout [time] | 讀/寫(xiě)空閑超時(shí)時(shí)間 |
-p,--source-port port | 指定本機(jī)使用的通信端口 |
-s,--source addr | 指定遠(yuǎn)程通信的主機(jī)地址 |
-l,--listen | 監(jiān)聽(tīng)傳入的連接信息 |
-k,--keep-open | 在監(jiān)聽(tīng)模式中接收多個(gè)連接信息 |
-n,--nodns | 直接使用IP地址乳规,不解析域名 |
-t,--telnet | 響應(yīng)telnet請(qǐng)求 |
-u,--udp | 使用UDP替換默認(rèn)的TCP |
-v,--verbose | 顯示詳細(xì)的輸出信息 |
-w,--wait [time] | 設(shè)置連接超時(shí)時(shí)間,單位為秒 |
-z | 建立連接后馬上斷開(kāi)暮的,不發(fā)送和接收任何數(shù)據(jù),即Zero-I/O模式冻辩,僅用于測(cè)試連接狀態(tài) |
示例
1.實(shí)現(xiàn)QQ的功能
- 在本地終端監(jiān)聽(tīng)一個(gè)端口
nc -l 9999
- 在另一臺(tái)服務(wù)器中輸入以下命令建立連接
nc 連接服務(wù)器IP 9999
- 在任何一個(gè)服務(wù)器上輸入的信息都將發(fā)送到另一臺(tái)服務(wù)器上面
2.端口掃描
? ? 在Linux中雖然有專(zhuān)業(yè)的端口掃描端口工具猖腕,如nmap恨闪,但如果我們只想知道端口是否處理開(kāi)放狀態(tài),nc命令其實(shí)也是可以勝任的咙咽。下面演示就是掃描本機(jī)端口20-25
[root@localhost ~]# nc -z -v -n -w 2 127.0.0.1 20-25
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/*] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/*] succeeded!
? ? 當(dāng)連接到服務(wù)器上的某個(gè)端口時(shí),監(jiān)聽(tīng)該端口的服務(wù)會(huì)傳送一個(gè)Banner(類(lèi)似于一條歡迎消息)信息钧敞,這個(gè)Banner一般都會(huì)顯示自身程序的版本號(hào)等信息逻炊。而黑客就要可以利用這些信息做入侵策略犁享。從上面我們可以看到22端口處于開(kāi)放狀態(tài),因此我們就可以獲取端口22的Banner信息
[root@localhost ~]# nc -v 127.1 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:22.
SSH-2.0-OpenSSH_7.4
? ? 從上面信息可以看到SSH的版本炊昆,如果這個(gè)版本的SSH有漏洞的話,就可以被黑客給利用了凤巨。
3.傳輸文件
? ? 在Linux傳輸文件视乐,通常使用FTP和SCP,為什么還需要使用nc命令了敢茁?其實(shí)nc命令傳輸文件有其獨(dú)有的優(yōu)勢(shì)佑淀,即只需要選擇一個(gè)端口就可以在兩臺(tái)服務(wù)器間傳輸文件,而不需要進(jìn)行任何配置彰檬,也不需要像FTP和SCP那樣驗(yàn)證用戶名和密碼等信息伸刃。
- 在文件的發(fā)送端谎砾,啟動(dòng)監(jiān)聽(tīng)端口并準(zhǔn)備好相應(yīng)的文件
nc -v -l 9999 < out.txt
- 在文件的接收端,使用以下命令接收數(shù)據(jù)
[root@localhost ~]# nc -v -n 服務(wù)器IP地址 9999 > in.txt
[root@localhost ~]# ll in.txt
-rw-r--r-- 1 root root 25 7月 23 00:08 in.txt
- 此時(shí)在發(fā)送端可以看到如下信息
[root@localhost ~]# nc -v -l 9999 < out.txt
Connection from 客戶端IP地址 port 9999 [tcp/distinct] accepted
4.傳輸文件夾
? ? 如果需要傳輸多個(gè)文件或文件夾捧颅,nc是不是就無(wú)法完成了景图?這時(shí)就需要使用tar命令了。
- 使用管道技術(shù)碉哑,將tar的輸出通過(guò)管道傳給nc
[root@localhost~]# tar -cvPf - ~/out | nc -l 9999
/root/out/
/root/out/out.txt
/root/out/eip.sh
- 在客戶端連接9999端口挚币,然后將接收到數(shù)據(jù)通過(guò)tar解壓
[root@localhost ~]# nc -n 服務(wù)器IP地址 9999 | tar -xvPf -
/root/out/
/root/out/out.txt
/root/out/eip.sh