Netcat實踐

兩臺kali

初級的功能

1. 及時通信

▲▲▲

設server的ip為192.168.0.104,在其上執行

nc –l –p port

Netcat實踐

意為綁定6666端口作為自己的通信端口

輸入命令後回車,等待client連接

設client的IP為192.168.0.105,輸入

nc serverip port

Netcat實踐

意為連接到server(IP為192.168.0.104的6666端口)

在server端和client端都搭建好了以後,就可以互相進行即時通信

此時在cliet上開始輸入信息,便可以看到server接收到了相應的信息

Netcat實踐

在server輸入,在client同樣可以看到

Netcat實踐

這便是使用netcat進行即時通信的用法

注意:在使用netcat進行即時通信的時候,要首先搭建server端然後搭建client端。否則會出現如圖所示情況

因為server的端口還沒有開放

Netcat實踐

2. 文件傳輸

▲▲▲

同樣設server為192.168.0.104,client為192.168.0.105

大部分時間中,我們都在試圖通過網絡或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當你只是需要臨時或者一次傳輸文件,真的值得浪費時間來安裝配置一個軟件到你的機器上嘛。假設,你想要傳一個文件file.txt 從server到client。

首先我們在server新建file.txt

Netcat實踐

在client端執行

Netcat實踐

意為將從本地端口8888收到的內容存到transfer.txt

接著在server端執行

Netcat實踐

以為將file.txt的內容傳到192.168.0.105的8888

此時client端回顯如下:

Netcat實踐

可以看到在client已經收到file.txt的內容,並保存在transfer.txt了

Netcat實踐

中級

3. 掃端口

▲▲▲

server:192.168.0.104

client:192.168.0.105

netcat可以用來掃描端口,為了驗證效果,我們首先在server上開啟apache服務,相當於就開發了80端口

Netcat實踐

接著在client上使用netcat掃描

Netcat實踐

Netcat實踐

可以看到掃描出了開放的80端口

4. 抓取banner

▲▲▲

在server上安裝vsftpd

Netcat實踐

開啟ftp服務

Netcat實踐

接下來來到client,連接相應端口

Netcat實踐

可以看到很輕易就抓到了banner

5.與web服務器交互

▲▲▲

server端現在已經可以作為web服務器使用

首先連接

Netcat實踐

然後運行http請求

即輸入 HEAD /HTTP/1.0回車

Netcat實踐

高級

6. shell

▲▲▲

attacker:192.168.0.104

victim:192.168.0.105

netcat反彈shell時分為正向shell和反向shell

6.1正向shell

在victim上執行:

Netcat實踐

在attacker上執行:

Netcat實踐

此時在attacker上輸入的命令,所回顯的內容其實都是在victim上執行的結果

Netcat實踐

而在victim端顯示如圖

Netcat實踐

6.2反向shell

6.2.1最普通的反向shell

在attacker上執行

Netcat實踐

在victim上執行

Netcat實踐

此時在attacker就拿到shell了

Netcat實踐

這是最普遍的一種反向shell方式,接下來在擴充下知識點~~敲黑板,劃重點啦~

當victim上沒有nc上我們怎麼反彈shell呢?下面介紹幾種方法。

第一步都一樣,都要在attacker上執行

Netcat實踐

不同的是接下來的步驟

6.2.2python

在victim上執行

Netcat實踐

此時在attacker上就收到shell了:

Netcat實踐

6.2.3ruby

在victim上執行

Netcat實踐

在attacker上拿到shell

Netcat實踐

6.2.4perl

在victim上執行

Netcat實踐

在attacker上收到shell

Netcat實踐

6.2.5php

在victim上執行

Netcat實踐

在attacker收到shell

Netcat實踐

7.web服務器

▲▲▲

server:192.168.0.104

client:192.168.0.105

在server上新建test.txt

Netcat實踐

然後輸入

Netcat實踐

開啟web服務

接著啟動

Netcat實踐

在victim上訪問

Netcat實踐

在server上可以看到如下回顯

Netcat實踐

但是這個命令開啟的服務訪問一次後就關閉了,再次訪問會如圖所示:

Netcat實踐

所以我們可以改進,將其寫入腳本提供持久化的web服務

腳本內容如下:

Netcat實踐

腳本就是講關鍵的那行代碼加入了一直為真的while循環中:

運行腳本

Netcat實踐

此時可以持久訪問了

Netcat實踐

刷新後依舊可以訪問

訪問一次,在server上就會重複回顯如下內容

Netcat實踐

拓展:使用python自制netcat--《python黑帽子》

代碼如下:

Netcat實踐

Netcat實踐

Netcat實踐

在192.168.0.105上運行

查看幫助

Netcat實踐

建立監聽

Netcat實踐

在192.168.0.104上使用nc連接,可以看到成功拿到shell

Netcat實踐

此時在105機器上回顯如下

Netcat實踐

最後附上netcat的參數中文翻譯:

-g:設置路由器躍程通信網關,最多設置8個;

-d 無命令行界面,使用後臺模式

-c 程序重定向,比如-c bash,nc傳輸過來的數據就會指向bash去執行

-e 這個也是程序重定向,用在windows下

-G:設置來源路由指向器,其數值為4的倍數;

-h:在線幫助; -i:設置時間間隔,以便傳送信息及掃描通信端口;

-l:使用監聽模式,監控傳入的資料;

-L:也是用作監聽,不過監聽端不終止nc的話,連接端終止後,監聽端依然保持監聽狀態。

-n:直接使用ip地址,而不通過域名服務器;

-o:指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存;

-p:設置本地主機使用的通信端口;

-r:指定源端口和目的端口都進行隨機的選擇;

-s:設置本地主機送出數據包的IP地址;

-u:使用UDP傳輸協議;

-v:顯示指令執行過程;

-w:設置等待連線的時間,一般掃描時加上;

-z:使用0輸入/輸出模式,只在掃描通信端口時使用。

參考:

1. https://www.cnblogs.com/r00tgrok/p/reverse_shell_cheatsheet.html

2. https://blog.csdn.net/angie_q/article/details/78768227

3. https://bitrot.sh/cheatsheet/19-12-2017-ncat/

4. http://www.cnblogs.com/hyq20135317/p/5491298.html

5. http://www.binarytides.com/netcat-tutorial-for-beginners/


分享到:


相關文章: