转载

Empire:PowerShell后期漏洞利用代理工具

Empire是一个纯碎的PowerShell后期漏洞利用代理工具,它建立在密码学、安全通信和灵活的架构之上。Empire实现了无需powershell.exe就可运行PowerShell代理的功能。快速部署后期漏洞利用模块,从键盘记录器到Mimikatz,并且能够适应通信躲避网络检测,所有的这些功能都封装在一个以实用性为重点的框架中。

为什么会选择PowerShell?

PowerShell有很多攻击优势,包括完整的.NET框架的访问,应用程序白名单,可以直接访问Win32 API,在内存中加载恶意的二进制文件,并且默认安装在了Windows 7+中。

2014年是PowerShell发挥攻击优势的转折性的一年。虽说有很多有用的项目,但是很多pentester仍然为将PowerShell以一种安全的方式整合在实际的攻击行为中而在努力。

初始化安装

运行./setup/install.sh脚本,会安装一些依赖的Python库并执行./setup/setup_database.py脚本。这个setup_database.py文件包含了各种设置,你可以手工修改,之后会初始化./data/empire.db数据库。运行./empire将启动Empire程序。./empire-debug会生成一个详细的调试日志文件./empire.debug。安装目录所包含的./data/reset.sh会重置并初始化数据库,同时会在调试模式下启动Empire。

主菜单

一旦你进入了主菜单,你会看到已激活的代理,已激活的(监听器) Listener ,已加载模块的数量。

Empire:PowerShell后期漏洞利用代理工具

help命令适用于所有的菜单,使用TAB键可以补全命令行。使用Ctrel+C随时结束程序。

Listeners

首先你要建立一个本地的Listener, listeners 命令将跳到listener管理菜单。你可以随时使用 list 命令列出被激活的listener。Info命令将显示当前listener配置的选项。

Empire:PowerShell后期漏洞利用代理工具

使用 set 命令设置Host/Port参数,可以直接使用域名。

set Host http://192.168.16.130:8081

要设置HTTPS的Listener,首先将CertPath参数设置为一个本地的.pem文件。

执行./data/cert.sh脚本,会生成一个自签名的证书,路径为:./data/empire.pem.也可以为listener设置可选的参数如:WorkingHours, KillDate, DefaultDelay, DefaultJitter。然后输入execute命令启动这个listener。如果这个listener的名称已经被使用,那么将会在名称后面添加数字来进行区别。如果端口被占用,Empire也会提醒你。

Stagers 

了解更多关于可用的stagers的描述信息,可以在 here and here 获取到。

Empire在./lib/stagers/*里实现了多个模块化的stagers。包含有dlls,macros,one-liners等等。使用 usestager <tab> 列出所有可用的stagers。

Empire:PowerShell后期漏洞利用代理工具

同样,可以使用 set/unset/info 命令来设置参数。

对于UserAgent和Proxy选项,默认使用的是系统默认的信息。在Listener菜单中,你可以运行launcher [listener ID/name]别名来给当前这个listener来生成 stage0 发射器。也就是Payload。将生成的命令行在装有powershell的主机上执行,就会得到这个主机的一个powershell。

如下图 :

Empire:PowerShell后期漏洞利用代理工具

代理

使用agents命令可以列出当前已激活的代理。指定代理的ID可以批量或者指定主机执行命令。要连接一个代理,可以使用

interact [代理名称]。代理的名称也同样支持TAB键的补全。

Empire:PowerShell后期漏洞利用代理工具

连接到代理之后,你可以使用 info 命令列出当前这个代理的详细信息。使用 help 命令列出所有的代理命令。如果你输入的命令不是Empire内置的命令,那么将会被解释为一个shell命令。另外,你可以使用 upload/download 进行上传下载文件,也可以使用 rename [新的代理名称]cd 命令进入文件夹。

每当有代理注册之后,会新建 ./downloads/代理名称/ 文件夹(当你重命名代理名称时也会跟着改变)。./agent.log 文件中为代理通信记录着带有时间戳的命令和返回的结果的日志,并在 Downloads/module 里分解成相关的文件。

模块

键入 usemodule <tab> 来查看可用的模块。使用 searchmodule privsec 来搜索模块的名称或描述信息。

要使用一个模块,例如:

usemodule situational_awareness/network/sharefinder

info命令可以显示当前模块的所有信息。

Empire:PowerShell后期漏洞利用代理工具

要设置一个选项,例如在域中使用 sharefinder 模块,使用 set 命令设置 Domain 选项为域的名称。也可以设置 Agent 为其他的代理执行当前模块。

脚本

除了Empire内置的模块外,你也可以用很简单的方式在远程的Empire代理中哦你导入并使用一个.ps1脚本。使用scriptimport ./path/ 命令导入一个脚本。该脚本将被导入并访问脚本中的任何功能。在连接代理后,使用 scriptcmd [导入的脚本文件名称] 命令,来执行你导入的ps1脚本。

如下图:

我写了一个打开计算器的test.ps1脚本,使用 scriptimport ./test.ps1 命令,

Empire:PowerShell后期漏洞利用代理工具

译者小结

Empire作为一款使用PowerShell脚本作为攻击载荷的渗透攻击框架,它的实用性其实很强,内置的模块有键盘记录,抓Hash/password,绕过UAC,Anti-AV,内网扫描等等。当然,所有的这些功能都得益于PowerShell能够将Shellcode加载到自己的内存中去执行。这款轻量级的渗透攻击框架也是我平时作为内网渗透的工具之一。

*参考来源: kitploit ,编译/丝绸之路,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

正文到此结束
Loading...