|
本帖最后由 luozhenni 于 2022-7-3 22:54 编辑
域渗透之完全绕开安全组件
原文链接:域渗透之完全绕开安全组件
sunyyer 衡阳信安2022-07-03 06:14 发表于山东
Summary
这两周一直在做域内DC渗透的工作,持续了较长时间,之前对实战中的域内渗透,尤其是域渗透的安全组件防御了解颇少,所以过程也是磕磕绊绊,不过值得庆祝的是最后工作圆满完成。实战与靶机环境差别很大,内网的微软ATP组件、Fortinet 与CS(CrowdStrike)的Falcon安全组件过于强大,很多工具都是根本无法使用的,免杀后会有各种问题.尤其是CS,不愧为北美最强EDR。
本地免去了隐蔽隧道联通外网搭建的过程,简单了一些,因为微软漏洞一直有专门的TSG打补丁,所以单独靠CVE难比登天。本文就这段时间的行动与思考做一个记录,Rspect!
Information collection
首先是常规的一些用户权限,域内环境等信息获取。我的测试账户是User Domain.
主机信息获取systeminfo #在这里就遇到了问题,按理说域内主机打的KB都会记录在里面,但是我发现里面仅有5个补丁,说明windwos补丁是由DC与安全组件统一去打,并不会记录在域内的用户主机上.tasklist #看到防护组件是falcon与Defender ATP,当然这属于多次一举,事先已经得到这些信息。角色网络域信息ipconfig /all #看到主机名与IP地址信息,DNS后显示域名xxx.org存在,确定Domain name.net view /domain #直接报错。net time /domain #显示出了domain,再通过nslookup查到IP地址,确认此账户的DC name。用户信息whoami /all # 查看一下权限,确认能不呢启动windows系统进程,powershell等。net group "Domain Admins" /all #查询域管理员账户,这个比较关键,为后面DESync做铺垫net group "Enterprise Admins" /domain #查询管理员用户组net group "Domain Controllers" /domain #查询域控制器,查到光中国就55个域,着实是大公司了。SPN查询服务信息setspn -q */* | findstr "xxx" #查询服务信息,主要啊是去搜了LDAP,共享主机和管道的开启状态。Mimikatz
提前跟SOC部门打好了招呼,直接把测试机的安全级别调为最低,但是仅仅也就是能使用Powershell进程了。尝试免杀版,git clone,unzip,然后芭比Q了。。Defender与Falcon安全组件同时告警,意料之中,不过可以在关掉我网络的三分钟之内一把梭哈。privilege::debug sekulsa:logonpasswords,时间就是效率。打开一看,有点失望,除了本地的几个账户的Hash,并无其他,试试DESyncdump,报错,查无信息,主机断网。。半小时后收到SOC联系,赶忙删除,清空回收站。
一计不成,再生一计,免杀。编译特征,各种免杀手法中挑了两个靠谱的,Out-EncryptedScript与Xencrpyt,一气呵成,打开Powershell,run。两分钟后,电脑失去连接。。。邮箱轰炸,SOC又发来信息,赶忙删除,看了看卡巴与cs论坛,人家老美原来已经对mimikatz的这些方法全部免疫。此时此刻我提桶跑路的心都有了,以前和360火绒打交道的我哪见过这阵势,连evil.ps1都给你杀的明明白白。再试试用内置服务+源码这条路。xsl本地加载,咦?好像没有告警,成功了?来不及按捺心中的激动之情,我赶忙尝试sekulsal::xxxlgoon,报错。好家伙,我直呼好家伙。看来CS的安全组件直接会将mimikatz的底裤都给找到,不慌,喝杯茶等SOC给我发邮件吧。。。
Tools篇
在又被批斗一次后,我决定放弃Mimikatz这个维持生计的家伙了。想办法用别的工具,一天已过,我除了被警告三次外一事无成,再一次加深了我对网络安全这个行业的担忧。要打仗了没枪可怎么行,从Github找吧,自己编译是不可能的,这辈子都学不会~
最终把目标锁定在了Impacket组件、Powershell ps组件与Invoke组件。通过昨天的侦察,不出所料的话Powershell 与Invoke会被直接干掉,但不死心,多个工具多条路,试试就逝世,打开Invoke函数Process和Powershell Mudle两分钟后,我的邮箱又多了四封邮件,要不你干脆把我杀了吧。
不幸的万幸是这次SOC没有给我发信息,估计是已经麻木了,嚯嚯,阶段性的胜利成果。言归正传,最终确定的工具为Impacker组件的py版本,因为本地客户端.exe通杀。单方面宣布python天下第一!
Impacket简单理解为一些基本网络协议的python编程类库。有了它,就可以实现一些如SMB、EFSRpc、LDAP、NTLM、KerBeros的通信连接。这是很有必要的。因为后续的Attack过程会用到很多重要脚本如secretdump.py这类。
PotitPetam初探
查资料发现PotitPetam是Printerbug在被大范围修复后的又一攻击渠道,最开始利用EfsRpcOpenFileRaw函数对其他主机做身份验证,微软虽然在后面的补丁中尝试修复问题,但是新出现的EfsRpc函数仍可以利用,我们需要用它来获取NTLM-Hash,简单看了下原理,似懂非懂。此次的攻击由于ADCS限制,不管是Relay还是约束委派都无法直接利用,且会被falcon监控到。所以尝试使用一种凭证降级的攻击利用方法,先获取凭证再说。整个Attack Pocess就像Web中的MITM(中间人攻击),我们必须在域内的一台主机中开启监听网卡,然后通过MS-EFSR向靶机发送验证来获取关键的DC凭证,所以必须知道一台域内通过NTLM认证可连接的DC主机,并且可以通过lsarpc或者其他pipe联通。不然无法进行PotitPetam,而且由于最新的DC管理默认NTLMv2认证,所以我们需要进行降级,去掉ssp。
Step1:
攻击机就选定为这台测试机,客户机使用我的本机计算机,他们虽然在不同的子域内,但是彼此是相互可以联通的,DC1为本地机的域1,DC2为本地机的DNS备选域2。以防不测。在测试机进行PotitPetam。首先查看本地Lan Manage身份管理,它会决定和客户端与DC的身份验证形式,默认是未定义的,如果是NTLMv2验证形式,在后续抓取口令的时候就需要进行降级处理;其次查看匿名访问的命名管道,默认是空的,如果要使用的话必须得有一个凭据,还好我有
编辑
Step2:
这儿利用PetitPotam的方式还是蛮多,gihub有现成的脚本,也可以调用EFSRPC函数去做连接,如果测试环境没有开lsarpc的话还是直接调用函数吧,域用户与域管IP,如图:
编辑
通过EfRPEncryptFileSrv() EFSRPC/lsarpc smb管道,like:
>> request = EfsRpcEncryptFileSrv()>> request['FileName'] = '\\\\%s\\path\\test.txt\x00' %listener#request['Flag'] = 0#request.dump()Step3:
在另一台DC3中做responder监听,ROOT权限才可开启,如果没有root权限的话,需要使用别的工具了。可以看到已经成功抓取了NTLMv1-ssp的域管凭证,如图:
编辑
Step4:
接下来就是NTLM降级与取消ssp处理了,有两种方便的方法,一种是直接在responder中修改challeng的值为1122334455667788,另一种是使用在线网站或工具解密NTLM Cracking.like:
编辑
Step5:
到这儿就已经拥有了DC中一个用户的凭证哈希,可以将Hash拖出来跑hashcat或者彩虹表了,不过一般DC的密码都是强密码,16位强密码破解起来难度极大,就算做了字典表也得跑很久,所以这儿再使用NTLM Relay的方式尝试。
https://www.onlinehashcrack.com/
Step6:
DCSync,使用Impacket套件中的secretdump.py去横向移动获取更多的域管理员和域用户的Hash值,将之前获取到的DC凭证带入,加上域用户名:
编辑
Step7:
PTH,哈希传递我们使用Impacket中的smbclient.py,这是一个共享smb管道,将DC管理员(权限最高)的哈希值与用户名放入,执行成功,就可以增删改查文件了。如图:
编辑
使用提权工具提权其他DC的其他非管理员用户,查看使用过smb的用户,替换哈希,提升权限,这儿我用incognito2尝试了一台域内测试机,抱着试试看的态度VS改了一下特征值,神奇的是竟然没有产生告警,有点奇怪。
编辑
到这儿任务已经完成,存在PetitPotam问题。且可以成功利用获取DC信息,且整个过程绕过安全组件。
引用
https://xz.aliyun.com/t/10063
https://github.com/topotam/PetitPotam
来源:先知(https://xz.aliyun.com/t/11096#toc-0)
注:如有绘画请联系删除
|
|