本文档将介绍:如何通过Linux审计系统auditd监测WebShell执行系统命令的行为。

测试环境:CentOS7.0_x64

auditd简介

Linux审计系统提供了一种跟踪系统上与安全相关的信息的方法。基于预先配置的规则,审核生成日志条目以记录尽可能多的关于系统上发生的事件信息。

auditd(或auditd守护进程)是Linux系统中重要的内核审计组件,其负责将审计记录写入磁盘。使用auditd可以实现如下场景的审计监控:

• 监控文件访问

• 监控系统调用

• 记录用户命令执行

• 记录安全事件

• 执行审计搜索

• 统计概要报表

• 监控网络访问

Linux审计系统架构如下图所示:

通常我们使用auditctl用来查看和控制auditd的审计行为,获取审计日志,添加或删除审计规则。如果你希望审计配置在系统重启后仍然有效,请通过系统文件/etc/audit/audit.rules进行持久化配置。

配置auditd实现进程审计监控

以root身份执行如下命令,可实现对执行系统命令这一个SYSCALL行为的监控审计。

# auditctl -D # 用于测试,清除已有规则

# auditctl -a always,exit -F arch=b64 -S execve -k rule01_exec_command

上述命令在系统审计规则中增加了一条命令执行监控规则,并且定义规则名为rule01_exec_command。

查看auditd的日志文件/var/log/audit/audit.log,可以看到该配置命令本身也产生了日志:

其中1506925689.197为审计日志的时间戳,对应2017/10/214:28:09698444为日志消息ID。

完成上述配置后,我们就可以对操作系统命令执行进行有效审计啦!

WebShell执行系统命令的监测

1

部署和执行WebShell

在网站目录/opt/www/php/部署WebShell程序shell.php,访问地址为https://example.com/shell.php。模拟黑客向该WebShell程序发起一次请求,执行系统命令:cat /etc/passwd。WebShell成功之行命令后,返回结果如下图所示:

2

查看和分析auditd审计日志

执行命令tail -f /var/log/audit/audit.log,同步查看auditd审计日志。有两组msg日志,消息id分别是:698520和698521。我们重点分析698520,先看日志内容:

上述5条消息同属于一组日志,来自规则rule01_exec_command,类型分别是:SYSCALL、EXECVE、CWD、PATH、PATH。其中,前三条日志有极高的价值。

• type=SYSCALL:日志规则“rule01_exec_command”被触发,uid=996的用户,通过父进程ppid=18259,调用/usr/bin/bash,执行了命令sh,进程pid=13545。

• type=SYSCALLtype=EXECVE都能看到执行的程序名称和参数

• type=CWD则说明了,命令执行所在的目录cwd=”/opt/www/php”

请注意EXECVE中出现的十六进制字符串a2=636174202F6574632F706173737764,实际为命令执行的参数。很可能,审计系统为了尽快完成日志记录,未对字符串进行翻译。将其转换后,对应的ASCII字符串是:cat /etc/passwd

第二组日志如下,主要是针对命令cat /etc/passwd的审计。基本逻辑如上,不再赘述。

3

深入分析进程及文件关系

查看当前操作系统中Web系统nginx、php-fpm相关的进程信息,如下:

注意,php-fpm: pool www就是执行WebShell命令的工作进程!

结合Web日志的内容和时间信息,我们很容易定位到WebShell的路径为操作系统文件/var/www/php/shell.php

4

梳理小结

经过对auditd日志分析,并结合操作系统进程信息、Nginx日志,可对本次WebShell执行系统命令的行为进行回溯,细节如下:

http://example.com/shell.php?cmd=cat /etc/passwd该Url触发了Nginx服务器对php-fpm的调用。对应的文件在Web目录/opt/www/php

WebShell执行系统命令过程中的进程调用关系如下:

总结&思考

至此,我们完成了基于auditd实现的WebShell执行系统命令的审计监控,希望对大家有帮助。当然,本文只是针对某个技术点应用的概念验证,如果你希望将其产品化实现,可能还需要考虑如下问题:

• 实时收集操作系统进程和进程PID等信息

• 主动识别Web进程和Web目录信息

• 对audit.log日志文件进行采集,发送到远程服务器进行收集

• 采集和关联分析Web访问日志

• 部署自研或第三方日志管理系统对进程信息进行分析

• 深入学习和理解auditd的运行机制和参数配置

• 合理配置auditd的运行参数,准确评估审计功能对系统性能的影响

• Windows平台是否有同样的检测机制?

基于auditd的审计信息对于关键任务环境来说是至关重要的,可以用于确定安全策略的违反和审计用户操作行为。审计本身不会为您的系统提供额外的安全性;但它可以用于发现违背安全策略的行为。

auditd的功能很强大,本文只是从一个很小的功能模块进行安全应用探索,更多功能和应用场景期待各位同行的发挥!有时候,立足系统自身,也能有不错的收获。

1

关于SYSCALL

上述配置命令中使用 -S execve实现了对命令执行这一SYSCALL的监控,也可以使用 -S 59作为参数实现。执行系统命令ausyscall –dump可以查看auditd支持的所有SYSCALL选项。

转载于:https://www.cnblogs.com/bonelee/p/7803377.html

【转】webshell检测——使用auditd进行system调用审计相关推荐

  1. webshell检测方式深度剖析---RASP(taint扩展)

    概述 Gartner在2014年提出了应用自我保护技术(RASP)的概念,即将防护引擎嵌入到应用内部,不再依赖外部防护设备. 不同于WAF部署在应用的外部边界和依赖于特定规则,RASP把防护系统跑在每 ...

  2. 红与蓝:现代Webshell检测引擎免杀对抗与实践

    上半年Webshell话题很火,业界举办了数场对抗挑战赛,也发布了多篇站在安全产品侧,着重查杀思路的精彩文章,但鲜有看到以蓝军视角为主的paper. 作为多场挑战赛的参赛者及内部红蓝对抗的参与者,笔者 ...

  3. webshell检测方式深度剖析 --- 行业内的实践方案

    概述 关于webshell检测我们已经讲了很多理论的东西,最近在网络上搜到了一篇阿里的主机层入侵检测团队在XCON(安全焦点安全信息技术峰会)上的一篇演讲PPT,名字为<云安全环境下恶意脚本检测 ...

  4. 冰蝎shell_冰蝎全系列有效:针对 HTTPS 加密流量的 webshell 检测研究

    阅读: 322 webshell 是 Web 攻击中常见的一种木马形式,目前主流的检测方法都是基于 HTTP 请求和响应流量的内容特征,然而在 HTTPS 协议下,很多 webshell 检测机制是无 ...

  5. webshell检测方式深度剖析 ---统计学特征检测

    目录 概论 统计学特征 重合指数 信息熵 最长单词 恶意特征 压缩比 检测结果评测 总结 概论 该篇文章讲述了NeoPI如何利用统计学特征来检测webshell,笔者认为NeoPI选择的这些统计学方法 ...

  6. [Python陷阱]os.system调用shell脚本获取返回值

    当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bash exit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.s ...

  7. 几点基于Web日志的Webshell检测思路

    摘要: Web日志记录了网站被访问的情况,在Web安全的应用中,Web日志常被用来进行攻击事件的回溯和取证.Webshell大多由网页脚本语言编写,常被入侵者用作对网站服务器操作的后门程序,网站被植入 ...

  8. 10款常见的Webshell检测工具

    当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞. 本文推荐了10款Webshll检测工具,用于网站入侵排查.当然,目前市场 ...

  9. 常见的webshell检测工具

    1.D盾_Web查杀 使用自行研发不分扩展名的代码分析引擎,能分析更为隐藏的WebShell后门行为. 兼容性:只提供Windows版本. 工具下载地址:http://www.d99net.net/d ...

最新文章

  1. java mongodb 使用MongoCollection,BasicDBObject 条件查询
  2. linux+synaptics+驱动程序,Synaptics
  3. python常用代码_Python常用算法学习(4) 数据结构(原理+代码)-最全总结
  4. 使用WebDeployment Project改善VS2005发布网站问题
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
  6. java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法
  7. 破局:滚动率知识在信贷风控中的系统总结
  8. Apache ActiveMQ教程
  9. 轮询、长轮询、长连接、socket连接、WebSocket
  10. C#如何查看DLL文件中的成员
  11. 卷积法求解系统的零状态响应_信号与系统题
  12. java 柱状图 宽度_Java 创建Excel图表
  13. python刷抖音_Python刷抖音脚本
  14. 品质催生消费升级 ACCESS集团和VTN国际品牌会员俱乐部的跨境电商之路
  15. 法甲体育bway周末前瞻 欧塞尔对战洛里昂 升班马令人着急
  16. NEXTCHIP,北京冠宇铭通科技,祝中国人民早日战胜新冠病毒疫情
  17. 面阵相机该如何选型?
  18. 大学生的秘密,全都藏在快递里
  19. 长微博图片制作(无水印)
  20. [XXII Open Cup, Grand Prix of Korea M]Yet Another Range Query Problem

热门文章

  1. Windows消息备忘录
  2. 1.java注释的类型_HappyBKs教你写Java注解(1)——注解的分类、运行机制、作用域及概念汇总...
  3. 计算机视野仪检测青光眼的操作,计算机视野仪检测青光眼的操作及体会
  4. 两张照片重叠处半透明_美人计 | 林允儿的发型可真好看!拿着照片去找发型师吧...
  5. Linux内核启动速度优化,嵌入式Linux启动时间优化的秘密之五-Bootloader
  6. 计算机教 学计划书,计算机教师工作计划个人范例
  7. 湖北工业大学c语言作业答案,湖北工业大学C语言PPT
  8. React Native 环境搭建步骤
  9. 一年后斩获腾讯T3,面试必问!
  10. python【数据结构与算法】KMP算法模板(我吐了!)