ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

美亚杯团体赛刷题复盘:镜像取证基础与串案分析实战

美亚杯团体赛刷题复盘:镜像取证基础与串案分析实战 2019年美亚杯团体赛那会儿我们队最大的遗憾不是压轴题没做完而是明明会做的基础题丢了一堆分。赛后把题目重新翻出来刷特别是1-42题和106-116题这两个区间我才发现很多丢分点根本不是不会而是做题节奏和信息筛选出了问题。这篇文章就是把当时刷题的过程和思路重新整理了一遍希望对准备打这类电子数据取证比赛的队伍有点帮助。美亚杯这类比赛团体赛动辄一百多道题赛场上没有时间让你慢慢琢磨工具怎么用。哪道题该深挖哪道题该快速过哪些信息是干扰项这些判断比你背多少命令都重要。1-42题基本覆盖了镜像取证最常见的基础点适合拿来练手感和确认工具链的稳定性106-116题则是典型的综合性冲刺区间题目难度上来了线索不再只存在于单个检材里需要你把多个镜像关联起来看。这两个区间放到一起刷等于把“基础稳扎”和“综合实战”两头都练到了。1. 先说说我们为什么挑这个区间刷题美亚杯团体赛的题目结构基本是越往后越难、越往后越综合。我记得当时完整赛题一共一百多道队伍里每个人擅长的方向不一样有人熟悉磁盘取证有人擅长手机检材有人对服务器和数据库更顺手。我们复盘的时候发现1-42题属于每个队员都必须拿稳的分数而106-116题是能不能和其他队伍拉开差距的关键。1.1 1-42题在整套题目里的定位前42道题有个共同特点它们大多数围绕现场勘查和单检材分析展开。比如给你一个工作站的镜像文件让你确认系统版本、Hash值、用户账号、最近访问的文件、浏览器记录、USB外设使用记录等。这些题不烧脑但非常考验做题的细致程度。题目本身可能只有一句话甚至一句话里带着两个问题比如“该检材对应硬盘的分区起始扇区是多少”以及“该分区内某用户最近打开过什么文件”。很多人丢分不是因为不会用工具而是被工具解析出来的一大堆列表淹没了找不到题目真正想问的那一条。我在刷这一区间时最大的感受是要把“为做题而取证”和“为分析而取证”分开。比赛里的1-42题更多是考察你能不能快速、准确地在镜像里拿到指定信息而不是考察你对整个案件有多深的理解。所以做题时先读清楚题目在问什么再带着问题去检材里找答案。很多队伍一上来就急着把镜像全盘扫描、自动提取结果等到要回答“某个文件的上次写入时间”时反而不知道从哪里看。1.2 106-116题为什么值得单独刷一遍后半段压轴题的特点就不再是“单点查询”了。它通常会把前面各个检材的线索串到一起让你判断某个行为发生的完整时间线、某个操作先后涉及了哪些设备、某条数据在哪个数据库文件里被修改过。考察的不是你认识多少个文件名而是你有没有“串案”的意识。106-116题我愿称之为“信息筛选压力测试”。如果你习惯一道题一道题独立做这个区间会特别难受。因为你会发现回答第108题时需要的证据可能藏在第109题对应的那个镜像里甚至要回头去翻第20题刚看过的一个IP地址。我刷到这里的时候已经开始习惯用表格记录每一个检材的基本信息、关键时间点、涉及账号和IP因为这些信息后面大概率会复用。2. 镜像拿到的前十分钟别急着点“一键分析”很多入门教程一上来就教你怎么用工具自动分析镜像我要说的是比赛和真实案件取证都不能这么干。镜像拿到手前十分钟不是在工具里乱点而是先建立对检材的基本认知。2.1 Hash校验和镜像完整性检查是第一个分水岭美亚杯这种比赛给的镜像通常已经是完整导出的但题目里一定会有一两题专门考查验Hash值和镜像格式。比如问“该镜像文件对应的SHA-1值”或者“镜像格式是什么”这种题纯粹是送分但如果你压根没有做校验这一步后面遇到“该镜像是否完整”这类问题时就会卡壳。实操上我用的是FTK Imager来加载镜像和查看Hash比赛现场也可以用X-Ways Forensics。注意如果题目给的是.E01格式它分卷带校验加载时能看到每个分卷的Hash如果是DD镜像需要自己计算MD5或SHA-1后与题目给的数值比对。这个动作不要拖一到手就算顺手记在笔记里。别等到做题做到一半发现工具加载的镜像路径不对再来算Hash那真的会浪费大量时间。2.2 分区表、文件系统和操作系统的三层判断先看分区表MBR还是GPT。这个判断直接影响后续手工计算偏移量时的思路。然后看每个分区的文件系统类型NTFS、FAT32、exFAT在取证上的解析重点不太一样。最后才是操作系统Windows 7还是Windows 10系统安装时间、时区设置、默认语言这些信息决定了你之后解析浏览器记录时要不要做UTC转换、解析中文文件名时用哪种编码。我记得有一道题问的是“系统安装时区设置是什么”多数人下意识以为直接看系统时间就行其实要看注册表里的TimeZoneInformation键。如果时区判断错了后面所有时间相关的题目都会跟着错而且会影响不止一道题。这一层的判断一定要稳不要嫌基础。2.3 工具链选择没有万能工具只有顺手分工我们队伍当时Windows平台和Linux平台都在用。Windows上用X-Ways Forensics配合取证大师做镜像解析Linux上用Autopsy做时间线分析和文件系统深度检查。工具没有好坏之分关键是团队内部要统一“哪类题主要用哪个工具”。以1-42题为例如果是查“某用户最近访问的文件路径”我会直接在X-Ways里查看解析出来的Recent Documents和Jump Lists效率很高。如果是查“某个文件是否被删除且能否恢复”我会切到Autopsy的Deleted Files视图或者用R-Studio做一次深度恢复。工具切换越流畅做题的速度就越快。3. 1-42题里最常出现的两类“送命细节题”前42题虽然整体不难但里面藏着不少让队伍丢分的细节题。我刷完一遍后把踩过的坑归为两类一类是跟用户行为痕迹有关的时间题另一类是容易被自动分析工具忽略的“隐藏信息题”。3.1 注册表和预读取文件把用户行为“钉死”在时间轴上很多队伍查“用户最近做了什么”第一反应就是去看用户的“最近访问的文件夹”或者浏览器历史但其实Windows系统里最稳定、最不容易被普通用户手动清除的痕迹一个是注册表一个是预读取文件。我在刷题时专门把系统盘的NTUSER.DAT、USRCLASS.DAT和SYSTEM文件导出来用Registry Viewer或取证大师的注册表分析模块解析。重点看这几个位置HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs记录了最近打开的文档类型和文件名。HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU记录了用户在运行框里输入过的命令。HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache记录了应用程序的执行路径和名称。SYSTEM\CurrentControlSet\Enum\USBSTOR记录了USB存储设备的接入历史包括序列号和时间。有一次刷题题目问“嫌疑人最后一次插入的U盘序列号是什么”。刚开始我直接在“可移动设备”里翻结果一无所获。后来想到去USBSTOR里找果然在枚举键值里看到了对应设备的接入和移除记录。这类题属于“知道在哪就一分钟做完不知道在哪就永远找不到”的类型。预读取文件Prefetch是另一个时间线上的神器。只要程序被运行过系统就可能在C:\Windows\Prefetch下生成.pf文件文件中记录了程序首次运行时间、最后一次运行时间和运行次数。对定位恶意软件或特定工具的运行时间非常有用。刷题时有一道题问“某个特定黑客工具第一次被执行的时间”直接看对应.pf文件的时间属性就能定位。3.2 回收站、隐藏文件和ADS工具自动分析容易漏掉的部分自动分析工具能帮你把正常文件列得明明白白但对“被删除后进入回收站”的文件、带隐藏属性的文件、以及NTFS文件系统里的ADS数据流常常力不从心。回收站里的文件不要只看文件名和“删除时间”。Windows的$Recycle.Bin目录里每个被删除的文件会有一个“$I”开头的元数据文件和“$R”开头的内容文件元数据里记录了原始路径和删除时间。我记得有一道题让你判断用户的某份文档是否被删除过以及原始路径是什么答案就藏在$I文件里。手动找到这些文件用十六进制查看器看里面的原始路径字符串比依赖工具解析更可靠。ADSAlternative Data Stream是NTFS专属的隐藏数据流最经典的是在正常文件后面用冒号挂一个隐藏数据流比如test.txt:secret.txt。用资源管理器根本看不到普通的全盘搜索也搜不到挂载在ADS里的内容。做题时如果发现某个文件的大小很奇怪或者某个目录访问起来特别慢最好用命令行工具dir /R检查一下有没有ADS或者用X-Ways的文件流视图直接看。我记得刷题时有一道题就是在一个看似正常的PDF文件背后挂了一段隐藏的文本里面正好包含了题目的关键线索。3.3 时间线不是越复杂越好关键是筛选我在1-42题里学会最重要的一件事就是不要对着Autopsy生成的超大时间线发呆。工具会把所有文件访问、修改、创建时间都列出来信息量太大等于没有信息。我的做法是先确定一个“目标时间窗口”再在时间线里只保留这个窗口内的活动。比如题目问“该电脑在某个日期是否访问过某个网站”那我先去看这个日期对应的浏览记录再看DNS缓存最后看是否有相关缓存文件如果我一开始就打开完整时间线很难快速聚焦到那一个时间段。很多队伍输在对“重点”不敏感总想把所有东西都分析透彻结果一题花掉20分钟后面大题完全没时间。记住比赛里时间是最大的成本时间线的价值在于“筛选”不是“汇总”。4. 106-116题很多人忽略的“串案”思维如果说1-42题是单点技能测试那么106-116题就完全是联赛级的综合考察了。刷到这里我还发现一个有意思的现象很多平时基础题做得飞快的人到这一段突然卡壳不是因为他们不懂技术而是脑子里没有一个“线索图谱”。4.1 从“点”到“线”同一检材内的多维度关联后半程有些题你看着是问服务器上的一个文件实际上需要你结合网站访问日志和数据库内容才能推导出来。举个例子有一道题类似这样给定一台服务器的镜像让你判断某个攻击行为发生在什么时间点。如果你只盯着恶意文件本身其实很难拿到准确时间。但如果你去翻Web服务的访问日志找到对应IP第一次访问某个敏感路径的时间再和该文件的创建时间做交叉验证答案就会非常清晰。再比如问“这个后门程序通过哪个参数接收指令”你就得去翻WebShell的源码而不是只盯着文件哈希看。这类题的关键是建立起“操作系统痕迹”和“应用层日志”之间的关联。服务器取证不是只查文件系统还要查服务配置、数据库记录、Web日志、计划任务等。每一个应用都在系统里留下了或多或少的痕迹关键是你愿不愿意多问一句“这个行为除了文件本身还会在哪里留下记录”。4.2 数据库文件SQLite和MySQL是高频考点106-116题里最容易让队伍拉开差距的就是数据库文件的分析。现场勘验时数据库往往不是通过标准客户端导出的而是镜像文件里冷冰冰的二进制数据文件。SQLite文件相对好办直接用DB Browser for SQLite打开就行。刷题时我遇到过一个很典型的坑题目要你从某个应用的数据文件里找一条订单记录但打开数据库后发现大量数据存在WAL文件里主数据库文件反而看不到最新数据。这时候不能只打开“database.db”必须把同目录下的“database.db-wal”一起处理否则你看到的数据可能是残缺的。MySQL数据库更麻烦一点因为它的表结构和数据分布在ibdata1以及对应数据库目录的.frm、.ibd文件里。如果你拿到的是完整数据目录一个比较讨巧的办法是搭一个本地MySQL环境把整个数据目录替换过去再用命令行查询。要是环境搭建来不及也可以直接对.ibd文件做字符串搜索把关键记录用十六进制方式挖出来。比赛现场什么方案速度快、什么方案可靠就用哪个别纠结“正规流程”。4.3 跨检材串线IP、账号、文件路径形成“证据三角形”106-116题经常给出不止一个检材比如一台服务器镜像、一台个人电脑镜像、一个手机镜像。做题时如果没有统一记录很容易在几道题之间浪费时间来回翻。我自己的刷题习惯是每分析完一个检材就在笔记里列一个清单检材名称、Hash值、操作系统/设备型号。里面的用户账号列表。关键联网记录IP、域名、时间。与案件相关的文件名、路径、Hash。涉及的时间点尤其是DNS查询记录和登录日志里的时间。有了这个清单遇到跨检材问题时就相当于有了一张地图。比如问你“嫌疑人在个人电脑上用哪个账号登录过服务器”你只需要在个人电脑里查SSH客户端或远程桌面连接记录同时去服务器日志里确认对应时间点是否有来自该来源IP的登录记录这两个一对应答案就出来了。这个东西听着不难但赛场上能做到的人不多。大多数队伍都是边做边翻工具翻了半天找不到刚才那个IP是在哪个检材里看到的。团队赛尤为明显两个队员同时查同一个镜像最后汇总答案时还得对半天。统一记录和信息同步是后半程拿分的隐形竞争力。5. 我们复盘时踩过的坑以及给你的操作建议刷完1-42和106-116以下这些教训是我最想分享的。有些坑我们比赛时踩过有些是刷题复盘时发现“哦原来应该这么处理”。5.1 时区不转换时间线全乱这是我见过最普遍、也最可惜的丢分原因。镜像里的系统时间存的是UTC题目问的往往是“北京时间”中间差8个小时。比如说磁盘里某个文件的时间戳是06:30但题目问的是当天的14:30如果你不加处理直接写上去后面所有基于这个时间点推导的题都会跟着错。建议是做题前先在笔记里写下该检材的时区偏移量比如“北京时间 UTC 8小时”。浏览器历史、邮件时间、日志时间都要统一换算后再记录。多人协同时大家记录的时间格式也要统一最好精确到秒否则核对答案时会出现“你说10:20我说10:21”的尴尬。5.2 中文编码和乱码问题中文Windows系统里的文件名和文件内容编码方式可能不是统一的。文件资源管理器里的中文底层可能是GBK编码但某些数据库或网页文件里又是UTF-8。用英文版工具直接看容易出现乱码。如果需要手工搜索中文字符串建议先用工具确定目标字符串的编码方式。比如在X-Ways里搜索中文关键词时可以用“Unicode”和“ANSI”两种模式分别试一下。如果搜索结果为空先别急着怀疑题目有问题多半是编码没选对。5.3 记录每个文件路径时不要靠记忆比赛题目有时候会问得很细比如“某个木马程序释放的配置文件完整路径是什么”。这类问题你光靠工具界面里看到的文件列表是不够的因为列表里的路径可能被截断。最好直接在取证工具的“文件属性”里复制完整的绝对路径再粘贴到笔记里。我见过很多队伍交完卷出来对答案题目内容记得清清楚楚就是记不清完整路径里到底有没有多一个空格或少一个反斜杠。这种细节分丢了真的非常亏。5.4 工具版本不一致解析结果可能不一样团队赛最怕的就是四个人换着用不同版本的工具。比如同是解析浏览器历史旧版本的工具可能不会把某些SQLite的WAL数据合并进去新版本就会。结果大家做同一道题得出两个不同的访问时间然后开始“为什么你看到的不一样”。处理办法很朴素赛前统一好工具链甚至把关键工具的版本号也统一。比赛过程中如果非要换工具也要在笔记里标明“此题结果是用XX版本得出的”方便队友复核。5.5 复查时优先看基础题冲刺题永远做不完从一百多道题的角度看1-42题这类基础题的价值远高于最后那几道压轴题。压轴题可能一道题的分值不高但耗时极长而基础题只要细心就是白拿的分。我们复盘时发现最后如果没有及时回查前面的题改对几道基础题总分排名会好看很多。给一个具体的操作建议每做完15到20道题留两三分钟快速回看这组题里被标记为“不确定”的题目不要攒到最后一起看。因为到最后你的精力和思维清晰度都在下降回看一堆题根本看不进去。5.6 刷题时的“错题本”比刷题数量更重要我把这100多道题全部刷完之后留下印象最深的不是那些做对的题而是做错的题。我把它们整理成一个“坑点清单”比如“SQLite不合并WAL就拿不到最新数据”“Windows的ADS流要从工具里单独打开”“别忘了时区转换”等等。这个清单在赛后总结时特别有用。等到下一场比赛前我不需要重新把所有题刷一遍只需要把清单翻一遍就能快速唤起记忆。它比任何教程都贴近比赛本身因为每条记录都是用丢分换来的。最后再说两句题外话可能有人问刷往年题目对实战工作有多大帮助我的体会是比赛题和真实案件差别很大。真实案件没有标准答案你查出来的东西也不一定有人给你打分但赛场刷题带来的那种“系统化思考”的习惯放到案件里同样适用——先看检材全貌、再定关键时间点、然后排查用户行为痕迹、最后把系统层和应用层的数据串起来分析。这个框架一旦练熟了不管是比赛还是真实取证都非常顺手。如果你想入电子数据取证的门美亚杯历年真题真的是一个很好的训练场。不用贪多像我这样挑两个有代表性的区间认真刷一遍比佛系做完全部题更有收获。刷题的过程其实就是不断问自己“这个信息会在哪里留下痕迹”的过程问多了嗅觉自然就出来了。
返回列表