一、使用场景
linux系统下排查主机异常时间点是否存在异常落地文件,例如:主机被上传了webshell后,排查当天是否落地其他webshell或其他异常文件。
二、命令介绍
find [路径] [选项] [条件]
指定要搜索的目录。如果不指定,默认是当前目录【.
】
参数介绍:
-type
:f代表普通文件,d代表目录,l代表符号链接。
-name
:代表查询的文件名,可使用*通配。
-executable
:代表查询可执行文件。
-exec
:代表对找到的每个文件执行指定的命令,例如:-exec ls -lrt {} + 将查找出的文件
,按照时间从新到久排序,列出文件的详细信息。
-newermt
:用于根据文件的修改时间来筛选文件,如果需要查找在某个日期之前修改的文件,可以使用 ! -newermt
。
-mtime
:根据文件的修改时间查找,n可以是+n:n天前,-n:n天内,n:正好n天前,另外还有-ctime(根据文件的状态更改时间查找文件),-atime(根据文件的最后访问时间查找文件)。例如:find / -type f -ctime -1(查找最近1天创建的文件)
。
-size
:指定文件大小的条件。可以使用以下单位:c:字节(bytes),k:千字节(kilobytes),M:兆字节(megabytes),G:吉字节(gigabytes),例如:find . -type f -size 1M(查找所有大小为1MB的普通文件)
。
三、实战中命令组合使用
1、搜索2024年11月10日到11月18日的普通文件,将找到的文件路径按照从新到久的形式存储结果到/tmp/file.txt中。
find / -type f -newermt "2024-11-10 00:00:00" ! -newermt "2024-11-19 00:00:00" -exec ls -lrt {} + >/tmp/file.txt
2、将搜索到的文件路径,过滤系统进程文件、驱动文件等,grep -v 是过滤输出结果中存在的字符串。
cat /tmp/file.txt | grep -v proc | grep -v devices | grep -v firmware | grep -v kernel | grep -v module | grep -v vsbmfp | grep -v sys | more
3、也可以直接在搜索出来的结果中,直接过滤jsp、php、tmp等。
cat /tmp/file | grep jsp
4、搜索主机近一天的落地的jsp文件、可执行文件。
find / -type f -ctime -1 -name "*.jsp"
find / -type f -ctime -1 -executable
参考🔗
https://mp.weixin.qq.com/s?__biz=MjM5ODkxMTEzOA==&mid=2247484465&idx=1&sn=c4302c0daf5601ea4712c5c58d969150&chksm=a6c2c9fc91b540ea662988b12c312455d1763429448209a55fffbde7ce4a26e78a3b0fdf2d4f&cur_album_id=2609595349611102208&scene=189#wechat_redirect
作者:雁过留痕@深信服MSS专家部