本地名称解析篡改
/etc/hosts 提供本地静态解析,优先级通常高于 DNS,改写它就能把域名指向攻击者主机,是域名劫持最简单的落地方式。取证关注新增条目、被注释掉的原条目、文件时间戳,以及是否被 chattr 加上不可变属性——加锁往往说明有人想让它难以被还原。
基本信息
| 文件 | /etc/hosts、/etc/resolv.conf、/etc/hostname |
|---|---|
| 解析顺序 | /etc/nsswitch.conf 的 hosts 行决定 hosts 与 DNS 的先后 |
| 相关服务 | NetworkManager、systemd-resolved(会动态生成 resolv.conf) |
| 属性检查 | lsattr / chattr,i 为不可变、a 为仅追加 |
| 观察点 | 新增条目、注释掉的原条目、mtime 与 ctime |
| 适用平台 | Linux 与 Unix 系(macOS、BSD 同理) |
典型使用场景
- 排查域名被本地劫持导致的外联异常
- 分析恶意样本把回连地址硬编码指向内网的情况
- 确认 resolv.conf 是否被网络管理器正常托管
- 与更新失败、证书报错类故障交叉验证
- 采集主机解析配置基线用于后续比对
最小示例
最小示例
cat /etc/hosts # 全量阅读,条目通常不多
grep -vE '^\s*#|^\s*$' /etc/hosts # 只看生效行
stat -c '%n mtime=%y ctime=%z' /etc/hosts /etc/resolv.conf
lsattr /etc/hosts /etc/resolv.conf 2>/dev/null # 是否带 i 等特殊属性
grep -E '^hosts:' /etc/nsswitch.conf # 确认解析顺序
cat /etc/resolv.conf # 确认 DNS 服务器与搜索域输出字段读法
| 字段 | 含义 | 异常信号 |
|---|---|---|
| IP 地址 | 解析目标地址 | 指向内网或陌生公网地址 |
| 主机名 | 被解析的域名 | 与业务无关的更新或遥测域名 |
| 行内注释 | 说明文字 | 注释掉的原条目暴露改动痕迹 |
| 属性位 | chattr 设置的属性 | 系统配置上出现 i 或 a |
| mtime/ctime | 修改与元数据变更时间 | 与包管理或运维窗口对不上 |
resolv.conf 常由 NetworkManager 或 systemd-resolved 动态生成,判断改动性质前先确认生成机制,避免把正常刷新当成篡改。
不可变属性也可能由加固基线统一施加在其它系统文件上,发现 i 属性要先核对是否属于既有基线。
直接 chattr -i 再改写解析配置会破坏既有加固基线,也可能让态势发生变化;先固化文件内容与哈希,再按流程处置。