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 ,已加载模块的数量。
help命令适用于所有的菜单,使用TAB键可以补全命令行。使用Ctrel+C随时结束程序。
首先你要建立一个本地的Listener, listeners 命令将跳到listener管理菜单。你可以随时使用 list 命令列出被激活的listener。Info命令将显示当前listener配置的选项。
使用 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的描述信息,可以在 here and here 获取到。
Empire在./lib/stagers/*里实现了多个模块化的stagers。包含有dlls,macros,one-liners等等。使用 usestager <tab> 列出所有可用的stagers。
同样,可以使用 set/unset/info 命令来设置参数。
对于UserAgent和Proxy选项,默认使用的是系统默认的信息。在Listener菜单中,你可以运行launcher [listener ID/name]别名来给当前这个listener来生成 stage0 发射器。也就是Payload。将生成的命令行在装有powershell的主机上执行,就会得到这个主机的一个powershell。
如下图 :
使用agents命令可以列出当前已激活的代理。指定代理的ID可以批量或者指定主机执行命令。要连接一个代理,可以使用
interact [代理名称]。代理的名称也同样支持TAB键的补全。
连接到代理之后,你可以使用 info 命令列出当前这个代理的详细信息。使用 help 命令列出所有的代理命令。如果你输入的命令不是Empire内置的命令,那么将会被解释为一个shell命令。另外,你可以使用 upload/download 进行上传下载文件,也可以使用 rename [新的代理名称] , cd 命令进入文件夹。
每当有代理注册之后,会新建 ./downloads/代理名称/ 文件夹(当你重命名代理名称时也会跟着改变)。./agent.log 文件中为代理通信记录着带有时间戳的命令和返回的结果的日志,并在 Downloads/module 里分解成相关的文件。
键入 usemodule <tab> 来查看可用的模块。使用 searchmodule privsec 来搜索模块的名称或描述信息。
要使用一个模块,例如:
usemodule situational_awareness/network/sharefinder
info命令可以显示当前模块的所有信息。
要设置一个选项,例如在域中使用 sharefinder 模块,使用 set 命令设置 Domain 选项为域的名称。也可以设置 Agent 为其他的代理执行当前模块。
除了Empire内置的模块外,你也可以用很简单的方式在远程的Empire代理中哦你导入并使用一个.ps1脚本。使用scriptimport ./path/ 命令导入一个脚本。该脚本将被导入并访问脚本中的任何功能。在连接代理后,使用 scriptcmd [导入的脚本文件名称] 命令,来执行你导入的ps1脚本。
如下图:
我写了一个打开计算器的test.ps1脚本,使用 scriptimport ./test.ps1 命令,
Empire作为一款使用PowerShell脚本作为攻击载荷的渗透攻击框架,它的实用性其实很强,内置的模块有键盘记录,抓Hash/password,绕过UAC,Anti-AV,内网扫描等等。当然,所有的这些功能都得益于PowerShell能够将Shellcode加载到自己的内存中去执行。这款轻量级的渗透攻击框架也是我平时作为内网渗透的工具之一。