netcat/nc
netcat或者是nc工具被稱為網絡上的瑞士軍刀,因此netcat也有各個版本出現在各個系統中,而在Centos 7 開始netcat也被整合到namp項目中。當然如果是開源系統中,如Ubuntu或Linux系統中則可以通過apt或yum來進行安裝,在DOS系統下可以通過下載nc for windows獲取到二進制版的netcat。因為netcat工具實際上可以通過tcp、udp或者是socket等等的方式在兩臺主機之間建立鏈接,然後通過鏈接讀取數據流,而在接收傳輸數據流的過程中可以任意發揮你的想象,因此它的功能十分強大,在這裏就簡單的介紹說明一下。
先說明下nc中比較常用的參數說明:
-4 : 強制nc使用ipv4 -6 : 強制nc使用ipv6 -D : 使用socket的方式 -d : daemon(後臺)運行,就可以配置成服務 -l : 監聽模式,如果沒有特別指定後面常常隱式使用-p參數 -n : 使用ip的,而不使用域名 -p : 使用本地主機的端口,默認是tcp協議的端口 -r : 任意指定本地及遠程端口 -s : 設置本地主機送出數據包的IP地址,主機上有多個IP時指定綁定的IP -U : 使用Unix的socket -u : 使用udp協議 -v : 詳細輸出 -z : 將輸入輸出關掉,即不進行交互,用於掃描時,註意在nmap的版本下沒有這個參數 -w : 設置連接超時時間,單位秒
使用也很簡單,可以通過簡單的測試下:
1、測試2臺主機數據流是否能通信(模擬Clint/Server模型)
host A(192.168.2.200):
[[email protected] ~]# nc -lp 1234#註意防火墻上需要開啟相應的監聽端口
host B(192.168.2.203):
[[email protected] ~]# nc 192.168.2.200 1234
此時如果hostB能連通hostA的tcp 1234端口時,在host A上的輸出任何信息都會通過nc傳送至host B上。
2、數據傳輸
host A:
[[email protected] ~]# ls -l 總用量 4 -rw------- 1 root root 1150 8月 9 00:54 file [[email protected] ~]# nc -l 1234 < file
host B:
[[email protected] ~]# ls -l 總用量 0 [[email protected] ~]# nc 192.168.2.200 1234 > file [[email protected] ~]# ls -l 總用量 4 -rw-r--r--. 1 root root 1150 9月 10 19:29 file
同理還可以使用tar命令傳送數據流的形式壓縮傳遞文件,以節省帶寬
host A:
[[email protected] ~]# du -sh ./* 46M ./data [[email protected] ~]# tar -cjf - data | nc -l 1234
host B:
[[email protected] ~]# ls -l 總用量 0 [[email protected] ~]# nc 192.168.2.200 1234 | tar -jxf - [[email protected] ~]# ls -l 總用量 4 drwxr-xr-x. 9 root root 4096 9月 10 19:57 data
當然利用這個特性還可以用nc模擬web服務器提供靜態頁面(利用nc搭建臨時web服務器):
host A:
[[email protected] ~]# vim test.html 123 [[email protected] ~]# vim nc_web.sh #!/bin/bash while true; do nc -l 80 < test.html; done [[email protected] ~]# chmod +x nc_web.sh && ./nc_web.sh
host B:
[[email protected] ~]# curl 192.168.2.200 123
當然利用nc的特性,在此功能上還能衍生出其他的很多功能,如:備份、設備克隆,網絡測速,下載、壓測等等,在此就不一一介紹了。
3、給服務器發送消息
如給一個網址發送一個http的地址頭:
[[email protected] ~]# echo -n "GET / HTTP/1.0\\r\\n\\r\\n" | nc www.baidu.com 80 -v Connection to www.baidu.com 80 port [tcp/http] succeeded!
同理利用這個特性也可以使用nc給SMTP服務器發消息用來發郵件等等。
4、端口探測
在這裏nc的功能比telnet好用多了,默認是tcp端口:
[[email protected] test]# nc -zvn 192.168.2.203 22 nc: connect to 192.168.2.203 port 22 (tcp) failed: Connection refused
udp端口:
[[email protected] ~]# nc -zvun 192.168.2.200 1234
某一端口段:
[[email protected] ~]# nc -zvn 192.168.2.200 1-1024
5、shell/cmd反彈:
host A:
[[email protected] ~]# nc -l -p 1234 -t -e /bin/bash
-t:telnet的方式
host B:
[[email protected] ~]# nc 192.168.2.200 1234 ls / 1 app bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
該方法可以繞過防火墻,對目標機shell連接,同理用nc實現端口轉發也是利用該原理。
6、自定義http的頭來訪問頁面
這裏建議用www.try2hack.nl網站去測試,在其中一些信息可以誰便填
[[email protected] ~]# nc www.try2hack.nl 80 GET / HTTP/1.1 Host: baidu.com Referrer: Mozilla/5.0 User-Agent: my-browser
在2次回車後就把別人的整個http頭和相關靜態頁面都獲取下來。
總之netcat/nc是一個十分實用且的強悍的工具,發揮你的想象靈活多變它可以實現你很多功能,在這裏就不全部一一介紹了。
本文出自 “Jim的技術隨筆” 博客,謝絕轉載!
netcat/nc