跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

密码过滤器DLL在渗透测试中的应用


Tenfk

推荐的帖子

0x00 前言

之前的文章《域渗透——Hook PasswordChangeNotify》介绍了在dll中注入钩子PasswordChangeNotify来记录新密码的方法,相当于API PasswordChangeNotify的利用。

我们知道,API PasswordChangeNotify是密码过滤器DLL的一个函数。那么,对于密码过滤器DLL本身,是否可以直接开发一个可用的DLL呢?

0x01 简介

本文将介绍以下内容:

密码dll简介

使用密码过滤器DLL记录明文密码

通过密码过滤器DLL实现的后门

非windows server系统的应用

0x02 Password Filter DLL简介

在现实中使用Windows系统时,为了提高系统安全性,防止用户密码被暴力破解,系统管理员往往会询问用户密码的复杂度,可以通过配置组策略来开启。

位置如下:

gpedit . MSC-本地计算机策略-计算机配置-Windows设置-安全设置-帐户策略-密码策略-密码必须满足复杂性要求。

启用时,密码必须满足以下最低要求:

您不能包含超过两个连续字符的用户帐户名或用户名部分。

至少六个字符长。

包含以下四种字符类型中的三种:

英文大写字母(A到Z)

英文小写字母(A到Z)

10个基本数字(0到9)

非字母字符(例如!$、#、%)

默认值:

在域控制器上启用

在独立服务器上禁用

如果这种策略仍然不能满足密码复杂度的要求,可以使用密码过滤器DLL来进一步提高密码的复杂度。

实现思路:

通过修改注册表来安装密码筛选器DLL

当用户修改密码时,会自动加载密码过滤器DLL并导入明文密码。

在密码过滤器DLL中,开发人员可以定义密码的复杂性,并将其与明文密码进行比较。如果明文密码不满足复杂度条件,会弹出一个框提醒用户密码修改失败。

具体用法请参考官方文件:

https://msdn . Microsoft . com/en-us/library/windows/desktop/ms 721766(v=vs . 85)。aspx

0x03 Password Filter DLL的开发

支持以下三种功能:

布尔InitializeChangeNotify(void);

NTSTATUS PasswordChangeNotify(在PUNICODE_STRING用户名中,在ULONG RelativeId中,在PUNICODE_STRING NewPassword中);

布尔PasswordFilter(在PUNICODE_STRING AccountName中,在PUNICODE_STRING FullName中,在PUNICODE_STRING Password中,在布尔SetOperation中);

参考资料:

https://msdn . Microsoft . com/en-us/library/windows/desktop/ms 721849(v=vs . 85)。aspx #密码过滤器函数

注意:

API PasswordChangeNotify和PasswordFilter的传入参数都包含用户的明文密码。

API PasswordFilter的返回值为TRUE表示密码符合要求,为FALSE表示密码不符合复杂度要求。一个弹出框提示用户修改它。

写密码过滤器DLL时,需要声明导出函数。

提供一个POC以供参考,地址如下:

https://github.com/3gstudent/PasswordFilter

该项目声明了导出函数InitializeChangeNotify、PasswordChangeNotify和PasswordFilter。

使用PasswordChangeNotify和PasswordFilter记录明文密码,并保存在c:\logFile1和c:\logFile2中。

它需要在编译时对应目标系统的平台。

%wZ表示输出PUNICODE_STRING的字符串指针类型,UNICODE。

0x04 Password Filter DLL的安装

1.在HKEY _本地_机器\系统\当前控制集\控制\ LSA下的通知包中,添加密码过滤器DLL的名称,不包括后缀。dll。

2.将密码筛选器DLL保存在%windir%\system32\下。

3.打开组策略的密码必须满足复杂性要求。

4.重启系统(注销当前用户不会生效)

5.修改任何用户的密码并加载密码过滤器DLL。

实际测试:

测试系统:Windows Server 2008 R2 x64

编译密码筛选器DLL以生成64位Win32Project3.dll。

1.将Win32Project3.dll保存在%windir%\system32\下。

2.修改注册表项HKEY _本地_机器\系统\当前控制集\控制\ LSA下的通知包,添加win32项目3。

如下图

2-1.png

这可以通过命令行实现,如下所示:

读取键值:

注册查询' HKLM \系统\当前控制集\控制\Lsa' /v '通知包'

获取关键内容:

HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ Lsa

通知包REG_MULTI_SZ scecli\0rassfm

添加win32项目3:

REG ADD ' HKLM \系统\当前控制集\控制\Lsa' /v '通知包'/t REG _ MULTI _ SZ/d ' SCE CLI \ 0 rass FM \ 0 win32 project 3 '/f

注:

\0表示换行。

3.Windows Server系统组策略的默认打开密码必须满足复杂性要求。

4.重启系统

5.修改用户密码。

6.记录明文密码

如下图

2-2.png

注:

可以记录所有用户,包括未登录的用户。

0x05 域环境下的应用

1、记录明文密码

对于域控制服务器,您需要获得域控制服务器权限,将密码筛选器DLL放在%windir%\system32\下,并修改注册表项值。

优势:

默认情况下,域控制服务器打开组策略的密码必须满足复杂性要求。

不足:

系统必须重新启动才能生效。对于域控制服务器,很少会重新启动。

扩展:

更改有效负载,将明文密码发送到Web服务器。供参考的代码地址是:

https://malicious . link/post/2013/2013-09-11-每次密码更改时窃取密码/

2、后门

更改密码过滤器DLL启动后门,比如弹回Meterpreter的shell。

域内任何用户在修改密码时都会加载密码过滤器DLL,并以高权限弹回外壳。

0x06 非Windows Server系统的应用

目前大部分数据认为密码过滤器DLL只适用于Windows Server系统。

对于非Windows Server系统,也可以使用它,只是默认情况下禁用组策略。组策略密码必须满足复杂性要求。

因此,我们需要注意以下问题:

1、命令行查看当前系统的组策略配置

组策略配置存储在数据库% windir % \ security \ database \ secedit . sdb中。

读取命令如下(管理员权限):

secedit /export /cfg gp.inf /quiet

参数描述:

没有设置/db参数,这意味着数据库采用默认的% windir % \ security \ database \ secedit . sdb。

/quiet表示不生成任何日志,否则生成的日志将默认保存在% windir % \ security \ logs \ sces RV . log中。

执行该命令后,会生成文件gp.inf。检查gp.inf中的PasswordComplexity项,其中1表示打开,0表示关闭。

注:

gp.inf中的内容不完整,您需要读取注册表以获得完整的组策略配置。

2、修改组策略配置,开启组策略密码必须符合复杂性要求

首先,导出配置文件gp.inf,将PasswordComplexity项设置为1,并保存它。

导入数据库:

secedit/configure/db gp . sdb/CFG gp . INF/quiet

刷新组策略并立即生效(否则重启后生效):

gpupdate/force

0x07 防御检测

按照思路,攻击者首先需要获得当前系统的管理员权限。

检测思路如下:

1.检查%windir%\system32\下是否有可疑的dll。

2.检查注册表项HKEY _本地_机器\系统\当前控制集\控制\ LSA下的通知包。

3.检查进程lsass.exe加载的dll。

如下图

3-1.png

0x08 小结

密码DLL是系统提供的正常功能,但是如果得到系统的管理员许可,这个功能不仅可以记录明文密码,还可以作为后门。

本文介绍了基于具体利用思路的检测方法。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...