-
渗透技巧——RecentFileCache.bcf和Amcache.hve单条记录的清除
0x00 前言 在上篇文章《渗透技巧——Windows系统文件执行记录的获取与清除》对Windows主机(Win7及以上系统)常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。 本文作为后续,详细介绍RecentFileCache.bcf和Amcache.hve单条记录的清除方法 0x01 简介 RecentFileCache.bcf格式分析 编写程序实现RecentFileCache.bcf的单条记录清除 Amcache.hve格式分析 编写程序实现Amcache.hve的单条记录清除 0x02 RecentFileCache.bcf格式分析 简介 用来跟踪应用程序与不同可执行文件的兼容性问题,能够记录应用程序执行的历史记录 支持Win7(Win8及更高版本的系统不支持),位置: C:\Windows\AppCompat\Programs\RecentFileCache.bcf 格式分析 没有找到介绍RecentFileCache.bcf文件格式的资料,但好在格式的规律比较简单 前20字节为文件头部(header) 前16字节为固定格式,如下图 接下来是每条记录的内容,固定格式如下: 前4字节表示Unicode记录的长度 记录的内容(Unicode格式) 结束标志,0x0000 注: Unicode每个字符占用2个字节 下面使用c程序实现RecentFileCache.bcf文件的解析 定义结构体 typedef struct _BCF_HEADER { ULONG64 Flag1; ULONG64 Flag2; ULONG Unknown; } BCFHEADER, *PBCFHEADER; typedef struct _BCF_RECORD { ULONG Size; } BCFRECORD, *PBCFRECORD;...
-
渗透技巧——Windows系统文件执行记录的获取与清除
0x00 前言 站在渗透的角度,当获得了一台Windows主机的权限后,需要全面了解这台Windows主机的信息,文件执行记录是重要的部分。 而站在防御的角度,文件执行记录包含系统的重要信息,对其进行针对性的清除很有必要。 所以本文将尝试对Windows主机(Win7及以上系统)常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。 参考链接: https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1 https://xz.aliyun.com/t/3067#toc-5 0x01 简介 本文将要介绍以下内容: 从日志获得文件执行记录 从注册表获得文件执行记录 从文件获得文件执行记录 实例测试 利用和防御思路 0x02 从日志获得文件执行记录 1、进程创建(ID:4688) 使用条件: 系统默认关闭该功能,需要手动设置开启 Policy location: Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Advanced Audit Configuration -> Detailed Tracking Policy Name: Audit Process Creation 命令行获得日志信息: wevtutil qe security /rd:true...
-
渗透基础——使用Go语言开发socks代理工具
0x00 前言 在上篇文章《渗透基础——端口转发与代理》提到了使用go语言分别实现正向和反向socks代理的方法,不仅开发效率高,而且能够很方便的实现跨平台编译。 本文将要进一步介绍Windows系统和Kali系统下使用Go语言开发的完整过程,并基于开源代码,实现一个socks正向和反向代理的工具,记录细节。 0x01 简介 本文将要介绍以下内容: Windows系统下Go语言开发环境的搭建 Kali系统下Go语言开发环境的搭建 工具代码细节 开源完整实现代码 0x02 Windows系统下Go语言开发环境的搭建 测试系统: Win7x64 1、安装Go 下载安装: https://golang.org/dl 或者 https://studygolang.com/dl 2、安装git https://gitforwindows.org/ 用来下载第三方开发包 0x03 代码实现与Windows系统下的跨平台编译 1、安装第三方包 需要以下三个: golang.org/x/net/context https://github.com/armon/go-socks5 https://github.com/hashicorp/yamux 安装流程如下: (1)安装golang.org/x/net/context go-socks5依赖,否则安装时会提示: go\src\github.com\armon\go-socks5\request.go:10:2: cannot find package “golang.o rg/x/net/context” in any of: C:\Go\src\golang.org\x\net\context (from $GOROOT ) C:\Users\a\go\src\golang.org\x\net\context (from $GOPATH) 在线安装:...
-
渗透技巧——Junction Folders和Library Files的后门利用
0x00 前言 维基解密公布的CIA Vault 7中涉及到了Windows系统中Junction Folders和Library Files的利用 地址如下: https://wikileaks.org/ciav7p1/cms/page_13763381.html https://wikileaks.org/ciav7p1/cms/page_13763373.html Jayden Zheng对此做了分析,分享了一个Library Files的后门利用方法,并且详细介绍了如何检测Junction Folders和Library Files的恶意利用 地址如下: https://www.countercept.com/blog/hunting-for-junction-folder-persistence/ https://www.countercept.com/blog/abusing-windows-library-files-for-persistence/ 本文将基于以上参考资料,比较Junction Folders和Library Files,对Library Files的后门利用方法做进一步利用(更加隐蔽),开源一个POC,并且在检测上面分享自己的理解 0x01 简介 本文将要介绍以下内容: Junction Folders的利用方法 Library Files的利用方法 Library Files后门的进一步利用 检测和识别 0x02 Junction Folders的利用方法 Junction Folders可以简单理解为一个能够跳转到另一位置的文件夹 创建的三种常用方法: 修改注册表项 修改文件夹内的desktop.ini 使用特殊的文件名,例如test.{ED7BA470-8E54-465E-825C-99712043E01C} 对于第三种方法,特定的CLSID对应特定的文件路径 如果我们通过注册表创建一个CLSID,并指定dll路径,那么在打开该文件夹时,会加载该dll 1、实际测试 测试dll为执行计算器,可供参考的下载地址: https://github.com/3gstudent/test/raw/master/calc.dll (1)修改注册表,添加注册表项 bat命令如下: SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32...
-
渗透基础——端口转发与代理
0x00 前言 在渗透测试中,经常会使用到端口转发和代理。 端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。 实际应用中需要考虑两种情况: Client->Transit server->Server:Client能够正向连接Transit server。Transit server直接转发即可 Client<-Transit server->Server:Client无法正向连接Transit server,但Transit server能够反向连接Client。 如果Client要对Server的多个端口进行扫描(或是多个Server的多个端口),逐个配置转发规则很不现实。 为了提高效率,这里可以使用代理,配置一次规则即可。 本文将对常用方法和工具进行整理总结,分门别类,区分正向和反向连接,区分转发和代理,分析其中的联系和区别,并给出应用场景,以作参考。 0x01 简介 本文将要介绍以下内容: 针对Windows系统和Linux系统(Ubuntu和CentOS)下的方法 端口转发——正向连接的方法 端口转发——反向连接的方法 正向代理的方法 反向代理的方法 以上方法的应用场景 注: Go语言支持跨平台编译,所以本文更侧重于介绍Go语言实现的工具 0x02 端口转发——正向连接 0、应用场景 1.流量转发的跳板 用于隐藏真实的服务器地址 CIA Hive Beacon Infrastructure中端口转发使用的是Linux的iptables 如下图中的(2) 注: 中转服务器的搭建可参考之前的文章《CIA Hive Beacon Infrastructure复现1——使用Apache mod_rewrite实现http流量分发》和《CIA Hive Beacon Infrastructure复现2——使用Apache mod_rewrite实现https流量分发》 2.建立通道 连接内网服务器的指定端口 Client能够正向连接到Transit...
-
CVE-2017-8360(Keylogger in HP Audio Driver)利用分析
0x00 前言 2017年5月,瑞士安全公司Modzero的安全研究员Thorsten Schroeder发现HP的Conexant音频驱动中存在Keylogger,非法记录用户的键盘输入。 本文仅在技术研究的角度,测试和分析利用方法,给出防御建议,纠正部分文章中出现的错误理解。 0x01 简介 本文将要介绍以下内容: 漏洞简要介绍 漏洞复现 利用思路 防御建议 0x02 漏洞简要介绍 可供参考的资料: https://www.modzero.ch/advisories/MZ-17-01-Conexant-Keylogger.txt 用户在安装HP的Conexant音频驱动后,将会创建计划任务,在用户登录后执行文件MicTray.exe 注: 32位程序为MicTray.exe,64位程序为MicTray64.exe 启动MicTray.exe会记录用户的键盘输入,以两种方式保存: 写入文件C:\Users\Public\MicTray.log 通过WinAPI OutputDebugString()记录内容,可被其他程序读取 0x03 漏洞复现 关于漏洞复现的参考资料: https://diablohorn.com/2017/05/12/repurposing-the-hp-audio-key-logger/ 本节会对参考资料中的内容做扩展,介绍读取OutputDebugString()中记录的方法 存在漏洞的驱动下载地址: ftp://whp-aus1.cold.extweb.hp.com/pub/softpaq/sp79001-79500/sp79420.html 该地址已经失效,单个文件的下载地址: MicTray.exe: https://www.virustotal.com/nl/file/e882149c43976dfadb2746eb2d75a73f0be5aa193623b18b50827f43cce3ed84/analysis/ MicTray64.exe: https://www.virustotal.com/nl/file/c046c7f364b42388bb392874129da555d9c688dced3ac1d6a1c6b01df29ea7a8/analysis/ 测试系统: Win7 x64(更新补丁) 记录方法1.将键盘记录内容写入文件C:\Users\Public\MicTray.log (1)添加注册表 使用MicTray.exe: reg add hklm\SOFTWARE\Wow6432Node\Conexant\MicTray\Hotkey /v CustomSettings /t REG_DWORD /d 1...
-
渗透技巧——PPTP口令的获取与爆破
0x00 前言 PPTP(即点对点隧道协议)可以使远程用户通过拨入ISP访问企业内网。 在渗透测试中,如果获得了用户的PPTP口令,就能远程拨入内网,做进一步渗透。 本文将要介绍命令行下导出PPTP配置信息和口令的方法,开源PPTP口令爆破的脚本 0x01 简介 本文将要介绍以下内容: Windows系统命令行下PPTP配置信息和口令的获取 Windows系统命令行开启和关闭VPN连接 Windows系统连接PPTP的方法和细节 Kali系统连接PPTP的方法和细节 PPTP口令爆破的脚本细节 0x02 Windows系统命令行下PPTP配置信息和口令的获取 1、获取PPTP配置信息 Windows系统拨号和宽带连接的配置信息存储在固定位置,路径如下: %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk 查看该文件即可获得PPTP连接的配置信息,包括服务器IP,不包含连接用户名和口令 VPN连接的名称为VPN Connection,如下图 PhoneNumber表示连接的服务器IP,如下图 2、获得内网IP ipconfig 获得内网IP,如下图 3、获得PPTP口令 使用工具mimiaktz,命令如下: mimikatz.exe privilege::debug token::elevate lsadump::secrets exit 获得连接用户名和口令,如下图 4、命令行下连接VPN rasdial "VPN Connection" zhaodg oZ7iFk25 如下图 5、命令行关闭VPN连接 rasphone -h "VPN Connection" 0x03 Windows系统PPTP连接的方法和细节 1. 2. 3....
-
渗透技巧——利用虚拟磁盘实现的“无文件”
0x00 前言 在渗透测试中,常常会使用代码注入、内存执行、注册表、powershell或是wmi等无文件的技术,增加被检测和分析的难度。 站在渗透的角度,某些条件下并不能做到整个过程的“无文件”,需要向硬盘写入文件,这就很有可能被取证和分析。 最近我看到了一篇文章介绍了利用虚拟磁盘的方法,正好能解决这个问题。 而站在防御的角度,针对这种方法该如何检测和拦截呢? 参考的文章地址: https://diablohorn.com/2018/08/06/creating-a-ram-disk-through-meterpreter/ 本文将要对其进行测试,介绍实现细节,解决原文中未解决的问题,结合利用思路,分析检测和拦截的方法。 0x01 简介 本文将要介绍以下内容: 实现原理 方法复现 删除残留的硬盘图标 支持对文件夹的操作 取证分析 检测拦截 0x02 实现原理 Windows系统硬盘上对文件的删除操作,只修改了文件的MFT,如果文件内容尚未被覆盖,就能恢复文件 详细的删除和恢复介绍可参考之前的文章《渗透技巧——Windows系统的文件恢复与删除》 如果使用虚拟磁盘,将内存映射到本地,创建内存磁盘,使用上同真正的硬盘没有区别,并且有如下两个优点: 不会对硬盘进行写操作,也就不存在硬盘文件的恢复 系统重启后,内存磁盘中的文件自动删除 0x03 方法复现 对文章的实现方法进行复现,地址: https://diablohorn.com/2018/08/06/creating-a-ram-disk-through-meterpreter/ ImDisk 开源工具,能够创建虚拟磁盘,介绍和下载地址: http://www.ltr-data.se/opencode.html/ 安装时会弹框提示用户,如下图 安装成功后在C:\Windows\System32\drivers\下释放驱动文件imdisk.sys,在C:\Windows\System32\释放启动程序imdisk.exe及其支持文件 安装成功后,命令行输入imdisk启动ImDisk,回显命令说明 二次利用 作者DiabloHorn借助开源工具ImDisk,对其进行二次利用,实现命令行下的安装、加载和虚拟磁盘的创建删除 准备工作: 1、编写代码实现驱动的安装、加载和虚拟磁盘的创建删除 代码地址: https://github.com/DiabloHorn/cliramdisk 我的测试编译环境是VS2015,将工程中头文件stdafx.h中包含的内容保存到cliramdisk.cpp中,直接编译通过,生成文件cliramdisk.exe 2、测试系统安装ImDisk获得驱动文件imdisk.sys 安装后,在位置``C:\Windows\System32\drivers`复制驱动文件imdisk.sys 值得注意的是驱动文件imdisk.sys包含数字签名 3、编写注册表文件,添加驱动文件信息 内容如下: Windows Registry Editor...
-
Windows本地提权工具Juicy Potato测试分析
0x00 前言 Juicy Potato是一款Windows系统的本地提权工具,是在工具RottenPotatoNG的基础上做了扩展,适用条件更广 利用的前提是获得了SeImpersonate或者SeAssignPrimaryToken权限,通常在webshell下使用 那么,Juicy Potato的使用方法有哪些,有哪些限制条件呢?本文将对其进行测试,根据原理分析限制条件 Juicy Potato的下载地址: https://github.com/ohpe/juicy-potato 0x01 简介 本将要介绍以下内容: 实现原理 对RottenPotatoNG的扩展 枚举可用COM对象的方法 使用方法 限制条件 防御思路 0x02 实现原理 参考资料: https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/ 根据个人理解介绍实现原理 需要理解的几个知识: 使用DCOM时,如果以服务的方式远程连接,那么权限为System,例如BITS服务 使用DCOM可以通过TCP连接到本机的一个端口,发起NTLM认证,该认证可以被重放 LocalService用户默认具有SeImpersonate和SeAssignPrimaryToken权限 开启SeImpersonate权限后,能够在调用CreateProcessWithToken时,传入新的Token创建新的进程 开启SeAssignPrimaryToken权限后,能够在调用CreateProcessAsUser时,传入新的Token创建新的进程 Juicy Potato的实现流程如下: 1、加载COM,发出请求,权限为System 在指定ip和端口的位置尝试加载一个COM对象 RottenPotatoNG使用的COM对象为BITS,CLSID为{4991d34b-80a1-4291-83b6-3328366b9097} 可供选择的COM对象不唯一,Juicy Potato提供了多个,详细列表可参考如下地址: https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md 2、回应步骤1的请求,发起NTLM认证 正常情况下,由于权限不足,当前权限不是System,无法认证成功 3、针对本地端口,同样发起NTLM认证,权限为当前用户 由于权限为当前用户,所以NTLM认证能够成功完成 RottenPotatoNG使用的135端口 Juicy Potato支持指定任意本地端口,但是RPC一般默认为135端口,很少被修改 4、分别拦截两个NTLM认证的数据包,替换数据,通过NTLM重放使得步骤1(权限为System)的NTLM认证通过,获得System权限的Token 重放时需要注意NTLM认证的NTLM Server Challenge不同,需要修正 5、利用System权限的Token创建新进程...
-
渗透技巧——Windows九种权限的利用
0x00 前言 在之前的文章《渗透技巧——从Admin权限切换到System权限》和《渗透技巧——Token窃取与利用》分别介绍了从admin权限切换到system权限和TrustedInstaller权限的方法,其中的主要方法是利用token切换权限。 那么,普通用户(或者LocalService用户)的特殊Token有哪些可利用方法呢?能否提权?如何判断? 本文将要结合自己的经验,参考多个开源工具和资料,尝试对这个技巧做总结,分享学习心得 参考的开源工具和资料: Hot Potato: https://github.com/foxglovesec/Potato powershell版本Hot Potato: https://github.com/Kevin-Robertson/Tater Rotten Potato: https://github.com/breenmachine/RottenPotatoNG lonelypotato: https://github.com/decoder-it/lonelypotato Juicy Potato: https://github.com/ohpe/juicy-potato https://github.com/hatRiot/token-priv https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/ https://foxglovesecurity.com/2016/01/16/hot-potato/ https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/ https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/ 0x01 简介 本文将要介绍以下内容: 简要利用思路 SeImpersonatePrivilege权限对应的利用思路和开源代码 SeAssignPrimaryPrivilege权限对应的利用思路和开源代码 SeTcbPrivilege权限对应的利用思路和开源代码 SeBackupPrivilege权限对应的利用思路和开源代码 SeRestorePrivilege权限对应的利用思路和开源代码 SeCreateTokenPrivilege权限对应的利用思路和开源代码 SeLoadDriverPrivilege权限对应的利用思路和开源代码 SeTakeOwnershipPrivilege权限对应的利用思路和开源代码 SeDebugPrivilege权限对应的利用思路和开源代码 0x02 简要利用思路 1、取得了目标的访问权限后,查看可用权限 whoami /priv 例如,普通用户具有的权限如下图 管理员用户具有的权限如下图 iis用户具有的权限如下图 Privilege Name项表示具有的权限,State表示权限的状态,我们可以通过WinAPI AdjustTokenPrivileges将权限设置为Disabled或者Enabled 可供参考的实现代码:...