应使用find命令结合-links、-type f等参数检测硬链接数异常的隐蔽文件,重点关注/var、/tmp、/home等目录中-links +1且mtime -1或权限异常的普通文件,并通过ls -li与find -inum验证多路径是否指向同一inode。

要定位可能被入侵者重命名的隐蔽副本(比如伪装成系统文件、隐藏在正常目录中、或通过硬链接逃避常规扫描),不能只依赖文件名匹配。关键在于结合 -links(硬链接数)和 -type f(普通文件)进行异常检测,因为恶意副本常通过硬链接复用 inode,却不增加可见文件数——这会留下“链接数异常高”的线索。
查硬链接数异常高的普通文件
正常日志、配置或二进制文件通常只有 1 个硬链接;若某文件被恶意复制并创建多个硬链接(例如植入后门时复用同一 inode 避免写新块),其 -links +2 就值得警惕。
- 搜索所有硬链接数 ≥ 2 的普通文件:
find / -type f -links +1 2>/dev/null - 排除常见合法高链接数目录(如 /usr/bin、/lib),聚焦可疑区域:
find /var /tmp /home -type f -links +1 2>/dev/null - 按链接数降序排列,快速识别极端值:
find / -type f -links +1 -printf "%n %p\n" 2>/dev/null | sort -nr | head -20
(%n输出硬链接数,%p输出路径)
结合时间与权限缩小范围
入侵者创建的副本往往有“时间戳异常”(如修改时间远新于访问时间)或“权限异常”(如可执行文件属主为非 root 却在系统路径下)。
- 找最近 24 小时内修改、且硬链接数 ≥ 2 的文件:
find / -type f -links +1 -mtime -1 2>/dev/null - 找权限为 755/775 但属主不是 root 或 bin 的可执行文件:
find /usr /bin -type f -links +1 -perm /111 ! \( -user root -o -user bin \) 2>/dev/null
检查隐藏路径中的高链接文件
攻击者常把副本藏进 .config、.cache 或以 . 开头的目录里,再用硬链接指向它——这样既隐蔽,又绕过基于名称的扫描。
- 递归查找用户家目录中所有隐藏目录下的高链接普通文件:
find $HOME -path '*/.*' -type d -exec find {} -maxdepth 1 -type f -links +1 \; 2>/dev/null - 进一步过滤掉已知安全文件(如 .bash_history):
find $HOME -path '*/.*' -type d -exec find {} -maxdepth 1 -type f -links +1 ! -name ".bash_history" ! -name ".profile" \; 2>/dev/null
验证可疑文件是否真实副本
发现高链接文件后,用 ls -li 查看 inode 和链接路径,确认是否多个路径指向同一 inode:
- ls -li /path/to/suspicious/file → 记下 inode 号(第一列)
- find / -inum INODE_NUMBER -type f 2>/dev/null → 列出所有硬链接路径
- 若返回多个不同路径(尤其跨目录或含隐藏名),需人工核查是否合理











