应急响应利器:find 命令的妙用,让可疑文件无处遁形!
原文链接: https://mp.weixin.qq.com/s?__biz=MzI5NDg0ODkwMQ==&mid=2247486503&idx=1&sn=46561ec9a7c0eb006f3edcfb741973f8
应急响应利器:find 命令的妙用,让可疑文件无处遁形!
网安布道师 格格巫和蓝精灵 2025-07-15 00:10
在网络安全应急响应中,时间就是生命!当服务器被入侵,攻击者可能会留下各种恶意文件、后门脚本,甚至修改系统配置。作为蓝队队员,你需要在茫茫文件海中,以最快的速度揪出这些“鬼影”。
这时,看似普通的Linux命令
find
,就成了我们手里的“侦察兵”和“手术刀”。它能快速定位、筛选文件,是应急响应中不可或缺的利器。
今天,我们就来揭秘
find
命令在实战应急响应中的五大妙用,让你效率倍增,让可疑文件无处遁形!
一、快速定位指定类型文件:WebShell藏哪了?
攻击者入侵Web服务器后,最常做的就是上传WebShell。这些WebShell文件往往是
.php
,
.asp
,
.jsp
,
.aspx
等脚本文件。
find
命令能帮你快速锁定它们。
实战场景:
某Web服务器被入侵,怀疑有WebShell。
find 命令妙用:
ounter(line
find /var/www/html -name "*.php" -mtime -1 -print
/var/www/html
:指定搜索目录,这里是Web根目录。
-name "*.php"
:查找所有以
.php
结尾的文件。你也可以同时查找多种类型,如
-name "*.php" -o -name "*.jsp"
。
-mtime -1
:查找在最近 24 小时内(1天内)被修改过的文件。这能大大缩小范围,因为WebShell通常是入侵后新上传或修改的。
-print
:输出完整路径。
进阶:
结合
-size +1k -size -100k
筛选大小,排除掉一些过大或过小的正常文件,进一步提高效率。
二、揪出异常时间戳文件:谁动了我的文件?
文件的时间戳(创建、修改、访问时间)是攻击者无法完全抹去的痕迹。但有时,攻击者会尝试修改时间戳(timestomp)来伪造。即便如此,我们仍可以通过查找异常时间戳的文件来发现线索。
实战场景:
服务器某个目录文件数量异常增多,怀疑有入侵。
find 命令妙用:
ounter(line
find /path/to/check -newermt "2025-07-10 00:00:00" ! -newermt "2025-07-12 23:59:59" -type f
/path/to/check
:指定要检查的目录。
-newermt "YYYY-MM-DD HH:MM:SS"
:查找修改时间比指定日期时间新的文件。
! -newermt "YYYY-MM-DD HH:MM:SS"
:结合
!
(非) 和
-newermt
查找修改时间早于指定日期时间的文件。这样就能精确查找某个时间段内修改的文件。
-type f
:只查找文件(排除目录)。
实用提示:
关注在夜间、周末或非工作时间被修改的文件,这些时段的异常操作往往更可疑。
三、发现异常权限文件:隐藏的权限陷阱!
攻击者为了隐藏自己的文件或实现特定功能,可能会赋予文件一些不常见的权限,如SUID/SGID权限(允许以文件所有者的权限运行)。
实战场景:
系统某些目录下出现不明程序,且运行行为异常。
find 命令妙用:
ounter(line
find / -perm /4000 -o -perm /2000 -print 2>/dev/null
/
:从根目录开始查找(注意,这会耗时较长,请谨慎使用或缩小范围)。
-perm /4000
:查找具有SUID权限的文件。
-o
:或者(OR关系)。
-perm /2000
:查找具有SGID权限的文件。
2>/dev/null
:将错误信息重定向到空设备,避免命令输出被大量权限不足的错误信息刷屏。
重点关注:
在
/tmp
、
/dev/shm
等临时目录,或
/usr/bin
、
/bin
下发现的可疑SUID/SGID文件,它们很可能是攻击者留下的提权工具或后门。
四、定位空文件或大文件:异常文件大小的线索!
有些后门可能是空文件(作为标记),或者是非常大的日志文件(攻击者写入大量日志试图耗尽磁盘空间或隐藏真实日志)。
实战场景:
磁盘空间异常告警,或怀疑有恶意文件作为标记。
find 命令妙用:
ounter(lineounter(lineounter(lineounter(lineounter(line
# 查找空文件(大小为0)
find /path/to/check -type f -empty
# 查找大于1GB的文件
find /var/log -type f -size +1G -print
-type f
:只查找文件。
-empty
:查找空文件。
-size +1G
:查找大于1GB的文件。你可以使用
+1M
(兆字节),
+1k
(千字节)等。
用途:
结合对文件内容的初步判断,可以快速发现异常。比如,在Web目录中发现一个
empty
的
.php
文件,就非常可疑。
五、搜索特定内容文件:代码里的“黑手印”!
当攻击者篡改了配置文件、插入了恶意代码,或者留下了特定的标记字符串时,
find
结合
grep
能发挥巨大作用。
实战场景:
网站页面被篡改,怀疑有代码注入。
find 命令妙用:
ounter(line
find /var/www/html -type f -name "*.php" -exec grep -l "eval(" {} \;
-exec grep -l "eval(" {} \;
:这是
find
命令最强大的组合用法之一。
-exec
:对每个找到的文件执行后续命令。
grep -l "eval("
:在文件中搜索包含字符串 “eval(” 的行。
-l
选项表示只输出匹配到的文件名,而不是匹配到的内容。
{}
:是一个占位符,代表
find
找到的文件名。
\;
:表示
-exec
命令的结束。
其他可疑关键字:
除了
eval(
,还可以搜索
base64_decode(
、
system(
、
passthru(
、
exec(
等PHP函数,或者特定黑客工具的特征字符串(如“shell_exec”)。
总结:find 命令,蓝队的“第三只眼”
find
命令的强大在于它的灵活性和组合性。在应急响应过程中,你可以根据实际情况,将上述参数进行组合,如:
ounter(lineounter(line
# 查找过去三天内,Web目录下所有大小在1k到100k之间,且包含"eval("字符串的PHP文件
find /var/www/html -name "*.php" -mtime -3 -size +1k -size -100k -exec grep -l "eval(" {} \;
掌握
find
命令的这些高级用法,能够让你在应急响应的关键时刻,像一名经验老到的侦探,迅速锁定目标,为后续的清除和加固赢得宝贵时间。
当然,
find
只是冰山一角。配合
ls -al
、
stat
、
ps -ef
、
netstat -tunlp
等命令,以及专业的安全工具,才能构建起完整的应急响应体系。但当你被海量文件困扰时,请想起这个朴实无华却无比强大的命令行工具吧!
你在应急响应中,还用 find 命令做过哪些“神操作”?欢迎在评论区分享你的经验和技巧!