1、Sebek是一个数据捕获工具。
2、Sebek是运行在内核空间的一段代码,记录系统用户存取的一些或者全部数据。
这个工具有这些功能:记录加密会话中击键,恢复使用SCP拷贝的文件,捕获远程系统被记录的口令,恢复使用 Burneye保护的二进制程序的口令还有其它的一些入侵分析任务相关的作用。
入侵者会使用加密工具来保护他们的传输通道,监视者如果没有密钥,基于网络的数据捕获工具将无法察看传输的数据,因此采用基于内核的Sebek来捕获数据。
3、Sebek有两个组成部分:客户端和服务端。客户端从蜜罐捕获数据并且输出到网络让服务端收集(参考图1所示)。服务端有两种方式收集数据:第一种是直接从网络活动的数据包捕获,第二种是从tcpdump格式保存的数据包文件。当数据收集后既可以上传到相关数据库,也可以马上显示击键记录。Sebek使用无连接、不可靠的UDP协议进行通信。
4、数据捕获是由内核模块来完成的,我们使用这个模块获得蜜罐内核空间的访问,从而捕获所有read()的数据。Sebek替换系统调用表的read()函数来实现这个功能,这个替换的新函数只是简单的调用老read()函数,并且把内容拷贝到一个数据包缓存,然后加上一个头,再把这个数据包发送到服务端。替换原来的函数就是改变系统调用表的函数指针。
5、为了使Sebek模块更加隐蔽,我们使用了一些如Adore等基于LKM的rootkit的技术。由于Sebek完全驻留在内核空间中,那么我们可以通过安装第二个cleaner模块来隐藏Sebek模块,这个模块把Sebek从安装模块链表中删除记录。