• 从苏宁电器到卡巴斯基(后传)第04篇:还愿吾爱破解视频教程大赛


    一些铺垫


           记得上一届(第四届)的吾爱破解视频教程比赛是在2015年的年初举办的,当时错过之后,就想参加今年的比赛。因为尽管那次比赛我没有参加,但是却极大地改变了我之后的人生走向,因此也是发生了不少的故事。事后回想,这一切就如同蝴蝶效应,一点小小的振翅,可能引发一场又一场的飓风。而这次我是铁了心要参赛的,但是年初过去了,年中也过去了,吾爱论坛始终没有举办赛事的消息,一度觉得今年就不会举办了,觉得没办法还愿了。直到时间来到了九月初,无意间登录论坛,终于发现了这次比赛的举办消息:




           我觉得我的机会来了。但是由于一年前受到过动画版块版主的打压,我就决定永远不在吾爱破解发布视频教程(详情可参考正传部分)。可是这次我发现原来动画版块的版主已经不在了,现在换了一个新的版主,于是我觉得我可以复出了。好吧,这次我绝对不可以再错过了。

     

    选题


           这次比赛的视频征集范围是“以病毒、脱壳破解逆向分析、追码及注册机制作、程序软件工具编写、移动程序(安卓、苹果等)方面的破解等技术类动画”。我个人擅长的是逆向分析以及病毒分析。比如去年的想法是将我的《跨越CM4验证机制的鸿沟》这三篇博文录制成一个视频,讲解如何通过逆向分析的手段来编写出注册码生成工具。今年本来也想用这个选题,但是考虑到这种商业软件的验证机制还是有些麻烦的(尽管是好多年前的软件),如果录制成视频给大家讲解的话,势必要花费很长的时间。时间越长越会打消大家学习的兴趣,因此只能放弃这个选题。我个人感觉,一次课的时间控制在四十分钟左右比较好。这样一来,我就需要重新寻找课程的题材了。


           那个时候,我每周的工作除了正常的病毒分析以外,还加入了我们反病毒部门的启发查杀技术研究组,每周会有两天时间专门用于研究启发特征的编写。以往我对于启发的认识,仅仅停留在晦涩的文字中,一直没明白什么是启发查杀技术。直到我加入了启发组,才一点一点地明白了其中的原理。考虑到我们的日常分析工作中,几乎每天都会遇到JavaScript木马,总会遇到新的变种,我很多时候会惊讶于木马编写者的脑洞,他们为了躲避杀软的查杀,总会有奇思妙想,因此我觉得这场攻防大战是一个充满挑战性的领域。于是就打算以此作为题材,来给大家讲解一下JS下载者木马的自我保护技术、特征码查杀、启发查杀以及主动防御技术。

     

    备课与提交课程


           其实我在备课初期,在脑海中也是列好了提纲。在我打算讲解的那几个方面的问题里面,自我保护技术、特征码查杀以及主动防御技术在我以前的博文中其实都是有所提及的,因此这里我只需要按照这次课程的内容稍加修改就可以了,所以我备课的重点就放在了启发查杀的讲解上面。当然了,我课程中所讲的这些知识不可能太深,太复杂的话我自己也不懂,鉴于JS木马的实现机理并不复杂,所以也并不需要采用复杂的手段来对抗它,一些较为常规的比较简单的方法也就够用了。


           启发查杀需要讲解两个方面的内容,即启发引擎的编写以及启发特征的编写。启发引擎用于将原始的JS木马程序解密(因为目前的JS木马都会采取五花八门的加密技术,以对抗杀软的查杀),将其还原为我们能够直接识别的程序,最终的目的是要生成一个LOG文件,通过LOG文件就能够直接看出来这个木马在哪个网站执行了下载操作,下载到了本地计算机的什么位置,以及下载的文件名称等关键内容。知道了这些关键信息,接下来就可以编写一个特征或者说一个规则,使其能够匹配到LOG文件中的关键内容,从而进行判定。这样一来,以后如果遇到了未知的JS程序,只要先用引擎解出一个LOG文件,再对LOG文件进行特征匹配就可以了。


           在备课的过程中,还发生了一件事。我的课程内容是按照由浅至深的原则编排的,也就是一开始是根据样本来讨论传统的特征码查杀技术,然后我需要展示特征码查杀的弊端,于是就在原始木马文件上做了一些简单的修改,算是进行了初步的免杀。一般这种简单的修改就可以躲避掉一些杀软的查杀了,事实也确实如此,有五家杀软不再报毒。而这个时候我惊讶地发现,尽管木马在修改过后,同时也躲避掉了卡巴斯基的特征码查杀,但是却被卡巴的启发技术识别了(详情可参考《JS下载者脚本木马的分析与防御》)。这是一个非常好的引子,正好可以引出启发技术查杀的优势,顺便也表扬了一下卡巴斯基的启发技术,从而让我的课程过渡更加的自然。


           启发技术的原理说起来简单,但是在具体编程实现中,还是挺困难的。我最开始想使用我们卡巴斯基内部的解密引擎,这是一个较为成熟的软件,能够应对各种不同的脚本,还原出它们的本质。但是考虑到技术保密等等因素,我也就放弃了,最终决定自己写一个简易的解密引擎。


           我首先找了一个比较简单的JS下载者木马样本,打算这次的课程就围绕着它进行研究。其实想要解密的话,最为核心的内容是去掉原始代码中多余的字符。黑客为了对抗我们,往往会把自己的木马写得非常晦涩难懂,会加入各种奇奇怪怪的符号来扰乱我们的分析。去混淆的过程相当于是进行字符串的匹配与替换,那么这里就少不了正则表达式了。但是光有正则表达式还不行,毕竟我希望实现自动化的启发分析,不可能依靠类似于Notepad++这样的程序自带的正则匹配功能进行去混淆的工作,还是需要一种高级语言进行驱动才可以。考虑到简洁性(利用很少的代码实现更多的功能)与兼容性(需要很好地兼容正则表达式),最后我选择了Python。


           之前的故事中我一直强调自己编程很渣,这次在Python加上正则表达式方面,我依旧遇到了很大的问题。于是就有了上一篇中,被鱼C论坛的人攻击的故事,这里就不再多讲。最后也就只能自己动手丰衣足食了。尽管我最后写出来的程序还是挺糟糕的,但是至少能够达到我的目的,对于这次的课程来说够用了。而代码的完善与优化,也就只能抛砖引玉借助于大家的力量,或者以后我有时间的时候,再好好研究一下了。


           整个备课的过程还是很拖拉的,当我完成我的讲稿的时候,仅剩下一两天的时间就要截止了。本来还打算做一个PPT,边讲技术边给大家演示,从而达到无缝衔接,便于理解。可惜的是已经来不及了,PPT只能作罢,唯有等我重新录制的时候,再弥补了。


           时间很快就来到了10月6号,我打算这天下班早点回去录视频,这样还能够赶上提交的最后期限。但是此时却发生了一个意外,那就是我的笔记本电脑出现了频繁自动关机的情况,这简直让我崩溃。没办法,只能把我在2010年买的一个小笔记本拿出来用了。这个笔记本是ThinkPad推出的第一款红色笔记本,也就是X100e系列。由于2010年春节的时候我没有休息,一直坚守在苏宁,加上那几天iPhone卖得也很好,因此工资将近四千块钱,就花了三千多买了这个小红。按照现在的眼光来看,它的性能自然是很差的,但是也没办法了,赶紧录完得了。可是当我配置完环境,提前走一遍录课流程的时候,惊讶的发现我课程中一个非常重要的工具在我这个小红里面用的时候会死机,于是这就彻底宣告了现在连小红也不能用了。没办法,只能再换回我的主力笔记本了,也许它休息了这一会之后,想明白了,不再频繁自动关机了呢?


           老天眷恋,也是天无绝人之路,这次开机异常顺畅,挺了一会也没有任何异常。于是我赶紧开始录视频。时隔九个月再次讲课,感觉多多少少还是有些生疏的,其中有不少断断续续以及讲错稿子的情况出现,不过这都没关系,后期可以编辑,大概花了一个小时吧,终于录完了课程的原稿,接下来就是使用视频编辑软件进行后期制作了。其实这个后期制作也是很简单,无非就是把我讲的不好的部分删掉,但是这也花了我一个多小时的时间,剩下了三十多分钟的课程时间。此时已经来到了10月7号的凌晨1点,赶紧将所有的课程资料打包好,上传到网盘,再到参赛栏目中发个帖子,宣告自己参赛。

     

    改名


           我本来是有一个吾爱破解的账号的,ID是ioio_jy,当时是通我的CSDN技术文章申请得来的。在吾爱破解论坛,如果想要申请一个账号,要么可以通过技术文章的方式来证明自己的实力来申请,要么就花钱充值吾爱币买一个账号,或者等到一些节日的时候,论坛开放注册的时候申请。尽管我有账号,但是这次参赛我并不想用这个账号,因为之前与鱼C论坛的种种不快,加上在吾爱破解论坛里面,也活跃着鱼C的版主,考虑再三,不想惹麻烦上身,决定用GleamJ的ID参赛。Gleam是我在卡巴斯基的英文名,J是我姓氏的第一个字母。由于我名字里面的“晔”的意思是“光、光明灿烂、闪光的样子”,因此我就选用了“Gleam”这个单词,因为它就是“闪光”的意思。


           这次的赛事,吾爱破解为了召集天下“英豪”参赛,于是允许没有论坛ID的朋友发帖参赛。那么这也就给了我一个很好的机会,创建一个新的身份参加比赛。可是对于新人来说,发帖的审核会更加的严格。因为本届比赛为了公平起见,是不允许评委以及论坛的工作人员参赛的,同时还欢迎大家举报。因此像我这种路人甲来这里发帖,首先就需要过他们的审核关。另外,也是为了论坛的安全性考虑,论坛管理员也会对帖子中包含的文件进行审核,免得有不法分子来这里传播病毒木马。吾爱论坛以前发生过几次这样的事情,有不法分子有意或者无意的来论坛发布带有病毒木马的软件,后来被管理员发现,论坛大牛们依据病毒木马的行为,会写一篇详细的分析报告,并且还会人肉出病毒作者,公之于众。最后还不忘加上一句话——


           最后想对那些图谋不轨的人说,在吾爱破解这样的高端技术论坛玩木马病毒这种小伎俩,分分钟就给剥的干干净净看得清清楚楚了,这里都是活跃在互联网安全界最前沿的精英,任何小动作就是自讨苦吃,奉劝那些蠢蠢欲动的人,尽快走入正途,不要误入歧途!


           每当此时,论坛的网友们都会升腾起满满的自豪感,会显得非常振奋人心。因此在论坛发帖,把关也是越来越严的。由于这些原因,当我在7号凌晨发帖的时候,我的帖子就是处于审核的状态。而7号晚上我下班回到住处,我的贴子依旧处于审核状态。我还以为论坛的网络有问题,管理员没看到我的帖子,于是就又发了一遍。毕竟这次赛事第二天零时就会截止,我可不想功亏一篑。终于在8号上午,我发现我的参赛帖子终于发布出来了,这才松了一口气,就等待评审的结果了。

     

    说说参赛视频里面的声音


           很不理解历届那些参赛录视频却不录声音的朋友是怎么想的,按照他们的说法是声卡坏了或者麦克风坏了,每届总有这样的。没有声音的话,即便视频中的技术再高明,也很难拿到一个好的名次。其实按照我的理解,在黑客领域,录制视频却不录声音的都是属于不想透露自己真实身份的那类人。比如揭秘某流行软件的流氓行为,或者演示如何入侵某个网站……类似于这样的情况,才会选择不录自己的声音,而是打开记事本,边打字边给大家讲解。


           这样的没声音的视频我看得也是很累,而吾爱破解的本次比赛也有这样的参赛选手,估计评委在评选的时候,内心还是有些崩溃的。因为视频一般很长,技术的东西又比较枯燥,加上没有声音,评委们秉承着认真负责的态度,那么就很容易睡着。但是相比于那些杂音极大的视频,这类没声音的视频已经是天堂了。比如这届比赛就有一个,那个朋友的电脑估计问题很严重,杂音到了刺耳的程度,真不知道那些评委是怎么坚持下来看完的。


           当初我是怀着知己知彼百战不殆的态度,尝试性地看了一下那些没声音以及杂音很大的视频,结果顶多坚持三分钟就是受不了了。不由得想起来我在去年刚开始当业余讲师的时候,我用电脑自带的收音装置来录制的时候,也会有杂音。尽管杂音不是太大,但是我毕竟多多少少有些强迫症和洁癖,就不能容忍杂音的存在,于是我在对视频进行后期编辑的时候,都会对声音进行降噪之类的处理。尽管很多时候降噪的效果也不好,但我也只能做到这种程度了。后来买了一个专门的话筒,录制的时候情况有所改善,但杂音还是存在,这个问题始终没办法解决。我就总感觉如果利用笔记本电脑录制,杂音就是不可避免的,而我用家里的台式机录制,就几乎不会有杂音,所以当时我在录制我最后一个系列的那四十来节课的时候,就全都是使用家里的台式机录的了。


           而我在参加这次比赛的时候,我只能用我的笔记本来录制。无奈的是我把自己的话筒落在了家里,我的笔记本收音效果还极差,到了不论我多大声说话,收的音也几乎听不到的地步。不能不参赛也不能没有声音,于是我就动用了我的平板,打开平板的收音功能,在后台执行,前台应用用来展示我的讲稿,便于我照着念。相当于是把平板当成了话筒,录完以后再把声音文件从平板里面拽出来,用视频编辑软件将录的视频和声音文件合成,做一些后期处理,于是就形成了我最终的参赛视频,视频里听不到任何的杂音。因此我的录制过程也还是挺曲折的。


           我在这里讲了这么多,目的其实就是想说,只要大家真的想解决问题,那么总是会有办法的,只是解决问题的过程可能会很麻烦很曲折,但是只要能够达到目的就好。我总觉得那些不录制声音或者视频里面杂音很大的朋友的参赛态度非常不端正,得不到名次也确实只能怨自己了。

     

    我的对手们


           这次的赛事包括我在内,一共有15人参加。其中病毒分析类的只有我自己,安卓逆向破解类的有两人,余下的12个人全都是Windows平台的破解教程。其实我本来打算好好看一下其他14个朋友的参赛作品的,但是正如我上文所说的那样,很多视频在声音方面实在是惨不忍睹,于是我也就不打算继续看下去了。由于我对安卓还是挺感兴趣的,所以把那两个安卓类的教程保存下来了,打算以后好好研究一下。


           幸好本次赛事不允许管理团队以及评委参赛,否则我的名次还真的不好说。我在正传里面提到过,在我看过的那么多的计算机技术类的视频教程里面,论讲课功底我只佩服两个人,我也承认自己的水平在他们之下,这两个人就是担任本届赛事评委的Kido以及Ximo。这两个人不单单技术功底雄厚,课程中的语言表达也是非常清晰。说到这里我想起来,我曾经花钱在某平台买过国内某个在漏洞挖掘领域的顶级大神的课程,然而我仅仅听了十来分钟就放弃学习了。钱白花就白花吧,我可不想找罪受。我觉得这样的大神就不要出来讲课了,写写技术文章,带带团队,参加粉丝见面会也就可以了。完全没必要出现在自己不擅长的领域,那样的话只会让自己掉粉。


           言归正传,本次赛事当所有的参赛作品提交之后,就进入到了评审期。评审期的第一阶段是网友投票,也就是受欢迎程度的评比。受欢迎程度的分数为10到30分,而最后的总分是180分,因此受欢迎程度的评分并不会对总分产生决定性的影响。这种评分方式就是我这种“人缘差”的人的福音。当时我也没有拉票,觉得得多少分并不重要。而最后的分数也很正常,我是倒数第三,因此如果想要获得名次,就必须期望在评分的第二阶段,评委给我打高分了。对此我还是很有信心的。

     

    结果出炉


           那个时候,在等待最终结果的那几天,我还是有些紧张的,当时甚至还发了一条微博:




           也许将这次比赛和我的高考以及考研相比,有些夸张,但是这也说明我确实是挺重视这个比赛的,觉得高手不少,拿个三等奖也不错。很快,就盼来了成绩发布的日子:




           一眼看去还以为是13名,看后面才知道自己得了第二。这已经是超出我的预期了,我对这个结果很是满意。而论坛秉承着公开公正的原则,同时还公布了所有作品的评分细则:




           总的来看,我对于这次的赛事组织赛事结果等方面都非常满意。不单单是由于我得了第二名,心情不错。而是如果所有比赛都能够秉承着这样公平公开公正的原则,那么即便我最后的结果是垫底,那我也是心服口服的。


           比赛的奖品的是一个QQ公仔,腾讯钱包。另外第二名可以选择一百块钱以内的技术书籍,我选的是《Python核心编程(第3版)》以及《正则表达式必知必会》,毕竟我这方面比较薄弱,应该好好研究一下。

     

    最后


           我觉得自己以往讲课的经验对于这次的比赛还是很有帮助的。参加这次的比赛,也算是为自己还愿了,了却了一个心愿。如果吾爱破解明年还有这个比赛的话,我一定还会参加的。我觉得我现在就应该找录课的素材了。还有一个悬念就是,下次的比赛我要用什么身份参赛呢?GleamJ还是ioio_jy?又或者说是一个新的身份?这个只有明年才会知道了。


         《从苏宁电器到卡巴斯基》终稿完整版,请访问

           https://user.qzone.qq.com/3149487460/blog/1494822165


  • 相关阅读:
    关于近期对于移动端开发的一些看法
    前端加密
    移动开发小知识大全
    介绍下京东的(选项卡中的选项卡)是怎么实现的
    一样的代码,一样的逻辑,不一样的效果(选项卡和轮播图)
    总结一下meta标签
    cookie的使用
    移动端常用代码
    上拉加载实现
    关于jQuery出现的新添加元素点击事件无效
  • 原文地址:https://www.cnblogs.com/csnd/p/11785705.html
Copyright © 2020-2023  润新知