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 攻击者功能
-
持续远程访问
- 长期控制网站服务器
- 自行修复漏洞确保独占访问
- 使用密码验证确保专属访问
-
权限提升
- 查找敏感配置文件
- 利用内核漏洞提权
- 利用低权限用户目录下可被Root调用的脚本
- 通过任务计划提权
-
隐蔽性特征
- 嵌套在正常网页中运行
- 通过80端口通信穿越防火墙
- POST方式发送数据避免系统日志记录
- 仅在web日志中留下少量数据提交记录
3. Webshell检测技术
3.1 基于特征检测
常见危险函数
-
命令执行函数:
- eval
- system
- cmd_shell
- assert
-
文件操作函数:
- fopen
- fwrite
- readdir
-
数据库操作函数:
- 调用系统存储过程连接数据库
检测方法
# 查找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
工具特征
-
中国菜刀:
- 先URL编码再base64编码
- 包含"z1"等特定字符串
- 关闭错误回显
-
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
日志过滤项
- 去除静态资源请求(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带来的安全风险,保护网站服务器的安全。