nc在Linux和windows下的安裝
netcat(簡稱nc)被譽為網絡安全界的‘瑞士軍刀’,相信很多人都認識它吧。它是一個簡單但實用的工具,通過使用TCP或UDP協定的網絡連接配接去讀寫資料。它被設計成一個穩定的後門工具, 能夠直接由其它程式和腳本輕松驅動。同時,它也是一個功能強大的網絡調試和探測工具,能夠建立你需要的幾乎所有類型的網絡連接配接,還有幾個很有意思的内置功能。
nc在linux下一般為自帶軟體,是以不用安裝。nc在windows下也自帶,可以使用netstat指令查詢
nc功能簡介
名稱:netcat指令在linux中别名為nc
作用:支援任意的TCP和UDP連接配接,監聽和讀寫
描述:nc功能支援的協定通常包括TCP和UDP,它可以打開TCP連接配接,發送UDP資料包,監聽任意的TCP或UDP端号,掃描端口,以及處理IPv4和IPv6,與telnet不同的是,nc腳本更精緻,分離錯誤資訊進入标準的錯誤代替發送他們到标準的輸出
常用的功能:
(1)簡單的TCP代理服務
(2)shell腳本實作基于HTTP用戶端和服務端
(3)網絡守護程序測試
(4)可以給ssh做HTTP代理或者連結
(5)還有更多的功能,完全取決于你如何使用
參數詳解:
-4:強制nc使用IPv4位址
-6:強制nc使用IPv6位址
-D:開啟socket的調試模式
-d:關閉讀取來自标準輸入的功能
-h:列印nc幫助資訊
-i:指定一個延時時間在每行資料發送和接受之間,在連接配接,發送,掃描多個端口時也會導緻延時
-k:強制nc去保持監聽另一個連接配接,在它目前的連接配接完成時,必須配置-l使用否則會報錯
-l:開啟監聽服務
-n:在指定的位址,端口,主機上,不做DNS或者服務查找
-p:指定為遠端連接配接指定一個本地端口
-r:随機的遠端端口
-S:激活TCP的md5簽名選項
-s:指定本地位址
-T:設定服務的ip類型
-C:設定回車符為行結束符标志
-t:telnet應答
-u:開啟UDP模式
-v:詳細資訊
-w:指定逾時時間
-X:代理協定
-x: 指定一個代理ip:port
-z: 關閉I/O讀寫,使用掃描模式
案例場景:
(1)簡單聊天
伺服器1-》192.168.1.120:nc -l 1234
伺服器2-》192.168.1.120:nc 192.168.1.120 1234
建立連接配接後,即可發送消息,隻支援兩個終端使用
(2)模拟telnet遠端登入伺服器
server:nc -l 1234 -e bash
client : 192.168.1.121 1234
然後就類似于ssh遠端登入了,雖然功能有限,但還是很強大的
如果不支援-e參數,也可以建立遠端登入:
使用mkfifo指令建立有名管道:
服務端:
mkfifo /tmp/tmp_fifo
cat /tmp/tmp_fifo | /bin/bash -i 2>&1 | nc -l 2222 > /tmp/tmp_fifo
用戶端:
nc -n 172.31.100.7 2222
然後就遠端登入成功了
過程如下:
(1)從網絡收到指令寫入fifo檔案中
(2)cat指令讀取fifo檔案,并且發送到bash指令
(3)bash執行完的結果發送給nc
(4)nc通過網絡把内容發送給用戶端
這樣一來看起來就非常逼真了
(3)端口掃描
端口掃描,常用系統管理者和黑客用來發現一些機器上的開放端口,幫助識别系統上的漏洞
nc -z -v -n 192.168.1.212 20-25
z參數告訴netcat開啟靜默模式,連接配接成功後,立即關閉連接配接,不進行資料互動
v參數,使用詳細輸出
n參數,不要使用DNS反向查詢IP位址的域名
發現有開放的端口,可以使用nc -v ip port 連結,并檢視banner資訊
(4)檔案傳輸
檔案發送方:nc -l 2222 < ac 阻塞等待
檔案接收方: nc -n 192.168.1.212 2222 > bx 讀取寫入bx檔案中
(5)目錄傳輸:
目錄傳輸前,需要壓縮整個目錄
發送方:tar -zcvf -dir_name | nc -l 2222
接收方:nc -n 192.168.1.212 | tar -xvf - 接收并解壓
如果想節省寬帶:
發送方:tar -zcvf -dir_name | bzip2 -z | nc -l 2222
接收方:nc -n 192.168.1.212 | bzip2 -d |tar -xvf - 接收并解壓
(6)加密傳輸:
發送方使用mcrypt加密: nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
接收方使用mycrpt解密:mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567
使用任何加密方式都行,執行上述需要輸入密碼,確定使用一樣的密碼
(7)流視訊:
服務方:cat video.avi | nc -l 2222
接收讀入并輸出到播放器裡面: nc ip 2222 | mplayer -vo x11 -cache 4000 -
(8)指定用戶端端号用于通訊
服務方:nc -l 2222
客戶方: nc ip 2222 -p 23
1024以内的端口需要root權限,預設随機産生一個端口
(9)指定源位址:
如果你的機器有多個網卡,那麼可以指定位址,用于通信:
服務方: nc -u -l 2222 < file
客戶方: nc -u 服務方ip 2222 -s 客戶方多ip中一個 > file