Empire Bootstrapping v2 – 如何预自动化一切!
Kent Ickler //
注意: 本文中提到的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习机会,并可能用于更新或集成到现代工具和技术中。
一个穿着靴子的机器人……还带着绑带……
你是否在命令与控制(C2)领域负责自动化任务?如果是,你的目标是缩短与获取有效控制通道相关的重复性任务的开销时间。这并不是我第一次在枯燥的自动化中寻找创造性简写。自动化自动化工具通常不会带来太多麻烦。令人惊讶的是,脚本中的一点点时间可能为团队节省数小时甚至数周的工作。
我仍然感到惊讶的是,PowerShell Empire 不直接接受命令行参数来启动预定义的监听器(尽管它包含 API)。Carrie 在这篇博客文章中已经提出了自动化交互式 PowerShell Empire 配置的挑战。之前的工作使用 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 [监听器名称] [端口号]
./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 会话
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 会话(可选)
screen -S Empire -R
|
请注意,如果你现在附加到新创建的 Screen 会话“EMPIRE”并退出 PowerShell Empire 实例,Screen 会话会随着 Empire 实例的销毁而销毁,使你回到原始 shell。