file_monitor

  1. 项目介绍
  2. 项目地址
  3. 功能实现思路
  4. 一点小反思

项目介绍

简介

该项目使用python3开发,用于各种攻防演练中的简单防御,目前仅支持linux服务器。

功能

监视指定目录下文件的增加、删除及更改。

自带黑名单机制。当探测到危险文件生成时,自动更改改文件权限(文件权限及黑名单由用户所决定)。

项目地址

https://github.com/r0co/file_monitor

关于使用方法在README里已经写的比较详细了,这里就不再多说,附上效果图一枚

功能实现思路

监控文件增删

扫描某路径下有多少文件是用os.walk这个方法实现的。

在扫描完成后,程序会将文件的信息以字典的形式存储起来,具体为:

{文件绝对路径:md5(文件内容)}

监控文件更改

判断md5变没变就行

对已经上传上来的危险文件的处理

这部分主要是依赖于对危险文件的权限处理。具体要给危险文件什么样的权限才能让它不能在服务器上解析,还需要防御者根据自己的判断来进行设置。当然,设置的方法也非常简单,在__init__方法里设置一下self.permission即可

让提示信息变的花里胡哨

这部分依赖于termcolor库。考虑到该库不是python内置库,而且许多攻防演练可能不会提供外网环境,为了防止不必要的麻烦,我已经将其对应的termcolor-1.1.0-py2.py3-none-any.whl文件放在了wheels目录下。需要安装时,只需pip3 install wheels/termcolor-1.1.0-py2.py3-none-any.whl即可。

对字典中同键不同值,新增键及减少键的处理

因为数据都用字典存嘛,所以会用到这一步。

同键不同值可以通过键的与(&)操作来取出相同的键,之后遍历相同键,比较他们的值即可。

可以通过比较两个存储所有文件信息的字典的长度来判断文件是增加了还是减少了。想找到具体增加的是哪个键,只需要对两字典的键进行异或(^)操作即可。

一点小反思

如果去掉更改权限的那部分,完全可以用来在代码审计的时候监控文件变化。不用考虑权限的话也可以适用于windows了。

菜鸡作品,Code like shit,大佬们轻喷Orz


如果我的文章能帮到您的话我会很开心.如需转载记得注明出处:)
目录