Good in study, attitude and health

  • 关于利用rundll32执行程序的分析

    0x00 前言 最近看到了一篇有趣的文章《Abusing Exported Functions and Exposed DCOM Interfaces for Pass-Thru Command Execution and Lateral Movement》,介绍了利用rundll32.exe加载url.dll,通过导出函数OpenURL执行程序的方法。于是我对此做了研究,整理成文,解决以下问题: 利用rundll32执行程序的细节和原理 利用脚本批量扫描dll,查找能够执行程序的dll 0x01 简介 本文将要介绍以下内容: rundll32加载dll的用法 OpenURL的用法 API ShellExecute的用法 三者结合实现通过rundll32直接执行程序 寻找其他可用的导出函数 利用powershell脚本批量获得dll的导出函数,筛选特定dll 0x02 相关细节 1、rundll32加载dll的用法 官方文档: https://support.microsoft.com/sk-sk/help/164787/info-windows-rundll-and-rundll32-interface 用法: rundll32 <dllname>,<entrypoint> <optional arguments> 参数<entrypoint>代表传入dll的导出函数名,在dll中定义如下: void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 参数<optional...

  • 渗透技巧——获得Windows系统的远程桌面连接历史记录

    0x00 前言 在渗透测试中,远程桌面连接的历史记录不可忽视,根据历史记录往往能定位出关键的服务器。 前几天有一篇文章介绍了如何清除记录,那么这篇文章就来介绍一下如何导出历史记录。 清除记录的文章地址如下: http://woshub.com/how-to-clear-rdp-connections-history/#h2_3 最开始的设想是通过枚举注册表就能够完成,但深入研究发现,想要获得所有用户的历史记录,需要逐个获得用户的NTUSER.DAT文件,通过注册表加载配置单元,导入用户配置信息,再进行枚举才能够实现。 0x01 简介 本文将要介绍以下内容: 获得历史记录的思路 导出登录用户的历史记录 导出所有用户的历史记录 两种方法的实现思路和脚本编写细节 0x02 获得远程桌面连接历史记录的思路 1、获得当前用户的历史记录: 枚举注册表键值HKCU:\Software\Microsoft\Terminal Server Client\Servers 每个注册表项保存连接的服务器地址,其中的键值UsernameHint对应登录用户名 如下图 2、获得已登录用户的历史记录: 已登录用户的注册表信息会同步保存在HKEY_USERS\SID下,SID要对应每个用户的SID 当前系统登录两个用户,分别有两个子项,如下图 注: HKEY_USERS仅包含了缺省用户设置和登录用户的信息,在用户未登录时用户的设置是不可用的 也就是说,如果当前登录了两个用户,那么这两个用户的注册表信息都会保存在HKEY_USERS\SID下,如果第三个用户未登录,无法直接获得该用户的注册表信息,也就无法导出该用户的远程桌面连接历史记录 所以,通过枚举注册表键值HKEY_USERS\SID\Software\Microsoft\Terminal Server Client\Servers能够获得已登录用户的远程桌面连接历史记录 3、获得所有用户的历史记录: 对于未登录用户,无法直接获得注册表配置信息,这里可以通过加载配置单元的方式来解决 选中HKEY_USERS项,文件-加载配置单元,如下图 打开用户的NTUSER.DAT文件,路径为C:\Documents and Settings\用户名\NTUSER.DAT 接着指定一个项名称,即可在HKEY_USERS下读取该用户的注册表配置信息,如下图 注: 删除该项需要通过卸载配置单元来清除 所以,想要获得所有用户的远程桌面连接历史记录,首先需要枚举注册表键值HKEY_USERS\SID\,对于未登录用户,需要加载对应的NTUSER.DAT文件,再次枚举获得完整记录,最后卸载对应的注册表项 补充: 通过命令行实现加载配置单元的实例: Reg load HKEY_USERS\S-1-5-21-1170783345-3748964848-1387080272-1003 C:\Documents and Settings\c\NTUSER.DAT 通过命令行实现卸载配置单元的实例:...

  • 配置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...