目录

1. 创建诱饵文件

2. 应用层监控文件加密操作

a. 应用层文件系统监控

b. 进程拦截


*本文作者:高渐离 ultrain @墨攻安全实验室,本文属 FreeBuf 原创奖励计划,未经许可禁止转载

本篇文章感谢 todaro@安全狗和宋超提供勒索软件样本。感谢 killer 总在应用层终止恶意进程方面的指导。感谢 PT提供的非常棒的powertool,让我们能很好的分析国外软件的操作。

近年勒索软件形式愈演愈烈,尤其是 WannaCry 让人印象深刻。近期 Badrabbit 又肆虐欧洲。目前云主机上的防护大多是云厂商自研的防护软件。企业内部终端安全防护,鉴于信息安全的需要,也不会直接使用个人PC上流行的防护软件。在这些防护软件上,对使用内核模块都保持着较为谨慎的态度。如果要做勒索软件检测模块并尽快上线,最好是提供能在应用层就直接实现的方式。同时,目前大家推崇的态势感知方案其实对勒索软件收效甚微。等看见了,伤害已经造成了。而大多数防护方案则是针对勒索软件所利用的漏洞进行防护,当换了一种漏洞利用方式了,原先的防护就会立马失效。在这种情况下,我们该如何做到未知的勒索软件防护呢?

墨攻安全实验室通过对国外知名主机端防护软件进行研究,发现了一个比较好的应用层的勒索软件检测方案:通过创建隐藏的诱饵文件,实时拦截对诱饵文件的加密操作,从而有效应对未知的勒索软件。

下面我们以 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,不是随便造的勒索软件)

综上,欢迎云厂商和甲方安全团队在终端安全防护和主机入侵防护软件中加入该检测模块并完善,共同对抗未知勒索软件。大家一起做点实事。

最后,我们将不定期分享威胁分析检测回溯方面的经验。

*本文作者:高渐离 ultrain @墨攻安全实验室,本文属 FreeBuf 原创奖励计划,未经许可禁止转载

基于异常行为的未知勒索软件检测相关推荐

  1. 勒索软件:进化、分类和防御解决方案综述

    勒索软件 2.相关研究 3.勒索软件和勒索软件的进化 4.勒索软件的分类 以目标为指向的 勒索法分类 著名勒索病毒家族的分类 5.勒索软件防御研究 分析 勒索软件探测 勒索软件恢复 6.OPEN IS ...

  2. 中国勒索软件数量增长超过67倍 多层防护机制是防御关键

    2016年7月14日,亚信安全发布了最新的勒索软件风险研究报告,分析了2015年9月-2016年6月的勒索软件增长以及防治态势.报告指出,在监测的十个月内,全球传播的勒索软件数量增长了15倍,中国勒索 ...

  3. 亚信安全:2017年勒索软件与商业邮件欺骗将继续蔓延

    勒索软件单年增长62%   物联网攻击.商业邮件欺骗(BEC)诈骗等威胁出现新动向 近日,云与大数据安全的技术领导者亚信安全发布了最新的安全威胁回顾与预测报告.报告指出,过去的一年是真正的勒索软件之年 ...

  4. 从德国勒索软件活动看恶意代码的生存方式-云栖社区-阿里云

    去年12月,以德语用户,尤其是人事部门工作人员为攻击目标的勒索软件RANSOM_GOLDENEYE.A被发现.Petya(RANSOM_PETYA)与Mischa(RANSOM_MISCHA)两种勒索 ...

  5. [转]勒索软件的发展史以及亮点

    原标题:历史中的勒索软件,你了解多少 原文链接:http://safe.it168.com/a2016/0815/2855/000002855992_1.shtml 如有侵权,请联系删除,谢谢. 自2 ...

  6. HelloKitty勒索软件增加了DDoS攻击、十大常见的网络钓鱼邮件主题|11月2日全球网络安全热点

    安全资讯报告 假冒科技公司的诈骗仍然是最大的网络钓鱼威胁之一 根据网络安全公司NortonLifeLock的一份报告,假冒科技公司的诈骗仍然是最大的网络钓鱼威胁之一. 该公司的全球研究团队Norton ...

  7. 电脑时间倒流,程序拒绝穿越:应用程序发生异常 未知的软件异常(0xe06d7363)

    3月4日,一同事的电脑出现故障:运行IE8浏览器在内的一些程序时出现应用程序错误提示:应用程序发生异常 未知的软件异常(0xe06d7363),位置为 0x7d812fd3. 记得有些同事在安装软件时 ...

  8. win任务栏计算机变未知,如何解决Win7打开程序出现异常未知的软件异常

    时我们打开win7系统电脑时,上面的某个程序软件会打不开,出现错误提示"应用程序发生异常未知的软件异常,今天学习啦小编给大家介绍下如何解决Win7打开程序出现异常未知的软件异常吧. 解决Wi ...

  9. 勒索软件Locky、Tesalcrypt等使用了新的工具躲避检测

    勒索软件Locky.Tesalcrypt等使用了新的工具躲避检测 今天我们发现Locky勒索软件家族使用一种新的工具来躲避检测,并且可能已经感染了很多节点. 自从我们通过AutoFocus智能威胁分析 ...

最新文章

  1. Kncok之绑定事件
  2. php水平线代码,在HTML中水平线标注与代码注释应该如何使用
  3. 对话李飞飞,揭秘国际体育赛事风“云”背后的黑科技
  4. Javascript原型理解图
  5. Notepad++离线安装使用Markdown插件
  6. 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题...
  7. 深度学习 --- BP算法详解(误差反向传播算法)
  8. SVN+MAVEN项目打包
  9. Microsoft Visio premium2010激活
  10. java代码c3p0连接池配置,c3p0连接池acquireincrement属性配置详解
  11. plsql导出表结构到excel_PLSQL怎样导出oracle表结构
  12. imp命令导入dmp文件问题
  13. 国庆车流激增,南京启用无人机报路况
  14. Hololens2项目基础开发
  15. 输出1000以内能被7整除又能被5整除的数
  16. 解决Ubuntu 键盘输入一直大写的问题
  17. 思科关闭日志_详解Cisco(思科)路由器的故障日志
  18. html国庆节代码,小程序10行代码实现微信头像挂红旗,国庆节个性化头像
  19. 基于matlab的纸币面额面向识别方法设计
  20. 学习笔记——Kaggle_Digit Recognizer (朴素贝叶斯 Python实现)

热门文章

  1. DateTime.Now
  2. Altium Desinger怎么走差分蛇形线、单线蛇形线
  3. 微信小程序 input 输入框控件 bindinput 没有响应
  4. 简单介绍apache虚拟主机配置的三种方式
  5. Android debug.apk 闪退 ClassNotFoundException 直接Run正常
  6. 微博明星事件421整合文档
  7. 大型网站技术架构:核心原理与案例分析——高可用
  8. Webdings字体、Wingdings字体对照表、用CSS3绘制的各种小图标
  9. 递归方法|斐波那契数列
  10. 将代码从一个分支转移到另一个分支