内网渗透
windows 特性
工作组
工作组是指数台计算机在同一个内网中,在逻辑上都属于工作组,但是在工作组中的机器之间相互没有信任关
系,每台机器的账号密码只是保存在自己的SAM文件中。那就意味着如果需要共享资源只能新建-个账号并
指定相关资源授予该账号权限才可以完成共享。使得访问资源更有层次化,缺乏管理域控制机制。
Windows用户、组
●不同的用户身份拥有不同的权限
●每个用户包含-一个名称和一个密码
●用户帐户拥有唯一 的安全标识符(Security Identifier, SID)
Windows默认账户
●用于特殊用途,- -般不需更修改其权限
●与使用者关联的用户帐户Administrator (管理员用户)
●默认的管理员用户,Guest (来宾用户) 默认是禁用的
Windows内置用户账户
●权限: Guest> User> Administrator> SYSTEM> TrustedInstall
●Local System(NT AUTHORITY\System):为windows的核心组件访问文件等资源提供权限
- It has the highest level of permissions on the local system.
- If the client and the server are both in a domain, then the Local System account uses the PC account
(hostname$) to login on the remote computer. - If the client or the server is not in a domain, then the Local System account uses ANONYMOUS LOGON.
●Local Service(NT AUTHORITY\Local Service): 预设的拥有最小权限的本地账户 - It has permissions as an unpriviledge normal user on the local system.
- It always uses ANONYMOUS LOGON, whether a computer is in a domain or not.
●Network Service(NT AUTHORITY\Network Service): 具有运行网络服务权限的计算机账户 - It has permissions as an unpriviledge normal user on the local system.
- When accessing the network, it behaves the same as the Local System account. .
●TrustedInstaller
C:\Windows\servicing
Windows用户属性
●displayname
●objectsid
●userprincipalname
●samaccountname
●whencreateds
●owdlastset
●lastlogon
Windows内置组
●Administrators
●Guests
●Power Users
●Users (标准用户)
●Remote Desktop Users
Windows组
●通讯组:不能控制对资源对访问,逻辑上将用户归纳,方便发件等
●安全组:权限的集合,对组配置权限便于管理
●全局组
●通用组
●域本地组
Windows内置用户账户
●administators 组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执
行整台计算机的管理任务。内置的系统管理员账号Administrator就是本地组的成员,而且无法将它从该.
组删除。如果这台计算机已加入域,则域的Domain Admins会自动地加入到该计算机的Administrators
组内。也就是说,域上的系统管理员在这台计算机上也具备着系统管理员的权限。
Guests组是提供给没有用户帐户但是需要访问本地计算机内资源的用户使用,该组的成员无法永久地改变
其桌面的工作环境。该组最常见的默认成员为用户帐号Guest。
●Power Users组内的用户具备比Users组更多的权利,但是比Administrators组拥有的权利更少- -些,
例如,可以:创建、删除、更改本地用户帐户;创建、删除、管理本地计算机内的共享文件夹与共享打印
机;自定义系统设置,例如更改计算机时间、关闭计算机等。但是不可以更改Administrators,无法夺取
文件的所有权、无法备份与还原文件、无法安装删除与删除设备驱动程序、无法管理安全与审核日志。
●Users组内的成员只拥有一些基本的权利,例如运行应用程序,但是他们不能修改操作系统的设置、不能
更改其它用户的数据、不能关闭服务器级的计算机。所有添加的本地用户帐户者自动属于Users组。如果这
台计算机已经加入域,则域的DomainUsers会自动地被加入到该计算机的Users组中。
RemoteDesktopUsers组内的成员拥有远程桌面登录的权限。默认Administrators组内的成员都拥有
远程桌面的权限。
UAC
●用户帐户控制(User Account Control )
用户帐户控制(User Account Control, 简写作UAC)是微软公司在其Windows Vista及更高版本操作系
统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻
止恶意程序(有时也称为“恶意软件" )损坏系统的效果。
1.组信息项中主要是Integrity levels (IL) [进程完整性级别不同]。标准用户是Medium Mandatory
Level,UAC用户是High Mandatory Level, 它包括∪ntrust,Low, Medium, Hight, System
等,级别越低,权限也就越低。我们可以通过GetTokenInformation的TokenIntegrityLevel来进行查
询
2.体现在Privilege中的就是UAC用户拥有很多Privilege,比如最常用的SeDebugPrivilege
●完整的Privilege列表
已过滤的管理员令牌
●UAC也使用受限制的令牌来创建已过滤的管理员令牌
●特征:
完整性级别被设置为中
安全描述符( Security descriptor )
安全描述符( Security descriptor )
●当一个对象被创建时,系统将为其分配安全描述符,安全描述符包含了该对象的属主对该对象所配置的一
些安全属性和策略
●安全描述符由4部分组成:
●SID(标识该对象拥有的SID)
●DACL(该对象的访问控制策略)
●SACL(该对象的访问行为的审计策略)
●Flag (其他标志位信息) ;
ACL
●ACL (访问控制列表) :是否可以访问?
●DACL:用来标志某个安全对象允许被哪些对象访问
1.无DACL授予该对象的所有访问权限给任何用户
2.有DACL、无ACE拒绝对该对象任意访问
●SACL:该对象上的存取方式(读、写、执行)列表
●ACE: ACL的每- -项.
1.谁对你有权限
2.允许/拒绝
3.有什么权限:读写执行、对属性读写执行、对特殊属性读写执行
4.是否可以被继承:下属组是否应用
Windows Token
windwos安全模型中,有两个角色,一个就是访问者(进程),-个是被访问者(资源)
资源是- -个广义的概念,所谓的资源可以是文件,目录,注册表,管道,命名句柄,进程,线程
每个资源都有-一个安全描述符,安全描述符当中包含了ACL(访问控制列表)
访问控制列表中每条规则都对应记录着一个SID被允许和拒绝的操作(如读、写、执行)
Windows Access Token
Windows Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用户登录
计算机后,都会生成一 -个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,
这也就解释了A用户创建- - 个进程而该进程没有B用户的权限。当用户注销后,系统将会使主令牌切换为模拟
令牌,不会将令牌清除,只有在重启机器后才会清除
Access Token分为两种(主令牌、模拟令牌)
*主令牌(Primary token) :交互式会话登陆(例:本地用户登陆、用户桌面等)
To
*模拟令牌(Impersonation token) :非交互式登陆(例: net use访问共享文件)
●用户双击运行一个程序都会拷贝“explorer.exe" 的Access Token。.
●用户注销后系统将会使主令牌切换为模拟令牌不会将令牌清除只有在重启机器后才会清除。
Windows Access Token组成
会话ld:用户帐户的安全标识符(SID)
用户所属的组的SID
用于标识当前登录会话的登录SID
特权列表:用户或用户组所拥有的权限列表
所有者SID
主要组的SID
访问控制列表
访问令牌的来源
令牌是主要令牌还是模拟令牌
限制SID的可选列表
目前的模拟等级
其他统计数据
UNC ( Universal Naming Convention )
●通用命名规则,可用来表示Windows系统中文件的位置
●一个路径,指定在一个独特的位置的文件系统
●常见的定界字符是斜杠(“1”),反斜杠字符(“\”)或冒号(“:”)
●资源可以用绝对路径或相对路径表示
Long UNC
●正常UNC支持的最大长度为260字符
●为了支持更长的字符,引入了Long UNC,支持最大长度为32767
●特殊Long UNC的文件能够欺骗系统,将其识别为另一个文件(同名多文件)
●Example: \?\C:\test\a.exe
如果在Long UNC文件名后面加- -个空格,系统对文件名的判断将发生错误
type putty.exe > "\?\C:\test\mimikatz.exe ”
Long UNC伪造签名
●文件伪造,
type putty.exe > "\?\C:\Windows\System32\calc.exe "
●获取短文件名
dir /x calc*.exe
●执行
1.wmic
wmic process call create C:\Windows\System32\CALC-1.exe
2.vbs
Set objShell = CreateObject(“Wscript. Shell’”)
objShell.Run "c:\windows\system32\calc- 1.exe "
3.js
var wsh=new ActiveXObject(“wscript. shell”);
wsh.run(“c:llwindowsllsystem32\calc-1.exe”);
●删除
del "I?\C:\Windows\System32\calc.exe
SID
DeadEye
安全标识符是一一个唯一的字符串,它可以代表一个账户、一个用户组。用于标识该用户账号以及其所属的用户
组。系统在用户请求访问某些对象时,通过提供的访问令牌来确认是否具有对应的访问权限。
●通常它还有一个SID固定列表,SID表现形式:
域SID-用户ID
计算机SID-用户ID
常见SID
●500 ( Administrator )
●501 ( Guest)
●502 ( Krbtgt)
●512 (Domain Admins)
●513 ( Domain Users )
●515 (Domain Computers)
●516 (Domain Controllers)
●519 (Enterprise Admins )
SAM
DeadEye
SAM(安全账户管理器),SAM是用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄漏,
SAM文件中保存的是明文密码经过-系列算法处理过的Hash值,被保存的Hash分为LMHash.
NTLMHash。在用户在本地或远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后
期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密。
SAM文件在磁盘中的位置在C:\windows\system32\config\sam
SAM文件在Windows系统启动后被系统锁定,无法进行移动和复制
SAM-注册表
●HKLM\SAM: 包含用户密码的NTLMv2哈希值
●HKLM\Security:包含缓存的域记录LSA secrets/LSA密钥
●HKLM\SYSTEM:包含可用于加密LSA secret和加密SAM数据库的密钥(syskey)
●Syskey: 用来解密SAM获取Hash
●Syskey组成:
HKEY_ LOCAL_ MACHINE\SYSTEM\CurrentControlSetIControlLsa键值
JD、Skew1、GBG和Data中的内容,拼接成syskey
LM Hash漏洞
1.不区分大小写,原因见LM Hash生成方法
2.密码最长为14位
3.判断位数(第2组为aad3b435b51404ee,密码肯定少于7位)
4.DES加密强度较弱
5.如果14位密码,可被分开破解
Mscache Hash
DeadEye
mscache hash是域用户在登录域内机器时,所留下的域缓存凭据
●MSCACHE或者叫domain cached credentials. DCC、域缓存凭据
dcc1 hash与dcc2 hash
●AES-CTS加密
默认是保存10个凭据
●在机器连不上域控的时候也可以使用Mscache Hash登陆机器(交互式登陆,XP 's RDP Client)
域
●域:有安全边界的集合,同一域中计算机相互信任,计算机之间允许相互访问
●根域:网络中第-一个域,一个域林只有一个根域
●域树:由多个域组合,形成连续的名字空间。一个.代表一个层次,层次越深级别越低
如: dm.org、mail.dm.org. test.mai.dm.org
●域林:–个域林可以有多个域树
如:
dm.org根域
zhuren.org域树