用Powershell框架Empire进行内网域渗透(一)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Powershell框架Empire进行内网域渗透(一)相关的知识,希望对你有一定的参考价值。

参考技术A

自从powershell在windows开始预装之后,就成为Windows内网渗透的好帮手,好处多多:天生免杀、无文件落地、 无日志(雾) 。
于是老外开发了 empire 框架,毕竟 cobalt strike 要收费的不是?
功能模块丰富,老外把内网[域]渗透中能用到的都整合进去了:内网探测,提权,凭据获取,横向移动,权限维持。模块那么多,不懂就 searchmodule 或者[tab]两下。

基于 debian 系的,如kali或者ubuntu都可以安装。
git clone https://github.com/EmpireProject/Empire.git
在执行安装脚本之前,建议修改软件源和 pip 源,避免因为网络问题安装失败。
sudo ./setup/install.sh

安装好后执行 ./empire 后就可以用了。
先查看可用的 Listener 有哪些?[tab]两下就出来了所有可用的。

通过 info 查看指定模块的配置信息

这里还是先使用http的监听,通过 set Port 8080 修改监听的端口, 2.x版必须同时设置 Host ,然后 execute 启动监听。

通过list命令查看正在运行的监听

可以通过usestager来生成文件,引诱对方运行,可以看到支持linux、Windows、osx。

这里我们选用launcher_bat,通过 info 查看可以配置的参数。

这里需要注意的是Listener的Name,必须跟前面启用的Listener的一致。

生成的文件内容是这样子的

其中那么一大段的powershell命令,跟 (Empire: listeners) > launcher powershell test 的执行结果是一样的。这里先不关心怎么让其在别的机子上运行,那是另外的技术活。

用win7的cmd执行了那一串命令后,进程中可以看到有powershell.exe

执行 agents 命令查看回连的机子,然后 interact BNR1T9ZC 来与之进行交互。

通过 help 命令可以查看到在agent上可以执行很多命令。这里挑些重要的讲。
bypassuac ,顾名思义就是绕过uac的。除非你是本机的administrator,否则普通管理员都需要右键某个程序,然后选择 run as administrator 才能运行,这都是uac作的怪。
因为这里是用普通域用户权限执行的,连本机的普通管理员都不算,所以失败了。

sc,屏幕截图命令,可以通过这个了解机子上的人正在做什么。

我们看看usemodule还有哪些可用的模块?(有些模块需要对应权限才能成功运行)

输入 help agentcmds 可以看到可供使用的常用命令

执行 ipconfig 查看网卡信息(如果不在help列表中,那么会自动执行远程主机上的可用命令)

可以看到dns的ip是1.1.1.10,既是域控的ip

当你获得一个会话之后,又想要派生更多会话,怎么办?

使用 invoke_shellcode 来注入 meterpreter 的shellcode

metasploit先要设置一个 listener

然后empire执行

成功获取meterpreter会话(才怪, empire2.5 版本)

在session1建立到1.1.1.0/24网段的路由跳转
run autoroute -s 1.1.1.0/24

通过sesesion1打通网段后,可以看到域控服务器1.1.1.10开放的端口

使用ms17010成功获取meterpreter会话。
至此,域控拿下,可以开始漫游内网。(还是得靠metasploit,单一个empire做的事情很有限)

获取域管理员的明文凭据

用后渗透模块 credential_collector 收集可用的凭据

empire 可以直接使用 mimikatz 来获取凭据。 注意,此时客户端上powershell进程占用的cpu可达90%,会引起卡顿

creds 查看获取的凭据

利用pth来传递hash,用这个hash创建一个新的进程,可以看到新的进程id是3032

然后 credentials/tokens 查看不同用户的进程id

对指定进程steal_token之后,再去与agent交互就是域用户user的权限了。

用revtoself再切换回原来的权限(普通域用户权限太低做不了什么)

到这里尝试了好几个 situational_awareness/network/powerview 的模块返回的都是空结果,看来是需要域管理员才能执行成功。

碰巧域管理员也登陆这台机子,那么就能用他的权限做很多事情了。

也可以使用 usemodule management/psinject 进行切换,设置好ProcessId即可

现在我们又获得了一次域管理员权限,可以开始横向移动了。
先内网探测下可用的机子有哪些,使用了 situational_awareness 中的三个模块:
find_localadmin_access user_hunter get_domain_controller

又一次可以确定1.1.1.10就是域控所在了。用 lateral_movement/invoke_psexec 移动到域控服务器上面。

终于又回到了域控服务器,接下来要考虑的是如何导出域控上面的所有hash,并且维持权限。

以上是关于用Powershell框架Empire进行内网域渗透(一)的主要内容,如果未能解决你的问题,请参考以下文章

Empire4.2使用-第一篇(安装基础命令监听器后门生成)

Empire4.2使用-第一篇(安装基础命令监听器后门生成)

渗透实战:内网域渗透

Vulnstack红日安全内网域渗透靶场1实战

ATK&CK1红队评估实战靶场Vulnstack之第三篇CS内网域控

ATK&CK1红队评估实战靶场Vulnstack之第三篇CS内网域控