应用层下基于异常行为的未知勒索软件检测
2017-11-14 16:18
337 查看
原地址: http://blog.csdn.net/d_r_l_t/article/details/78433995
近年勒索软件形式愈演愈烈,尤其是 WannaCry 让人印象深刻。近期 Badrabbit 又肆虐欧洲。目前云主机上的防护大多是云厂商自研的防护软件。企业内部终端安全防护,鉴于信息安全的需要,也不会直接使用个人PC上流行的防护软件。在这些防护软件上,对使用内核模块都保持着较为谨慎的态度。如果要做勒索软件检测模块并尽快上线,最好是提供能在应用层就直接实现的方式。同时,目前大家推崇的态势感知方案其实对勒索软件收效甚微。等看见了,伤害已经造成了。而大多数防护方案则是针对勒索软件所利用的漏洞进行防护,当换了一种漏洞利用方式了,原先的防护就会立马失效。在这种情况下,我们该如何做到未知的勒索软件防护呢?
转载地址:http://www.freebuf.com/articles/system/152387.html
墨攻安全实验室通过对国外知名主机端防护软件进行研究,发现了一个比较好的应用层的勒索软件检测方案:通过创建隐藏的诱饵文件,实时拦截对诱饵文件的加密操作,从而有效应对未知的勒索软件。
下面我们以 windows 为例,给出应用层勒索软件检测代码原型。
关键点:
a. 在每个盘的根目录、Users目录、Users/Administrator/Documents 目录创建诱饵。
b. 每次创建诱饵,都创建两个目录,一个是文件夹名按字母序能排到第一位,一个是文件夹名按字母序能排到最后一个
c. 创建的诱饵文件种类涵盖要尽量全。包括doc、 docx、 pem、jpeg等
a 点保证了勒索软件试图加密的目录里面都有诱饵。b 点则保证了无论文件夹访问顺序是正序还是逆序,诱饵文件都能被最先访问到。c 点保证了诱饵属于勒索软件感兴趣的文件。
以上诱饵文件都是隐藏文件。
在windows下面,如果使用文件过滤驱动,其实很容易做到文件加密行为的拦截。但鉴于目前的安全防护现状,对大多数公司以及云厂商而言,使用驱动带来的稳定性的担忧会远远超过它带来的未知勒索软件防护这种好处。
做安全防护的都知道,宁大家都查不出来,也不能搞死用户机器啊!
如果不能找到稳定的应用层的解决方案,我们最终保卫地球、为国为民的愿望就会流产。
这部分有两个关键点:
Windows提供了FindFirstChangeNotification 和ReadDirectoryChangesW 两种方法。参见 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx。只有 ReadDirectoryChangeW才能获得具体变动的文件信息。
此处有个蛋疼的地方在于,应用层文件系统监控发现变动的时候,我们获得的仅仅是文件名信息和变动的操作,并不能获得当前导致变动的进程信息。就是说,我们知道对哪个文件有加密行为,但是不知道是谁干的。
只能去查找哪个进程持有该变动文件的句柄。Windows下有两种方式,一种是通过NtQuerySystemInformation来查询的。一种可以通过 RestartManager来查找。
主要区别在于NtQuerySystemInformation随时会被干掉。而RestartManager是微软钦定的 api。
查找到有问题的进程,直接OpenProcess,Suspend即可。(我原来对不 hook不加驱动拦截进程操作总觉得很不解。思维定势啊)
完整代码参见https://github.com/mogongtech/RansomDetection
测试方式:
1. 找一台干净的虚拟机,我的环境是win2008。目前 RestartManager的支持是vista+,故建议环境是win7 , win2008这种。如果你要支持winxp,请将查找句柄的函数用NtQuerySystemInformation 来实现。建议你不设置网络以及共享文件夹。
2. 虚拟机里面创建以下目录,并把github上 breadcrumb目录下的蜜罐文件放进去。(别问我为啥目录是这几个,因为我硬编码的)
C:\Cversions245
C:\Xdata229
C:\Users\Acly09pk
C:\Users\Qtua
C:\Users\Administrator\Documents\Lmirror147 C:\Users\Administrator\Documents\Nsetup158
3. 编译RansomDetection代码,放到虚拟机里面运行
4. 解压github上 test 目录下的样本并运行(这是locker,不是随便造的勒索软件)
近年勒索软件形式愈演愈烈,尤其是 WannaCry 让人印象深刻。近期 Badrabbit 又肆虐欧洲。目前云主机上的防护大多是云厂商自研的防护软件。企业内部终端安全防护,鉴于信息安全的需要,也不会直接使用个人PC上流行的防护软件。在这些防护软件上,对使用内核模块都保持着较为谨慎的态度。如果要做勒索软件检测模块并尽快上线,最好是提供能在应用层就直接实现的方式。同时,目前大家推崇的态势感知方案其实对勒索软件收效甚微。等看见了,伤害已经造成了。而大多数防护方案则是针对勒索软件所利用的漏洞进行防护,当换了一种漏洞利用方式了,原先的防护就会立马失效。在这种情况下,我们该如何做到未知的勒索软件防护呢?
转载地址:http://www.freebuf.com/articles/system/152387.html
墨攻安全实验室通过对国外知名主机端防护软件进行研究,发现了一个比较好的应用层的勒索软件检测方案:通过创建隐藏的诱饵文件,实时拦截对诱饵文件的加密操作,从而有效应对未知的勒索软件。
下面我们以 windows 为例,给出应用层勒索软件检测代码原型。
1. 创建诱饵文件
关键点:a. 在每个盘的根目录、Users目录、Users/Administrator/Documents 目录创建诱饵。
b. 每次创建诱饵,都创建两个目录,一个是文件夹名按字母序能排到第一位,一个是文件夹名按字母序能排到最后一个
c. 创建的诱饵文件种类涵盖要尽量全。包括doc、 docx、 pem、jpeg等
a 点保证了勒索软件试图加密的目录里面都有诱饵。b 点则保证了无论文件夹访问顺序是正序还是逆序,诱饵文件都能被最先访问到。c 点保证了诱饵属于勒索软件感兴趣的文件。
以上诱饵文件都是隐藏文件。
2. 应用层监控文件加密操作
在windows下面,如果使用文件过滤驱动,其实很容易做到文件加密行为的拦截。但鉴于目前的安全防护现状,对大多数公司以及云厂商而言,使用驱动带来的稳定性的担忧会远远超过它带来的未知勒索软件防护这种好处。做安全防护的都知道,宁大家都查不出来,也不能搞死用户机器啊!
如果不能找到稳定的应用层的解决方案,我们最终保卫地球、为国为民的愿望就会流产。
这部分有两个关键点:
a. 应用层文件系统监控
Windows提供了FindFirstChangeNotification 和ReadDirectoryChangesW 两种方法。参见 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx。只有 ReadDirectoryChangeW才能获得具体变动的文件信息。
b. 进程拦截
此处有个蛋疼的地方在于,应用层文件系统监控发现变动的时候,我们获得的仅仅是文件名信息和变动的操作,并不能获得当前导致变动的进程信息。就是说,我们知道对哪个文件有加密行为,但是不知道是谁干的。只能去查找哪个进程持有该变动文件的句柄。Windows下有两种方式,一种是通过NtQuerySystemInformation来查询的。一种可以通过 RestartManager来查找。
主要区别在于NtQuerySystemInformation随时会被干掉。而RestartManager是微软钦定的 api。
查找到有问题的进程,直接OpenProcess,Suspend即可。(我原来对不 hook不加驱动拦截进程操作总觉得很不解。思维定势啊)
完整代码参见https://github.com/mogongtech/RansomDetection
测试方式:
1. 找一台干净的虚拟机,我的环境是win2008。目前 RestartManager的支持是vista+,故建议环境是win7 , win2008这种。如果你要支持winxp,请将查找句柄的函数用NtQuerySystemInformation 来实现。建议你不设置网络以及共享文件夹。
2. 虚拟机里面创建以下目录,并把github上 breadcrumb目录下的蜜罐文件放进去。(别问我为啥目录是这几个,因为我硬编码的)
C:\Cversions245
C:\Xdata229
C:\Users\Acly09pk
C:\Users\Qtua
C:\Users\Administrator\Documents\Lmirror147 C:\Users\Administrator\Documents\Nsetup158
3. 编译RansomDetection代码,放到虚拟机里面运行
4. 解压github上 test 目录下的样本并运行(这是locker,不是随便造的勒索软件)
相关文章推荐
- 基于社会力模型的人群异常行为检测
- 对基于深度神经网络的Auto Encoder用于异常检测的一些思考
- Anomaly Detection for Time Series Data with Deep Learning——本质分类正常和异常的行为,对于检测异常行为,采用预测正常行为方式来做
- WinXP系统提示“应用程序发生异常 未知的软件异常”的原因和解决方法
- 解决程序提示“应用程序发生异常 未知的软件异常(0x0eedfade),位置为 0x7c812fd3”
- 基于大数据分析的异常检测方法及其思路实例
- 异常检测软件让APM排错更迅速
- 基于行为分析来发现"未知的Webshell"
- 应用程序发生异常未知的软件异常0xc06d007f位置为0x7c812afb
- 基于机器视觉的孔壁缺陷检测------软件系统
- 机器学习实验(九):基于高斯分布和OneClassSVM的异常点检测
- 基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否
- 运行dxp.exe运行时,软件出现:应用程序发生异常 未知的软件异常 (0x0eedfade),位置为 0x7c812afb的处理方法
- 基于Windows CE(mobile)应用程序的内存泄露检测软件。
- 基于OpenCV的运动目标检测跟踪系统在PC上的软件设计流程
- IE浏览器 应用程序发生异常 未知的软件异常(0x0000417),位置为 0x6546120
- 基于PySpark的网络服务异常检测系统 阶段总结(二)
- 基于大数据分析的异常检测方法及其思路实例
- 基于欧氏距离和马氏距离的异常点检测—matlab实现
- 基于机器学习的异常检测模型