Linux - 安全排查 3

发布于:2025-07-13 ⋅ 阅读:(22) ⋅ 点赞:(0)

查找攻击者写入的后门文件


思路分析

  1. 后门文件特征:
    常见扩展名:.php.jsp.jspx.py
    包含危险函数:system( )exec( )shell_exec( )passthru( )
    常位于:网站根目录,上传目录,临时目录
    文件名可能伪装:index.php.old.theme.css.php

  2. 检测策略

扫描危险函数
检查异常文件属性
分析文件内容
提取后门密码

查找步骤

递归搜索危险函数

# 扫描所有PHP文件中的系统命令执行函数
grep -r --include='*.php*' \
-e 'system(' \
-e 'exec(' \
-e 'shell_exec(' \
-e 'passthru(' \
/var/www/html

核心字段解析

  • -r
    递归搜索:检查 /var/www/html 及其所有子目录中的文件

  • –include=*.php
    文件过滤:仅搜索扩展名为 .php 的文件(其他文件如 .js.txt 会被忽略)

  • -e ‘pattern’
    指定匹配模式:这里使用 4个 -e 参数 定义多个搜索模式(逻辑关系为 OR,匹配任意一个即命中)

搜索路径

  • /var/www/html :典型的 Linux Web 根目录 (Apache/Nginx 默认站点路径)

在这里插入图片描述

注意事项

  • 误报可能:可能匹配到注释或无害代码(如 // system())。需人工验证结果
  • 不完整检测:其他危险函数如 popen()proc_open()、反引号 ` 未被包含(可追加 -e 参数)
  • 正则优化:更精确的匹配可使用正则(例如 -e '\bsystem\s('* 避免匹配 custom_system()


查找攻击者首次攻击成功的时间

思路分析:

  1. 攻击成功标志:
    系统入侵:成功登录(SSH/RDP)
    Web入侵:文件上传/代码执行
    持久化:后门安装

  2. 日志分析策略:

日志源
认证日志
Web访问日志
文件系统时间戳
进程创建记录
审计日志

详细操作命令与解释

  1. 分析认证日志(SSH登录)
# 查看所有成功登录记录(按时间排序)
grep "Accepted password" /var/log/secure | sort -k 1M -k 2n -k 3

# 查找特定IP的首次成功登录
grep "Accepted.*192.168.1.11" /var/log/secure | head -1      

关键字段:

  • Jul 12 14:30:00:攻击时间
  • root:被入侵账户
  • 192.168.1.11:攻击源IP

在这里插入图片描述

  1. 分析Web服务器日志(Apache)
# 查找文件上传请求
grep 'POST.*config.inc.php' /var/log/httpd/access_log

# 查找Webshell执行痕迹
grep 'cmd=' /var/log/httpd/access_log | awk '{print $4}'

# 按时间排序查看所有请求
awk '{print $4, $7, $8}' /var/log/httpd/access_log | sort | uniq

关键特征:

  • POST /upload.php:文件上传请求
  • GET /includes/config.inc.php?cmd=:Webshell执行
  • HTTP 200:成功响应

  1. 文件系统时间戳分析
# 查找最近修改的Web文件
find /var/www/html -mtime -1 -ls | sort -k 10

# 检查恶意文件创建时间
stat /var/www/html/includes/config.inc.php

# 输出示例:
# Access: 2025-07-12 14:35:00
# Modify: 2025-07-12 14:35:00  <-- 文件修改时间
# Change: 2025-07-12 14:35:00

  1. 进程创建分析
# 查看进程启动历史(需auditd)
ausearch -sc execve -i | grep '/var/tmp/.httpd'

# 检查cron任务添加时间
grep CRON /var/log/cron | grep 'curl.*mal.sh'


find命令详解

find 命令是 Linux/Unix 系统中功能最强大的文件搜索工具,支持按名称、类型、大小、时间等条件递归查找文件,并能对结果执行操作

一. 基本语法

find [搜索路径] [匹配条件] [操作]
  • 搜索路径:默认为当前目录( .
  • 匹配条件:如文件名,类型,时间等(可组合)
  • 操作:如打印,删除等(默认为**-print**)

二. 核心匹配条件

1. 按名称查找

  • -name “模式”:区分大小写(支持通配符 ? , [ ] , 等)
find /etc -name "*.php"          #查找 /etc 下所有 .php 文件
  • -iname:不区分大小写
find . -iname "readme*"          #查找 README.md,readme.txt 等

2. 按类型查找(-type)

  • f:普通文件
  • d:目录
  • l:符号链接
  • s:套接字文件
  • b:块设备文件
find /var/log -type d               # 查找所有目录
find ~ -type f -name "*.php"        # 查找家目录下的 php 文件

3.按大小查找(-size)

  • +n: 大于 n
  • -n: 小于 n
  • n: 等于n
  • 单位:c(字节)、k(KB)、M(MB)、G(GB)
find / -size +100M        # 查找大于 100MB 的文件
find . -size -10k         # 查找小于 10KB 的文件

三. 对结果执行操作

1. 默认操作

  • -print:打印完整路径(默认操作)

2. 删除文件(delete)

find /tmp -name "*.temp" -delete        #删除所有 .temp 文件

3. 执行命令(-exec)

  • {} 代表文件名,\ ; 表示命令结束(注:\ 和 ; 之间无空格,因为显示问题这里不能连在一起)
# 将查找到的 .txt 文件复制到 backup 目录
find . -name "*.txt" -exec cp {} ./backup/ \;

网站公告

今日签到

点亮在社区的每一天
去签到