2026年第二届黑灰产检测技能大赛区域决赛 WP
一句话结论:这篇复盘区域决赛十九道离线加两道靶机的检测题,把它们归拢成一套可复用的电子取证与黑灰产研判方法论——身份溯源、群组与权限审计、终端设备研判、图像与浏览器痕迹、消息内容取证、资金链分析、来源归责七条线;凡题面合成的账号编号、包名、账户、主机名、校验位与最终 flag 一律剔除,只保留判定逻辑、诱饵识别与归责边界。
排版说明:正文按「检材 / 判定要点 / 可复用经验」组织;引号统一用直角引号,公式一律写成纯文本(不上 LaTeX),代码内双引号改单引号(序列化载荷除外),路径与哈希以无转义写法呈现。答案标识与 flag 用「某账户/某主机/略」代称。
〇、赛制与提交口径
题目十九道离线加两道靶机(线上动态席位)。离线题的答案由「工单号、字段名、主键、校验位」四段拼成、外面再套一层花括号,校验位是对拼接串做一次哈希取前若干位。真正的功夫全在定主键上——主键一旦确定,校验位是哈希一行就能算的机械活。这决定了整类比赛的胜负手不是算哈希,而是「在多个都说得通的候选里,按规范挑对那一个、并把诱饵排除干净」。靶机题相反:带着平台下发的 Cookie 登录实例、题面和回执都在实例里,答案从回执解码、不用自己拼。
一、身份溯源类
多次改名账号的穿透
检材是一份十万级条数的聊天导出加通讯录。判定要点:先按发送者标识聚合,统计每个账号用过的全部昵称、以及每个昵称下的消息条数与起止时间,全数据集里「多次改名」往往只有唯一账号,昵称轨迹(改名前后各段的条数与起始日期)就是它的画像。但仅有改名轨迹不够,要找改名的自证——翻到某个标识段,会有两条紧邻、只差两三分钟的「弃号声明」与「接棒声明」,一前一后对上就坐实了换号。可复用经验有三条:其一,出镜率和总量第一的账号常常正是诱饵,工单口径明确禁止按总量结案,误报案例就是拿它当反面教材;其二,会有另一个账号只用其中某个中间昵称、和主目标的同名阶段撞车,单看昵称必然误判,要靠时间线与自证声明区分;其三,通讯录备注是交叉验证的第三方证据。主键取「昵称变更后的账号」而非旧号,口径以题干与工单事项的措辞为准。
多源身份归一(代称与收款人对齐)
检材三份:聊天、通讯录、支付流水。难点是聊天里的代称(多个同姓、尾号还相同的人)光看文本根本分不开。判定要点:把边界下推到支付记录里用备注与收款人标识画清——同一条流水的备注(对某代称的俗称)、收款人标识、以及卡号,正好能和聊天里「某人用某行那张卡」这类零散陈述对上,多条独立线索全部收敛到同一标识才算定;聊天里那句「别找错人」的前置提醒,是用来主动否定混淆可能的。可复用经验:跨源归一时,任何单一来源(文本代称、尾号)都不足以定人,必须是「聊天代称 + 支付备注 + 卡号」多字段同指一个规范标识。
域名历史注册主体溯源
检材是 WHOIS 历史、注册商账户表、一个种子域。判定要点:在 WHOIS 历史里找挂非隐私邮箱、带持有人句柄的记录,用持有人句柄回指注册商账户表定位注册主体。最关键的坑是「公共隐私代理邮箱」——这类邮箱在整个数据集里出现两万多次、任何域名都可能挂它,绝不能用它做关联依据;能从海量里区分出可用的关联字段,靠的是该字段在数据集里的基数(出现次数接近唯一才可信)。另外联系方式常被写成 HTML 实体编码,还原要到字符层再看。
APK 开发者家族识别
检材是六个 APK 加一份家族目录表。这题官方埋了反直觉点:单看证书签名会判错。判定要点分两步交叉:第一步结构比对,逐文件算哈希,会发现其中三个包的接口配置脚本与动态库哈希完全一致、只有清单、字节码、资源表和签名不同——同一套内部构件说明同源;第二步解签名看证书主体。合起来的结论是:结构一致而换了签名的那个,是同伙换签名重打包,三者同属一个家族;而另一个包虽和前面的用了同一张证书、内部结构却完全不同,是同证书的无关包——同证书不等于同作者,证书可复用。可复用经验:恶意样本聚类要用「资源结构 + 证书 + 接口配置」多特征交叉,任何单一特征(尤其证书)都不足以定家族。
二、群组与权限审计类
建群者还原(区分系统写入与自然人动作)
检材只有一份群事件表。要找某群的建群者,但不能把所有建群事件都当答案。判定要点:先按事件的行为者字段与通道过滤——行为者是系统、通道是迁移或旧数据导入的,是平台迁移产生的系统记录,排除;只有带真实客户端指纹(具体机型与时间)的建群动作才是自然人所为。还会有一条「用另一台设备建了另一个群」的诱饵,专治看错群号。可复用经验:审计「谁做的」要先把自动化/系统写入从自然人动作里择出去,客户端指纹是区分二者的硬特征。
群管权限审计(以行为为准)
检材是群事件、成员表、授权窗口表。判定要点:把权限类事件全部捞出,再逐个比对是否落在该账号自己的授权时间窗口内——真正的越权/滥权者,其踢人、提权、改权限、发邀请等操作会全部落在他自己的管理员窗口里。两个「数字大户」都是烟雾弹:一个是挂着管理员角色、却只发欢迎语、无任何权限操作的机器人;一个是发言四万条、权限操作为零的话痨。核心铁律:成员表里的角色字段和行为对不上时,以行为为准。
招募链有效量研判
检材是邀请表与用户表。要找「有效招募量」最大的账号,「有效」是全部难点。判定要点:只算状态为已加入的,且邀请对象必须在用户表里真实存在、且账号类别为真人,按被邀请者去重后再按邀请者统计。排除项要逐一交代:脚本拉机器人(用户代理是脚本库)、增长机器人、迁移标记的系统记录,都不算真实招募。主键口径要用用户表里的主标识原值,不要用邀请表里的展示前缀。
任务链直接上级溯源
检材是任务表与聊天。要找一个成员的「直接上级」,注意不是组织最高负责人。判定要点:看分派行为——该成员的任务由谁直接分派、聊天记录里谁对他说「你的单子我刚派了」;而最高负责人只在调度组喊话催报、从不直接给成员派单。陷阱在于最高负责人存在感更强,只看头衔不看分派行为就会把答案错成顶层。可复用经验:层级关系要从「谁对谁施加了具体动作」还原,不能从职衔推。
共享账号的会话归责
检材四份:访问记录、会话表、员工表、登录日志。难点是访问记录只能看到会话标识,要先把会话绑定回登录名才能归责。判定要点:用会话表存「会话到登录名」的绑定关系,把某共享账号的高频访问按绑定的会话数计数归到具体人;排除项仍看行为——固定用户代理的巡检脚本、清算定时任务、白天值班账号,都不在夜间人为操作范围内;最后用员工表把登录名映射到人员编号。
三、终端与设备研判类
设备群控识别(同指纹多业务号)
检材是登录记录。按设备标识分组,统计每台设备上登录过的账号数与账号特征。判定要点:真正的群控工作端画像是「同一个安装标识、同一个客户端用户代理、同一份构建指纹,却轮换登录了多个业务号、且登录结果全部为成功」——一台设备一份环境指纹挂多个业务号轮登,是标准群控。排除项:挂数千个临时号的公共浏览器是网吧公共机、连排的是实验室测试号、单号正常使用的普通终端。可复用经验:设备风险分型的判据是「指纹一致性 乘 账号数」的组合,光看账号多会误杀公共机,光看设备新会漏掉正常首登。
下载包里的正式工作端识别
检材是下载目录里多个安装包、下载历史、一段聊天。判定要点:聊天给的是时间锚点与排除条件(「看下载记录某时刻那条」「白天那条是测试通道」「商店应用别当班用」),但文件名绝不能直接当结论——一个伪装成计算器的包才可能是工作端。要解包读清单里的包名,并进配置资源看渠道字段:正式工作端标的是运营渠道,测试包标的是测试渠道,正好和聊天里「白天是测试通道」的排除条件对应。可复用经验:识别「哪个是真正的业务载体」要靠内部配置字段而非外部文件名,文件名是攻击者最常伪造的一层。
移动工作端的核心接口取证
这是靶机题。要从一个 APK 里找出核心业务接口主机名和保存它的配置键,再拿配置键去席位回执里对号。判定要点:主类字节码极小、明显是壳,业务在资源与动态库里;反编译主活动看到的初始化调用是空实现、传进去的参数全是烟雾弹,真正的线索在常量字符串里——几个字段拼起来才是配置键与真实主机名。可复用经验:壳里读到的「显眼参数」往往是幌子,要顺着常量的拼装而非调用的入参找。
四、图像与浏览器痕迹类
现场排班图像取证
检材是一张排班看板截图加映射表。有个坑:画面文字转录结果和图像本体有出入时,以图为准、转录只作辅助。判定要点:从图里读出工位标签、去映射表按标签查对应分组标识。核心是「多模态证据冲突时,原始图像优先于其文本转录」。
照片 GPS 元数据勘验
检材是一张照片加地点表。判定要点:从 EXIF 取 GPS、换算成十进制度,与各候选地点算球面距离取最近——几乎重合的那个即拍摄点。可复用经验:度分秒要严格按公式转十进制度再比距离,别拿字符串近似。
浏览器历史里的自动化访问特征
检材是浏览器历史的 SQLite 库。判定要点:关联地址表与访问表(时间戳是从一六〇一纪元的微秒数、要换算),按主机与小时统计画像——某后台主机访问全部落在凌晨少数几小时、路径只有登录和任务页,是典型的夜间自动化访问后台;而全天分布的常规站点、以及凌晨定时探活的健康检查是正常流量,排除。提交格式要按结案规范归一:主机取去协议去端口去路径后的小写主机名,路径取去首尾斜杠、内部斜杠换点再小写。可复用经验:区分「自动化」与「人操作」看时间分布的集中度与路径的单一性,探活类固定间隔不算异常。
五、消息内容取证
被刻意抹去的指令定位
检材是一个本地缓存的消息数据库,除消息表还带编辑历史与撤回墓碑,直接查询即可、不需数据恢复。判定要点:看编辑历史表——某条指令被编辑成空、随后进了撤回墓碑、撤回类型是发送者本人撤回,「改空再加本人撤回」就是刻意销毁;另一个候选内容相似但是群内复述、撤回类型是管理员撤回,且结案规范的错误示例明确把它标成不得分。可复用经验:内容销毁的痕迹不在消息正文、而在「编辑后为空 加 撤回类型 加 撤回时序」这三者的组合;本人撤回与管理端撤回语义不同,要能区分。提交用消息表的原始编号、不加任何前缀。
六、资金链分析类
主链路与诱饵(全场数据量最大)
检材是九万笔交易。先清洗只取成功交易建转账图。判定要点:第一轮会撞上一个「一分钱连通性测试户」——小额测试转账全部流入、从不转出,报备说明已写明要排除。主链路跟大额资金走:入金分散进多张收款卡、卡的真实资金全部汇入一个归集账户、归集账户的唯一去向再指向下一层终端,层级按汇总金额排序后人工核对对手方集合确定(每层对手方唯一才敢断层级)。排除项比主链路更费时间:一批账户之间存在海量互转、是对敲盘口,其中按总量推荐的某个大户其实是留给另一道题的诱饵;代发工资户、门店小额户也都是干扰。可复用经验:资金归集层级的判据是「对手方唯一 加 金额显著 加 方向一致」,绝不能按流量总量选主犯——总量大的常是设计好的诱饵。
过渡账户识别(不留存节点)
同一份交易数据,要找「钱进来很快又出去、本身不留存」的过渡节点。判定要点:按账户把交易按时间排序,重建「入账后短时间窗口内出账」的配对关系,并且跑窗口法与先进先出配对法两种口径交叉验证;稳定过渡节点的覆盖率、进出总额、两种口径下的排名应一致地高。要特别识别「口径敏感型账户」——只在某一种宽松口径下略高的,不是稳定节点;收款户覆盖率虽接近满分但金额只到小额级,会被金额阈值自然淘汰;测试户与工资户按报备直接排除。可复用经验:识别过桥账户靠「快进快出、低留存、跨口径稳定」,任何只在单一口径下成立的结果都不可信。这题还留了一个诚实注记:题包没附独立结案规范,段名是按语义推的,拿到正式规范应按字段复核——不能把推测当定论。
七、来源归责与边界(靶机题)
夜间运维审计,要从席位回执里定位「成功且产生了配置或用户变更」的来源。判定要点分三步交叉:第一步在管理审计段筛出成功且属于变更的记录(封号、发布配置算变更,作业重试不算),这几条的行为者地址与会话标识一致;第二步用会话标识回指访问日志,命中的请求行(全是提交类、状态码全成功)减掉登录与重试后,与第一步按时间戳逐条咬合——两个独立证据源完全对上才定;第三步是来源字段取舍,也是最易错处:访问日志第一列是边缘代理、不是客户端,不能当来源,客户端要看转发头;即便策略声明「取最右不可信值」,实际全部日志的转发头都是单值、根本没有代理链,策略不影响取值。其余候选逐一按行为排除:全天健康检查探活的、只扫描不成功的、白班只读看板的,都不算变更来源。最后把地址映射到目录里的编号即为答案。
可复用经验里最有价值的是归责边界的自觉:这题特意点出「来源地址可能经过代理、跳板或网络地址转换,结论只能说明控制来源是某个编号,不等于坐实具体的人,做案件研判要把这一层不确定性留着」。取证结论要区分「控制了哪个来源」与「谁是人」,别把网络层证据直接当身份层结论。附带一个稳健性观察:待解码的十六进制串长度与答案全文等长、且整个大文件里只有这一个值能解出可读文本,所以即便挑错行、能解出的也唯一、不会误判——可用「解出即唯一可读」作为选择器。
八、横向小结
这一整套检测题反复考量的其实只有三件事。第一是「以行为为准、不以声明为准」:角色字段和实际操作对不上就信操作,文件名和内部配置对不上就信配置,显眼调用参数和常量拼装对不上就信常量,声明的隐私代理邮箱和唯一持有人句柄之间信基数小的那个——凡「声明与实际不一致」都既有可能是诱饵、也正是破题的分辨点。第二是「多源交叉才归责、单一来源不足信」:身份要聊天加支付加通讯录同指、变更要审计段与访问日志逐条咬合、家族要结构加证书加配置交叉、层级要金额对手方与方向三重一致。第三是「主键口径与诱饵防御」,这是这类比赛的真正胜负手:总量第一、存在感最强、按某单一字段最像的,几乎都被刻意设成了诱饵,结案规范里的错误示例往往直接把坑标出来;正确做法是严格按题干限定词、按报备排除项、按原始字段口径(不加展示前缀)选,并像靶机题那样保留归责的不确定性、像过渡账户题那样对拿不准的口径如实标注待复核。检测与取证的专业性,最终不在「能不能算出哈希」,而在「能不能在一堆都自洽的候选里,用可复算的硬判据挑对唯一一个、并说清楚为什么不是别的」。