Malware Fighter

| 分类 锤子哥说你们都不行  | 标签 信安大赛 

原来准备比完赛就写出这篇总结的,无奈生性拖拉,到这中秋佳节细雨纷纷之际,怀念起大学生活的点点滴滴,才想起为这段旅程的最后一站划上一个圆满的句号。

起点

说起这个比赛,那可真算是一场旷日持久战,从四月份报名开始一直到八月份决赛结束,也是我参加过的最长的比赛了。不过讲道理,最开始从老师那里听到这个比赛的时候,我的内心是毫无波澜的,甚至还有点想笑——又是一个坑人的比赛,有这时间还不如多刷几道题多看几本小说!其实我对于这类全国大学生××××竞赛是完全没有什么兴趣的,唯一一次参加将××××填成大学物理的还是为了老师(虽然就上过他的一节课,还是记得他叫蔡旭初,别问我怎么知道的= =)提出的诱惑条件——只要你们能进复赛并且保证期末成绩90分以上就可以不用来上课并且期末成绩加十分(那不就是直接满分!)。细细思虑了良久,看到依旧没有人上去,这不禁瞬间让我感到愤怒,对于装逼成风常伴吾身的大神来说简直是尊严的践踏!于是我颤抖的(无法抑制体内的洪荒之力!)走了上去,说,“老师,我以后不来了,你期末给我满分吧。”只见他稍稍犹豫了一会儿(脑补一脸懵逼),然后说,“好”。

可是当一个女神级的妹子问我参不参加的时候,我瞬间改变了主意,这个比赛看上去好像还不错,大学生的耶,应该能学不少东西吧?于是诚挚的回复,当然参加啊!这么好的比赛~

之后妹子又邀请她的一个同学,我找了一个ACM学弟,就这样开始这段长达四个月的慢慢征程。

定题

在组好队之后,我们首先去官网看看比赛的要求以及形式。比赛分为初赛和决赛,初赛就是要求所有队伍提交成果:包括源代码,可执行程序,以及项目报告。然后评审专家根据各队提交的材料决定决赛的队伍,根据我个人经验:题目选择合理,项目运行正常,报告格式规范,文档提交完整过初赛是没什么问题的。然后决赛就是在初赛的基础上进行功能上的完善,并且参加最后的现场答辩。

到这里,万里长征的第一步我们还尚未迈出,而这第一步也起着至关重要的作用,那就是确定什么样的主题。我们本想在官网上找找是否有以往队伍的比赛资料,找来找去,最终发现也只有历年的获奖名单,而名单上也只有他们的题目,虽然从题目看不出什么,但这也稍微为我们指明了一些方向——大概了解了什么方向比较热门。在网上搜索时还有了一个意外发现,那就是在github上找了一个往届的队伍比赛的所有资料(https://github.com/alsotang/ciscn_docs),我们最终能完成整个项目真的是要好好感谢他们!所以在最后,我也将我们的所有材料放在了网上,前人种树,后人乘凉,希望能给以后参加的队伍们一些启示。

我们讨论了很久,都没能确定下一个题目,讨论了包括基于人体生物特征的身份识别,语音识别诈骗电话,大数据时代的个人信息防护等等,要不就是以前有人做过的,要不就是实现上没有思路的,最终确定下题目《基于图像处理的恶意代码检测》也是一个偶然的机会,在网上闲逛是看到微软举办了一个恶意代码分类的比赛,然后有队伍使用了图像的特征进行分类最终拿到了冠军。然后我们就想既然分类可以,那我们同样也可以使用图像特征进行恶意代码检测了?

分工

在确定下题目时,我们实现思路基本就已经出来了,首先将待检测程序转化为图片,然后选择相应的特征匹配算法进行相似度匹配,最后根据相似度进行判定。在我们跟指导老师进行交流时,老师也认同了我们的想法,同时也提出了一点意见:项目想法不错,但是创新点不够。也是,官网的要求也指出了项目要有一定的实用性和创新性。所以我们最开始的分工是:

  • Qin,查找相关技术的最新论文
  • Chairg,阅读相关论文
  • Aaron,图像特征匹配算法
  • Handoku,查找恶意代码库

计划进展的很顺利,我们在网上找到了关于使用代码的图像特征的原始论文,并且还基于当前恶意代码检测的不足想出了去混淆模块,并且作为我们的主要创新点,然后我们任务进行了略微的调整:

  • Qin,开始编写去混淆模块
  • Chairg,结合AUTOMATIC DISCOVERY OF LINER RESTRAINTS AMONG VARIABLES OF A PROGRAM 和Static analysis of executables to detect malicious patterns两篇论文,寻找关于程序变量等价性的解决方法。
  • Aaron,继续实现图像匹配模块
  • Handoku,继续查找病毒代码,并查找新的去混淆技术。

到此为止,我们的进展还不错,然而计划赶不上变化,我们的Handoku同学由于不得不处理一些学业和生活上的事,而没有时间继续跟我们完成这个项目,但此时我们已经完成了报名和提交相关队伍信息的申请,并且还无法修改,所以我们不得不修改计划,让Chairg来完成Handoku的任务,从而放弃寻找关于程序变量等价性的方法。

提交

临近截止日期前两天,我们代码实现部分全部完成了,除了有些当初设想的但是不知如何实现的,接下来就需要整合所有模块进行综合测试,并且完成最终的项目报告。

还记得那几天恰好是周末,天空乌云密布,小雨飘飘洒洒,缠绵不绝。“我这边测完了,材料发群里了,你看看。”“好的,我这边也快完了,马上测。”“小爽开始写报告前面部分吧,我们测完写后面的。”办公室里充满着有条不紊的紧张气息,这里还是老师的办公室,平时进来出去都是悄无声息,说话声音也尽量放到最低,毕竟面对的都是些严肃不苟言笑的老师,流传数千年的尊师重教已在我们心中留下不可磨灭的痕迹,可还是同样的地方,如今却充满着罕见的热情。

首先是测试,然后是撰写报告,分工明确,争分夺秒,效率自然不低,第二天下午,终于完成了所有的工作,雨依旧在下着,看着持续四个月的成果,心中的喜悦,不可言喻。

决赛

我毕业了,暑期找了一个实习,朝九晚六,日复一日。这天刚好下班,激情早已被每天重复的工作所消耗殆尽,但无奈,这就是以后要习惯的生活。挤进无法再挤的地铁,拿出手机刷着微博,接着朋友圈,瞥到“信安大赛小分队”讨论组,记忆如潮水般涌来,思索片刻,结果该出来了吧?

没错,到官网一看,首页第一条通知就是“第八届全国大学生信息安全竞赛决赛名单”,看了一遍没发现,不甘心,又看了一遍,终于,我们进了!

进了决赛就意味着我们要去现场,参加答辩并且现场演示。知道我们进入决赛,除了高兴之外,最想抱怨的就是为什么今年在上海!如果不在上海,多好的一个出去玩的机会啊,可惜可惜。除了可惜之外,我们也得开始准备现场答辩的材料了。不过其实也没什么好准备的,就做了一个PPT加上把最终要讲的打了个草稿,就这样登上了答辩的舞台。

答辩时间总共30分钟,可是直到老师说你们可以走了,我都没有反应过来——这么快就结束了?准备了这么久却又这么快就结束了真的是让人有点措手不及,恍恍惚惚的走出教室,恍恍惚惚的走回学校,恍恍惚惚的结束了,这一切。

花絮

颁奖典礼

答辩前准备

颁奖后

我们项目所有的材料都已经放在了我的github上:https://github.com/mjqin/MalwareTerminator


上一篇     下一篇