相信大家都听说过蜜罐吧,它是蓝队使用的最常见的防御手段,尤其最近几年甚是留行。接下来我就带大家演示构建一个高交互型的蜜罐,相对于以往的低交互型蜜罐来说,高交互型蜜罐运行在真实的系统中,攻击者在和蜜罐系统交互时,并不容易发现其正与蜜罐进行交互,因此我们可以在蜜罐中捕获不正常的进程、网络流量和交互行为,以此达到了解攻击者行为的意图。
在演示搭建蜜罐系统之前,我们首先了解一下今天使用的两款开源工具:sysdig和falco。
sysdig: 一款开源的工具,别名:linux之锹,顾名思义,它可以捕获挖掘正在运行的linux系统的状态和活动,并保存到一个文件中,这对于我们分析进程、网络和I/O活动提供了极大的便利。
sysdig官网: https://www.sysdig.org
想要详细了解sysdig及其用法实例,可参见:https://www.linuxidc.com/Linux/2014-12/110033.htm
falco 是一款活动行为监视器,它可以对涉及linux系统调用的任何行为进行检测和告警,并发告警日志发送至syslog中。
详情可参见falco官方文档:https://falco.org/docs/
实验环境介绍: 本次实验将kali linux作为克隆后的服务器(蜜罐),ubuntu作为日志分析系统,实验环境为虚拟机。
首先我们需要在kali中装上以上介绍的两款工具
falco在kali官方源中是没有的,因此我们要添加新的apt仓库,我们先信任一下apt仓库的密钥
curl -s https://falco.org/repo/falcosecurity-3672BA8F.asc | apt-key add -
如果总是获取不成功,可能是网络的问题,可以尝试修改一下dns
接下来添加apt仓库,并更新下软件列表
echo "deb https://dl.bintray.com/falcosecurity/deb stable main" | tee -a /etc/apt/sources.list.d/falcosecurity.list
apt-get update
这两款工具需要依赖内核,所以我们要把内核版本和内核头文件版本保持一致
uname -r //查看运行的内核版本
apt-cache search linux-headers //查看内核头文件版本
apt-get -y install linux-headers-$(uname -r) //如果不一致,使用此条命令更新内核头文件
apt-get install falco
service falco start //开启服务
kali的官方源中包含有sysdig软件包,可以直接使用apt-get install sysdig安装,如果是Ubuntu则需要另外添加apt仓库
curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add - //不成功的话多试几次
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update
apt-get install sysdig
其实这个draios.list仓库中也有falco,但是装了好多次都出现依赖错误,最后在官网上找到上面的falcosecurity.list成功安装
安装成功之后,我们可以编写一个启动脚本,在/etc/init.d/下创建一个mysysdig文件,写入以下内容
#!/bin/sh
DESC="sysdig as a service"
NAME="sysdig"
do_start()
{
echo "Starting $NAME";
sysdig -C 5000 -W 3 -w /usr/local/src/image.$(date +"%Y%m%d-%H%M%S").gz > /dev/null 2>&1 &
}
do_stop()
{
echo "Stopping $NAME";
killall sysdig
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
*)
echo "Usage: /etc/init.d/mysysdig start|stop"
exit 1
;;
esac
exit 0
脚本的核心是sysdig -C 5000 -W 3 -w /usr/local/src/image.$(date +"%Y%m%d-%H%M%S").gz > /dev/null 2>&1 &这一行命令,其中-C参数为保存的文件大小,-W参数为保存为文件个数,-w参数为捕获产生的信息输出到文件的路径及文件名。如果是非root用户写入的脚本,需要给一下权限
chmod 755 /etc/init.d/mysysdig
chown root /etc/init.d/mysysdig
chgrp root /etc/init.d/mysysdig
samba服务为类似于Windows中的smb服务,它在linux中运行,使得Windows和Linux之间也可以互相共享文件的服务
在kali中安装samba服务,一般kali已经自带了samba,如果没有直接apt-get install samba安装即可,然后为samba服务添加一个用户
useradd songqb
smbpasswd -a songqb //必须先创建好此用户否则会报错,接下来输入密码即可
然后编辑两个共享的路径,和在Windows中创建共享文件夹类似。使用vim编辑器编辑samba的配置文件,/etc/samba/smb.conf,在文件末尾写入如下内容:
[image]
path = /usr/local/src/
valid users = songqb
read only = no
[log]
path = /var/log/
valid users = songqb
read only = no
如果Windows访问两个路径分别为:
\kali ip\image
\kali ip\log
接下来在kali中开启samba服务,把sysdig捕获的文件和前面提到的syslog文件共享出去
service smbd start
service nmbd start
ps: 在kali中需要开启这两个服务,如果在ubuntu中直接开启smbd即可
然后回到ubuntu中创建两个文件夹用来挂载共享
mkdir -p /root/image
mkdir -p /root/log
这里我们先安装一个软件包,使用apt-get install cifs-utils
安装完毕,我们使用它来挂载samba共享
mount.cifs -o user=songqb //192.168.134.139/image /root/image
mount.cifs -o user=songqb //192.168.134.139/log /root/log //输入刚才设定的密码
//把kali共享的两个目录挂载到ubuntu上,这样实现实时接收信息
/etc/init.d/falco status
/etc/init.d/mysysdig start
ps -aux //可查看进程是否有sysdig开头的进程确认是否正常运行
到此,蜜罐部署完毕,接下来一起做两个小实验验证下蜜罐到底合不合用~
我们首先伪装成攻击者在kali中运行几条命令,相当于攻击者和蜜罐进行交互
然后回到ubuntu,首先分析一下falco的告警信息,由于上面执行了添加用户的命令,falco应该会告警。或者也可以自行修改falco的告警规则,配置文件在/etc/falco/falco_rules.yaml
我们查看syslog文件后几行,清晰的发现falco告警信息:root用户添加了一个song用户
然后我们查看sysdig的捕获日志信息
这个就更详细了,我们使用spy_users凿子,发现捕获的这几条命令正是刚才在kali上运行的,各种凿子的使用可以参见0x02,或者使用sysdig -h查看帮助文档
我们继续伪装攻击者修改以下kali的dns配置文件,使用vim /etc/resolv.conf
我们还是先查看一下falco的告警信息,dns配置信息也在告警的范围内
这里清晰的看到falco告警,root用户使用vim编辑器修改了/etc/resolv.conf文件,我们再来看一下sysdig的捕获内容
这里仍可以看到,是root用户编辑了dns配置文件
构建高交互型的蜜罐实验到此结束了,但在vmware环境中搭建终归是自娱自乐,如果使用真实克隆的服务器放到公网上,那注意的事项要更多一些,而且我们不妨为蜜罐机的root用户设置弱口令什么的,令攻击者更容易进入我们的蜜罐环境,我们就能快速获取并分析攻击者的行为模式,了解更多信息。在分析sysdig和falco捕获的信息上,也可以使用安装了ELK(Elasticsearch Logstash Kibana)堆栈的Ubuntu机器,并且其拥有Web UI大大方便了分析日志,有兴趣的可以参考https://www.cnblogs.com/youruike1/p/12269079.html,如果有时间的话会后续更新~
The end~