Empire自动化部署v2 - 如何实现全自动配置!

本文详细介绍了如何使用Screen会话和自动化脚本实现PowerShell Empire监听器的无人值守部署,包含完整的脚本示例和配置步骤,可显著提升红队操作效率。

Empire Bootstrapping v2 - 如何预自动化所有事项!

作者:Kent Ickler
咨询提示: 本博文中引用的技术和工具可能已过时,不适用于当前情况。然而,这篇博文仍可作为学习机会,并可能更新或集成到现代工具和技术中。

一个穿着靴子的机器人……带着绑带…… 你是否在命令与控制(C2)领域承担了自动化任务?如果是,你的目标是缩短与获取有效控制通道相关的重复性任务的开销时间。这不是我第一次在单调的自动化中寻找创造性的简写方式。自动化自动化工具通常不会带来太多麻烦。令人惊讶的是,在脚本中花费一点时间可能为员工节省数小时甚至数周的工作。

我仍然感到惊讶的是,PowerShell Empire 不直接接受命令行参数来启动预定义的监听器(尽管它包含一个API)。自动化参与式PowerShell Empire配置的挑战已经由Carrie在这篇博文中提出。先前的工作使用Screen创建一个新的shell会话“窗口”并输入适当的命令。通过对Carrie的工作进行一些小改动,创建了一个PowerShell Empire引导程序,用于无人值守的部署和拆卸。

Screen回顾:

Screen允许在Linux系统中保留多个会话。将PowerShell Empire直接投入一个新的Screen而不附加屏幕,会导致Empire在当前会话的后台主动加载。Screen的功能允许从现有会话向新会话传递命令,使shell脚本能够模拟带有输入的参与式会话。

无人值守PowerShell Empire引导:

以下脚本将一个PowerShell Empire实例投入一个新的Screen会话,向该会话发送必要的命令以清除所有现有监听器,并创建新监听器的命令。最后一个命令(为无人值守实用程序注释掉)将用户附加到新的Empire会话。附加到新会话是可选的,因为Empire现在可以通过来自其他来源/脚本的脚本进行交互控制。向Empire实例发送命令的语法在这里相当明显,修改以适应你的自动化或无人值守需求应该相当容易。

1
2
3
4
5
6
7
#你需要sudo权限来运行Empire:
sudo -s

#别忘了你的+x标志!
chmod +x Empire_Listener_443.sh

./Empire_Listener_443.sh

Carrie去年已经推动了这项工作的大部分,通过一些小更新,它变得无人值守和自动化。谢谢Carrie!

Empire_Listener_443.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#清除任何现有的Empire Screen会话
screen -X -S Empire Quit

# 启动Empire并等待几秒钟,直到它启动并将用户带到提示符。
cd /directory/to/Empire
screen -S Empire -d -m /directory/to/Empire/empire
sleep 5

#向Empire实例发送无人值守命令
screen -S Empire -X stuff 'listeners\r'
screen -S Empire -X stuff 'kill all\r'
screen -S Empire -X stuff 'y\r'
screen -S Empire -X stuff 'set Name OurListener\r'
screen -S Empire -X stuff 'set Port 443\r'
screen -S Empire -X stuff 'execute\r'
screen -S Empire -X stuff 'back\r'
screen -S Empire -X stuff 'listeners\r'

echo "***使用'screen -S Empire -R'连接到此Empire会话"

这将使Empire监听器在后台会话中运行,并提供连接到监听器控制菜单的适当命令。

参与式PowerShell Empire引导

现在,再进一步,这个简短的脚本可以变成一个引导程序,它将启动Empire并将你附加到一个会话中,使用你提供的命令行参数。

1
2
3
4
5
6
7
8
9
#你需要sudo权限来运行Empire:
sudo -s

#别忘了你的+x标志!
chmod +x EmpListener.sh

./EmpListener.sh [listener-name] [port number]

/.EmpListener.sh OurListener 443

EmpListener.SH:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#清除任何现有的Empire屏幕会话
screen -X -S Empire Quit

# 启动Empire并等待几秒钟,直到它启动并将用户带到提示符。
cd /directory/to/Empire
screen -S Empire -d -m /directory/to/Empire/empire
sleep 5

#向Empire实例发送无人值守命令
screen -S Empire -X stuff 'listeners\r'
screen -S Empire -X stuff 'kill all\r'
screen -S Empire -X stuff 'y\r'
screen -S Empire -X stuff 'set Name '$1'\r'
screen -S Empire -X stuff 'set Port '$2'\r'
screen -S Empire -X stuff 'execute\r'
screen -S Empire -X stuff 'back\r'
screen -S Empire -X stuff 'listeners\r'

#附加到新的屏幕会话(可选)
screen -S Empire -R

请注意,如果你现在附加到新创建的Screen会话“EMPIRE”并退出PowerShell Empire实例,Screen会话会随着Empire实例的销毁而被销毁,使你回到原始shell。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计