内网渗透-windows基础知识


Windows 特性

工作组

工作组是指数台计算机在一个内网中,在逻辑上都属于工作组,但是在工作组中的机器之间相互没有信任
关系,每台机器的账号密码只是保存在自己的SAM文件中,那就意味 着如果需要共享资源只能新建一个账
号并指定相关资源授予该账号权限才可以完成共享,使得访问资源更有层次化,缺乏管理域控制机制。

windows用户、组

不同的用户身份拥有不同的权限

每个用户包含一个名称和一个密码

用户账户拥有唯一的安全标识符(security ldentifier,SID)

Windows 默认账户

用于特殊用途,一般不需更修改其权限

与使用者关联的用户账户 Administrator(管理员用户)

默认的管理员用户 Guest(来宾用户)默认是禁用的

Windows 内置用户账户

权限: Guest > User > Administrator > SYSTEM > TrustInstall
与windows组件关联的用户账户

System(本地系统):为windows的核心组件访问文件等资源提供权限

Local Service(本地服务):预设的拥有最小权限的本地账户

Network Service(网络服务):具有运行网络服务权限的计算机账户

Windows 用户属性
1
2
3
4
5
6
7
displayname
objectsid
userprincipalname
samaccountname
whencreateds
owdlastset
lastlogon
Windows 内置组

Administrators

Guests

Power Users

Users(标准用户)

Remote Desktop Users

Windows组

通用组:不能控制对资源对访问,逻辑上将用户归纳,方便发件等

安全组:权限的集合,对组配置权限便于管理

全局组

通用组

域本地组

Windows 内置用户账户

adminisators组内的用户,都具备系统管理员的权限,它们拥有这台计算机最大的控制权限,可以执行
整台计算机的管理任务。内置的系统管理员账号 Adminstrator 就是本地组的成员,而且无法你将它从
组删除。如果这台计算机已加入域,则域的Domain Admins 会自动地加入到该计算机的
Adminstrators组内。也就是说,域上的系统管理员在这台计算机上也具备着系统管理员的权限。

Geusts 组是提供给没有用户账户但是需要访问本地计算机资源的用户使用,该组的成员无法永久地改
变其桌面的工作环境。该组最常见的默认成员为用户账号Guest。

Power Users 组内的用户具备比Users组更多的权利,但是比Administrators组拥有的权利更少一些,
例如,可以:创建、删除、更改本地用户账户;创建、删除、管理本地计算机内的共享文件与共享打印
机;自定义系统设置,例如更改计算机时间、关闭计算机等。但是不可以更改Administrators,无法夺
取文件的所有权、无法备份与还原文件、无法安装删除与删除设备驱动程序、无法管理安全与审核日
志。

Users 组内的成员只拥有一些基本的权利,例如运行应用程序,但是他们不能修改操作系统的设置、不
能更改其他用户的数据、不能关闭服务器级的计算机。所有添加的本地用户账户者自动属于Users组。
如果这台计算机已经加入域,则域的Domain Users会自动地被加入到该计算机的Users组中。

Remote Desktop Users 组内的成员拥有远程桌面登录的权限。默认Administrators组内的成员都拥有远程桌面的权限。

UAC

用户账号控制 (User Account Control)

用户账号控制(user Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作
系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达
到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。

已过滤的管理员令牌
  • UAC也使用受限制的令牌来创建已过滤的管理员令牌
  • 特征:

完整性级别被设置为中

参考:深入解析Windows操作系统第六版

ACL
1
2
3
4
5
6
7
8
9
10
ACL(访问控制列表):是否可以访问?
DACL:允许/拒绝某用户/组的存取控制列表
1.无DACL授予该对象的所有访问权限给任何用户
2.有DACL无ACE拒绝对该对象任意访问
SACL:该对象上的存取方式(读、写、执行)列表
ACE:ACL的每一项
1.谁对你有权限
2.允许/拒绝
3.有什么权限:读写执行、对属性读写执行、对特殊属性读写执行
4.是否可以被集成:下属组是否应用
SAM

SAM(安全账户管理器),SAM是用来存储Windows操作系统密码的数据库文件,为了避免明文密码
泄露,SAM文件中保存的是明文密码经过一系列算法处理的Hash值,被保存的Hash分为LM hash、
NTLMHash。在用户在本地或远程登录系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在
后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密。

SAM文件在磁盘中的位置在C:\windows\system2\config\sam

SAM文件在WIndows系统启动后被系统锁定,无法进行移动和复制

hash 详解

Hash

Windows系统为了保证用户明文密码不会被泄露,将明文密码转换为Hash值进行身份验证,被保存在
SAM或者ntds.dit中。

Hash 背景

1.LM Hash,在早期的Windows操作系统中将明文密码转换为LM Hash保存在SAM文件中,因为LM
Hash使用DES加密,密钥为硬编码,算法又存在缺陷,所以被废弃,为了保证系统兼容性可以自行开
启。

2.NTLM Hash,在LM Hash算法被弃用时,NTLM Hash被用来进行Windows本地及远程身份验证的凭
证长度为32bit,由数字和字母组成。
Hash示例
NTLM Hash

upload successful

Net-NTLM v1 hash

upload successful

Net-NTLM v2 hash

upload successful

LM Hash漏洞
1
2
3
4
1.不区分大小写,原因见LM Hash生成方法
2.密码最长为14位
3.判断位数
4.DES加密强度较弱
破解Hash
1
2
3
4
5
6
7
8
9
10
11
12
LM Hash
1.john --format=lm hash.txt
2.hashcat -m 3000 -a 3 hash.txt
NTLM Hash
1.john --format=nt hash.txt
2.hashcat -m 1000 -a 3 hash.txt
Net-NTLMv1
1.john --format=netntlm hash.txt
2.hashcat -m 5500 -a 3 hash.txt
Net-NTLMv2
1.john --format=netntlmv2 hash.txt
2.hashcat -m 5600 -a 3 hash.txt

Active Directory(活动目录)

服务器

独立服务器

成员服务器

域控制器

1)域控制器

2)额外域控制器

3)只读域控制器

1
2
3
4
5
6
7
8
域:有安全边界的集合,同一域中计算机相互信任,计算机之间允许相互访问
根域:网络中第一个域,一个域林只有一个根域
域树:由多个域组合,形成连续的名字空间。一个.代表一个层次,层次越深级别越低如:dm.org、
mail.dm.org、test.mai.dm.org
域林:一个域林可以有多个域树
如:
dm.org 根域
zhuren.org 域树
工作组、域

如何判断是否是域?

net users /domain

net time /domain

systeminfo

upload successful

Active Directory(活动目录)

Active Directory,活动目录简称AD,是一个基于DNS并以树状的数据结构来组成网络服务存储了有关
网络对象的信息,并以此作为基础对目录信息进行合乎逻辑的分层组织,让管理员和用户能够轻松地查
找和使用这些信息。常网域都只有一个,在中型或大型的网络中,网域可能会有很多个,或是和其他公
司或组织的AD的相互链接。

  • 在AD里面,一切皆对象,比如:计算机,用户,用户组,相关策略等

  • 有AD域Service,即Active Directory Domain Services

  • 依赖不同的协议进行用户认证,资源查找,管理,访问控制等等

  • 提供各种Service

    活动目录功能

    服务器及客户端计算机管理

用户服务

资源管理

桌面配置

应用系统支撑

Kerberos委派

1
2
3
4
5
6
7
8
9
委派:委派是AD的一个功能,允许用户或计算机模拟其他账户。
可以通过用户或计算机账户上的“委派”选项卡配置此功能。通过选择“信任此计算机以委派任何服
务,您将启用”无约束委派“。
您可以指定一组服务主体名称(SPN),以准确限制用户或计算机可以模拟的服务,这将被视为
“约束委派”。
如果使用无约束委派,我们在某个委派服务中心,可以从内存中导出Ticket,进而获得TGT,提升
权限。
如果使用约束委派,我们只可以导出某个服务的ticket,从内存中导出后,获得TGS,只能用来提
升某个服务的权限。

upload successful

Kerberos无约束委派
1
2
3
4
trusteForDelegation
授权的用户账户或计算机账户在Active Directory环境中,允许使用Client资源验证到其他资源上代
其行事
Dm用户-身份验证-Mail Server - 替Dm用户进行验证 - 访问OA
Kerberos约束委派
1
2
3
4
5
微软为了增强安全性,防止不安全的委派发生,并且加入了S4U2Self和S4U2Proxy协议扩展。
S4U2Self:Service for User to Self
检查用户的合法性
S4U2Proxy:Service for User to Proxy
不允许Service1 代表用户请求其他Service
DNS

RAM

Hosts

DNS cache/DNS Server

upload successful

目录服务

目录数据库时由目录服务数据库和一套访问协议组成
特点:
1.树状结构,类似文件目录
2.它是为查询、浏览和搜素而优化的数据库,读性能强,写性能差,不支持事务处理、回滚等复杂功能
目录树
条目:树中每一个节点
DN(唯一可区别的名称),RDN(相对标示名)
属性:描述条目具体信息

upload successful

Windows 常见协议

LDAP
轻型目录访问协议(Lightweight Directory Access Protocol)
用途:
SSO

upload successful

389-LDAP
636-LDAPS
LDAP全局目录

upload successful

DC: DNS域名,如DC=dm,DC=org

OU:组织单元,OU为管理员手动创建,非默认容器,需使用OU,如OU=MAIL,OU=CRMCN:通用名称除了DC、OU外都使用CN

DN:cn=test,ou=Ops,dc=dm,dc=com 绝对全路径

RDN:dc=dm、dc=com 每一段路径

AD域、目录服务、LDAP

AD域需要用到目录服务,域内信息都存在目录服务中

LDAP支持用户访问目录服务数据库

OU

包含:
用户、计算机、工作组、打印机、安全策略、其他组织单元
将组策略域OU连接部署

NTDS.DIT

ntds.dit是AD中的数据库文件,它被保存在域控制器c:\windows\system32\ntds\NTDS.DIT位置。活动
目录的数据库文件(ntds.dit)包含有关活动目录域中所有对象的所有信息,其中包含所有域用户和计
算机账户的密码哈希值。该文件在所有域控制器之间自动同步,它只能被域管理员访问和修改。

Kerberos

kerberos是一种网络认证协议,对个人通信以安全的手段进行身份认证。其设计目标是通过密钥系统为
客户机/服务器应用程序提供强大的认证服务。它允许某实体在非安全网络环境下通信,向另一个实体
以一种安全的方式证明自己的身份。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地
址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和
插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:
共享密钥)执行认证服务的。

SMB
1
2
3
4
5
6
7
8
9
SMB(server Message Block)被称为服务器信息快,又叫网络文件共享系统(CIFS)。在
Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。
SMB 原理
CIFS消息一般使用NetBIOS或TCP协议发送,分别使用不同的端口139或445,当前倾向于使用445端
口。
直接运行在TCP上port 445
通过使用 NetBIOS API
基于UDP ports 137,138&TCP ports 137,139
基于一些传统协议,例如 NBF
Network Logon(Type 3)

当账户对远程系统/服务进行身份验证时,将发生网络登录。在网络身份验证期间,可重用凭据不会发
送到远程系统。因此,当用户通过网络登录登录到远程系统是,该用户的凭据将不会出现在远程系统上
以执行进一步的身份验证。这带来了双跳问题

IPC(进程间通信)
1
2
3
4
5
6
7
简介
指至少两个进程或线程间传送数据或信号的一些技术或方法。
作用
1.信息共享:Web服务器,通过网页浏览器使用进程间通信来共享web文件(网页等)和多媒体
2.加速:维基百科使用通过进程间通信进行交流的多服务器来满足用户的请求
3.模块化
4.私有权分离
IPC功能
1
2
3
4
5
6
IPC$是共享“命令管道”的资源,为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口
令,连接双发课可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问,
从NT/2000开始使用。
IPC$在同一时间内,两个IP之间只允许建立一个连接。
NT/2000操作系统及以上在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的
逻辑共享(c、d、e$... ...)和系统目录winnt或管理员目录(admin$)共享。
IPC 空连接
1
2
3
对于NT,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问everyone权限的共
享,访问小部分注册表等;在Windows Server 2000及以后作用更小,因为在Windows 2000 和以后版
本中默认只有管理员有权从网络访问到注册表。
Windows名称解析

FQDN(完全限定域名)

FQDN由两部分组成:主机名和域名,如: mail.dm.org

NetBios名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
默认使用计算机的名字作为当前主机的NetBIOS 名称,长度为16位。前15位为名称,多截少补空,16
位为服务类型,如:
0x20(文件和打印服务)、0x00(工作站服务)、0x03(报信者服务)
NETBIOS 简介
NETBIOS(网络基本输入输出系统),严格讲不属于网络协议,NETBIOS是应用程序接口(API),早
期使用NetBIOS Frames(NBF)协议进行运作,是一种非路由网络协议,位于传输层‘后期NetBIOS over
TCP/IP(缩写为NBT、NetBT)出现,使之可以连接到TCP/IP,是一种网络协议,位于会话层。基于
NETBIOS协议广播获得计算机名称——解析为相应IP地址,WindowsNT以后的所有操作系统上均可以
用,不支持IPV6
NBNS 解析
解析过程:
监听udp/137端口检查地 NetBIOS 缓存
如果缓存中没有请求的名称且已配置了 WINS 服务器,接下来则会向 WINS 服务器发出请求
如果没有配置 WINS 服务器或 WINS 服务器无响应则会向当前子网域发送广播
如果发送广播后无任何主机响应则会读取本地的 Imhosts 文件
WPAD

WPAD(Web Proxy Auto-Discovery Protocol)

网络代理自动发现协议

通过让浏览器自动发现代理服务器,定位代理配置文件,下载编译并运行,最终自动使用代理访问网络

PAC:全程代理自动配置文件(Proxy Auto-Config),定义了浏览器和用户如何自动选择适当的代理服
务器来访问一个URL

例子(WPAD标准是用 wpad.dat):

1
2
3
4
5
6
function FindProxyForURL(url,host){
if(url == 'http://www.baidu.com') return "DIRECT";
if(host == 'twitter.com') return 'SOCKS 127.0.0.10:7070';
if(dnsResolve(host) == '10.0.0.100') return 'PROXY 127.0.0.1:8086;DIRECT';
return 'DIRECT';
}

WPAD 请求流程

upload successful

WPAD配合LLMNR/NBNS投毒

upload successful

LLMNR 工作流程
1
2
3
4
5
6
7
通过UDP发送到组播地址224.0.0.252:5355,查询主机名对应的IP,使用的是DNS格式数据包,数据包
会被限制在本地子网中。
本地子网中所有支持LLMNR的主机在受到查询请求时,会对比自己的主机名是否相同,不同就丢弃,
相同就发送包含自己IP的单播信息给查询主机。
检查本地 NetBIOS 缓存
如果缓存中没有则会向当前子网域发送广播
当前子网域的其他主机收到并检查广播包,如果没有主机响应则请求失败
WPAD配合LLMNR/NBNS投毒(Fix)
1
2
3
4
5
6
7
8
9
10
11
MS16-077
1.以WinHTTP请求PAC时,不发送客户端的net-NTLM Hash
2.不广播请求解析WPAD,只能通过如DHCP或DNS完成
Bypass:
1.
(1)不直接获取net-ntln Hash,通过返回伪造wpad,插入如xss等获取net-ntlm hash
(2)返回如407错误(需要代理身份验证),浏览器自动域BadProxyServer身份认证
2.DHCPv6 Get IPV6

ipv6 > ipv4

WPAD Demo

1.监听当前网络,如果收到了NBNS查询包含WPAD字符,立即伪造NBNS响应

2.提供WPAD服务,用来更改被攻击主机的WPAD设置

3.当其成功作为被攻击主机的代理后,会劫持特定的Windows更新请求,提供带有后门的windows更新
文件给用户下载

WMI

WMI(windows管理规范),由一系列对Windows Driver Model的扩展组成,它通过仪器组件提供信息
和通知,提供了一个操作系统的接口。在渗透测试过程中,攻击者往往使用脚本通过WMI接口完成对
Windows操作系统的操作,远程WMI连接通过DCOM进行。例如:WMIC、Invoke-WmiCommand、
Invoke-WMIMethod等。另一种方法是使用Windows远程管理(WinRM)

Windows Access Token 简介

Windows Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用
户登录计算机后,都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断
的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。当用户注销后,系统将会使主令
牌切换为模拟令牌,不会讲令牌清除,只有在重启机器后才会清除

Access Token分为两种(主令牌、模拟令牌)

Windows Access Token 组成
1
2
3
4
5
6
7
8
9
10
11
12
用户账户的安全标识符(SID)
用户所属的组的SID
用户标识当前登录会话的登录SID
用户或用户组所拥有的权限列表
所有者的SID
主要组的SID
访问控制列表
访问令牌的来源
令牌是主要令牌还是模拟令牌
限制SID的可选列表
目前的模拟等级
其他统计数据
SID
1
2
3
4
5
安全标示符是一个唯一的字符串,它可以代表一个账户、一个用户组、或者是一次登录。通常它还有一
个SID固定列表,例如Everyone这种已经内置的账户,默认拥有固定的SID。
SID表现形式:
域SID-用户ID
计算机SID - 用户ID

文章作者: thirteensummer
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 thirteensummer !
  目录