跳转到帖子

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

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

TheHackerWorld官方

穿透技巧——清除最近文件缓存的单个记录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(不支持Win8和更高版本的系统),位置:

c:\ Windows \ app compat \ Programs \ recentfile cache . BCF

格式分析

没有资料介绍RecentFileCache.bcf的文件格式,不过好在格式规则比较简单。

前20个字节是文件头。

前16个字节是固定格式,如下图所示

2-1.png

接下来是每条记录的内容,固定格式如下:

前4个字节表示Unicode记录的长度。

录制的内容(Unicode格式)

结束标志,0x0000

注:

每个Unicode字符占用2个字节。

下面的c程序用于解析RecentFileCache.bcf文件。

定义结构

typedef struct _BCF_HEADER {

ULONG64 Flag1

ULONG64 Flag2

ULONG未知;

} BCFHEADER,* PBCFHEADER

typedef struct _BCF_RECORD {

ULONG大小;

} BCFRECORD,* PBCFRECORD

注:

ULONG64为8字节,ULONG为4字节。

逐个解析每条记录,通过固定的变量大小确定记录的长度,然后读取每条记录的内容。

完整的实现代码已经开源,地址如下:

https://github . com/3g student/home-of-C-Language/blob/master/listrecentfile cache . CPP

该代码实现了读取RecentFileCache.bcf文件并显示所有记录。

0x03 RecentFileCache.bcf文件的单条记录清除

最简单的方法是用字符0x00覆盖要删除的记录,但会打乱原来的文件格式。

所以需要删除要删除的记录的内容,后续的记录要填空。

在程序实现中,使用一个新的数组来存储修改后的内容。

完整的实现代码已经开源,地址如下:

https://github . com/3g student/home-of-C-Language/blob/master/deleterenctfilecache . CPP

代码实现了修改指定的RecentFileCache.bcf文件,删除指定的记录,并将新文件保存为NewRecentFileCache.bcf

0x04 Amcache.hve格式分析

简介

Windows系统用Amcache.hve替换RecentFileCache.bcf,可以记录创建时间、最后修改时间、SHA1和一些PE文件头信息。

Win8和更高版本的系统使用Amcache.hve而不是RecentFileCache.bcf

Win7安装KB2952664后也会支持Amcache.hve,也就是说RecentFileCache.bcf和Amcache.hve都包含文件执行记录。

Amcache.hve以注册表格式存储信息。

注册表文件的格式可以参考:

http://www . sentinel chicken . com/data/thewindowsnregistryfileformat . pdf

附录包括对文件格式的详细介绍,可为程序实现提供参考。

为了提高开发效率,我们可以在Windows系统下使用regedit.exe来分析记录。

通过regedit.exe加载Amcache.hve可以查看和修改Amcache.hve的信息。该方法如下:

选择HKEY_LOCAL_MACHINE,选择文件-加载配置单元.并指定一个名称来加载Amcache.hve

检查注册表后,发现文件执行记录以明文保存。

要在regedit.exe修改Amcache.hve的注册表信息,需要使用系统权限。修改后可以通过选择导出保存Amcache.hve。

检查位于以下地址的Amcache.hve文件中记录的开源powershell脚本:

https://github . com/Yoda 66/getam cache/blob/master/Get-am cache . PS1

脚本过程如下:

通过reg load加载Amcache.hve

枚举注册表并显示记录信息。

通过reg unload卸载Amcache.hve。

0x05 Amcache.hve文件的单条记录清除

删除思路

要删除指定记录的信息,需要删除该记录对应的注册表父项。

删除方法

1、通过regedit.exe的界面操作

用系统权限打开regedit.exe,加载Amcache.hve,编辑注册表,最后选择导出,导出一个新的Amcache.hve.

2、脚本实现

流程如下:

使用系统权限通过reg load加载Amcache.hve

枚举注册表以匹配要删除的记录。

获取记录的注册表父项,并删除整个注册表项值。

导出注册表并保存Amcache.hve

通过reg unload卸载Amcache.hve。

脚本实现的详细信息:

确定当前权限是否为系统权限:

$output='whoami '

if($ output-not match ' nt authority \ \ system ')

{

Write-Error“脚本必须以nt authority\system身份运行”-错误操作停止

}

加载注册表:

reg load HKLM \ am cache c:\ Windows \ app compat \ Programs \ am cache . hve

导出注册表:

reg.exe拯救HKLM\amcache 'new.hve' /y

卸载注册表:

reg.exe卸载HKLM\amcache

完整的实现代码已经开源,地址如下:

https://github . com/3g student/home-of-Powershell/blob/master/Delete-am cache . PS1

该代码实现了删除指定名称的记录,并能自动删除多条重复记录,最终生成一个新文件new.hve

0x06 小结

本文介绍了RecentFileCache.bcf和Amcache.hve单记录的清理方法和程序实现细节。

从取证的角度来说,RecentFileCache.bcf和Amcache.hve的记录不能盲目相信。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。