CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

admin 2021年5月11日18:44:40评论91 views字数 2372阅读7分54秒阅读模式
CTF中的取证技术之——如何缩小linux下文件最近访问时间范围
CTF中的取证技术之——如何缩小linux下文件最近访问时间范围


 本文有石冀原创,转载请注明。


CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

案例

考题

本文题目和镜像来自 Magnet CTF 2020的第一周,附件为一个安卓镜像:

Q:将域名映射到 IP 的文件最后一次被访问是在什么时候?

答案格式为:mm/dd/yyyy HH:MM:SS (UTC 时间)


题目附件

MUS_Android.tar


题目分析

将域名映射到 IP 的文件即为 hosts 文件。在安卓系统中,hosts 文件通常位于 /system/etc/hosts 。镜像以 tar 格式打包,因此我们可以不解压而直接查找文件,注意这里的时间是作者本地时区(东八区)的时间:

CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

我们可以注意到的 hosts 文件有两个,一个位于 system/etc 文件夹下,另一个位于 Download 文件夹下,这里猜测后者可能被篡改过。


在这个案例中,压缩包中的文件是不包含最后被访问时间的,因此问题中所说的最后被访问时间很可能是需要我们给出一个我们能够证明的尽可能靠近最后被访问的时间。换句话说,我们需要使用其他的内容来佐证 hosts 文件最后被访问的时间,而不是直接观察 hosts 文件的时间戳。对于这样的问题,我们其实可以整理出一条时间线。

已知hosts 文件的最后修改时间在2020-03-05 13:50:18 (UTC+8),因此我们可以根据日期进行时间线整理,可以先将时间范围划定在 2020-03-05 至 2020-10-05 (题目发布之日)。


对近似的时间戳进行查找,发现该手机上安装了 Magisk ,这说明这部手机很可能被 root 过;并且这部手机还使用了 SolidExplorer 文件管理器。


在 hosts 文件的最后修改时间附近,SolidExplorer 的数据库也被修改过:

CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

查看 explorer.db 的内容发现存在表 recent_files,且 recent_files 中的三条数据均与 hosts 相关:

CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

将时间戳转换为时间,发现 /system/etc/hosts 最后被访问时间为 2020-03-05 05:49:28 (UTC),Download/hosts 最后被访问时间为 2020-03-05 05:53:50 (UTC),与 explorer.db 的最后修改时间相一致。


同时注意到存在文件 /etc/hosts ,然而该文件没有出现在压缩包中,那么我们需要确认这个文件是来自哪里的。经过关键字查找,发现 .bash_history_root 文件中的最后一条记录显示 root 下执行过 vi /etc/hosts 的命令,那么该文件的最后修改时间 2020-03-05 13:12:31 (UTC+8)就可以看作这条命令的执行时间。那么可以推断 SolidExplorer 创建了 /etc/hosts,并且在命令行中使用 vi 对其进行修改。


同时 .bash_history 中同样存在 /etc/hosts,最后修改时间为 2020-03-05 22:53:45 (UTC),在 /etc/hosts 被修改之后,cowsay 被安装。我们可以尝试通过 cowsay 安装的时间缩小 hosts 文件被修改的时间范围:

CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

同时确认 pkg/info 中 cowsay.list 的生成时间,可以确定该日志中记录的时间为 UTC-5,也就是 2020-03-05 13:21:17 (UTC)。


当一个文件被复制,其最后修改时间也会被复制。因此我们推断 SolidExplorer 访问并编辑了 /system/etc/hosts,并于 05:50:18 (UTC) 保存。之后,SolidExplorer 被用来在 Download 文件夹下制作备份,这就解释了这三个文件为什么最后被访问时间不同而最后修改时间相同。


思考

由于我们没有直接的访问时间,因此需要依靠 SolidExplorer DB 以及 external.db 中的时间记录,这里我们只关注 /system/etc/hosts 文件,因为它是真正的 hosts 文件。该文件最后一次被访问,是在它被复制到 Download 文件夹的时候。因此,尝试2020-03-05 05:53:50(或者35秒),但是答案错误。


所以,如果题意指的不是最近一次访问,也许是要求任何形式的访问。关注到 hosts 文件中添加了 malliesae.com,用户访问该网站时,hosts 文件都会被访问。看一下Chrome浏览器的历史记录,malliesae.com的最近一次访问时间为2020-03-24 01:49:17 ,但是答案仍然错误。


之后在.bash_history中发现了用户用vi编辑/etc/hosts的条目。.bash_history中有许多关于apt和pkg的条目,其中没有时间戳,但apt的日志中有。所以将.bash_history条目与apt 的 history.log 进行了比较,发现的是:该文件一定是在已经知道的之前的时间之间被编辑过。


再回过头来看它的时间线,唯一显示直接访问的时间戳是2020-03-05 05:50:18(修改时间)。它确实显示了访问,但似乎hosts文件是在这个时间之后被访问的。尝试提交,答案正确。

正确答案:03/05/2020 05:50:18

同理 chrome打开次数 19次



CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

时间线


CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

结束语

本题的结论本身很简单,只是笔者对于该题的另外一些思考,即当文件本身没有保存最近访问时间时如何利用其他的日志记录来缩小范围;另外,如何区分系统日志记录的时区也是需要注意的,一般保存时间戳的,转化为时间时可以直接统一,但是如果记录的是具体时间,则需要参考标准时间记录比对时区。


镜像链接:

https://pan.baidu.com/s/1h7LCn-TEXkfmSZ3B20TxVA

提取码:kbtz


作者简介:

石冀,中国人民警察大学学生,活跃于世界各大CTF赛事,爱好web安全,渗透及后渗透,电子数据取证。 

CTF中的取证技术之——如何缩小linux下文件最近访问时间范围




本文始发于微信公众号(数据安全与取证):CTF中的取证技术之——如何缩小linux下文件最近访问时间范围

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年5月11日18:44:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CTF中的取证技术之——如何缩小linux下文件最近访问时间范围http://cn-sec.com/archives/370310.html

发表评论

匿名网友 填写信息