记一次非域环境的大型内网横向体验
2022-7-26 11:20:10 Author: xz.aliyun.com(查看原文) 阅读量:58 收藏

申明:本文仅供技术交流,请自觉遵守网络安全相关法律法规,切勿利用文章内的相关技术从事非法活动,如因此产生的一切不良后果与文章作者无关

0x00 前言
前段时间又参加了一次攻防演练。这次没那么好运了,外网打点一直是我的弱项,上次运气比较好,靠着灯塔扫到一个SSH的高位端口弱口令进去了。但这次连个后台弱口令都没找到,也没发现可以直接利用的框架、组件漏洞。传说中的HW三大洞:弱口令、未授权、反序列化,目前在我身上发生过的就只有弱口令。Shiro密匙爆破不出来,Fastjson,log4j2从没遇到(发现)过。这次打点基本是躺平状态,靠队友了。
总结与分享才是学习中的最大受益者,因为我们要将一些东西讲明白,就得构思,而在成文的过程中我们又不免要去查阅一些资料,去研究相关技术的原理和细节,在这过程中自己多少都会获益。下面,我对此次演练做个复盘,并总结涉及的相关技术和知识点。

0x01 演练复盘
由于HW中的信息都比较敏感,故本文截图较少,且打码会很严重,影响各位师傅阅读,见谅哈~(抱拳)
一、外网打点
前面说过,可直接利用的框架、组件漏洞只是我找不出来,Shiro密匙只是我爆破不出来,不代表别人就找不到(笑哭)。队友这次就是发现了某后台登录系统存在Shiro,且成功爆破出了密匙,加密方式为AES-GCM(菜鸡不懂)。
随后直接上利用工具(github地址:https://github.com/SummerSec/ShiroAttack2)
成功注入内存马:一台主机System权限到手。
通过fscan扫描发现内网确实有点东西,很好,上线CobaltStrike,准备多人运动。

二、搭建socks代理,进入内网
起先因为懒,图方便,采用了CS自带的socks功能,搞了个socks4a代理,但打到后面,发现一点也不顺畅,最后还得自己动手用Frp搭建了个socks5代理,瞬间感觉丝滑不少~。Frp搭建很简单,这里不赘述,弄下配置文件再执行命令就可以了,网上文章很多,有手就行。
github地址:https://github.com/fatedier/frp

三、内网横向
1.意想不到的guest用户
接下来进入激动人心的横向移动阶段。首先信息收集,进行了一波arp扫描(比较建议使用arp扫描来探测存活主机,因为内网一些主机可能是禁Ping的,仅使用ICMP协议进行扫描的话,会少一些主机),网络探测,发现当前网段存在二十多台主机。Windows下Sytem权限,横向首先自然是想到使用Mimikatz来抓取密码了,这个使用CS自带的hashdump和run mimikatz功能就好,但仅抓到Administrator账户的密码,还是一个弱口令,hash可以直接在cmd5上解出来。另外还有一个guest用户和一个DefaultAccount用户的密码hash,cmd5上解出来为空。使用Administrator的账户密码,喷洒了一波,毛都没有。
Fscan对当前网段的扫描结果中,有一个mysql数据库弱口令,两个不能getshell的未授权访问,一个通达OA(试了没有漏洞),shiro(其实就是打进来的那个shiro反序列化),几个MS17-010(试过,shell反弹不回来,可能是杀软?)。翻目录找数据库,找敏感文件也并没有发现什么账号密码之类的,自此横向受阻。
但有时候,突破点往往又会在你意向不到的地方。对抓取到的Administrator,guest,DefaultAccount账户密码在网段中喷洒一波,最后竟然喷洒到了某台win2003的机器:
看到这个Pwn3d!就很开心,因为这代表着可以执行命令,可以横向。直接使用CS自带的psexec成功了。

2.一台win2003带来的突破
接下来,自然是继续抓取这台win2003上的密码了,但是用CS自带的抓密码功能,报出如下错:
上传32位的mimikatz到目标机也是报这种错,翻目录并没有找到c:/windows/sysnative/rundll32.exe这个文件。Mimikatz抓取密码的原理是不太懂啦,于是想去找sam文件,但在C:\Windows\System32\config并没发现有,百度搜win2003 sam文件存放位置也是说的这个目录。很奇怪,居然会没有sam文件?后面,突然想到第一次HW时,团队大佬带我使用procdump+mimikatz的方式获取到了一台阿里云服务器上存储的账号密码,于是试了下,成功了,而且抓到了好几个密码。(此处就不贴图了)
立马来了一手密码喷洒,又拿下了五台:
此外还发现了另一个网段,利用抓取到的账户密码继续喷洒了一波,并未碰撞出来,夜已深,休息,明日再战。

3.不止SMB,不止Windows
第二天,大致的策略是:已经拿下这么几台机器了,那好好去信息收集一波,去翻一些敏感目录,去翻回收站,桌面,总会发现一些类似账号密码的文件,拿到了再去喷洒一波。在内网中若拿到主机管理员账号密码的话,横向会让我们事半功倍。想得是很美好啊,但每台机器似乎都比较干净,桌面没有啥多余的东西,回收站也是清空了的,除了会翻到他们的一些数据之外,没找到什么对横向有价值的东西。队友倒是翻到OA数据库的账号密码,是本地连接的,通过3389远程桌面连接上了。算是又收集到一个内网密码。
这倒是点醒了我,也可以对数据库进行喷洒呀,然并卵,两个网段倒是喷洒出两个通过windows方式认证的MSSQL数据库,但都是已经拿下的服务器,按照规则,是不重复给分的(摊手)。后面又突然想起,在进行ARP端口扫描的时候,一些主机是开了22端口的,即有一些Linux主机。于是将目前搜集到的所有密码组成字典,用户名指定为root再次进行密码喷洒,果不其然,又中标:
拿下了五台Linux:

4.大内网环境,密码喷洒YYDS,拿下!
咳咳,接下来轮到团队大佬出场了,大佬一出手就发现了其实不止我们摸到的这两个网段,还有其他很多个网段,可以说是一个掩码为16位的网段,生平第一次见这么大的内网,非域环境,可以跨网段访问,我惊了!大佬利用收集到的账户密码,使用Fscan一顿喷洒,一下扫到近300台主机!而且还发现了其他一些诸如财务数据、工艺图纸、涉军工往来邮件等大量敏感、机密信息。如此,这个内网的分算是拿够了。

0x02 涉及技术与知识点总结
1. Shiro rememberMe反序列化漏洞(Shiro-550)
原理:Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
Payload产生的过程:

命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值

不管是哪个版本的Shiro,只要知道了AES加密的密钥,就可以构造Payload直接RCE。故此洞成为HW神洞,养活安全工程师的洞。
注:在Shiro1.4.2版本后,Shiro的加密模式由AES-CBC更换为 AES-GCM,Shiro高版本下的漏洞利用,需要考虑加密模式变化的情况。另外,cookie传递的参数是自定义的,而不是常见的rememberMe,这也是需要注意的地方。
这里先留个坑,网上有很多分析Shiro漏洞的文章,菜鸡的我还不会像大佬那样debug,去做JAVA代码的漏洞分析,后面在学习JAVA代码审计时,会将常见的JAVA漏洞来分析复现一下,做一个JAVA安全的系列文章。

2. PsExec横向移动
原理:通过IPC管道在远程目标主机上创建一个psexec服务,并在本地磁盘中生成一个名为”PSEXESVC“的二进制文件,然后通过 psexec 服务运行命令,运行结束后删除服务。通过 PsExec 可以在远程目标主机上执行命令,也可以将管理员权限提升到 System 权限以运行指定的程序。
优点:PsExec 是 Windows 提供的工具,一些杀软将其列入白名单中(随着其火热程度,有关PsExec的活动现在大多会被杀软拦截),支持hash和明文。
缺点:创建或删除服务时会产生大量的日志,可以在攻击溯源时通过日志反推攻击流程。
利用条件:需目标开放445端口和默认共享
参考链接:https://blog.csdn.net/Ping_Pig/article/details/121229030

3.Mimikatz和Procdump抓取密码原理
(1)Mimikatz
Mimikatz是一款内网渗透神器,它可以从内存中获取哈希、明文密码,支持经典的PTH,PTK,PTT攻击,在域环境下还可伪造黄金、白银票据来进行权限维持。其工作原理是:通过获取调试权限来提升mimikatz进程权限,使其可以注入进程、读取进程内存数据,然后就可以使用里面写好的模块,把目标机器按在地上进行摩擦了。那什么是调试权限呢?微软官方给出的解释是:

调试权限允许某人调试他们原本无权访问的进程例如以在其令牌上启用调试权限的用户身份运行的进程可以调试作为本地系统运行的服务调试权限是一种安全策略设置允许用户将调试器附加到进程或内核管理员可以修改用户组的安全策略以包含或删除此功能正在调试自己的应用程序的开发人员不需要此用户权限调试系统组件或调试远程组件的开发人员将需要此用户权限此用户权限提供对敏感和关键操作系统组件的完全访问权限默认情况下为具有管理员权限的用户启用此属性具有管理员权限的用户可以为其他用户组启用此属性。”

大意就是,默认情况下,本地管理员组拥有调试权限(这就是为什么Mimikatz需要管理员身份来运行了),通过调试权限使其可以调试进程,调试作为本地系统运行的服务,甚⾄是调试内核。可以通过安全策略来管理此功能。
理解了其工作原理之后,就不难理解它如何能抓取到密码了。首先来了解一下什么lsass:它是微软Windows系统的安全机制,它主要用于本地安全和登陆策略。通常我们在登陆系统时输入密码之后,密码便会储存在lsass内存中。
Mimikatz正是通过获取调试权限来读取lsass.exe这个进程的内存数据来获取密码的!那明白了原理,操作就是有手就行的事了:

privilege::debug  #获取调试权限(提升权限)
sekurlsa::logonpasswords  #读取密码包括明文和哈希

有关Mimikatz的模块和相关攻击手法可参考:
https://cloud.tencent.com/developer/article/1611148
(Mimikatz获取系统密码攻防研究)
Mimikatz中获取凭据有多种方式:

CobaltStrike的梼杌插件中几乎都集成了这些方式:
需要说一下的是,我们能抓取到明文密码,其实是通过Wdigest获得的。Wdigest是lsass中的一个模块,它是利用HTTP和SASL进行身份验证,具体表现为把明文密码存在lsass.exe进程里通过http进行认证。在win2008之后的版本WDigest是默认不启用的;在win2008之前的版本如果安装了KB2871997补丁的话,也不能从中获得明文。
但这又不是绝对的,KB2871997补丁的其中一个作用是关闭WDigest Auth,但是并不是完全关闭。因为某些系统服务(如IIS的SSO身份认证)就需要用到WDigest Auth,所以这里微软选择了一个折中的方法,让用户选择是否关闭WDigest Auth,安装补丁之后可以自己选择是否开启WDigest Auth,如果选择开启WDigest Auth的话还是会保存明文密码。通过将注册表项
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest 中的UseLogonCredential键值修改为1即可。

关于KB2871997的详细细节可参考下面这两篇文章:
https://cloud.tencent.com/developer/article/1838785
(内网渗透 | 了解和防御Mimikatz抓取密码的原理)
https://www.freebuf.com/column/220740.html
(KB22871997是否真的能防御PTH攻击?)
Mimikatz是学习内网攻防必不可少的环节,而KB2871997补丁是我们学习Mimikatz攻防必须要掌握的。

(2)Procdump
Procdump抓取密码的原理就是获取内存文件 lsass.exe 进程中存储的登录密码并存储到lsass.dmp文件中,然后使用mimikatz去读取lsass.dmp获取到密码。操作有手就行:

#dump密码文件
procdump.exe -accepteula -ma lsass.exe lsass.dmp
#mimikatz去读取密码文件并保存到txt文件里
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" > pssword.txt exit

4. 密码喷洒
内网渗透中,能获取到主机管理员账号密码,将会使我们横向事半功倍,尤其是在大内网环境中,密码复用率很高,一波喷洒,能助力你拿到一波主机,对拿到的主机再次抓取密码,再用新拿到的密码喷洒一波......,如此反复。当然密码的获取还可以通过翻一些敏感文件,运气好的话,有时桌面就会有账号密码.txt这样的文件。密码喷洒的思路就是这样:不断收集内网账号密码,不断去喷洒,可以针对135,139,445,3389,22,1433,3306,1521等端口进行喷洒。相关工具fcan,hydra就不说了,这里就介绍下Crackmapexec。
CrackMapExec(CME)是一款后渗透利用工具,可帮助自动化大型活动目录(AD)网络安全评估任务。该工具的生存概念是,利用AD内置功能/协议达成其功能,并规避大多数终端防护/IDS/IPS解决方案。项目地址:https://github.com/Porchetta-Industries/CrackMapExec
kali中自带,建议使用kali中自带的,比较稳定。目前支持ldap,ssh,smb,mssql,winrm协议,不仅可用于密码喷洒,也可用来攻击。
工具的使用没啥可说的,这里给出一个使用指南:https://fdlucifer.github.io/2020/12/14/crackmapexec/

最后,喜欢渗透,喜欢攻防的师傅们,欢迎关注我的微信公众号:沃克学安全,一起讨论,一起成长哦~
奉上之前公众号发布的两篇关于攻防的文章:
https://mp.weixin.qq.com/s/-TbcGP2rJVOdyyVgOIKSXA
(记首次HW|某地级市攻防演练红队渗透总结,首发先知社区)
https://mp.weixin.qq.com/s/-NR44RweeeRVLG6of7AyLw
(记某地市HW|外网打点到Linux内网横向初体验,首发奇安信攻防社区)
转载请注明原创和出处,谢谢~


文章来源: https://xz.aliyun.com/t/11568
如有侵权请联系:admin#unsafe.sh