Good in study, attitude and health

  • 配置Additional LSA Protection监控Password Filter DLL

    0x00 前言 针对文章《Password Filter DLL在渗透测试中的应用》中wyzzoo的回复,提醒注意高版本系统上考虑的问题,地址如下: https://github.com/3gstudent/feedback/issues/13#issuecomment-371694931 于是我对这部分内容进行研究,整理成文 0x01 简介 本文将要介绍以下内容: 如何配置额外的LSA保护 如何获得监控结果 补充一个Password Filter DLL的利用思路 利用Additional LSA Protection的检测效果 0x02 配置额外的LSA保护 参考官方文档: https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection Windows8.1系统开始,为LSA提供了额外的保护,以防止由未受保护的进程读取内存和代码注入 保护方法: 要求加载到LSA的任何插件都使用Microsoft签名进行数字签名 具体的说,数字签名指的是catalog签名,签名需要满足WHQL认证 参考资料: https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/whql-release-signature 关于catalog签名有过文章介绍:《CAT文件数字签名使用技巧》 测试系统: Win8.1 x64 配置方法: 1、操作系统需要满足条件: Win8.1或者更新的系统 2、修改注册表 注册表位置HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe,新建DWORD项AuditLevel,值为00000008 对应cmd命令如下: REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe" /v...

  • 使用LUA脚本绕过Applocker的测试分析

    0x00 前言 在之前的文章《Bypass Windows AppLocker》曾对绕过Applocker的方法进行过学习,而最近看到一篇文章介绍了使用LUA脚本绕过Applocker的方法,学习之后产生了以下疑问:绕过原理是什么呢?能绕过哪种AppLocker的规则呢?适用条件又是什么呢? 文章地址: https://homjxi0e.wordpress.com/2018/03/02/whitelisting-bypassing-using-lua-lanuage-wlua-com/ 0x01 简介 本文将要介绍以下内容: LUA脚本简介 绕过测试 绕过原理 适用条件 防御方法 0x02 LUA脚本简介 轻量小巧的脚本语言 用标准C语言编写 可以被C/C++ 代码调用 可以调用C/C++的函数 在目前所有脚本引擎中的速度最快 0x03 Windows系统下执行LUA脚本 1、安装Lua for Windows,下载地址: http://files.luaforge.net/releases/luaforwindows/luaforwindows 2、输出hello world 脚本内容: print"Hello,world!" cmd: lua.exe 1.txt 如下图 3、调用Windows API 脚本内容: require "alien" MessageBox = alien.User32.MessageBoxA MessageBox:types{ret ='long',abi ='stdcall','long','string','string','long'} MessageBox(0, "title...

  • Password Filter DLL在渗透测试中的应用

    0x00 前言 在之前的文章《域渗透——Hook PasswordChangeNotify》介绍了通过dll注入Hook PasswordChangeNotify来记录新密码的方法,相当于是对API PasswordChangeNotify的利用。 我们知道,API PasswordChangeNotify是Password Filter DLL的一个功能函数,那么,对于Password Filter DLL本身,能否直接开发一个可供利用的DLL呢? 0x01 简介 本文将要介绍以下内容: Password Filter DLL简介 利用Password Filter DLL记录明文密码 利用Password Filter DLL实现的后门 非Windows Server系统下的应用 0x02 Password Filter DLL简介 现实中使用Windows系统时,为了提高系统安全性,防止用户密码被暴力破解,系统管理员往往会对用户密码的复杂度提出要求,可通过配置组策略开启 位置如下: gpedit.msc -> 本地计算机策略 -> 计算机配置 -> Windows设置 -> 安全设置 -> 帐户策略 -> 密码策略 -> 密码必须符合复杂性要求 启用后,密码必须符合下列最低要求: 不能包含用户的帐户名,不能包含用户姓名中超过两个连续字符的部分 至少有六个字符长...

  • 域渗透——获得域控服务器的NTDS.dit文件

    0x00 前言 在之前的文章《导出当前域内所有用户hash的技术整理》曾介绍过通过Volume Shadow Copy实现对ntds.dit文件的复制, 可用来导出域内所有用户hash。本文将尝试做系统总结,总结多种不同的方法。 0x01 简介 本文将要介绍以下内容: 多种实现方法 比较优缺点 0x02 通过Volume Shadow Copy获得域控服务器NTDS.dit文件 测试系统: Server 2008 R2 x64 Server 2012 R2 x64 Volume Shadow Copy Service: 用于数据备份 支持Windows Server 2003 及以上操作系统 系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备份,该时间无法确定 禁用VSS会影响系统正常使用,如 System Restore和 Windows Server Backup 1、ntdsutil 域环境默认安装 支持系统: Server 2003 Server 2008 Server 2012 …...

  • 渗透技巧——获取Windows系统下DPAPI中的MasterKey

    0x00前言 对于Windows系统,用户的加密数据大都采用DPAPI进行存储,而想要解密这些数据解,必须要获得DPAPI对应的MasterKey。本文将会介绍在获得了Windows系统的权限后获得MasterKey的方法,同时分析Preferred文件格式,延长MasterKey的有效期 0x01 简介 本文将要介绍以下内容 基本概念 获得MasterKey的方法 解析Preferred文件 修改MasterKey失效时间 0x02 基本概念 DPAPI: 全称Data Protection Application Programming Interface 作为Windows系统的一个数据保护接口被广泛使用 主要用于保护加密的数据,常见的应用如: EFS文件加密 存储无线连接密码 Windows Credential Manager Internet Explorer Outlook Skype Windows CardSpace Windows Vault Google Chrome Master Key: 64字节,用于解密DPAPI blob,使用用户登录密码、SID和16字节随机数加密后保存在Master Key file中 Master Key file: 二进制文件,可使用用户登录密码对其解密,获得Master Key 分为两种: 用户Master Key file,位于%APPDATA%\Microsoft\Protect\%SID% 系统Master...

  • 渗透技巧——利用Masterkey离线导出Chrome浏览器中保存的密码

    0x00 前言 在之前的文章《渗透技巧——离线导出Chrome浏览器中保存的密码》曾得出结论:使用用户的ntlm hash,无法导出Chrome浏览器保存的明文密码。 而目前的Windows系统(如Windows Server 2012),默认无法导出用户的明文口令,只能获得ntlm hash。 也就是说,即使获得了系统的访问权限,如果无法获得明文口令,通过文章《渗透技巧——离线导出Chrome浏览器中保存的密码》介绍的方法还是无法离线(但可以在线)导出Chrome浏览器保存的明文密码。 本文将要介绍一种新方法,利用Masterkey离线导出Chrome浏览器中保存的密码,不需要获得用户的明文口令,并且得出新的结论。 0x01 简介 本文将要介绍以下内容: 基础概念 解密思路 导出方法 实际测试 0x02 基础概念 DPAPI: 全称Data Protection Application Programming Interface DPAPI blob: 一段密文,可使用Master Key对其解密 Master Key: 64字节,用于解密DPAPI blob,使用用户登录密码、SID和16字节随机数加密后保存在Master Key file中 Master Key file: 二进制文件,可使用用户登录密码对其解密,获得Master Key 0x03 DPAPI解密思路 1、定位加密的Master Key file 文章《渗透技巧——离线导出Chrome浏览器中保存的密码》曾得出结论:无法定位解密Chrome数据库对应的Master Key file 该结论有误,实际上能够对其定位,方法见0x04 2、从lsass进程提取出Master...

  • 渗透技巧——通过SAM数据库获得本地用户hash

    0x00 前言 在渗透测试中,获得了Windows系统的访问权限后,通常会使用mimikatz的sekurlsa::logonpasswords命令尝试读取进程lsass的信息来获取当前登录用户的密码信息,但想要全面获取系统中的密码信息,还要对SAM数据库中保存的信息进行提取,导出当前系统中所有本地用户的hash。 0x01 简介 本文将要介绍以下内容: 通过SAM数据库获得用户hash的多种方法 原理分析 0x02 通过SAM数据库获得用户hash的方法 1、在线读取SAM数据库 读取当前系统的SAM数据库文件,获得系统所有本地用户的hash (1) mimikatz privilege::debug token::elevate lsadump::sam 测试如下图 (2) pwdump7 下载地址: http://passwords.openwall.net/b/pwdump/pwdump7.zip 管理员权限执行,如下图 (3) powershell 下载地址: https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-PowerDump.ps1 管理员权限执行,测试如下图 2、离线读取SAM数据库 获取当前系统的SAM数据库文件,在另一系统下进行读取 导出SAM数据库文件有以下两种实现方法: (1) 保存注册表 管理员权限 reg save HKLM\SYSTEM SystemBkup.hiv reg save HKLM\SAM SamBkup.hiv (2) 复制文件 C:\Windows\System32\config\SYSTEM C:\Windows\System32\config\SAM 默认无法被复制,如下图 需要借助NinjaCopy,作者Joe Bialek,参考下载地址: https://github.com/3gstudent/NinjaCopy...

  • 利用VSTO实现的office后门

    0x00 前言 – 最近看了一篇文章《VSTO: The Payload Installer That Probably Defeats Your Application Whitelisting Rules》,介绍了利用VSTO实现Office后门的方法,我在之前的文章《Use Office to maintain persistence》和《Office Persistence on x64 operating system》曾对Office的后门进行过学习,本文将结合自己的研究心得,对该方法进行复现,分析利用思路,分享实际利用方法,最后介绍如何识别这种后门。 文章地址: https://bohops.com/2018/01/31/vsto-the-payload-installer-that-probably-defeats-your-application-whitelisting-rules/ 0x01 简介 本文将要介绍以下内容: VSTO的编写方法 实际利用思路 后门检测 0x02 VSTO的编写方法 1、VSTO简介 全称Visual Studio Tools for Office 用来定制Office应用程序,能够同office控件交互 集成在Visual Studio安装包中 如下图 2、VSTO开发 本节内容是对《VSTO: The Payload Installer That Probably...

  • 渗透技巧——Windows下剪贴板的利用

    0x00 前言 在Windows系统下,剪贴板是一个常见的功能,这其中有哪些可被利用的地方呢?本文将尝试整理这部分内容 0x01 简介 本文将要介绍以下内容: 写入剪贴板的方法 读取剪贴板的方法 利用思路 0x02 剪贴板简介 剪贴板是指windows操作系统提供的一个暂存数据和共享数据的模块,可理解为数据中转站 剪贴板的内容保存在内存中,所以系统重启后,保存的数据丢失 XP系统支持剪贴板查看器clipbrd.exe(Win7后移除),可查看剪贴板内容 剪贴板查看器clipbrd.exe不需要安装,可直接在其他系统(例如Win7)下使用 复制数据后,在剪贴板查看器clipbrd.exe中实时显示复制的内容,如下图 0x03 写入剪贴板的方法 1、Ctrl+C 复制数据,或者通过快捷键Ctrl+C,数据保存到剪贴板中 2、cmd下的方法 将whoami输出的内容复制到剪贴板上: whoami|clip 如下图 将11.txt的内容复制到剪贴板上: clip<11.txt 如下图 3、程序调用API实现 c++测试代码如下: #include <windows.h> BOOL CopyToClipboard(char* pszData) { if(::OpenClipboard(NULL)) { ::EmptyClipboard(); HGLOBAL clipbuffer; char *buffer; clipbuffer = ::GlobalAlloc(GMEM_DDESHARE, strlen(pszData)+1); buffer = (char *)::GlobalLock(clipbuffer);...

  • 渗透基础——获得当前系统已安装的程序列表

    0x00 前言 最近遇到了一个有趣的问题: 我在尝试使用wmi获取当前系统已安装的程序列表时,并不能获得完整的列表。于是做了进一步研究,找出错误原因,改变思路,完成目标。 本文是一篇介绍基础知识的文章,用来解决基本的问题。 0x01 简介 本文将要介绍以下内容: 通过wmi获取当前系统已安装的程序列表 wmi查询结果不完整的原因 获取完整程序列表的实现思路 0x02 获取当前系统已安装的程序列表 1、使用powershell调用wmi 代码如下: Get-WmiObject -class Win32_Product 对输出结果进行过滤,只显示程序名称,代码如下: Get-WmiObject -class Win32_Product |Select-Object -Property name 获得结果如下图 2、使用wmic调用wmi 代码如下: wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_Product 对输出结果进行过滤,只显示程序名称,代码如下: wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_Product get name /FORMAT:table 获得结果如下图 3、使用WMI Explorer调用wmi 下载地址: https://wmie.codeplex.com/releases/view/135794 界面化的WMI查询工具,可用来查询wmi支持的类,是研究wmi的好工具 首先点击Connect连接本机 选中ROOT\CIMV2 -> Query...