Good in study, attitude and health

  • CIA Hive Beacon Infrastructure复现1——使用Apache mod_rewrite实现http流量分发

    0x00 前言 2017年11月9日维基解密公布一个代号为Vault8的文档,包含服务器远程控制工具Hive的源代码和开发文档。开发文档中的框架图显示Hive支持流量分发功能,若流量有效,转发至Honeycomb服务器,若流量存在问题,转发至Cover Server。 本文仅站在技术研究的角度,尝试使用Apache的mod_rewrite模块实现http流量分发,完成相同的目标。 标记后的框架图如下: 之前的分析文章: 《CIA Hive测试指南——源代码获取与简要分析》 0x01 简介 本文将要介绍以下内容: Windows系统下安装配置Apache mod_rewrite Ubuntu系统下安装配置Apache mod_rewrite 规则配置技巧与实例 根据判定条件实现http流量分发 0x02 Windows系统下安装配置Apache mod_rewrite 1、下载Apache 地址: http://httpd.apache.org/download.cgi 选择需要的版本,测试版本Apache 2.4.33,下载地址: https://www.apachehaus.com/cgi-bin/download.plx?dli=wUWZ1allWW00kej9iUG5UeJVlUGRVYRdnWzQmW 2、安装 解压后通过命令行安装: cd \Apace24\bin httpd -k install 3、开启mod_rewrite模块 编辑文件: \Apace24\conf\httpd.conf 找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉# 4、开启支持.htaccess文件 编辑文件: \Apace24\conf\httpd.conf 定位如下位置: DocumentRoot "${SRVROOT}/htdocs" <Directory "${SRVROOT}/htdocs"> # #...

  • 利用Assembly Load & LoadFile绕过Applocker的分析总结

    0x00 前言 最近bohops在文章《Executing Commands and Bypassing AppLocker with PowerShell Diagnostic Scripts》中介绍了利用CL_LoadAssembly.ps1绕过Applocker的方法,Casey Smith早在SchmooCon 2015也提到了这个方法。本文将要对他们的两个实现方法进行复现,分析细节,比较区别,进而总结利用思路。 0x01 简介 本文将要介绍以下内容: 复现bohops的方法 复现Casey Smith的方法 细节分析 总结利用思路 0x02 复现bohops的方法 测试系统: Win7 x86 开启Applocker,开启方法可参考文章《Bypass Windows AppLocker》 开发工具: VS2012 1、新建c#控制台工程ConsoleApplication5,默认代码如下: using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { }...

  • 渗透技巧——Windows远程协助的隐蔽执行

    0x00 前言 对于Windows系统,经常会用到远程桌面服务,通过界面对系统进行远程管理。 这其中存在一个不足:使用远程桌面服务进行远程登录(使用另一用户或是踢掉当前用户),无法获取到当前用户的系统状态。 如果想要查看(甚至是操作)当前用户的桌面,有什么好办法呢? 虽然我们可以通过编写程序来实现界面操作(捕获桌面信息,压缩传输,发送鼠标键盘消息等),但是如果能够使用Windows系统的默认功能,岂不是更好? 答案就是Windows系统的远程协助。 0x01 简介 本文将要介绍以下内容: 远程协助的基本操作 命令行下操作 编写c++程序隐藏界面,发送键盘消息,模拟用户点击确认 完整利用流程 检测方法 0x02 远程协助的基本操作 1、开启远程协助功能 System Properties -> Remote 选中Allow Remote Assistance connections to this computer 如下图 2、添加防火墙规则,允许远程协助的通信端口 Windows Firewall -> Allowed Programs 选中Remote Assistance 如下图 3、启动界面程序 运行 -> msra.exe 4、配置本机为服务端,请求其他人协助 选中Invite someone you trust to help...

  • Windows下的密码hash——Net-NTLMv1介绍

    0x00 前言 在之前的文章《Windows下的密码hash——NTLM hash和Net-NTLM hash介绍》分别对NTLM hash和Net-NTLMv2 hash做了介绍,对于Net-NTLMv2的上一个版本Net-NTLMv1,在安全性上相对来说更脆弱,具体脆弱在哪里呢?本文将要进行介绍 0x01 简介 本文将要介绍以下内容: Net-NTLMv1的加密方法 Net-NTLMv1的破解思路 Net-NTLMv1的利用思路 0x02 Net-NTLMv1的加密方法 对比Net-NTLMv2,Net-NTLMv2的加密流程如下: 客户端向服务器发送一个请求 服务器接收到请求后,生成一个16位的Challenge,发送回客户端 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器 服务器校验response Net-NTLMv1的加密流程如下: 客户端向服务器发送一个请求 服务器接收到请求后,生成一个8位的Challenge,发送回客户端 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器 服务器校验response 两者的流程相同,但加密算法不同,Net-NTLMv1相对脆弱 Net-NTLMv1 response的计算方法比较简单,方法如下(目前LM hash很少接触,不考虑): 将用户的NTLM hash分成三组,每组7比特(长度不够末尾填0),作为3DES加密算法的三组密钥,加密Server发来的Challenge 详情可参考: http://davenport.sourceforge.net/ntlm.html#theNtlmResponse 0x03 Net-NTLMv1的破解思路 1、捕获Net-NTLMv1数据包,提取关键数据,使用hashcat进行字典破解 服务器: 系统: Server2008 x64 IP: 192.168.62.144 登录用户名: log1 登录密码: logtest123! 客户端: 系统: Win7 x64...

  • 关于利用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 …...