排查Hosts文件篡改需联动文件、进程、网络、日志四方面:一查文件内容是否异常;二用ProcMon或inotifywait定位写入进程并检查权限;三验DNS配置、登录日志及定时任务;四断网后恢复默认Hosts并加固。

新手排查服务器中被非法篡改的 Hosts 文件及域名劫持风险,关键不是“找错”,而是“看联动”——单看文件内容容易漏掉源头,必须把文件、进程、网络、日志串起来验证。下面分四步讲清楚怎么做,每步都可直接上手操作。
一、先确认 Hosts 文件有没有被动手脚
别急着删改,先快速过一遍内容是否可疑:
- Windows 路径:C:\Windows\System32\drivers\etc\hosts;Linux 路径:/etc/hosts
- 用管理员权限打开(Windows 记事本需右键“以管理员身份运行”;Linux 用 sudo cat /etc/hosts)
- 重点扫三类条目:
– 把知名域名(如 baidu.com、microsoft.com、github.com)指向非 127.0.0.1 的公网 IP
– 出现 127.0.0.1 或 0.0.0.0 + 正常网站域名(例如127.0.0.1 update.microsoft.com)
– 大量注释行(# 开头)、空行混杂、IP 地址格式错误(如多出空格、中文符号、IPv4 写成 IPv6 格式)
二、查是谁在偷偷写入 Hosts 文件
恢复文件只是治标,锁定修改者才能断根:
- Windows:下载微软官方工具 Process Monitor(ProcMon),启动后加过滤器:
– Path contains hosts
– Operation is WriteFile
然后等几秒或手动触发一次网络请求(比如 ping 一个域名),就能看到哪个进程在写入 - Linux:用 inotifywait 实时盯住:
inotifywait -m -e modify,attrib /etc/hosts
另开终端执行ps aux --sort=-start | head -10,比对时间戳最接近的进程 - 顺手检查权限:
– Windows 右键 hosts → 属性 → 安全 → 高级,确认 Users 组没有“写入”权限
– Linux 执行ls -l /etc/hosts,正常应是 -rw-r--r-- 1 root root;若属主不是 root 或权限含 w 给其他用户,就是风险点
三、同步验证 DNS 和网络层是否也被动过
Hosts 被改,往往不是单独行动,DNS 配置、定时任务、日志痕迹都要拉出来一起看:
- DNS 服务器是否异常:
– Windows 运行 ipconfig /all,看 “DNS Servers” 是否变成陌生 IP(如 103.86.96.100)
– Linux 查 /etc/resolv.conf,确认 nameserver 是可信地址(如 114.114.114.114 或 8.8.8.8) - 查最近有没有异常登录或提权:
– Windows 打开“事件查看器”→ Windows 日志 → 安全日志,筛选 ID 4624(登录) 和 4672(特权登录),看是否有非本人账户或非常规时间记录
– Linux 查 /var/log/auth.log,执行grep "Failed\|Accepted" /var/log/auth.log | tail -20 - 扫定时任务:
– Linux 执行crontab -l && cat /etc/crontab /etc/cron.d/* 2>/dev/null | grep -i "hosts\|echo\|sed"
– Windows 检查“任务计划程序”里有没有调用cmd /c echo ... >> hosts类脚本
四、快速恢复 + 防再犯的实操动作
确认问题后,按顺序处理,避免边修边被覆盖:
- 立即断网或禁用网卡(防止恶意进程外连)
- 恢复 Hosts 默认内容(仅保留两行):
– Windows 管理员 PowerShell 中执行:echo # Default hosts > %windir%\System32\drivers\etc\hosts & echo 127.0.0.1 localhost >> %windir%\System32\drivers\etc\hosts & echo ::1 localhost >> %windir%\System32\drivers\etc\hosts
– Linux 执行:sudo tee /etc/hosts << 'EOF'<br># Default hosts<br>127.0.0.1 localhost<br>::1 localhost<br>EOF
- 设为只读加固:
– Windows:右键 hosts → 属性 → 勾选“只读”
– Linux:执行sudo chown root:root /etc/hosts & sudo chmod 644 /etc/hosts - 最后做一次全盘查杀:
– Windows 用 Defender 全面扫描 + Malwarebytes 扫描 PUP/广告软件
– Linux 可运行sudo clamav -r /(需提前安装 ClamAV)或sudo rkhunter --check

















