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

0x00 前言
总结与分享才是学习中的最大受益者,因为我们要将一些东西讲明白,就得构思,而在成文的过程中我们又不免要去查阅一些资料,去研究相关技术的原理和细节,在这过程中自己多少都会获益。所以,每次在实战中学到的新东西,我都会写成文章来总结和分享,以期不断进步,也作为平时的学习笔记,以便遗忘时得以查阅。这次分享的是某项目中遇到的非域环境下的大型内网横向实战。
注:为确保客户隐私不泄漏,以下截图均来自本地靶场环境,截图内容不重要,主要是思路和技巧。

0x01 外网打点
传说中的渗透三大洞:弱口令、未授权访问、反序列化。接到客户要求对其系统做一次攻防渗透,于是在一个夜黑风高的夜晚,队友通过弱口令登录后台,发现有Shiro组件,然后成功爆破出密匙,加密方式为AES-GCM(菜鸡不懂),立马通过工具(github地址:https://github.com/SummerSec/ShiroAttack2)
成功注入冰蝎内存马,连接成功,获取到主机System权限。接下来自然是上Fscan对当前网段扫一波,发现内网确实有点东西,于是乎上线CobaltStrike,多人运动,准备开干!

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

0x03 内网横向
1.意想不到的来宾账户
接下来进入激动人心的横向移动阶段。首先信息收集,进行了一波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反弹不回来,可能是杀软?)。翻目录找数据库,找敏感文件也并没有发现什么账号密码之类的,到这卡住了。
但有时候,突破点往往又会在你意向不到的地方。抱着死马不如当作活马医的心态,使用Crackmapexec的smb协议模块,对抓取到的Administrator,guest,DefaultAccount账户密码在当前网段中喷洒一波,最后guest用户竟然喷洒到了某台win2003的机器上,且显示为Pwn3d!,像这样的:
这代表着该账户在当前机器上具有管理员权限,于是乎使用CS自带的psexec成功拿下。
guest账户会具有管理员权限?我大概是站在了某位黑客大佬的肩膀上摘的苹果(狗头)

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

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

4.大内网环境,密码喷洒YYDS,拿下!
咳咳,接下来大佬出手了,大佬一出手就发现了其实不止我们摸到的这两个网段,还有其他很多个网段,可以说是一个掩码为16位的网段,生平第一次见这么大的内网,非域环境,可以跨网段访问,我惊了!大佬利用收集到的账户密码,使用Fscan一顿喷洒,一下扫到200多台主机!到此,渗透工作算是结束了。

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

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

不管是哪个版本的Shiro,只要知道了AES加密的密钥,就可以构造Payload直接RCE。故此洞成为养活安全工程师的洞。
注:在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端口和admin默认共享
参考链接:[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/]

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

点击收藏 | 10 关注 | 6
登录 后跟帖