ncat
或者說nc
是一款功能類似cat
的工具,但是是用於網路的。它是一款擁有多種功能的cli
工具,可以用來在網路上讀、寫以及重定向資料。 它被設計成可以被指令碼或其他程式呼叫的可靠的後端工具。同時由於它能建立任意所需的連線,因此也是乙個很好的網路除錯工具。
ncat
/nc
既是乙個埠掃瞄工具,也是一款安全工具,還是一款監測工具,甚至可以做為乙個簡單的tcp
**。 由於有這麼多的功能,它被譽為是網路界的瑞士軍刀。 這是每個系統管理員都應該知道並且掌握它。
在大多數debian
發行版中,nc
是預設可用的,它會在安裝系統的過程中自動被安裝。 但是在centos 7/rhel 7
的最小化安裝中,nc
並不會預設被安裝。 你需要用下列命令手工安裝。
yum install nmap-ncat -y
系統管理員可以用它來審計系統安全,用它來找出開放的埠然後保護這些埠。 管理員還能用它作為客戶端來審計web
伺服器、telnet
伺服器、郵件伺服器等, 通過nc
我們可以控制傳送的每個字元,也可以檢視對方的回應。
我們還可以用它捕獲客戶端傳送的資料以此來了解這些客戶端是做什麼的。
在本文中,我們會通過下面這些例子來學習如何使用nc
命令。
通過-l
選項,ncat
可以進入監聽模式,使我們可以在指定埠監聽入站連線。 完整的命令是這樣的:
ncat -l port_number
比如
ncat -l 8080
伺服器就會開始在8080
埠監聽入站連線。
使用下面命令可以用nc
來連線遠端系統
ncat ip_address port_number
我們來看個例子
ncat 192.168.1.100 80
這會建立乙個連線,連線到 ip 為192.168.1.100
的伺服器上的80
埠,然後我們就可以向伺服器傳送指令了。 比如我們可以輸入下面內容來獲取完整的網頁內容
get / http/1.1
或者獲取頁面名稱
get / http/1.1
或者我們可以通過以下方式獲得作業系統指紋標識
head / http/1.1
這會告訴我們使用的是什麼軟體來執行這個web
伺服器的
預設情況下,nc
建立連線時只會連線tcp
埠。 不過我們可以使用-u
選項來連線到udp
埠
ncat -l -u 1234
現在我們的系統會開始監聽udp
的1234
埠,我們可以使用下面的netstat
命令來驗證這一點
netstat -tunlp | grep 1234
udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc
udp6 0 0 :::1234 :::* 17341/nc
假設我們想傳送或者說測試某個遠端主機udp
埠的連通性,我們可以使用下面命令
ncat -v -u
比如
ncat -v -u 192.168.105.150 53
ncat: version 6.40 ( )
ncat: connected to 192.168.105.150:53
nc
也可以作為聊天工具來用,我們可以配置伺服器監聽某個埠,然後從遠端主機上連線到伺服器的這個埠,就可以開始傳送訊息了。 在伺服器這端執行:
ncat -l 8080
在遠端客戶端主機上執行:
ncat 192.168.1.100 8080
之後開始傳送訊息,這些訊息會在伺服器終端上顯示出來。
nc
也可以用來做**。比如下面這個例子
ncat -l 8080 | ncat 192.168.1.200 80
所有發往我們伺服器8080
埠的連線都會自動**到192.168.1.200
上的80
埠。 不過由於我們使用了管道,資料只能被單向傳輸。 要同時能夠接受返回的資料,我們需要建立乙個雙向管道。 使用下面命令可以做到這點
mkfifo 2way
ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way
現在你可以通過nc
**來收發資料了
nc
還能用來在系統間拷貝檔案,雖然這麼做並不推薦,因為絕大多數系統預設都安裝了ssh
/scp
。 不過如果你恰好遇見個沒有ssh
/scp
的系統的話, 你可以用nc
來作最後的努力。
在要接受資料的機器上啟動nc
並讓它進入監聽模式:
ncat -l 8080 > file.txt
現在去要被拷貝資料的機器上執行下面命令:
ncat 192.168.1.100 8080 --send-only < data.txt
這裡,data.txt
是要傳送的檔案。-–send-only
選項會在檔案拷貝完後立即關閉連線。 如果不加該選項, 我們需要手工按下ctrl+c
來關閉連線。
我們也可以用這種方法拷貝整個磁碟分割槽,不過請一定要小心
nc
命令還可以用來在系統中建立後門,並且這種技術也確實被黑客大量使用。 為了保護我們的系統,我們需要知道它是怎麼做的。 建立後門的命令為:
ncat -l 10000 -e /bin/bash
-e
標誌將乙個bash
與埠10000
相連。現在客戶端只要連線到伺服器上的10000
埠就能通過bash
獲取我們系統的完整訪問許可權:
ncat 192.168.1.100 10000
我們通過選項-c
來用nc
進行埠**,實現埠**的語法為:
ncat -u -l 80 -c 'ncat -u -l 8080'
這樣,所有連線到80
埠的連線都會**到8080
埠
ncat -w 10 192.168.1.100 8080
這會導致連線10
秒後終止,不過這個選項只能用於客戶端而不是服務端。
當客戶端從服務端斷開連線後,過一段時間服務端也會停止監聽。 但通過選項-k
我們可以強**務器保持連線並繼續監聽埠。 命令如下:
ncat -l -k 8080
現在即使來自客戶端的連線斷了也依然會處於待命狀態 一文讓你掌握Python物件導向的程式設計思維
1 萬物皆物件 2 物件 用來描述客觀事物的乙個 實體 由一組 屬性 和 方法 構成 3 屬性 物件具有的各種特徵,每個物件的每個屬性都有特定值 4 方法 物件執行的操作 5 類 物件的分類,分類就是認識物件的過程 很多人學習蟒蛇,不知道從何學起。很多人學習尋找python,掌握了基本語法之後,不知...
一文讓你明白Redis持久化
網上雖然已經有很多類似的介紹了,但我還是自己總結歸納了一下,自認為內容和細節都是比較齊全的。好了,下面開始回歸正文 redis 一共有 2 種持久化方式,分別是 rdb 和 aof,下面我來詳細介紹兩種方式在各個過程所做的事情,特點等等。rdb 持久化是 redis 預設的持久化方式。它所生成的 r...
一文掌握 Linux 效能分析之 CPU 篇
平常工作會涉及到一些 linux 效能分析的問題,因此決定總結一下常用的一些效能分析手段,僅供參考。說到效能分析,基本上就是 cpu 記憶體 磁碟 io 以及網路這幾個部分,本文先來看 cpu 這個部分。cpu基礎資訊 進行效能分析之前,首先得知道 cpu 有哪些資訊,可以通過以下方法檢視 cpu ...