网安行业知识普及-2:指纹检测与清除

6 阅读5分钟

核心定义

什么是"指纹"?

在网络安全领域,指纹是指能够唯一识别一个对象(设备、软件、用户、文件)的特征集合。就像人类的指纹可以唯一确定一个人一样,数字指纹可以唯一确定一个数字实体。

指纹的四个层面

层面指纹示例识别目的
网络/系统层面开放端口、服务Banner、TLS握手特征(JA3)、TCP/IP栈行为识别服务器类型、版本
Web应用层面HTML关键词、Cookie命名、URL路径、页面Hash识别CMS、框架、插件
客户端/用户层面浏览器UA、屏幕分辨率、字体列表、Canvas指纹追踪用户(即使清除Cookie)
二进制/软件层面文件Hash、特定字节序列、导入导出函数、字符串常量识别恶意软件家族、组件版本

指纹检测

2.1 定义

指纹检测是指通过技术手段,收集、分析和识别目标指纹的过程。最终给资产进行一个独立的定位。

核心问题是:我是谁?

2.2 检测的目的

防御方视角

  • 资产盘点:自己网络里跑了什么服务?有没有未知资产?
  • 威胁识别:这个文件是不是已知恶意软件?
  • 攻击溯源:攻击者用了什么工具?什么手法?

攻击方视角

  • 信息收集:目标是什么系统?什么版本?用什么框架?
  • 漏洞匹配:知道版本后,去找对应的已知漏洞

2.3 常见的指纹检测工具

按检测对象分类:

检测对象工具举例检测方式
二进制/固件Binwalk、Firmwalker特征签名匹配、字符串搜索
Web服务observer_ward、WhatWeb、WappalyzerHTTP响应头、Body关键词、Cookie
浏览器指纹fingerprintjs2、AmIUniqueCanvas、WebGL、AudioContext、字体
TLS指纹JA3/S 实现工具TLS握手包字段特征

指纹清除

3.1 定义

指纹清除是指为了避免被识别或追踪,而移除、修改或隐藏能够暴露身份的特征的过程。

核心问题是:"如何让你认不出我?"

3.2 清除的目的

攻击方视角

  • 擦除痕迹:入侵后清除日志、命令历史
  • 免杀:修改恶意软件特征,绕过杀毒软件
  • 隐藏C2:让命令与控制服务器流量混入正常流量

防御方/红队视角

  • 减少攻击面:关闭不必要的服务、修改Banner信息
  • 隐藏自身:渗透测试时避免被蓝队发现

普通用户视角

  • 隐私保护:防止被广告联盟追踪
  • 指纹浏览器:让每个网站看到不同的"设备"

3.3 常见的指纹清除方式

清除对象清除方式例子
系统指纹修改Banner、关闭端口修改SSH服务Banner,避免暴露版本
Web指纹修改默认路径、删除特征关键词移除CMS的meta generator标签
恶意软件指纹加壳、混淆、加密用UPX加壳,改变文件Hash
浏览器指纹指纹浏览器、随机化参数修改Canvas输出、随机化UA
网络流量指纹模仿正常流量恶意TLS流量模仿Chrome的JA3指纹

检测与清除的关系:矛与盾

4.1 核心关系

指纹清除必须依赖于指纹检测库。这不是可有可无的参考,而是必要条件

为什么?因为要有效隐藏自己,首先必须知道自己在哪些方面可能暴露:

检测库提供情报:你长什么样、哪里与众不同
                ↓
清除技术执行行动:根据情报修改、隐藏、模仿
                ↓
再次用检测库验证:现在看起来正常了吗?

4.2 一个完整的攻防循环

以恶意软件免杀为例:

  1. 检测:作者用杀毒软件扫描自己的样本,发现被杀
  2. 分析:查看检测报告,了解是哪个特征触发了报警(如特定字符串、代码段Hash)
  3. 清除:修改代码、加壳、混淆字符串,改变特征
  4. 验证:再次用杀毒软件扫描,确认不再被杀
  5. 重复:直到通过所有检测

当然了,这个还需要有扩展的功能,用来做反调试、反沙箱、反虚拟机,配合这些手段用来避免防御方进行调试检测。

4.3 一个技术实例:TLS指纹的攻防

步骤角色行为
1防御方发现恶意软件C2的TLS握手特征独特,开发JA3指纹检测
2攻击方发现自己的C2被JA3标记
3攻击方采集主流浏览器(Chrome、Firefox)的TLS指纹库
4攻击方修改C2的TLS库,模仿Chrome的握手特征
5防御方更新检测规则,现在流量混在正常Chrome流量中,更难识别

关键点:攻击方的清除工作,依赖于他们先采集的"正常TLS指纹库"。

指纹检测库的双重角色

在指纹清除过程中,检测库扮演着两个关键角色:

角色一:镜子

  • 告诉你现在长什么样
  • 哪些特征是独特的?哪些可能会暴露身份?

角色二:标尺

  • 告诉你应该长成什么样
  • 正常的、普遍的指纹是什么?应该模仿成什么样?

例子:隐私保护的指纹清除

步骤行为检测库的角色
1访问浏览器指纹检测网站镜子:告诉你当前的指纹有多独特
2调整指纹浏览器设置基于反馈进行修改
3再次访问检测网站标尺:验证修改后的指纹是否"泯然众人矣"

总结:一张图看懂

               指纹检测                       指纹清除
               ┌─────┐                        ┌─────┐
               │     │                        │     │
   攻击方 ◄────┤ 识  │                        │ 隐  ├────► 攻击方
   防御方 ◄────┤ 别  │                        │ 藏  ├────► 防御方
   分析师◄────┤ 对  │                        │ 自  ├────► 红队
   广告商◄────┤ 象  │                        │ 己  ├────► 普通用户
               │     │                        │     │
               └─────┘                        └─────┘
                   ▲                              ▲
                   │                              │
                   └──────────┬───────────┘
                               │
                       互为依赖,持续博弈
                       ┌─────────────────┐
                       │ 检测库提供情报  │
                       │ 清除技术执行行动│
                       │ 没有检测库,清除│
                       │ 就是盲目的      │
                       └─────────────────┘

指纹检测是认出你是谁,指纹清除是让你认不出我;两者互为依赖、持续博弈,构成了网络安全中永恒的猫鼠游戏。