当前位置:首页 > 黑客服务 > 正文内容

域用户密码爆破研究

访客4年前 (2021-04-15)黑客服务593


爆破是渗透中常用的一个攻击手法,特别是拿到一个跳板机后,对域的渗透中使用较多。用于爆破的工具比较多,每种工具的实现方法也不尽相同。

本篇主要针对Kerberos、LDAP、DCE/RPC、SMB协议的登陆认证过程进行研究,同时分析认证过程中产生的流量,制定对应的检测规则。


0x01? ? ? ? Kerberos协议

Kerberos是由MIT大学提出的一种网络身份验证协议,旨在通过使用密钥加密技术为C/S应用程序提供强身份验证。其实现涉及到密钥分发与密钥共享的概念。

Kerberos是基于对称加密体制(Needham-Schroeder认证协议) 的第三方认证机制,其中用户和服务依赖于第三方(Kerberos 服务器)来对彼此进行身份验证,它有两个版本v4和v5。Kerberos认证时可以使用UDP或TCP协议。


Kerberos主要有三个角色组成

  • KDC(服务器本身称为密钥分发中心)
  • AS (Authentication Server)认证服务器
  • TGS (Ticket Granting Server)票据授权服务器

Kerberos协议认证过程


一共分为6个步骤

1) KRB_AS_REQ:users->AS 发送Authenticator1(users密码加密TimeStamp)

2) KRB_AS_REP:AS->users 发送users密码加密的sessionkey-as 和tgt(kdc密码加密的sessionkey-as和TimeStamp)

3) KRB_TGS_REQ:users->TGS 发送Authenticator2 (sessionkey-as加密TimeStamp) 和tgt(kdc密码HASH加密的sessionkey-as和TimeStamp)

4) KRB_TGS_REP:TGS->users 发送密文1(sessionkey-as加密sessionkey-tgs) 和ST(Server密码HASH加密sessionkey-tgs)

5) KRB_AP_REQ:users->server 发送Authenticator3(sessionkey-tgs加密TimeStamp) 和ST(Server密码加密sessionkey-tgs)

6) KRB_AP_REP:server->users

Server通过自己的密码解密ST,sessionkey-tgs,再用sessionkey-tgs解密Authenticator3得到TimeStamp,验证正确返回验证成功的特征


在进行密码爆破的时候,我们只需利用AS认证过程。

客户端发送AS-REQ

AS响应

  • 在Kerberos 5之前,Kerberos允许不使用密码进行身份认证,而在Kerberos 5中,密码信息不可或缺,这种过程称之为“预认证”。可能出于向前兼容考虑,Kerberos在执行预认证之前,首先会尝试不使用密码进行身份认证,因此在登录期间,发送初始AS-REQ后我们总是能看到一个错误信息。

第一次发送空密码的请求

第二次发送带加密hash的请求

认证失败,error-code:eRR-PREAUTH-FAILED(24)

认证成功,直接响应AS-REP并返回tgt

工具:

  • kerbrute
  • pyKerbrute

日志:

开启日志审核后,会产生Kerberos身份验证服务的日志,成功的事件ID为4768,失败事件ID为4771

  • 开启登录事件审核方法:命令行输入gpedit.msc打开本地安全策略,”本地策略”、”审核策略” 开启审核登录事件、审核账户登录事件


0x02? ? ? ? ?LDAP协议

LDAP(Lightweight Directory Access Protocol) 轻量目录访问协议。LDAP 协议之前有一个 X.500 DAP 协议规范,该协议十分复杂,是一个重量级的协议,后来对 X.500进行了简化,诞生了 LDAP 协议,与 X.500 相比变得较为轻量,目前最新的版本是LDAP v3(RFC 2251)。

在域内LDAP是用来访问Acitve Directory数据库的目录服务协议。AD DS域服务通过使用LDAP名称路径表示对象在Active Directory数据库中的位置。管理员使用LDAP协议来访问活动目录中的对象,LDAP通过“命令路径”定位对象在数据库中的位置,即使用标识名(Distinguished Name,DN)和相对标识名(Relative Distinguished Name,RDN)标识对象。


LDAP认证过程

  • LDAP v2支持三种认证方式:匿名认证、简单身份认证(明文密码)、Kerberos v4。
  • LDAP v3使用SASL?(Simple Authentication and Security Layer) 简单身份验证和安全层?身份认证框架(RFC 2222),它允许使用不同的验证机制对客户端进行身份验证,包括:DIGEST-MD5, CRAM-MD5,Anonymous,External,S/Key,GSSAPI和 Kerberos。SASL指定了质询-响应协议,在该协议中,客户端和服务端之间通过协商确定使用哪种验证机制。


下图是使用LDAP协议的身份验证流程:

1. Client首先发送bindRequest请求给LDAP Server,指定使用GSSAPI认证并且使用NTLM进行身份验证。

2. Server 进行bind响应,包括产生的Challenge

3. Client发送 NTLMSSP_AUTH 认证,请求中包含用户名、认证信息

4. Server认证结果响应

  • Server认证通过,响应success,Client可以继续查询操作
  • Server认证失败,响应invalidCredentials,之后Client发送unbindRequest结束本轮请求


工具:

DomainPasswordSpray(powershell工具,需要在域环境中使用)

PS C:\Users est3> Invoke-DomainPasswordSpray -UserList C:\Tools\domain\DomainPasswordSpray-master?txt -Password? admin111 -domain cool.com


日志:

开启日志审核后进行爆破登陆,会产生相应的审核日志:失败,事件ID为4625;成功,事件ID为4624

日志里会记录登陆账号名、登陆IP等信息

0x03? ? ? ? ?DCE/RPC协议

DCE/RPC(Distributed Computing Environment / Remote procedure Call)全称分布式计算环境/远程过程调用。RPC(远程过程调用)有v4、v5两种版本,两个版本的差别很大,现实中已经很难抓到v4的数据,一般遇到的是v5版本的数据。

一个RPC服务可以绑定多种协议序列,如:

  • SMB --- ncacn_np (固定的139、445/TCP)
  • TCP --- ncacn_ip_tcp (动态TCP端口)
  • UDP --- ncadg_ip_udp (动态UDP端口)
  • HTTP --- ncacn_http
  • 其他协议

可以将DCE/RPC看作一层,上层协议可以是上述协议中的一种。实际上还有其他协议序列可用,但不常见,就不细说了。

ncacn_ip_tcp与ncadg_ip_udp用到了动态端口,它们会向EPM接口注册所用动态端口,而客户端可以向EPM接口查询服务端注册过的信息(EPM接口本身也是一个RPC服务,同样有多种协议可以用来访问这个接口)。

无论使用哪种协议序列,访问一个RPC接口的都必须有Bind、Request请求。但是不同的协议序列,就会有不同的bind响应、request响应

协议栈解码过程如下:

认证过程(使用TCP协议绑定):

1)首先客户端发起Bind请求,请求绑定EPM Interface

服务端响应Bind_ack,收到Bind_ack报文并不意味着Bind成功,需要根据Ack result字段判断:

  • 0 Acceptance #Bind成功
  • 2 Provider rejection #Bind失败

2)客户端调用EPM接口发起Request请求(SMB调用的是samr接口),与服务端协商接下来使用的动态端口。

服务端收到请求后,将生成的随机端口响应给客户端

3)客户端使用协商好的端口发送AUTH3认证请求,认证方式为NTLM,请求中包含用户名及认证信息

AUTH3请求后如果口令错误并不会立即得到验证,可以通过接下来的Connect request请求的响应来判断。

认证成功,发起的Connect request 会有对应的Connect response响应

认证失败没有Connect response响应,而是直接返回Packet type: Fault且Status为nca_s_fault_access_denied的响应

工具:

网上没有找到现成的工具,利用impacket写了一个简单的爆破工具(非域内主机可以使用)

日志:

开启日志审核的话会产生登陆日志

  • 登录失败:产生事件ID为4625的登陆日志
  • 登陆成功:产生事件ID为4624的登录日志


0x04? ? ? ? ?SMB协议

SMB(Server Message Block)服务器消息块,又称网络文件共享系统(Common Internet File System,缩写为CIFS),可用于计算机间共享文件、打印机访问。SMB消息一般使用NetBIOS(一般是139端口,很少使用137、138端口)或TCP协议(445端口)发送。

SMB协议支持 NTLM和较早的LAN Manager(LM) 加密,后者由于安全性较低,容易被破解,已经很少使用。

SMB协议登陆认证过程如下:

1. 协商

首先客户端发送Negotiate Request。在请求中,客户端会列出所有它所支持协议版本以及所支持的一些特性(比如加密Encryption、持久句柄Persistent Handle、客户端缓存Leasing等等)。

而服务端会在回复确定协商的认证方式及版本号,并且会以支持的最高版本作为回应。

2. NTLM challenge/response

由于1中协商使用NTLM认证,接下来执行NTLM的认证过程。客户端通过Session Setup发送NTLMSSP_NEGOTIATE请求

服务端对相应的请求进行响应,其中包括产生的challenge

3. 身份认证

客户端发送登录认证请求,附带用户名、加密hash

服务端对hash进行校验:

校验成功:NT Status: STATUS_SUCCESS

校验失败,NT Status:STATUS_LOGON_FAILURE


工具:

acccheck (kali自带工具)

Metasploit: auxiliary/scanner/smb/smb_login

使用SMB协议进行密码爆破,攻击机可以在非域环境中。


日志:

登陆失败,事件ID:4625

登陆成功,事件ID:4624


0x05? ? ? ? ?总结:

根据上述几种协议登陆审核日志来看,事件ID跟认证方式(Kerberos,NTLM)有关,跟协议无关(LDAP、SMB、RPC事件ID相同)。

利用Kerberos、DCE/RPC、SMB协议进行爆破的时候,攻击机可以在非域环境中,且利用DCE/RPC协议在攻击的时候由于使用了动态端口,从流量层面上来说被安全设备检测的概率会小一些。


检测方法:

  • 登陆日志

爆破行为会在短时间内产生大量的审核失败的登陆日志

  • 流量特征

根据上述几种协议中认证失败的流量特征,对相同源IP、目的IP的失败次数做统计,超过阈值告警。


防御方法:

限制登陆错误次数,超过阈值后锁定账户。具体操作如下:

打开“组策略管理”,“Default Domain Policy”,”编辑”

依次点击“计算机配置”,“策略”,“Windows设置”,“安全设置”,“账户策略”,“账户锁定策略”,对锁定阈值进行配置。?


参考文档:

http://woshub.com/hot-to-convert-sid-to-username-and-vice-versa/

https://www.attackdebris.com/?p=311

https://ldapwiki.com/wiki/SASL

https://docs.oracle.com/javase/jndi/tutorial/ldap/models/v3.html

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb/495dd941-0776-48aa-aa8a-f1aa5eeadcea

http://davenport.sourceforge.net/ntlm.html




扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106615.html

分享给朋友:

“域用户密码爆破研究” 的相关文章

约茶app约茶APP

最新约茶app都是哪些?整理了30本这篇文章主要介绍了约茶app,包括约茶app ios下载,下面小编整理了约茶app的图文教程,看看约茶app苹果版详细步骤吧! 觉得网上的一些答 据新快网2021年10月20日03:31:27的新闻报道,微博网友@R卜傲晴 爆料。 平安夜来临之际,事件,在网上...

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另 鸡鸭的肛门附近组织,布满大大小小的腺体,各类秽物与毒素都在这些腺体囤积;鸡鸭的肛门也有非常高密度的大肠杆菌,所以鸡鸭的屁股不是少吃的问题,而是不能吃.吃得少可能没觉出怎样,多了问题就显出来了.而且鸡鸭屁股的大肠杆菌会随着蛋生出来的时...

鸡业行情网今日鸡价,鸡业行情网下载安装

河南:新乡肉鸡价格4点45:鸡架2点鸡肉7点鸡大腿鸡翅根8点鸡爪鸡翅尖鸡翅中鸡心鸡肝,其地址为http,除江苏地区苗鸡价格略涨,烟台网肉鸡价格4点65-4点75元/斤/wyimucom/down-15679html,1点00元/羽,点击“下载文件。以市斤为单位/羽 菏泽鸡苗价格3点90-4点30元/...

图说兰州清真寺之兰州水上清真寺

圖說蘭州清真寺之蘭州水上清真寺讀書啊,我信赖但有朗朗書聲出破廬,遲早有一日有萬鯉躍龍門之奇象。 圖說蘭州清真寺是本人在2011年開始走訪,並在中穆網蘭州社區陸續發佈的走訪蘭州清真寺之系列。不知不覺六七年過去瞭,有的清真寺有瞭很大的變化,以是在此基礎上本人再次整理發佈,希望大傢足不出戶瞭解蘭州的...

查开放房软件app(免费查开放房的软件)

  你仅仅坚持不懈和女孩儿入睡。假如你发觉仅有大家2个,你应该坚持不懈再开一个。可是你的迟疑说明你還是想和他发生关系。留意防护措施。   线上查询对外开放门户网应用软件,并查询对外开放门户网应用软件系统软件下载   在哪儿申请办理公共性租用住宅?   我与男友在网络上了解的。我北京市找他。他为我开过...

怎样偷偷查他在酒店宾馆的开房登记记录

智能机的出现虽然提高我们的生活质量,但是也存在一些问题。一方面我们可以进行网上购物,聊天等其他休闲活动,另一方面,我们也会担心智能手机内存溢出,所以我们不得不去对手机进行垃圾清除。在清除手机垃圾的同时我们可能会因为一些小的失误,导致微信聊天记录被误删了。那么问题来了:微信聊天记录删除了怎么恢复呢?下...

评论列表

余安七禾
2年前 (2022-07-03)

amp)3) KRB_TGS_REQ:users->TGS 发送Authenticator2 (sessionkey-as加密TimeStamp) 和tgt(kdc密码HAS

鸢旧海夕
2年前 (2022-07-03)

t请求。但是不同的协议序列,就会有不同的bind响应、request响应协议栈解码过程如下:认证过程(使用TCP协议绑定):1)首先客户端发起Bind请求,请求绑定EPM Interface服务端响应Bind_ack,收到Bin

辙弃旧竹
2年前 (2022-07-03)

D5, CRAM-MD5,Anonymous,External,S/Key,GSSAPI和 Kerberos。SASL指定了质询-响应协议,在该协议中,客户端和服务端之间通过协商确定使用哪种验证机制。下图是使用LDAP协议的身份验证流程:1. Client首先发送bindRequest请求给L

语酌舔夺
2年前 (2022-07-03)

端使用协商好的端口发送AUTH3认证请求,认证方式为NTLM,请求中包含用户名及认证信息AUTH3请求后如果口令错误并不会立即得到验证,可以通过接下来的Connect request请求的响应来判断。认证成功,发起的Connect request 会有对应的Connect re

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。