安全路透社
当前位置:安全路透社 > 网络转载 > 正文

Empire 2.5:PowerShell渗透测试实战指南(上篇)

* 本文原创作者:谦逊的阿狸先生

背景介绍

Empire 是一款类似Metasploit 的渗透测试框架,基于python 编写,Empire是一个纯粹的PowerShell 后开发代理,建立在密码安全通信和灵活的架构上。Empire 实现了无需powershell.exe 即可运行PowerShell 代理的功能,从键盘记录器到Mimikatz 等快速部署的后期开发模块,以及适应性通信以避开网络检测,所有这些都包含在以可用性为重点的框架中。

距离Empire 诞生已经过去了很久,其版本也已经随着开发团队进度的逐步深入更新到2.5 版本,但是纵观国内对该框架的渗透测试实战教程几乎为一片空白,所以笔者的首篇Freebuf 原创文章决定以它执笔。基于渗透测试实战,以PTES 渗透测试执行标准为轴介绍Empire2.5 的环境构建及使用方法。旨在为新人小白提供一套行之有效的思路导向,不足之处也望诸君尤其是前辈大牛批评指正。

一、环境搭建

1、基本安装

所需环境:Debian 系统、Python

很多教程建议将Empire 安装在购买的VPS 上,但是VPS 本身极不安全,存放渗透测试文件及数据想想都可怕。这里笔者选择购买2 个VPS ,一台作为第一跳代理服务器,一台作为VPN 中转服务器,而将Empire 安装在本机的Kali 虚拟机(或Ubuntu )上。具体架构如下图:

image.png

Emmmmm…真心自己随手画的,这部机器上没有网络绘图软件- –  所以!将就用吧!

下一步就是安装了

image.png

安装完成之后显示如下:

image.png

这里注意,任何时候你需要迁移Empire框架位置或者进行Empire的各类库重配置,如果不想挨个去修改数据库存储条目与配置文件,Empire为你提供了懒人一键模式——reset.sh。(笔者作为一只皮皮虾总会去皮那么几下,你们懂的)

2 、可视化框架构建

众所周知,Metasploit 为部分喜好GUI 的童鞋提供了友好的可视化框架,Empire 同样。

下载完毕后,将empire-web移动到/var/www/html文件夹中,如下执行:

git clone https://github.com/interference-security/empire-web.git
service apache2 restart

image.png
 显示web容器已经创建成功。

之后php-v查看kali是否有安装或更新php版本,若没有则视情况安装。笔者安装的是php7.5-curl。

修改empire主文件配置(笔者习惯性将empire主文件目录同empire-web文件目录放置在一起,仅仅是个人习惯,方便查找工具及其附属各类文件、资料库所在位置。)

image.png

    vim /var/www/html/Empire/empire

如下图修改:

image.png

接着敲入empire–help学习empire类msf-bat命令行,按规范启用empireweb接口,如图:

image.png

./empire --headless --restport [port] --username [username_str] --password [password_str]

成功后显示如下图:

image.png

随后就可以打开empire的web端:

image.png

键入IP、Port、Username和Password后点击登陆:

image.png

登陆成功后回显界面如下:

image.png

查看配置或者生成各类模块:

image.png

image.png

二、基本命令

进入empire命令行主界面,敲入help阅读命令说明,基本操作类似MSF。

image.png


笔者先介绍一下各个命令的意思:(毕竟是科普文)

Agents—— 未来回连的靶机;

creds—— 便是数据库中写入的各类凭据(主要为口令一类);

interacrt——与现有agents宝宝们交互(实际并非一个交互性shell,Empire其实类似一款http/https仿造浏览器请求侦察与控守混合型木马,通道隐藏性较好可惜牺牲了流量,wireshark抓包你会发现核心防火墙上的request包流浪有多么恐怖~);

list—— 后跟listeners或agents列出当前活跃的监听器或服务端宝宝;

listeners—— 进入监听器设置接口;

load—— 加载自定义模块或其他扩展模块接口(默认为empire当前目录);

plugin—— 加载自定义插件或其他扩展插件;

 plugins—— 列出所有载入的插件列表; 

preobfuscate——预混淆功能。食之无味,弃之可惜,谓之鸡肋。还是介绍一下,需要在系统上预装wine和powershell,但是wine本身的不稳定,笔者也不知道怎么去描述这个功能的设计目的了。预混淆顾名思义就是预先对所有加入了该功能接口的脚本执行混淆操作,增强其后渗透阶段免杀能力,不过,笔者表示懒得去用;

reload—— 同MSFreload功能;

report—— 输出报告;

reset—— 重置ip黑白名单、混淆项目等;

resource—— 批量导入empire命令执行;

searchmodule—— 模块关键词搜索(命令行界面优于GUI界面);

set—— 设置ip黑白名单、混淆项目等;

show—— 查看当前框架设置,也就是set默认值;

usemodule—— 使用某一模块;

usestager—— 使用某一载荷。

我们都知道现在需要建立一个监听了,但是不着急,我们今天所要建立的监听是基于PTES标准,那么自然不可以简简单单一个easy监听就敷衍了事。

三、渗透通道

1、基本环境

(1)通信架构图:

image.png

(没错,这张图又出现了= =)

说正事儿~这种三级跳模式能够很好的保护渗透测试人员,即使你是在被授权的情况下,我们始终把握以安全为主。当然了,两个VPS你爱装什么系统爱装什么系统,爱转哪个端口转哪个端口,爱做映射做映射,爱做代理做代理,只要自己的通信信道别被自己玩崩了即可。

(2)详细介绍

第一跳:代理服务器(VPS1)

通联服务端靶机,只作端口转发功能,如netsh、lcx、nc等。

image.png

第二跳:VPN服务器(VPS2)

通联客户端本机与第一跳代理服务器,需要添加路由表并搭载empire中转接口,具体后文再提。

image.png

image.png

注意:添加防火墙例外。

2、平台配置

进入listeners,敲help列帮助菜单:

image.png

英文过关基本没问题,和前文大同小异,不做详细介绍。

uselistener之后空格加敲2下TAB列出可供使用的监听器,然后基于我们的需求选择所需要配置的监听器:

这里我们首先选择http,每个监听器具体功能可进入该监听器模块而后info显示进行阅读。

如下图操作:

image.png

这里配置BindIP时配置127.0.0.1或者vpn网卡IP都是可以的,笔者的VPN服务器分配给kali的静态IP是10.8.0.22,配置完成后info查看一下,保持一个良好的检错习惯。

确认无误后execute执行即可,接着继续配置VPN服务器中转端接口:

image.png

同样记得配置完后检查一遍,而后运行,生成中转端接口文件在/tmp/http_hop/文件夹下:

image.png

image.png

将生成的http_hop文件夹通过sftp或scp拷贝到VPN中转服务器的/var/www/html下(同本机,kali一般自带apache2,若vps2未配置apache2请自行安装),重启apache2服务。

image.png

最后重新进入原http配置StagerURI选项(注意不要默认的话最好自己配上协议和端口,配置完毕后重启http监听器:

image.png

disable之后enable即可重启该监听器。

注意:上图笔者下意识已经配置好了,所以懒得再回去重新配了。

image.png

四、载荷配置

usestager 空格之后两下TAB 列出所有载荷列表,其中multi 为通用模块、osx 是mac 操作系统、剩下的就是windows 的模块,下面笔者只就其中几种常用类型木马来具体介绍:

1 、dll

dll 进程注入马应该是平日里用的最多的方式了,输入usestagerwindows/dll 的命令,然后输入info 命令来查看详细参数,如下图所示

image.png

这里我们设置一下Listener,然后执行execute命令,就会在tmp目录下生成launcher.dll的木马,如下图所示。

image.png

然后将launcher.dll在目标主机上运行后,就会成功上线。

注意:当然也可以用于NSA方程式工具当中的双重脉冲SMB后门,毕竟最开始Empire被广泛关注就是结合NSA后门程序反弹shell利用的Youtube视频。

2.launcher

如果只是需要简单的powershell代码,在设置完相应模块后,可以直接在监听器菜单中键入“launcher<language> <listenerName>”,自动生成一行base64编码后的PowerShell代码。

最后返回键入launcherpowershell My@Empire命令来生成一个Payload,放置到目标主机执行即可。

很简单,与下面的一块儿介绍。

3、launcher_bat

image.png

生成一个bat

image.png

同样,放置到目标主机执行即可返回一个主机标识。

image.png

靶机返回,后续自由发挥或者等待下一篇分享。

笔者最后一个习惯,一定要把随机的主机名更改掉:

image.png

到具体,敲help命令看看能执行哪些渗透阶段和后渗透阶段命令。

image.png

其他?

篇幅所限静待下篇。

人生第一篇稿,原来这么累,下班了晃晃悠悠掰弄掰弄居然到了深夜。末了,路漫漫其修远兮,吾辈共勉,闭门造车远不如共同进步,不足与遗漏之处还望诸君海涵和提出意见,谢谢。

* 本文原创作者:谦逊的阿狸先生

未经允许不得转载:安全路透社 » Empire 2.5:PowerShell渗透测试实战指南(上篇)

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册