Webshell入侵检测初探(一)
字数 1638 2025-08-18 11:37:37

Webshell入侵检测与防御全面指南

1. Webshell概述

1.1 Webshell定义

Webshell是一种基于Web的恶意脚本,攻击者通过上传此类脚本获取网站服务器控制权。它通常以ASP、PHP、JSP等网页脚本形式存在,能够执行系统命令、管理文件、操作数据库等。

1.2 常见攻击方式

  • 直接上传获取webshell
  • 通过SQL注入漏洞获取
  • 利用远程文件包含(RFI)漏洞
  • 通过FTP弱口令上传
  • 利用XSS漏洞作为攻击跳板
  • 通过后台数据库备份及恢复功能
  • 利用数据库压缩功能

1.3 Webshell分类

按协议分类

  • 基于TCP/UDP的Shell
  • 基于ICMP的Shell
  • 基于DNS的Shell

按依托工具分类

  • nc反弹
  • telnet反弹
  • SSH端口转发
  • 利用awk反弹Shell

按编程语言分类

  • Bash脚本
  • Perl/Python/PHP(3P)
  • Ruby
  • Java

2. Webshell功能分析

2.1 站长工具功能

  • 在线编辑网页脚本
  • 上传下载文件
  • 查看数据库
  • 执行任意程序命令

2.2 攻击者功能

  1. 持续远程访问

    • 长期控制网站服务器
    • 自行修复漏洞确保独占访问
    • 使用密码验证确保专属访问
  2. 权限提升

    • 查找敏感配置文件
    • 利用内核漏洞提权
    • 利用低权限用户目录下可被Root调用的脚本
    • 通过任务计划提权
  3. 隐蔽性特征

    • 嵌套在正常网页中运行
    • 通过80端口通信穿越防火墙
    • POST方式发送数据避免系统日志记录
    • 仅在web日志中留下少量数据提交记录

3. Webshell检测技术

3.1 基于特征检测

常见危险函数

  1. 命令执行函数:

    • eval
    • system
    • cmd_shell
    • assert
  2. 文件操作函数:

    • fopen
    • fwrite
    • readdir
  3. 数据库操作函数:

    • 调用系统存储过程连接数据库

检测方法

# 查找eval函数
find /site/* -type f -name "*.php" |xargs grep "eval"

# 查找加密函数
find /site/* -type f -name "*.php" |xargs grep "base64_decode"

# 查找拼接处理
find /site/* -type f -name "*.php" |xargs grep "@$"

免杀技术

  • 自定义加解密函数
  • 使用xor运算
  • 字符串反转
  • 压缩处理
  • 截断重组

3.2 基于流量特征检测

常见命令特征

ipconfig/ifconfig
system
whoami
netstateval
database
systeminfo

工具特征

  1. 中国菜刀

    • 先URL编码再base64编码
    • 包含"z1"等特定字符串
    • 关闭错误回显
  2. Webacoo

    • 编码内容通过Cookie头传输
    • 包含cm、cn和cp变量

3.3 基于系统行为检测

文件分析

# 查找24小时内修改的PHP文件
find ./ -mtime 0 -name "*.php"

# 按时间查找文件
ls -al /tmp | grep "Feb 27"

# 查找777权限文件
find / *.jsp -perm 4777

进程分析

# 查看网络连接
netstat -antlp | more

# 查找隐藏进程
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2

系统信息分析

# 查看命令历史
cat /root/.bash_history

# 检查用户账户
cat /etc/passwd

# 检查计划任务
crontab /etc/cron*

# 检查环境变量
echo $PATH

配置文件检查

  • 检查pam.d配置
  • 检查php.ini等配置文件
  • 与基线配置对比

工具检测

# 使用chkrootkit检测
chkrootkit -n

# 使用rkhunter检测
rkhunter --check

3.4 基于Web日志检测

日志分析命令

# 查看访问排名前十的IP
cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10

# 查看访问排名前十的URL
cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10

日志过滤项

  1. 去除静态资源请求(jpg,gif,png,css,js等)
  2. 去除白名单路径(index.*等)
  3. 去除非webshell后缀请求
  4. 去除扫描器请求
  5. 去除非200响应码请求

3.5 其他检测方法

动态检测(沙箱)

  • 通过运行时行为检测
  • 监控系统调用
  • 模拟执行环境

统计学检测(NeoPi工具)

  1. 信息熵(Entropy)
  2. 最长单词(LongestWord)
  3. 重合指数(Index of Coincidence)
  4. 特征签名(Signature)
  5. 压缩率(Compression)

4. Webshell防御措施

4.1 上传管理

  1. 使用FTP而非Web上传维护网页
  2. 对上传程序进行严格身份认证
  3. 仅允许可信人员使用上传功能

4.2 账户安全

  1. 使用复杂的管理员账号密码
  2. 定期更换凭证
  3. 避免在页面暴露后台登录链接

4.3 程序安全

  1. 从正规渠道下载程序
  2. 保持程序最新版本
  3. 修改默认数据库名称和路径
  4. 维护后删除后台登录页面

4.4 其他措施

  1. 定期备份重要数据
  2. 监控异常脚本文件
  3. 关闭或限制网站搜索功能
  4. 实施白名单文件上传策略
  5. 遵循最小权限原则设置目录权限

5. 应急响应建议

  1. 了解系统架构(服务器类型、CMS、中间件等)
  2. 通过文件、进程、日志等多维度分析
  3. 建立系统配置基线便于比对
  4. 使用专业工具辅助检测(chkrootkit、rkhunter等)
  5. 对可疑文件进行沙箱分析或上传至在线检测平台

通过以上全面的检测与防御措施,可以有效降低Webshell带来的安全风险,保护网站服务器的安全。

Webshell入侵检测与防御全面指南 1. Webshell概述 1.1 Webshell定义 Webshell是一种基于Web的恶意脚本,攻击者通过上传此类脚本获取网站服务器控制权。它通常以ASP、PHP、JSP等网页脚本形式存在,能够执行系统命令、管理文件、操作数据库等。 1.2 常见攻击方式 直接上传获取webshell 通过SQL注入漏洞获取 利用远程文件包含(RFI)漏洞 通过FTP弱口令上传 利用XSS漏洞作为攻击跳板 通过后台数据库备份及恢复功能 利用数据库压缩功能 1.3 Webshell分类 按协议分类 基于TCP/UDP的Shell 基于ICMP的Shell 基于DNS的Shell 按依托工具分类 nc反弹 telnet反弹 SSH端口转发 利用awk反弹Shell 按编程语言分类 Bash脚本 Perl/Python/PHP(3P) Ruby Java 2. Webshell功能分析 2.1 站长工具功能 在线编辑网页脚本 上传下载文件 查看数据库 执行任意程序命令 2.2 攻击者功能 持续远程访问 长期控制网站服务器 自行修复漏洞确保独占访问 使用密码验证确保专属访问 权限提升 查找敏感配置文件 利用内核漏洞提权 利用低权限用户目录下可被Root调用的脚本 通过任务计划提权 隐蔽性特征 嵌套在正常网页中运行 通过80端口通信穿越防火墙 POST方式发送数据避免系统日志记录 仅在web日志中留下少量数据提交记录 3. Webshell检测技术 3.1 基于特征检测 常见危险函数 命令执行函数: eval system cmd_ shell assert 文件操作函数: fopen fwrite readdir 数据库操作函数: 调用系统存储过程连接数据库 检测方法 免杀技术 自定义加解密函数 使用xor运算 字符串反转 压缩处理 截断重组 3.2 基于流量特征检测 常见命令特征 工具特征 中国菜刀 : 先URL编码再base64编码 包含"z1"等特定字符串 关闭错误回显 Webacoo : 编码内容通过Cookie头传输 包含cm、cn和cp变量 3.3 基于系统行为检测 文件分析 进程分析 系统信息分析 配置文件检查 检查pam.d配置 检查php.ini等配置文件 与基线配置对比 工具检测 3.4 基于Web日志检测 日志分析命令 日志过滤项 去除静态资源请求(jpg,gif,png,css,js等) 去除白名单路径(index.* 等) 去除非webshell后缀请求 去除扫描器请求 去除非200响应码请求 3.5 其他检测方法 动态检测(沙箱) 通过运行时行为检测 监控系统调用 模拟执行环境 统计学检测(NeoPi工具) 信息熵(Entropy) 最长单词(LongestWord) 重合指数(Index of Coincidence) 特征签名(Signature) 压缩率(Compression) 4. Webshell防御措施 4.1 上传管理 使用FTP而非Web上传维护网页 对上传程序进行严格身份认证 仅允许可信人员使用上传功能 4.2 账户安全 使用复杂的管理员账号密码 定期更换凭证 避免在页面暴露后台登录链接 4.3 程序安全 从正规渠道下载程序 保持程序最新版本 修改默认数据库名称和路径 维护后删除后台登录页面 4.4 其他措施 定期备份重要数据 监控异常脚本文件 关闭或限制网站搜索功能 实施白名单文件上传策略 遵循最小权限原则设置目录权限 5. 应急响应建议 了解系统架构(服务器类型、CMS、中间件等) 通过文件、进程、日志等多维度分析 建立系统配置基线便于比对 使用专业工具辅助检测(chkrootkit、rkhunter等) 对可疑文件进行沙箱分析或上传至在线检测平台 通过以上全面的检测与防御措施,可以有效降低Webshell带来的安全风险,保护网站服务器的安全。