测试环境:
系统:安装于xen4.11上的Ubuntu16.04 LTS
docker版本:18.06.1-ce
SisdigFalco安装
Linux方式安装请参考:
https://github.com/falcosecurity/falco/wiki/How-to-Install-Falco-for-Linux
容器方式安装请参考:
https://github.com/falcosecurity/falco/wiki/How-to-Install-Falco-using-Containers-and-or-Orchestration
Docker容器设置
主要是网络部分的设置,能够让外界访问到
1 | $ docker run -d -P training/webapp python app.py |
进程树信息获取测试
进程树信息展示的内容是进程之间的关系,在正常的Linux系统中使用pstree命令就可以看到这些信息
在本次测试中,我们需要使用sysdig工具看到容器中的进程树信息
- 如果容器中已经有了pstree这个工具包,那么可以直接用 docker exec 运行pstree来获取进程树信息
- 如果容器中没有安装pstree这个工具包,那么只能从sysdig中查看进程的信息,sysdig有过滤出来各种类型的进程,比如网络资源占用率最高的进程等等,但是它并没有提供整体进程树这样一种操作
文件操作信息测试
文件操作实际上主要是查看新增的文件,因为攻击者攻击的过程中,很多时候会下载文件到系统中,而这种文件就是我们所需要的样本文件
在本次测试中,我们需要使用sysdig工具看到容器中的文件操作情况,该需求有如下解决方案:
- 利用falco监视容器中的所有活动,过滤其中的相关操作
网络报文
网络报文是需要将所有的网络操作的流量dump下来
在本次测试中,我们需要使用sysdig工具来过滤流量,然后能看到所有的网络流量操作,对于网络报文的具体内容:
在本次测试中,我们使用sysdig工具要对于该项进行测试的话,我们有以下方案:
- 监控系统的文件操作,如果有下载的操作,可以视为可疑文件进行监视
- 分析网络流量的内容,对于其中有下载文件的部分进行监视
history信息
history信息指的是对于shell的记录
在本次测试中,我们使用falco工具可以实现对于shell的命令历史的记录,并且能够记录执行命令的具体用户等信息
sysdig输出的格式
%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info
- evt.num: 增量事件编号
- evt.outputtime: 事件时间戳,可自定义
- evt.cpu: 捕获事件的CPU编号
- proc.name: 生成事件的进程名称
- thread.tid: 生成事件的tid,对应于单线程进程的pid
- evt.dir: 事件的方向(> 输出事件,< 退出事件)
- evt.type: 事件名称,如 ‘open’ ‘read’ ‘write’
- evt.info: 事件的参数列表
附录(Sysdig+Falco使用详解翻译)
1 | sysdig -h |
falco用法
1 | falco version 0.12.1 |
falco规则写法
falco是原生支持container的,并且它提供包括网络,进程,文件等等信息的监控,具体的监控方式可以自己制定规则来实现
falco最重要的内容即为其规则文件,falco需要这个规则文件来实现多样的监控
1 | falco 规则编写解析: |