freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

打造一款自己的勒索软件预警系统
FreeBuf_289170 2018-08-28 08:30:04 471848

*本文原创作者:刀郎,本文属FreeBuf原创奖励计划,未经许可禁止转载

最近勒索软件比较火,一波接一波,个人觉得勒索软件最大的难点如下:

1. 不写启动项

2. 不进行网络通信

3. 只是编辑文件

在一些防护软件看来它是正常的,怎么判断是正常软件对文档进行编辑还是勒索软件是一个大问题。这里我有一个思路,那就是诱骗勒索软件。

一、解决思路

自己生成一个文件夹,这个文件夹肯定越靠前越好,(比如你可以用一个空盘,修改盘符为A,建立一个文件夹为AAA,这样越早预警,你保存的文件越多)再放入一些常用的文档格式,doc,txt,docx,pdf等,用软件监视这个目录,如果这个目录里面的文件发生变化,那肯定遇到勒索软件了,那么我们怎么找到勒索软件并且取出加密的key?我采用的是进程pid对比。软件运行开始会备份一次pid,我们只要把二个进程进行对比,那么勒索软件肯定在里面,就全部冻结进程,等待专业人员取出key。

现在开始编程写代码,我采用ring3层处理,因为系统版本太多了,xp,vista, win7,win10 以及32位,64位,系统太多,如果用驱动忙不过来,并且兼容性还是一个问题。

二、开始备份原始进程pid

当软件一运行起来,就开始备份系统当前的pid,在OnInitDialog函数中:

TraverseProcesses函数中开始备份当前系统的所有pid,TraverseProcesses函数第二个参数如果位FALSE表示记录所有进程pid,如果为TRUE表示比较进程pid是否一致:

三、设置监视的文件夹

简单画一个MFC的对话框,将就着用。

我用到微软的api:FindFirstChangeNotification,用微软公开的api,可以保证windows平台都可以用。

一旦监视的文件夹发生了变化,具体监视条件如下:

FILE_NOTIFY_CHANGE_SECURITY //监视的目录或子树中的任何安全描述符更改都会导致更改通知等待操作返回。

FILE_NOTIFY_CHANGE_CREATION //对监视的目录或子树中的文件的创建时间的任何更改都会导致更改通知等待操作返回。

FILE_NOTIFY_CHANGE_LAST_ACCESS //对监视目录或子树中文件的上次访问时间的任何更改都会导致更改通知等待操作返回。

FILE_NOTIFY_CHANGE_LAST_WRITE //对监视的目录或子树中的文件的上次写入时间的任何更改都会导致更改通知等待操作返回。 仅当文件写入磁盘时,操作系统才会检测到上次写入时间的更改。 对于使用大量缓存的操作系统,仅在缓存充分刷新时才会进行检测。

FILE_NOTIFY_CHANGE_SIZE //监视目录或子树中的任何文件大小更改都会导致更改通知等待操作返回。 仅当文件写入磁盘时,操作系统才会检测文件大小的更改。 对于使用大量缓存的操作系统,仅在缓存充分刷新时才会进行检测。

FILE_NOTIFY_CHANGE_ATTRIBUTES//监视目录或子树中的任何属性更改都会导致更改通知等待操作返回。

FILE_NOTIFY_CHANGE_DIR_NAME //监视的目录或子树中的任何目录名更改都会导致更改通知等待操作返回。 更改包括创建或删除目录。

FILE_NOTIFY_CHANGE_FILE_NAME //监视目录或子树中的任何文件名更改都会导致更改通知等待操作返回。 更改包括重命名,创建或删除文件名。

用WaitForSingleObject设置一个等待状态,当发生了如上行为,就说明发现了勒索病毒,实现代码如下:

四、挂起相关进程

当监视的文件夹里文件发生变化,我们就遍历当前的进程和之前程序启动时候的进程列表中的pid做一个对比,如果不在启动的进程列表中,我们就要给他挂起来,防止病毒再加密其他重要的文档。宁可错杀100,不能放走一人,这样就能保住勒索软件肯定在挂起的进程之中,实现代码如下:

五、开始测试

我用今天大家都在分析的勒索软件进行测试:

我监视了一下 ,运行勒索软件,用PCHunter查看了一下,进程确实是挂在状态的。

勒索软件被进程挂起了,等待着安全人员的分析吧,虽然不能百分百成功,起码增加了概率吧,余下就是生死有命,富贵在天了……

*本文原创作者:刀郎,本文属FreeBuf原创奖励计划,未经许可禁止转载

# 勒索软件 # 预警
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_289170 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf_289170 LV.4
关注公众号:microdesktop
  • 2 文章数
  • 2 关注者
打造刀郎安全PHP系统
2018-07-23
Android调试工具之一包操作上
2017-09-27
Android调试工具简介
2017-09-25
文章目录