前言

现在网上内网渗透、域渗透文章很多,大多数人只知道如何进行操作获取全新,不知使用该技术的原理和该技术操作影响Windows何种功能,Windows何种机制对内网渗透产生的影响。本文按照数个Windows系统的功能进行讲解,完善内网渗透知识结构。

 

要点

 

SAM

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

SAM文件在磁盘中的位置在C:\windows\system32\config\sam SAM文件在Windows系统启动后被系统锁定,无法进行移动和复制

 

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示例

冒号前半段为LM Hash,冒号后半段为NTLM Hash aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 net-NTLM Hash:

admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

Hash产生:

1.LM Hash:

admin1-ADMIN1(将密码转换为大写字母  )
ADMIN1-41444d494e31(16进制转换)
41444d494e31-41444d494e310000000000000000(密码未到7位,在末尾补0,填充为14个字符,补16个0)
41444d494e3100  00000000000000(分为两组,各转换为2进制)
1000001010001000100110101001001010011100011000100000000(长度不足56bit,左侧补0)
01000001010001000100110101001001010011100011000100000000(再分为7bit一组,后加0)
0100000 0
1010001 0
0001001 0
1010100 0
1001010 0
0111000 0
1100010 0
0000000 0
0100000010100010000100101010100010010100011100001100010000000000-40A212A89470C400(转换为16进制)
0000000000000000

将上面两组数字des加密

KGS!@#$%-4b47532140232425(KGS!@#$%为LM Hash加密时DES加密的硬编码,转换为16进制)
6C734076E7B827BFAAD3B435B51404EE(将两组des加密后的密文组合,得到LM Hash)

标题: fig:

标题: fig:

注:如果密码不超过7字节,后面的一半是固定的,都为0,安全性降低,所以被弃用。

2.NTLM Hash:

1.hex(16进制编码)
2.Unicode编码  3.md4加密

admin1-61646d696e31(将明文转换为16进制编码)
61646d696e31-610064006d0069006e003100(ASCII转Unicode)
610064006d0069006e003100-74561893ea1e32f1fab1691c56f6c7a5(md4加密得到NTLM Hash)

获取Hash方法

1.使用卷影副本将SAM文件导出,配合SYSKEY利用mimikatz等工具获得NTLM Hash

2.使用mimikatz等工具读取lsass.exe进程,获取Hash

3.配合其他漏洞和手法获取net-NTLM Hash 4.net-NTLM Hash可以使用Responder或Inveigh等工具获取

破解Hash

 

Active Directory(活动目录)

简介

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

活动目录功能

存储方式

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

攻击活动目录

 

Kerberos

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

协议内容

认证流程

认证流程包含三种角色:

1.Client(客户端)

2.Server(服务端)

3.KDC(也就是参与认证的域控制器)

4.AD(存储所有 client的白名单,只有存在于白名单的Client才能顺利申请到TGT)

5.AS(为Client生成TGT的服务)

6.TGS(为Client生成某个服务的 ticket)

7.Session Key(会话密钥,只有Client和TGS知道,在Kerberos认证中至关重要)

一、Client向KDC申请TGT

1.Client以明文方式将用户名、IP地址发送给AS请求TGT

2.KDC在ntds.dit中查找该账户

3.如果找到,KDC随机生成一个Session Key,此时AS向Client发送两条消息

(1)TGT(使用krbtgt NTLM Hash加密),内容包含:

User Name
Domain Name
组成员资格
TGS Name
时间戳
IP地址
TGT的生命周期
Session Key

(2)另一条消息(使用Client申请TGT时使用的用户名对应的NTLM Hash加密),内容包含:

TGS Name
时间戳
TGT的生命周期
Session Key

二.Client通过获得TGT向KDC申请用于访问Server的Ticket

1.Client向TGS发送三条消息

(1)Authenticator(使用Session Key加密),内容包含:

User Name
时间戳
需要访问的服务名称

(2)TGT

KDC使用Ktbtgt NTLM Hash对TGT解密,获取Client信息和Session Key
使用Session Key对Client发来对Authenticator信息解密,对比Client信息,相同则认证通过
TGS向Client发送两条消息

(1)TGS生成Client需要访问服务的Ticket发送给Client,Ticket使用目标服务帐户的NTLM Hash加密。
(2)使用Session Key加密的Server Session Key,内容包含:

Server Name
时间戳
Server Session Key

Client收到消息后,使用Session Key解密获得Server Session Key

三.Client最终向为了Server对自己的认证向其提交Ticket

1.使用Server Session Key加密向Server发送Authenticator信息和TGS颁发的Server Ticket,内容包含:

User Name
时间戳

2.Server使用密钥解密Ticket,获得Server Session Key,使用Server Session Key解密Authenticator信息,对比Authenticator信息中的Client信息和Ticket中的Client信息对比,将Authenticator信息的时间戳和Ticket的时间戳是否相同(误差2min)

3.Server使用Server Session Key加密Authenticator信息,内容包含:

ID
时间戳

4.Client使用缓存中的用Server Session Key解密Authenticator信息,得到访问该访问需要携带的ID和时间戳。

5.认证完成,只需要使用申请的Service Ticket就可以正常访问服务。

 

SMB

SMB(Server Message Block)被称为服务器消息块,又叫网络文件共享系统(CIFS)。在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。

主要功能

使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。

原理

CIFS消息一般使用NetBIOS或TCP协议发送,分别使用不同的端口139或445,当前倾向于使用445端口。

历史版本

1.SMB 1.0 没有数字签名功能

2.SMB 2.0

3.SMB 2.1

4.SMB 3.0

 

IPC(进程间通信)

简介

指至少两个进程或线程间传送数据或信号的一些技术或方法。

作用

功能

IPC$

简介

IPC$是共享“命名管道”的资源,为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问,从NT/2000开始使用。

IPC$在同一时间内,两个IP之间只允许建立一个连接。

NT/2000在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$……)和系统目录winnt或管理员目录(admin$)共享。

IPC$主要使用

IPC空连接

对于NT,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问everyone权限的共享,访问小部分注册表等;在WIndows Server 2000及以后作用更小,因为在Windows 2000 和以后版本中默认只有管理员有权从网络访问到注册表。

常用命令

建立IPC$空连接:net use \\192.168.1.101\ipc$ “” /user:”domain\username”

建立IPC$非空连接:net use \\192.168.1.101\ipc$ “password” /user:”domain\username”

删除IPC$连接:net use \\192.168.1.101\ipc$ /del

已经建立IPC$连接并且有权限,将目标C盘映射到本地Z盘:net use z: \\192.168.1.101\c$

删除映射:net use z: /del

关闭IPC默认共享:net use ipc$ /del

注:

1.现在绝大多数的Windows操作系统默认策略不允许来自远程网络验证的空密码,所以IPC空连接已经被废弃。

2.如果远程服务端未开启139、445端口,无法使用IPC$进行连接。

 

NETBIOS

简介

类型

NETBIOS提供三种服务

利用NETBIOS发现主机

1.nbtstat(Windows自带命令)

获取目标主机MAC地址

nbtstat -A 192.168.100.200

标题: fig:

2.nbtscan

扫描指定网段的主机名和网络开放共享

nbtscan.exe 192.168.100.1/24

标题: fig:

SHARING表示开放,DC 表示可能是域控

 

LLMNR

简介

工作流程

  1. 主机在内部名称缓存中查询名称
  2. 在主DNS查询名称
  3. 在备用DNS查询名称
  4. 使用LLMNR查询名称

 

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分为两种(主令牌、模拟令牌)

组成

SID

安全标识符是一个唯一的字符串,它可以代表一个账户、一个用户 组、或者是一次登录。通常它还有一个SID固定列表,例如 Everyone这种已经内置的账户,默认拥有固定的SID。

SID表现形式:

域SID-用户ID
计算机SID-用户ID

Windows Access Token产生过程

每个进程创建时都会根据登录会话权限由LSA(Local Security Authority)分配一个Token(如果CreaetProcess时自己指定了 Token, LSA会用该Token, 否则就用父进程Token的一份拷贝。

 

Windows网络认证

1.工作组

简介

工作组是指数台计算机在同一个内网中,在逻辑上都属于工作组,但是在工作组中的机器之间相互没有信任关系,每台机器的账号密码只是保存在自己的SAM文件中。那就意味着如果需要共享资源只能新建一个账号并指定相关资源授予该账号权限才可以完成共享。早期利用SMB协议在内网中传输明文口令,后为了安全出现LM Challenge/Response 验证机制,再之后LM Challenge/Response 验证机制因为安全性问题,从Windows Vista / Server 2008开始LM就被弃用,改用Windows NT挑战/响应验证机制,常被人称为NTLM,现在被更新到NTLMv2

历史版本

NTLMv1:服务器通过发送一个8字节的随机数(挑战)来验证客户端,客户端返回两个24字节Hash进行计算并返回计算结果。
NTLMv2:它通过加强协议来抵御许多欺骗攻击,并增加服务器向客户端进行身份验证的能力,从而增强了NTLM的安全性。服务器通过发送一个16字节的HMAC – MD5随机数(挑战)来验证客户端。 ####工作流程 Client(客户端)、Server(服务端)

 

本地认证流程

用户注销、重启、锁屏后,操作系统会让winlogon显示图形化登录界面,也就是输入框,接收域名、用户名、密码后交给lsass进程,将明文密码加密成NTLM Hash,对SAM数据库比较认证,相同则认证成功。

内网渗透常用端口

 

内网渗透流程

Initial Access

网络位置判断

信息收集

信息收集常分为工作组信息收集、域信息收集,管理员、非管理员。信息收集范围包括但不限于对权限信息,机器信息,进程端口,网络连接,共享、会话、敏感文件、密码文件、配置文件、浏览器记录、远程连接工具如xshell等工具记录等信息进行详细收集并加以合理运用,将已有信息最大程度利用,如某大佬所说,渗透的本质是信息收集。具体信息收集命令可以查阅参考链接,不再赘述。

内网穿透常见协议及利用

在内网渗透中常见方法:

1.将单一端口转发到公网VPS
2.反向sockets代理,可以将流量全局带入

常用文件类型:

exe/ps1/python

权限提升

1.EXP提权
利用已公开EXP进行溢出提权可参照windows-kernel-exploits,可以配合Windows-Exploit-Suggeste进行辅助提权。
2.利用AD特性提权
如MS14-068、GPP等
3.Windows非EXP提权
劫持类提权如DLL劫持、COM劫持、Unquoted Service Paths、利用第三方高权限服务提权
4.假冒令牌
当用户注销后,系统将会使主令牌切换为模拟令牌,不会将令牌清 除,只有在重启机器后才会清除。
5.Bypass UAC
Windows系统中Administrators组非SID为500的用户必须Bypass Uac才可以获得特权令牌,具体方法可以使用Windows自带程序进行Bypass,可以参考UACME项目。

 

内网横向渗透方法

在无法抓取用户明文密码的情况下可以使用Hash注入登陆系统或登陆服务

内网渗透持久化

1.利用活动目录

2.Windows常规持久化

MITI

1.Responder responder.py –A 分析模式

2.Impacket Relay attacks Tools,该工具可以进行SMB Relay、NTLM Relay。

3.smb relay ntlmv2 使用Impacket中的ntlmrelayx.py和Responder中的MultiRelay.py配合使用。在SMB签名关闭的情况下将net-ntlm Hash中继进行攻击,SMB签名默认在非Windows Server系统中关闭。

日志清理

Windows EventLog、Application Log、Session、进程、物理存储中的二进制文件

 

内网渗透常用工具和方式

1.渗透框架

2.信息收集

3.权限提升

4.口令爆破

5.凭据窃取

windows:

mimikatz

wce

Invoke-WCMDump

mimiDbg

LaZagne

nirsoft_package

QuarksPwDump

fgdump

linux:

LaZagne

mimipenguin

6.横向渗透

7.MIMT

7.Bypass AV

 

联系我

如果文中出现错误或可提供见解进行文章补充 ,欢迎与我联系

标题: fig:

 

参考资料:

https://blog.csdn.net/qq_36119192/article/details/83143354 https://payloads.online/archivers/2018-11-30/ https://github.com/l3m0n/pentest_study https://github.com/SecWiki/windows-kernel-exploits https://blog.csdn.net/qq_29647709/article/details/84636049 https://zh.wikipedia.org/wiki/Active_Directory https://zh.wikipedia.org/wiki/Kerberos
https://mp.weixin.qq.com/s?__biz=MzIxNTQxMjQyNg==&mid=2247484247&idx=1&sn=ca9f7fd6ca95000b2b41b13a0a356ede&chksm=9799f8f2a0ee71e44ca01c49c4f9d5a7e222e822608de9e27941272f445600e40e6c7406e94f&mpshare=1&scene=1&srcid=0125ruNezc26zLQykmh48YTO#rd https://blog.csdn.net/wulantian/article/details/42418231 https://www.roguelynn.com/words/explain-like-im-5-kerberos/ https://www.freebuf.com/articles/system/45631.html https://en.wikipedia.org/wiki/NTLANManager
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-ntlm https://wenku.baidu.com/view/8c342e95700abb68a982fba5.html

源链接

Hacking more

...