许多渗透测试人员和攻击者通常都会使用一种被称为“密码喷洒(Password Spraying)”的技术来进行测试和攻击。对密码进行喷洒式的攻击,这个叫法很形象,因为它属于自动化密码猜测的一种。这种针对所有用户的自动密码猜测通常是为了避免帐户被锁定,因为针对同一个用户的连续密码猜测会导致帐户被锁定。所以只有对所有用户同时执行特定的密码登录尝试,才能增加破解的概率,消除帐户被锁定的概率。

攻击者首先会从他们已有的密码列表开始尝试,并以最脆弱的密码开始(“Fall2017”,“Winter2018”“123456”等)入手。

关于“密码喷洒(Password Spraying)”的概念,我是在BSidesCharm 2017的有关“如何检测难以寻找的攻击活动目录”的演讲中提到的。

当密码开始喷洒时,往往会从列表中的第一个密码开始。第一个密码用于尝试对活动目录中的每个用户进行身份验证。针对活动目录中的每个用户,攻击者都会尝试用这个密码进行登录,并且当所有用户都使用该密码进行了测试后,就会自动转到下一个密码,执行重复的测试。

由于活动目录中的每个用户的测试上限次数都会是5次,因此攻击者会为每个用户进行4个不同密码的尝试。此时msDS-LockoutObservationWindow,设置复位帐户锁定计数器为0:00:30:00(30分钟)。至于如何收集有关活动目录环境的密码策略的信息并使密码喷洒工具自动适应这些信息,对攻击者来说是小菜一碟。

上图显示了测试者是如何使用AD PowerShell cmdlet Get-ADDefaultDomainPasswordPolicy cmdlet.来显示实验室域环境的域密码策略的,应该说,这种策略在大多数情况下都适用,因为用户的密码设置,往往都非常地脆弱。比如,用户的密码通常是一些小于10位的纯数字。

由于密码喷洒通常连接到SMB共享或网络服务,因此让我先从连接到PDC的netlogon共享(\\PDC\ netlogon)开始分析,该共享在许多网络中很常见。在密码喷洒运行一段时间后,我会发现许多用户的密码,这些用户密码也可能包含特权帐户。

下图就是我自己编写的一个快速PowerShell脚本的密码喷洒:

在域控制器上针对SMB的密码喷洒会导致域控制器上的记录事件ID 4625表示为“登录失败”,并且大多数事件都会显示在记录日志中,因此发生这种情况时,应该能够检测到。

上图显示了在密码喷洒的过程中,在域控制器上的登录事件ID 4625。然而,目前许多组织还没有创建关联规则,如果在发生密码喷洒的过程中,发生登录事件ID 4625,就会发生密码喷洒。

上图显示在密码喷洒的过程中,我在实验室域环境中所记录的众多事件ID 4625。不过,还有另一种方法可以在活动目录中发现密码喷洒。由于每个用户帐户都有一个名为“Bad-Password-Time”的关联属性,该属性在使用Active Directory PowerShell cmdlet Get-ADUser时显示为“lastbadpasswordtry”。它可以显示出黑客尝试登录该帐户的最后一个错误密码的日期和时间。运行以下PowerShell cmdlet可显示活动目录域中具有与错误密码尝试相关的属性的用户。

get-aduser -filter * -prop lastbadpasswordattempt,badpwdcount | select name,lastbadpasswordattempt,badpwdcount | format-table –auto

上图显示在我实施密码喷洒后,实验室域环境中的具有lastbadpasswordattempt和badpwdcount属性的活动目录用户帐户。

你可以注意一下上面显示的PowerShell命令的结果,所有错误的密码尝试都是在同一分钟内进行的,其中大多数都是在几秒钟内,这个现象很不寻常。

由于攻击者可以通过更改他们连接的服务来避免事件ID 4625被记录,所以我并不是连接到SMB,而是连接到域控制器上的LDAP服务的。这样一来,ID 4625就可能躲过记录。

上图显示当针对LDAP进行密码喷洒时,你是发现不了事件ID 4625的。

由于目前许多网络安防组织都会通过监控事件ID 4625,来保护网络。所以为了避免被监测到,攻击者可能会连接到LDAP服务进行密码喷洒。但前提是你,他们需要将Kerberos 事件日志记录记录到事件ID 4771中,并监视“Kerberos预验证失败”。在事件ID 4771中,验证失败的话,会用代码 “0x18”表示。

上图就是显示的事件ID 4771,当根据LDAP进行密码喷洒时,就会在域控制器上启用Kerberos日志记录时记录该事件。

当攻击者在一个域连接的计算机上使用密码喷洒时,会记录到事件ID 4648(“尝试使用显式凭据登录”)。有许多4648事件显示,一个叫做Joe的用户多次尝试登录并使用“Alexis Phillips”或“Christopher Kelley”或whomever的密码,并且这些记录在几秒钟内就被记录下来。所以,这种类型的活动是不寻常的。

以下四个图显示在执行密码喷洒的工作站上记录的事件ID 4648,不过必须启用审计日志记录才能记录该事件ID。

如何对密码喷洒进行检测?

密码喷洒发生在许多活动目录环境中,并且可以通过适当的日志记录启用和有效关联来检测。

检测的主要方法包括:

1.启用适当的日志记录:

1.1域控制器:事件ID 4625的“审计登录”(成功与失败)。

1.2域控制器:事件ID 4771的“审计Kerberos验证服务”(成功与失败)。

1.3所有系统:事件ID 4648的“审计登录”(成功与失败)。

2.在1分钟内配置50 4625多个事件的警报。

3.在1分钟内为50 4771多个事件的警报的设置失败代码“0x18”。

4.在1分钟内为工作站上的100 4648多个事件配置警报。

5.根据以下命令,编写一个每天运行的PowerShell脚本并报告可能的密码喷洒:

get-aduser -filter * -prop lastbadpasswordattempt,badpwdcount | select name,lastbadpasswordattempt,badpwdcount | format-table –auto。

每个警报规则都需要根据你的运行环境进行调整,具体方法就是增加警报的数量或缩短警报的时间。

原文发布时间为:2018-05-28

本文来自云栖社区合作伙伴“嘶吼网”,了解相关信息可以关注“嘶吼网”。

如何通过审计安全事件日志检测密码喷洒(Password Spraying)攻击相关推荐

  1. 安全事件日志中的登录事件

    windows日志ID 表 1:安全事件日志中的登录事件 事件 ID 说明 528 用户成功登录计算机. 529 用户使用系统未知的用户名登录,或已知用户使用错误的密码登录. 530 用户帐户在许可的 ...

  2. 数据库审计和日志审计的三大区别分析

    很多刚入行的运维人员不知道什么是数据库审计,什么是日志审计,两者之间又有什么区别.所以今天我们小编就给大家整理了数据库审计和日志审计的三大区别,希望加深大家的了解. 区别一.定义不同 数据库审计: 简 ...

  3. xen挂载虚拟机分区删除日志 破解密码无所不能

    xen挂载虚拟机分区删除日志 破解密码无所不能 用 virt-manager, virsh 或其他工具可以选择把 KVM 或 Xen HVM 的虚拟机安装在一个镜像文件上,虽然因为性能的关系这种方式不 ...

  4. php 检测密码,php检测密码强度

    先收藏一下,说不定什么时候就用上了, /** * 检测密码强度 */ function password_strength($string){ $h    = 0; $size = strlen($s ...

  5. 封神系统-运维大脑的日志检测

    简介:封神-运维大脑 | 日志检测工具 1. 背景目标 阿里云应用业务有问题,云平台监控可以发现问题,但并不能定位到问题根本原因,运维大脑监控底层日志,可快速定位问题原因,帮助现场运维同学解决问题. ...

  6. Java黑皮书课后题第6章:**6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。编写一个程序,提示用户输入一个密码,如果符合规则,则显示…否则显示…

    6.18(检测密码)一些网站对于密码具有一些规则.编写一个方法检测字符串是否是一个有效密码.编写一个程序,提示用户输入一个密码,如果符合规则,则显示-否则显示- 题目 题目描述 破题 代码 运行示例 ...

  7. php 检测密码,php 密码强度检测代码

    在php编程中,尤其是用户注册这样的模块时,对用户密码强度的要求,再多也不过. 现在很多网站,都会对密码强度进行检测,以获取符合安全要求的用户密码. 不过,有些对密码强度检测的功能,是建立在js或其它 ...

  8. 封神-运维大脑 | 日志检测工具

    简介: 封神-运维大脑 | 日志检测工具 1. 背景目标 阿里云应用业务有问题,云平台监控可以发现问题,但并不能定位到问题根本原因,运维大脑监控底层日志,可快速定位问题原因,帮助现场运维同学解决问题. ...

  9. js检测密码强度的功能实现逻辑思路及实例

    适用范围:js.node以及其他语言的密码强度验证逻辑参考. 文章说明:分享密码强度验证的逻辑.实例.思路. 简单实例: //以密码的字符长度,包含内容进行一个得分的输出 var pwd = &quo ...

最新文章

  1. C#窗体应用中使用ZedGraph曲线插件绘制图表
  2. 遇见C++ AMP:在GPU上做并行计算
  3. DR模式下的mysql (abb读写分离)
  4. RedMine 1.3.3 安装攻略
  5. 雷达多普勒频率计算公式_手持式雷达流速仪的监测应用方案
  6. python职场应用_大学粗略学习过Python,在进入职场后如何进一步学习Python
  7. Some Knowledge
  8. 【转】项目面试-如何介绍自己的项…
  9. 使用NFS搭建WEB服务器集群
  10. 关于find指令的一点使用小心得 II
  11. kubernetes视频教程笔记 (22)-存储-Secret
  12. 51单片机小车的立项书_基于51单片机的寻迹小车设计报告.doc
  13. 云计算认证系列:CKA认证
  14. (5)树莓派+1个USB有线网卡+1个USB无线网卡做路由器
  15. python修改图像分辨率大小
  16. html搜索引擎关键词,如何通过JavaScript获取搜索引擎搜索关键词
  17. 白嫖JetBrains全家桶第二波与第三波
  18. 用python做双人五子棋_使用python实现简单五子棋游戏
  19. iOS开发中设置UITableView每组头试图与第一行cell之间的分割线
  20. range 小程序picker_微信小程序picker滚动选择器使用详解

热门文章

  1. 臭名昭著的数据清理和准备问题,如何利用AI完美解决?
  2. SAP VLPOD 报错 - Update control of movement type is incorrect (entry 107 X X E B _ E) - 之对策
  3. Facebook开源了超大规模图嵌入算法,上亿个节点也能快速完成
  4. 史上第一次,AI能够自学翻译地球上的任何语言了
  5. 数学之美——隐含马尔科夫模型
  6. 使用python中的库matplotlib绘制箱线图(boxplot)
  7. Gartner 2019 年供应链技术八大趋势:AI、高级分析、物联网、RPA、自主设备、数字孪生...
  8. 德国汽车产业研究:立足本土,迈向世界
  9. 中国安防为何世界最强?中科院AI+安防报告,解密8大趋势和8大限制【附下载】| 智东西内参...
  10. 科技|全球首款飞行汽车开始量产!下月开始预售,2023年后或可实现一键打“飞车”...