查看: 6373|回复: 29
收起左侧

[技术原创] 《云安全》在线系列讲座之六 --- 搭建自己的云查杀平台Step by Step

  [复制链接]
nkspark
发表于 2011-4-25 11:30:28 | 显示全部楼层 |阅读模式
本帖最后由 nkspark 于 2011-4-25 18:15 编辑


讲座一参见:《云安全》在线系列讲座之一 --- 云安全基本概念,http://bbs.kafan.cn/thread-934671-1-1.html
讲座二参见:《云安全》在线系列讲座之二 --- 人云亦云,http://bbs.kafan.cn/thread-940068-1-1.html
讲座三参见:《云安全》在线系列讲座之三 --- 云安全的悖论,http://bbs.kafan.cn/thread-941231-1-1.html
讲座四参见:《云安全》在线系列讲座之四 --- 新纪元的开启,http://bbs.kafan.cn/thread-943410-1-1.html
讲座五参见:《云安全》在线系列讲座之五 --- 从“时间”说开去http://bbs.kafan.cn/thread-949311-1-1.html

开始本次讲座之前,请同学们准备好本首席提供的如下工具:
《云查杀系列工具之一: 客户端 CloudScanner》, http://bbs.kafan.cn/thread-944466-1-1.html
《云查杀系列工具之二: 云端服务器 CloudServer》,http://bbs.kafan.cn/thread-968030-1-1.html
《云查杀系列工具之三: MD5搜集器 MD5Collector》,http://bbs.kafan.cn/thread-968739-1-1.html

在讲座二里,本首席提到写CloudScanner时,coding了2个多小时。某些同学表示自己有更牛逼的抠腚能力,狂喷本首席。卡饭论坛真得很神奇,本首席被喷之后,果然功力大增,写ClouderServer居然只用了1个小时,MD5Collector更是1分钟出炉。照这个速度发展下去,以后抠腚的活就都交给某些同学来做,本首席只负责吹气就好了。

本次讲座内容:
Step 1 MD5列表文件的准备
Step 2 架设云端服务器
Step 3 客户端分发


Step 1 MD5列表文件的准备

在本系列讲座的语境下,我们称正常文件的MD5列表为白名单,病毒文件的MD5列表文件为黑名单。

很多同学对MD5的可能表示的文件集合大小没有概念,会发出“MD5是个有限集合,而无穷多的文件是个无限集合,从无限集合向有限集合映射,一定会产生同一个值的情况。”本首席曾经简单的解释过“所有结论都是有条件的,例如,当N很大时,我们可以认为它就是无穷大。或者说,在有限时间内,例如十年内,世界上所有的数据文件加起来的数量,也远较MD5值集合来的小。这时是一个很小的集合向一个很大的集合的映射,所以我们(现阶段)才根本不担心MD5碰撞问题。”

现在我们看看MD5值集到底有多大,一个MD5值由128位组成,即MD5值集为2^128。而平时我们看到的硬盘1T=2^40,我们把所有历史上所有的计算机文件的MD5都表示出来,目前也超不过1E=2^70。发生MD5碰撞的可能性为2^70/2^128 < 1/2^50,几千亿亿分之一。

我们再看看可能的黑名单的大小,在讲座一、讲座三里,本首席是以ITW作为基数来讨论病毒数量,虽然很多同学质疑,但没人来指出ITW的不合理之处,说明混卡饭的同学里没有病毒分析员。这次本首席不再以ITW为基数计算,而是以被吹捧的AVC的测试样本集作为基数。AVC最新测试报告表明,6个月的病毒样本量为4万。10年*2*4=80万,满打满算,历史上所有的病毒样本算100万好了。所以黑名单的MD5小于100万就足以应付。

我们再看看可能的白名单的大小,(系统文件2万+应用文件4万)* 24种语言*10种系统平台=1440万,满打满算,1500万最多了。是的,24种语言里边已经包含了小众冷僻的德语。是的,1500万里不包含用户自己的数据文件。

使用本首席提供的MD5Collector,一天就可以生成完毕包含100万项病毒MD5值的黑名单,包含1500万正常文件MD5值的白名单。什么?你没有病毒样本?哦,这个本首席不负责提供。正常文件也没有那么多?10万8万总有吧?

白名单生成样例:


  • E:\Program\MD5Collector\bin\Debug>MD5Collector.exe -d c:\WINDOWS
  • Usage: MD5Collector.exe -f MD5ListFileName -d FolderName
  • 其中:
  •        -f MD5ListFileName    ,MD5列表文件全路径名。
  •        -d FolderName         ,要计算MD5的目录全路径名。
  • E:\Program\MD5Collector\bin\Debug>MD5Collector.exe -d c:\WINDOWS -f WhiteMD5List.txt
  • .................................................................................^C
  • E:\Program\MD5Collector\bin\Debug>more WhiteMD5List.txt
  • D41D8CD98F00B204E9800998ECF8427E
  • 8737F6F4C8EC1E2A9EA5516F1B3AE1AD
  • 125814C5CC1BFF468F7F782A67A6BFC0
  • 3967E9F8F3966B8C4586DB8466C1C199
  • A402F529A6F2C46EE89D7AC4027D0CDD
  • DAC71A10A6A71CB6E3F427AE3283734B
  • 6A2CB42966136854F4464516FBB4AE72
  • BB516947768FBB05B41A2487F200716E
  • 2D8652517597105E0A517AB384C98ABC
  • 73D70ED3EC3BBFD8FD35DF431C38F374
  • 52BFFE0FDDDF0B5F45174D88C5EF04FD
  • EB01CF5404E51132290925DC05D81472
  • D41D8CD98F00B204E9800998ECF8427E
  • 6A7A27E44DEF537DBF6247D000380B95
  • 81051BCC2CF1BEDF378224B0A93E2877
  • 682AE0FFA6A865A8D137C43139BB4BCD
  • 682AE0FFA6A865A8D137C43139BB4BCD
  • 247B1CE58D484DE85A933BB64E06E0AD
  • FA32335CEF632CB81C26AA54C44E30F3
  • 41F54348B08783E93BC1C3D36FD88F0D
  • FD92425B18BF46994587533747F04DBD
  • 7E6A80A61FD4C1C2BDFE9701C4BE854C
  • A3975A7D2C98B30A2AE010754FFB9392
  • ^C


复制代码

黑名单生成样例:

  • E:\Program\MD5Collector\bin\Debug>MD5Collector.exe
  • Usage: MD5Collector.exe -f MD5ListFileName -d FolderName
  • 其中:
  •        -f MD5ListFileName    ,MD5列表文件全路径名。
  •        -d FolderName         ,要计算MD5的目录全路径名。
  • E:\Program\MD5Collector\bin\Debug>MD5Collector.exe -d e:\Virus -f BlackMD5List.xt
  • ........................................................................................................................^C
  • E:\Program\MD5Collector\bin\Debug>more BlackMD5List.txt
  • EAE5BBDC8D63E91A4197E74AAB0F2764
  • E8F18516A55F2C3D1AA8267977CE56F3
  • 6FB60E4396CF415CE8A14668D3989659
  • 4232AD34EF431E92AF0669FA0669E294
  • E88B5BFEB06F7815EF84920FC87B5792
  • 388B8FBC36A8558587AFC90FB23A3B99
  • 48435B2C3F766DB7633418C89489EC49
  • B3BB3E0635AF40870B558D621AA968AE
  • EF62075A8242C39C1849010D649958C3
  • 3716E1F619B6157AF16AB896055BC53C
  • 6820CB8B44039F9431CED2A43BFF3F93
  • 1B8B93CEEBD6ACA6528B58594696B94F
  • D54005543C190DB03A6145717F3E6356
  • 3EE9C807EF876D85CB051FD80CBC65CC
  • D320D277A59524C14D8EFB205889B150
  • 328BAA4981C0F71033A03789CD58F26F
  • 9F7B30D7E7A669D6900F1757193D4D35
  • 58402C43A7AA6CDA3DAD6BAF53FE0C09
  • E6BE570E44B6EB148B2AF261D3A53805
  • 11037E1C519E1AE59D07DB27A547D6A7
  • B5F85C01A001F25AFC02E465AE8BE0A5
  • C24F05AEFF1088296F0300C7182926FE
  • A0524AD81AAE373621582970B70DDED1
  • AB103F06C6D1A521FFBF2FB6BC225F8C
  • ^C

复制代码

Step 2 架设云端服务器

当我们准备好黑白名单之后,搭建自己的云查杀平台的工作已经完成了大半.云端服务器的基本功能就是对用户提交的MD5值返回判定结果,如果MD5值在黑名单中,就直接告诉用户,这是病毒,至于病毒叫啥名字,本首席一向认为应该认真讲究一点,但目前绝大多数反病毒公司对待病毒命名都不大讲究,这也从某一方面显示了这些公司只要还能赚钱,其它能对付就对付了。本首席也不较真了,本讲座搭建的云查杀平台中病毒名字统一为“Win32/Trojan.Mtcd.Generic“。如果用户提交的MD5值在白名单中,就告诉用户此为正常文件。

如果用户提交的MD5值既不在黑名单中,也不在白名单中,那么告诉用户什么结果呢?告诉用户是病毒,至于为什么,本首席在下次讲座《云端用户管理》中解释。

现在我们来看看云端服务器可能承受的负载。假设本首席的云查杀平台有2亿用户,1/10的在线率就是2000万用户,这2000万用户中,绝大多数都在浏览网页、处理邮件,下载程序运行的少而又少,假设1/10000的比例发生在一小时之内,也就是2000次/小时的查询负载。一台386就能满足本首席的云查杀平台对2亿用户的支持。本首席每次讲云安全的时候,都会觉得自己的云端有点儿寒酸,这是为什么呢?

其实对于大规模突发查询的情形,本首席也考虑到了。但云查杀的特点就是“用户对实时性的要求不高”,哦?这个特点怎么和主流宣传的“云安全的特点是快速实时查杀”不一样,因为实际上,所有网络应用都无法保证实时性,这是基础协议固有缺陷之一。所以当出现大规模突发查询时,排队等就好了,超时怎么办?客户端自然会处理的。

本首席提供的云查杀平台云端服务器CloudServer支持千万量级的MD5黑白名单加载、查询,启动时间在几分钟之内,查询时间在毫秒级。

CloudServer启动样例:

首先看一下CloudServer要加载的MD5文件:


  • E:\Program\MD5Handler_2.0\Debug>MD5Handler.exe -f i:\md5list.txt -s i:\newmd5list.txt
  • Load MD5 file time: 30 s.
  • 10556768 MD5 strings are loaded! and 5278379 MD5 is unique!

复制代码
md5list.txt文件中包含10556768项MD5值,处理了一下,去掉相同项,剩下5278379项MD5值保存在newmd5list.txt中。

这里假设md5list.txt是白名单,newmd5list.txt是黑名单,看一下CloudServer的加载情况:


  • E:\Program\CloudServer\Debug>CloudServer.exe
  • Usage:  -w WhiteListMD5File -b BlackListMD5File
  • 其中:
  •           -w WhiteListMD5File   ,给出白名单文件位置;
  •           -b BlackListMD5File   ,给出黑名单文件位置;
  • E:\Program\CloudServer\Debug>CloudServer.exe -w i:\md5list.txt -b i:\newmd5list.
  • txt
  • 白名单加载完毕,加载有效MD5值 5278379 项,用时 67 秒。
  • 黑名单加载完毕,加载有效MD5值 5278379 项,用时 18 秒。
  • 服务器已启动!可接受查询。

复制代码
这里白名单加载有效MD5值显示为5278379 项,实际上处理了md5list.txt文件中包含10556768项MD5值,所以耗时多一些。做过预处理的黑名单加载时间快了4倍。

彩蛋奉送,CloudServer响应文件定制样例:

当你构建自己的云查杀平台时,可以向用户返回自己定制的Web页面。

  • Usage: CloudServer -w WhiteListMD5File -b BlackListMD5File  -r ResponseMessageFile
  • 其中:
  •             -r ResponseMessageFile,给出显示信息文件位置;

复制代码

ResponseMessageFile由3行组成,分别对应MD5值为未知文件、正常文件、病毒文件的响应Web页面:


  • <html><body>//<br>//+++++++++++++++++++++++++++++++++++++++++++++<br>//<br>//CloudServer<br>//<br>// Written by Spark.<span>   </span>nkspark_at_gmail.com<br>//<br>//         2011.04.24<br>//+++++++++++++++++++++++++++++++++++++++++++++<br>//<br><br></body></html>
  • <html><head></head><body>//<br>//+++++++++++++++++++++++++++++++++++++++++++++<br>//<br>//CloudServer<br>//<br>// Written by Spark.<span>   </span>nkspark_at_gmail.com<br>//<br>//         2011.04.24<br>//+++++++++++++++++++++++++++++++++++++++++++++<br>//<br><br>此为正常文件!<span id="porcentaje" style="color: red">0</span></body></html>
  • <html><head></head><body>//<br>//+++++++++++++++++++++++++++++++++++++++++++++<br>//<br>//CloudServer<br>//<br>// Written by Spark.<span>   </span>nkspark_at_gmail.com<br>//<br>//         2011.04.24<br>//+++++++++++++++++++++++++++++++++++++++++++++<br>//<br><br><span id="porcentaje" style="color: red">1</span><table id="tablaMotores"><tr>此为病毒文件!</tr><tr><td>CloudAV</td><td>1.0</td><td>2011-04-23</td><td>Win32/Trojan.Mtcd.Generic</td></tr></table></body></html>

复制代码

Step 3 客户端分发

当CloudServer启动后,我们自己的云查杀平台已经基本构建完成,用户端的查询软件可以任意编写,只要兼容CloudServer的自己定制的响应信息就可以了。本首席在CloudServer预设的响应信息完全与VirusTotal的查询响应信息格式一致,所以用本首席提供的CloudScanner就可以无缝的工作在CloudServer搭建的云查杀平台。这段话的意思是各位同学也可以使用自己编写的客户端,不一定非使用本首席的CloudScanner不可。

说实话,本首席提供的工具搭建的平台叫“云查杀”平台非常勉强。在专业人士眼里,“查”是“查”,“杀”是“杀”,是完全不同的两个概念。不过即使号称是反病毒公司的专业人士,很多人已经不知道“查杀”包含的是“检测”和“修复”两个概念,“修复”已经被完全等同于“删除”。嗯,在某专利里还有覆盖还原作为“修复手段”,比删除强一点点。不过想象一下,当整个C盘的可执行文件,少算一点儿,2G大小吧,都被病毒感染的情况下,传统意义下的“修复”可能10几分钟就完成了所有的病毒修复工作,而所谓云主防覆盖还原3天3夜才传回来1G,这种情况没有可能发生吗?

所以,本首席的这个平台,可能叫“云检测”更符合实际一点儿。

客户端使用样例:

  • E:\Program\CloudScanner_2.0\bin\Debug>CloudScanner.exe
  • Usage: CloudScanner.exe [-c] [-f FileName | -d FolderName | -m MD5ListFile]
  • 其中:
  •        -f FileName   ,要扫描的文件全路径名。
  •        -d FolderName ,要扫描的目录全路径名。
  •        -m MD5ListFile,要扫描的MD5列表文件全路径名。
  •        -r            ,包含子目录递归扫描。
  •        -c            ,清除发现的病毒。
  •        -v            ,显示详细结果。
  •        -b            ,检查引擎可信度。
  •        -s            ,云端服务器地址。
  •        -t ResultFile ,统计扫描结果。

复制代码

  • E:\Program\CloudScanner_2.0\bin\Debug>CloudScanner.exe -v -s 127.0.0.1 -f e:\Virus\NOTEPAD.EXE
  • e:\Virus\NOTEPAD.EXE,正常文件,扫描用时0秒。

复制代码


本次讲座到此结束,欢迎收看。


评分

参与人数 2经验 +40 人气 +1 收起 理由
皇甫暮云 + 40 版区有你更精彩: )
chow2006 + 1 菜鸟来学习。。。。。

查看全部评分

悟心之道
发表于 2011-4-25 11:33:26 | 显示全部楼层
还在继续云哈
-oAo-
发表于 2011-4-25 11:38:03 | 显示全部楼层
自己干?还是让杀软代劳吧
nkspark
 楼主| 发表于 2011-4-25 11:42:18 | 显示全部楼层
悟心之道 发表于 2011-4-25 11:33
还在继续云哈


本首席准备在开两次讲座后,结束这个系列。[:26:]
maomao110
发表于 2011-4-25 12:03:07 | 显示全部楼层
进来学习啦
844416405
发表于 2011-4-25 12:11:45 | 显示全部楼层
学习下.....
nkspark
 楼主| 发表于 2011-4-25 12:30:19 | 显示全部楼层

Step 1 MD5列表文件的准备

在本系列讲座的语境下,我们称正常文件的MD5列表为白名单,病毒文件的MD5列表文件为黑名单。

很多同学对MD5的可能表示的文件集合大小没有概念,会发出“MD5是个有限集合,而无穷多的文件是个无限集合,从无限集合向有限集合映射,一定会产生同一个值的情况。”本首席曾经简单的解释过“所有结论都是有条件的,例如,当N很大时,我们可以认为它就是无穷大。或者说,在有限时间内,例如十年内,世界上所有的数据文件加起来的数量,也远较MD5值集合来的小。这时是一个很小的集合向一个很大的集合的映射,所以我们(现阶段)才根本不担心MD5碰撞问题。”

现在我们看看MD5值集到底有多大,一个MD5值由128位组成,即MD5值集为2^128。而平时我们看到的硬盘1T=2^40,我们把所有历史上所有的计算机文件的MD5都表示出来,目前也超不过1E=2^70。发生MD5碰撞的可能性为2^70/2^128 < 1/2^50,几千亿亿分之一。

我们再看看可能的黑名单的大小,在讲座一、讲座三里,本首席是以ITW作为基数来讨论病毒数量,虽然很多同学质疑,但没人来指出ITW的不合理之处,说明混卡饭的同学里没有病毒分析员。这次本首席不再以ITW为基数计算,而是以被吹捧的AVC的测试样本集作为基数。AVC最新测试报告表明,6个月的病毒样本量为4万。10年*2*4=80万,满打满算,历史上所有的病毒样本算100万好了。所以黑名单的MD5小于100万就足以应付。

我们再看看可能的白名单的大小,(系统文件2万+应用文件4万)* 24种语言*10种系统平台=1440万,满打满算,1500万最多了。是的,24种语言里边已经包含了小众冷僻的德语。是的,1500万里不包含用户自己的数据文件。

使用本首席提供的MD5Collector,一天就可以生成完毕包含100万项病毒MD5值的黑名单,包含1500万正常文件MD5值的白名单。什么?你没有病毒样本?哦,这个本首席不负责提供。正常文件也没有那么多?10万8万总有吧?


悟心之道
发表于 2011-4-25 12:50:53 | 显示全部楼层
nkspark 发表于 2011-4-25 11:42
本首席准备在开两次讲座后,结束这个系列。

从风格上讲,你貌似喜欢从让人从质疑开始,用得好非确实属于有效(教学)方式之一。最大的优点是容易让人参与,最大的缺点是容易口水。
不管如何众生中可以找到你
nkspark
 楼主| 发表于 2011-4-25 12:52:45 | 显示全部楼层
本帖最后由 nkspark 于 2011-4-25 13:06 编辑

白名单生成样例:


  1. E:\Program\MD5Collector\bin\Debug>MD5Collector.exe -d c:\WINDOWS
  2. Usage: MD5Collector.exe -f MD5ListFileName -d FolderName
  3. 其中:
  4.        -f MD5ListFileName    ,MD5列表文件全路径名。
  5.        -d FolderName         ,要计算MD5的目录全路径名。

  6. E:\Program\MD5Collector\bin\Debug>MD5Collector.exe -d c:\WINDOWS -f WhiteMD5List.txt
  7. .................................................................................^C

  8. E:\Program\MD5Collector\bin\Debug>more WhiteMD5List.txt
  9. D41D8CD98F00B204E9800998ECF8427E
  10. 8737F6F4C8EC1E2A9EA5516F1B3AE1AD
  11. 125814C5CC1BFF468F7F782A67A6BFC0
  12. 3967E9F8F3966B8C4586DB8466C1C199
  13. A402F529A6F2C46EE89D7AC4027D0CDD
  14. DAC71A10A6A71CB6E3F427AE3283734B
  15. 6A2CB42966136854F4464516FBB4AE72
  16. BB516947768FBB05B41A2487F200716E
  17. 2D8652517597105E0A517AB384C98ABC
  18. 73D70ED3EC3BBFD8FD35DF431C38F374
  19. 52BFFE0FDDDF0B5F45174D88C5EF04FD
  20. EB01CF5404E51132290925DC05D81472
  21. D41D8CD98F00B204E9800998ECF8427E
  22. 6A7A27E44DEF537DBF6247D000380B95
  23. 81051BCC2CF1BEDF378224B0A93E2877
  24. 682AE0FFA6A865A8D137C43139BB4BCD
  25. 682AE0FFA6A865A8D137C43139BB4BCD
  26. 247B1CE58D484DE85A933BB64E06E0AD
  27. FA32335CEF632CB81C26AA54C44E30F3
  28. 41F54348B08783E93BC1C3D36FD88F0D
  29. FD92425B18BF46994587533747F04DBD
  30. 7E6A80A61FD4C1C2BDFE9701C4BE854C
  31. A3975A7D2C98B30A2AE010754FFB9392
  32. ^C

复制代码



nkspark
 楼主| 发表于 2011-4-25 12:58:05 | 显示全部楼层
本帖最后由 nkspark 于 2011-4-25 13:02 编辑

黑名单生成样例:




  1. E:\Program\MD5Collector\bin\Debug>MD5Collector.exe
  2. Usage: MD5Collector.exe -f MD5ListFileName -d FolderName
  3. 其中:
  4.        -f MD5ListFileName    ,MD5列表文件全路径名。
  5.        -d FolderName         ,要计算MD5的目录全路径名。

  6. E:\Program\MD5Collector\bin\Debug>MD5Collector.exe -d e:\Virus -f BlackMD5List.xt
  7. ........................................................................................................................^C


  8. E:\Program\MD5Collector\bin\Debug>more BlackMD5List.txt
  9. EAE5BBDC8D63E91A4197E74AAB0F2764
  10. E8F18516A55F2C3D1AA8267977CE56F3
  11. 6FB60E4396CF415CE8A14668D3989659
  12. 4232AD34EF431E92AF0669FA0669E294
  13. E88B5BFEB06F7815EF84920FC87B5792
  14. 388B8FBC36A8558587AFC90FB23A3B99
  15. 48435B2C3F766DB7633418C89489EC49
  16. B3BB3E0635AF40870B558D621AA968AE
  17. EF62075A8242C39C1849010D649958C3
  18. 3716E1F619B6157AF16AB896055BC53C
  19. 6820CB8B44039F9431CED2A43BFF3F93
  20. 1B8B93CEEBD6ACA6528B58594696B94F
  21. D54005543C190DB03A6145717F3E6356
  22. 3EE9C807EF876D85CB051FD80CBC65CC
  23. D320D277A59524C14D8EFB205889B150
  24. 328BAA4981C0F71033A03789CD58F26F
  25. 9F7B30D7E7A669D6900F1757193D4D35
  26. 58402C43A7AA6CDA3DAD6BAF53FE0C09
  27. E6BE570E44B6EB148B2AF261D3A53805
  28. 11037E1C519E1AE59D07DB27A547D6A7
  29. B5F85C01A001F25AFC02E465AE8BE0A5
  30. C24F05AEFF1088296F0300C7182926FE
  31. A0524AD81AAE373621582970B70DDED1
  32. AB103F06C6D1A521FFBF2FB6BC225F8C
  33. ^C
复制代码

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-6 02:00 , Processed in 0.128305 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表