首页
社区
课程
招聘
[新闻]腾讯网络安全技术峰会
发表于: 2008-3-20 14:09 24610

[新闻]腾讯网络安全技术峰会

2008-3-20 14:09
24610
from:
http://tech.qq.com/zt/2008/wlanfh/index.htm

腾讯科技讯 3月18日,由中国最大的互联网综合服务提供商腾讯发起和组织的互联网安全峰会在深圳召开。包括微软、盛大、新浪等互联网界各大巨头的技术专家,学者和专业人士参与了此次的交流。此次峰会是今年以来首场由中国互联网各顶尖企业共同参与的大型网络安全专业盛会。

会议在深圳市博林诺富特酒店召开,会议相关情况如下:

1、主办单位:腾讯科技(深圳)有限公司
2、技术议题范畴:
n        网络游戏安全领域安全解决方案;
n        黑客及反黑技术的发展趋势;
n        构建企业级安全体系流程;
n        木马、病毒技术分析;

会议议题:

1.      方兴    微软安全服务提供专家--《WEB 2.0 安全研究》
2.      褚诚云  微软中国--《软件安全漏洞与软件安全开发》
3.      张翼    游戏安全专家--《网游木马防御技术漫谈》
4.      郑歆炜  盛大科技 --《运维,安全,技术随想》
5.      牛博威  游戏安全专家--《反外挂技术》
6.      吴石    IM安全研究专家--《几种软件缺陷的可能利用方法》
7.      于旸    绿盟科技--《缓冲区溢出:历史、八卦和娱乐》
8.      李旬保  腾讯科技《WASL-Web应用安全的思考》
9.      郑文彬  奇虎 反木马专家--《还原系统保护攻防》
10.  吴鲁佳  大成天下--《企业数据安全》

这次会议内容丰富,规格很高:)
最后贴张截图,大家找找相关人员:)

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (42)
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
祝贺,支持!顶顶顶
2008-3-20 14:15
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
专家们好牛B好帅,顶
2008-3-20 14:17
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
4
牛博威:成熟的反外挂系统一般企业未必能承受http://tech.QQ.com  2008年03月18日20:33   腾讯科技    评论1条

游戏安全和反外挂专家牛博威(腾讯科技摄)

腾讯科技讯 3月18日消息,在今日举行的腾讯网络安全技术峰会上,游戏安全和反外挂方面的专家牛博威表示,反外挂系统并非越成熟越好,成熟的反外挂系统会让一般公司很难承受,大大增加了运营成本。同时,越是成熟出名的反外挂系统越被人研究得多,反而增加了被攻破的几率。

牛博威说游戏本身就是一个堡垒,或许把这个门做得很好,用金装门或者用铁门,把锁加得特别重,把门做得再先进,却没有发现别人已经从窗户里跳进来了。所以越成熟的反外挂系统不一定最好,最重要的是要适合自己,要做到运营和成本的平衡。

以下为牛博威讲演实录:

牛博威:我今天主要讲的是反外挂技术,如果有时间的话我再讲一下游戏漏洞。我叫牛博威,主要是研究病毒、反病毒;木马,反木马。外挂,反外挂。

我们今天讲反外挂技术,我根据我自己的总结,把当前国内包括韩国、日本、美国、台湾和一些经常被使用的反外挂技术,包括其他方面的策略给大家稍微谈一点。

这是大体的提纲(图),外挂的种类。我们先知道外挂有什么种类、什么类型然后才能去反外挂,然后是策略的选择,有一些常见手段和方法的分类,当然这个分类是我大体的分类,因为方法之间往往是有重叠的,我只是大体分类。对于一些技术方面的误解决,最后我再做一个比较简单有效的反外挂系统,最后有时间的话把游戏漏洞方面说一下,怎么防范游戏漏洞稍微谈一下。

外挂的种类一般来说是分为内挂。首先它依附游戏,首先你开内挂的时候得开游戏,游戏开起来以后再把内挂开起来,是在同一个进程上的,或者是互相配合运行的。它的注入方式,有的是注入到游戏本身,有的不是同一个进程,但是也是有相互的牵连。还有一种它是模拟按键的,它跟游戏本身不是同一个进程,但它们也是互相配合的。

脱机,第一个特点是脱离游戏,像很多做得好的脱机可以在一台机器上跑很多,多的可以达到上百个。当然,它运行的时候根本与游戏无关。这是一个脱机的地图编辑(图),编码很复杂,相对内挂来说,开发时间要长一些。这是一个脱机的功能(图),它有自动补血等等。再就是开发时间长,它比较难做,开发的时间长,所以开发的时候需要考虑到这一点。对反外挂来说如果不知道外挂是怎么做的,这是比较飘渺的。最好对自己的反外挂对象,对这个外挂要了解,然后才能去反外挂。然后是策略的选择,我们今天主要讲的是反外挂技术,但是反外挂本身不仅仅是技术方面,还有法律方面,可以对外挂做分类,包括散播外挂和制作外挂对他们进行法律制裁,再就是人工识别,包括一些非技术方面的,比如GM、玩家去查,还有就是技术检测,我们虽然讲的是技术,但是不应该仅仅立足于技术,应该考虑到配合,要对他们提供震慑。不应该只立足于外挂产品本身,常见的反外挂手段很多,包括早期常用的,常见的反外挂手段,外挂窗口。还有就是查外挂进程的名称,比如内存特征码,还有外挂的模块大小。虽然开发很简单,但是对外挂来说基本也不算什么,查一下窗口,查一下乱码更新一下就可以了。还有就是采用安全产品,比如安博士,MP等一些比较成熟的系统,用它们来做也可以达到比较好的效果。

我们今天主要讲的是自主开发反外挂系统。自主研发反外挂系统,国内包括盛大、网易、完美世界,韩国的一些很出名的,他们也有自己的反外挂系统,像金山。每个公司都希望有他自己的系统,然后利用自己的系统进行反外挂、保护、杀毒。

反外挂方法的分类大概有这么几种,当然这不是很严格,但是对我们今天来讲,大体分了一下,包括暗桩,还有不定时检测、验证码检测、数据加密等等。

下说一下暗桩,是指隐蔽的检测方法,比如走路、攻击、捡物品、保护等相关封包数据被特殊处理,像这些封包被单独处理,这个单独处理有什么好处呢?对所有的封包都进行特殊处理的话,网络负担率比较大。例如我只对攻击进行相关的保护,网络负担就可以降低。另外我做得比较隐蔽,这个外挂看上去注意不到,他发出去以后,玩家一旦使用了攻击就会被查到。

另外一种是不定时改变暗桩,虽然它很隐蔽,但是如果总在那里使同一种暗桩肯定会被发现,一旦发现你这个暗桩就没用了,所以应该不定期的改变,改变之后会增加外挂的心理负担。因为外挂开发也是人脑,他们有自己各方面的压力。

暗桩的技术不一定复杂,比如可以在某一个封包对某一个字符进行加密,但是可以保障它很隐蔽,再就是不定期的改变。

不定时检测,跟上面的差不多,比如同一种检测手段我不连续使用,比如七种反外挂封包,但不同时出现,我一天只用一套,比如我今天用这一套,星期一用一套,星期二用一套,一共有七套,来回换,从外挂开发人员来讲,他就很难同时把这七套东西全搞出来,他的外挂产品一旦被用出来或者一旦发出去之后,他星期二、三没事,但到星期五、星期六可能就被查处来了,所以我们的检测手段最好轮换使用,最好不要采用同一种手段。比如网易,据说他有一套自己的协议生成器,用生成器把脚本改一下,整个游戏的协议全部变了,当然这只是传说,我没有看过,大体是这样的思想。还有就是检测周期长,比如我这个服务器查外挂的时间,一般来讲比如我半分钟查一次,查外挂的封包半分钟查一次的话很容易把问题看出来。但是我一天看一次,对外挂开发人员来说就很难做到。还有天晴数码他们搞反外挂检测周期特别长,每检测一次,检测完以后当场不采用什么反应,但是过一周以后,我对查出来的使用外挂的人进行封号也好,进行处理也好,我虽然进行处理了,但是我这个反外挂封包不发了,这样的话可能就找不到,就很难查到在一星期内到底采用了什么服务措施查到的,因为时间已经过去了。像网易也是采用此类方法。

还有是验证码现在比较流行,例如图形、数字验证,这里是一个汉字识别的,你得打这个鸟字,从里面挑出来(图)。还有是与游戏相关的,比如梦幻的(图),你要挑出来与你相同的角色,说实话我就没找出来,我都查不出来,外挂就很难处理了。目前图样识别技术非常完善,比如汉字包括一些英文字母就更不用说了,对图象进行一定程度的扭曲都可以转换过来。还有一种是影响游戏的正常操作,比如这个他要找出跟这个角色一样的,我就不找出来了,这是我最后一次不换人物。还有一种是如果处理不当会造成漏洞,比如以前有一个游戏,它会弹出码,弹出码的时候正在跟人家PK,这时候你一弹他就死了,所以一旦出现乱码就成无敌,就被外挂制造者利用了,就一直保持无敌状态。所以尽量不要做那种很容易被识别的,还要尽量保证你这个系统不要被人家恶意利用。验证码可以作为辅助检测手段,比如你发现游戏不正常以后再发,用其它手段发现不正常。我给整个游戏里面做一个外挂炸弹,我这个服务器不主动给外人发,但是你周围的人,他如果发现我就同时在什么地方,我发现你的动作很不连贯,或者我作为一个玩家我可以给另外一个玩家发送炸弹,这时候就会出现验证码之类的。

下面是敏感数据加密,这不是指协议上的加密,不是封包里面的加密,而是内部的数据加密系统。比如我加密的是游戏内部一些很敏感的东西,比如游戏帐号、密码、血量、金钱、坐标,我对这些东西进行加密有什么好处呢?比如就可以进行防盗号,我对密码进行加密之后,你用金山游侠之类的就查不出来。它的缺点是如果加密做得不好的话可能会被人家利用,比如游戏里面所有的敏感数据,像里面的关键数据都采用了同一套,因为不可能帐号采用一套,所有的这些敏感数据采用同一套数据,这样的话根据返回地就很容易找出各种敏感数据,包括HP、MP、密码。这些东西看起来虽然跟外挂关系不大,但是对游戏分析来说很重要。因为做外挂少不了对游戏分析,你如果要对这个游戏分析的话就需要分析各种数据的漏洞,如果把解密机制给瓦解的话,等于你需要被保护的数据全部正好被拿下来的,基本就把你里面的内部信息拿出来了。像这种内部加密系统主要是保护内码、防盗号码。

剩下的是服务器下发代码,反外挂的编码、代码是通过服务员动态下发的,跟服务器连接,这时候服务器才会把反外挂代码发下来。这是Server(图),这是客户端(图),Server发一些代码给客户端运行,它这个编码是用笼统的概念,首先它可以是可执行代码,服务端发下来一些可行的代码直接对接,或者是发送脚本代码,客户端有一个脚本引擎,拿这个脚本引擎服务器发的脚本必须解释,客户端必须把服务器发的脚本解释完以后进行必要的反馈。还有就是可执行文件,服务端发一个可执行文件让服务器执行。客户端一旦执行以后,就与客户端进行配合,如果执行不了的话,就无法进入游戏。这种东西可以说是比较流行或者说比较高级的技术。

我主要是讲一下服务器下发代码,它涉及到一些内容,包括很多技术,它下发的编码,你肯定要下发一些很重要的编码,我这个编码每次都处理过了,每次都是不一样的,客户端必须给我执行,不执行的话就不让进游戏。然后还有一些环境校验,一查内存代码不一样就反馈为错误信息,环境校验比较有用,可能查出类型也可以查出游戏的相关环境,有没有外挂,游戏本身是不是跑起来了。还有就是代码被放入动态内存,每次代码发下来以后不是放在固定的局部变量,而是动态内存,这是一个技巧,对分析人员来说很麻烦,因为每次分析这种编码就需要重新定位它的内存地址,当然也可以采用一些方法来避过,但也算是一种技巧,我这里讲的就是技巧。还有就是加入一些反调试、多线程、多进程等外壳技术,还有一些多线程,里面有两个线程代码,把这种代码发过来以后让客户端运行。尤其是脱机,这样的代码正确执行的话是很困难的。

下面是外挂的对应策略,这种东西听起来很高级,其实也很高级。一般来说,第一是使用虚拟机,你给我发来的编码,外挂里面自带虚拟机,把结果正确地计算,然后再反馈,这种虚拟机可以说是做得很高级的,首先它可以执行汇编语言,这也是虚拟机必备的功能。在编码里面如果加入对这个游戏的内存校验,脱机就不需要游戏内存,因为脱机是跟游戏无关的,在虚拟机里面必须得模拟出来游戏的环境,包括一些SAH,还有一些高端代码、高端内存全部模拟,像这个体系最出名的是盛大,像国内从技术来讲最强的是盛大。盛大的反外挂系统做得也是比较早,人也比较多。像他们开发的这种系统,加入了编码,不会是那种很简单的。包括一些APR统统可以模拟。这种东西有它的好处,但是开发比较复杂。

另外一种外挂应对策略是的直接调用。外挂可以以一些很特殊的方式让游戏去执行这种代码,然后他把反馈结果接收回来,我指的是脱机而不是内挂。外挂可以采用一些技巧,比如我发一个脚本,让游戏只是把这个脚本给我解释出来,其他的统统不要,解释出来以后把内容发给我,然后我脱机直接发给你。像这种反外挂系统的好处是反外挂的代码是动态下发的,比如今天我这个代码是这样的,明天我觉得不爽就改成另外一张,就不需要每次更新反外挂系统的时候还需要给其它系统,我需要先停一下服务器之类的,任何外挂出来以后我可以两小时之内搞定,主要一个特点,我搞定你之后服务器不需要重启,否认外挂每次一更新,反外挂一更新,就要重新换服务器。但是这种动态下发代码又不存在这种问题,因为它中间不需要关闭服务器。另外很重要一点,外挂就很难正确的执行。国内像盛大这种系统一发布就能跑起来的就有两家,现在应该还是有外挂的。像韩国的新游戏他们也是采用这样的系统,他们的下发代码的思路跟盛大是一样的,但是它的特点很容易被外挂执行,很容易被外挂给干掉。

这种系统的缺点是它的开发特别复杂,加大服务器、网络负担。像具体开发这种系统来说要考虑很多东西,它的代码是动态下发的,就需要保证一定的代码量,你的代码写得再精巧,再隐蔽、再高级,你只要是在五十或者一百以内,可能对一些简单的搞不定,但是对有些人来说五十台代码不算什么,五十台的代码到我这里差不多一个上午就完了,你必须得花大量的五百台、六百台。这也是反外挂的优点,外挂很难分析,但是有一点是加大了服务器的负担,每次一登录都要发五、六百台东西下来,对网络负担来说很严重。
这种技术目前来说盛大等都采用这种,它虽然没有完全杜绝但效果很好,至少可以打下来大部分外挂。你做外挂时间长了以后,或者你做病毒时间长了以后,做杀毒时间长了以后,比如你做反外挂时间长了以后肯定就知道我这套系统发出去以后有谁可以搞定,谁搞不定,然后你就很有针对性。

这个地方可以稍微说一下策略,像盛大采用的在国内来讲技术是比较先进的,但是国内另外一家网易,他的反外挂也做得很好,其实它主要是云峰网,云峰主要的能力是写代码,但是网易的产品,像梦幻西游、大话西游,做反外挂做得很不错,主要是策略而不是技术。同样是反外挂,如果策略做得好的话,虽然技术不好,但是我可以采用一些策略,让你的外挂没法放。举个例子,像云峰采用封号,它的封号也是有一定的行为的,它采用一些开发特别简单的技术,成本也很低,却达到了盛大这种开发很复杂,但效果也不一定见得非常好的效果。它打击外挂的策略成本很低,而达到了比较好的效果,虽然没有完全杜绝,但是从技术上来讲技术成本是很低的。

下面是一些非常规手段反外挂。可以把它理解为一些很猥琐的,也可以理解为策略。比如可以采用非常规的语言编程,举例来说,游戏里面的反关机,脱机的一个重点是登录,如果你做脱机连登录都进不去的话就很难跑起来。但是我登录这部分就可以采用一些非常规的编程语言,比如用Flash、java,搞这方面的人很少,韩国的游戏的登录是采用网页登录的,它从事实上进行了反外挂,网页登录脱机不会落。像java用的人比较少的,一般的人都是搞驱动,很少搞外挂的人是写java的,像Flash搞外挂的人也没有专门去搞Flash的。如果用这种非常规语言编程的话,对这种外挂开发人员来说他就无从下手,虽然技术本身很简单,但是他们没有碰到过,对他们来说是一种挑战。

另外一种是服务器检测数据库异常。这种检测手段在韩国用得比较多,它主要是直接查出漏洞,比如韩国很多游戏是直接查出用户里面哪个人,我发现你每天的收入,比如你正常情况下从一级可以升到四级,但是你使外挂的话我一看一天就从一级搞到三级去了你就不正常,我就直接停掉你,不管你是不是用外挂。另外一点,它的异常数据检测很多情况,比如可以检测经验,经验每天涨得过多,获得的游戏币过多,也可以认定你用外挂。然后在同一个数据库里面、同一个服务器或者同一个网吧、同一台电脑挂了一百个帐号,你这一百个帐号是同一个IP我认为你不正常,就可以把你IP停掉。这些是属于策略,这种策略虽然做起来很简单,但是很有效。

还有一种是策略限制,比如有些游戏的系统可以被外挂利用,比如有一些任务,做完之后给你奖励,这种任务很枯燥,比如送信任务,每天送信送十回,就很累,但是外挂的时候可以一天二十四小时送信,我为了防止你用外挂就直接把你送信次数减到十次,每天达到十次就不能送了。像这种情况在梦幻西游就体现得很敏感。在游戏里面一些策略、一些任务,包括一些经验来进行修正。这是属于策略性的。像QQ打击木马也是这样,除了在技术上进行打击之外,还采用一些其它的模型,效果还是比较好的。

下面是反外挂技术误解。加密算法越复杂越好?很多人认为加密做得越强就好,或者用一些比较隐蔽的算法,他认为算法用得越复杂越好,但其实不是这样。并不是说算法越复杂越好,自己开发一套是不现实的,凡是复杂的算法都是公开的。你用这种算法以后,虽然加密很复杂,但是去网上一搜就搞下来了。你用这种复杂的加密算法降低了游戏的可玩性。

还有一个问题是越是强保护性壳越好?我们做外挂,做游戏,游戏之后中木马病毒,对一个做木马的来说它是没有办法采用强保护性壳,这是受木马本身的特征所限制的,但是对游戏就不是这样,游戏可以采用一些比较高级的私家壳,越是强的壳研究的人越多,拿到脚本一跑就脱掉了。

另外,壳越强稳定性越差,比如加了驱动以后稳定性很差,对游戏本身的玩家是一种限制。但是壳用得好,像定做的并且用得比较稳定,壳的选择,一方面要选择一些很强的,这是肯定的。另外,要保证它的稳定。

另外,越是成熟的反外挂系统越好吗?其实它有它自己的好处,但是成熟的反外挂系统对公司来说,一般的公司承受不起,比如每年要给多少钱,运营都受它的控制,反外挂增加了你的运营成本,另外,越是成熟出名的反外挂系统越被人研究得多。例如NP,但是NP本身有很多漏洞。因为它里面有500道串口,包括一些别的漏洞,像外挂,我经常说游戏本身就是一个堡垒,不管是把这个门做得再好,用金装门或者用铁门,把锁加得特别重,但是你把门搞得再先进,却没有发现别人已经从窗户里跳进来了,比如像NP对游戏进行保护,比如内挂,完全可以做得让你查不出来,你这个NP可以对内存进行校验,对简单的外挂开发人员很难做到,但是在不修改程序的情况下做代码也是很正常的,你对游戏进行保护我就不破代码。然后你查我进程、查我的窗口,我也可以采用一些操作系统的漏洞让你没有权限。比如二围空间的虫子永远看不见上围空间的虫子在干什么。我虽然存在,但是你没那个权限查我,对你来说我是隐蔽的。所以这种情况下用NP,对这种外挂就没有办法。所以越成熟的反外挂系统不一定最好,比如你是一个项目经理要选择反外挂系统,让你去选IPO的、选NP的或者自己研发的,你不能说看到人家都选择NP你也上NP的,上了NP之后没过几天就被人家搞定了,那你就白投入了。

我这里讲一道很简单的反外挂系统,它的目标一是防止游戏明文被截获;因为做外挂的人截获不了的话就没办法做外挂。还有就是实现简单、占用资源少,不会产生任何负担。再就是系统独立,与游戏低耦合。另外一点是可以防脱机、查内挂。这套系统实现,我只是把思路说一下,首先实现服务端下发代码,每次玩家登录服务器,加密算法都是由服务器动态下发下来的。另外,加密算法每次更换,这个很简单。另外我这个服务器代码里面有内存校验,我要随机对内存进行抽查。另外,客户端无解密函数。这几点都很容易做到。

做这么几点就可以达到我上面说的目的,首先纺织游戏明文被截获。我说的加密代码只是针对加密算法而不是减密算法。比如我要对算法那部分进行Hook掉,我动态代码有一个内存验证,如果是hook的话我就查出来。另外一点,我这个系统代码是从下发来的,我每次更新,这个游戏不需要更新。另外一点,不存在减密算法,这样的好处是加密和减密算法不是同一个,一两句话我也解释不清,但如果是加密算法和减密算法采用不同的算法的话,在配合某些手段,它的效果会非常好,比如加密算法,他就没法利用减密函数进行减密。这只是一种思路,不是说拿出去以后没人搞得定,但是会很有效。

下面我说一下游戏漏洞。有几个比较常见的漏洞,比如QQ飞车为什么会产生穿墙呢,是因为服务端没有对角色所在的位置进行障碍判断。我对客户端直接发了一个穿墙的信息,服务器不进行判断而直接认可,那就穿墙了。像攻击加速这些都是很简单的。还有复制,主要是利用对物品处理的时间延迟,服务器对物品的操作有一个时间延迟,我说我是快速对某一种物品进行操作,如果网络不好的话就会造成延迟,而且这个延迟如果处理不好的话就会对物品产生一些复制或者其它的不可测的事情。刷墙漏洞有很多方式,外挂不停地给攻击发送任务,某个任务成功地封装就刷墙了。

漏洞的防御,比如我这里写了服务端代码(图),服务端接受玩家的请求。这个脚本存在什么问题呢?你可以先判断一下,给他宝珠以前判断一下这个任务是不是完成了,如果这个任务在进行中,你才给他宝珠,其他情况下你不要给他,这样他每次在发送接收宝珠的时候就不用去管它了。但它还存在一个什么问题?在检测任务的时候首先要接触这个任务,如果玩家的请求是接收任务,直接把任务就给他了。这种出现什么问题呢?它如果不断给服务端发请求,告诉服务端我要接收任务,客户端每次说我要接收任务,客户端就把任务给他,就会产生上面的接收宝珠的情况,你看看它是不是做过这个任务,如果没有做过才给他,如果做了就不要给他。这种逻辑除了任务的产生,首先是服务器产生的,其次像服务器很多这种逻辑,你要有一个处理不对就可能全盘被利用了。比如说游戏服务器一般不是一个人选,有很多人选,就不能保证每个人写代码都很优秀,只要一个人写代码不对,游戏BUG就会被利用。

[责任编辑:howardmeng]
2008-3-20 14:17
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
5
张翼:跳出PC局限用手机授权防御木马

Windows底层和反木马专家张翼(腾讯科技摄)

腾讯科技讯 3月18日消息,在今日举行的腾讯网络安全技术峰会上,Windows底层和反木马方面专家张翼指出,随着信息的公开,木马的生成越加容易,越加泛滥,尽管企业做出最大努力还是很难保证系统不被攻克。如果企业可以跳出在不安全的PC上的局限,通过手机作为可信物,相关操作比如登录以及密码修改需要短信回复确认,或将可以解决木马泛滥的问题。

以下是文字实录:

张翼:大家好!首先讲讲网游木马常用攻击技术。第二,讲讲从开发商的角度,以较低的成本实现防御网游木马的策略。首先是键盘记录,所谓的键盘记录是在在键盘输入的时候木马会把你的键盘输入的信息记录下来,网上流传最广、最通俗的方法就是安装全局消息钩子,从而窃取密码。原来消息钩子这种进入密码的方法用得比较多,但是从2006年起主动防御的流行这类方法会被行为监控拦截,比如卡巴斯基这种主动防御就防这个。后来逐步地有一些黑客发掘出以前使用的比较少的被厂商所忽视的一种方法,例如图片上举到的这些(图)。

前面几个安装全局消息钩子、GetKeyState、GetAsyncKeyState 、 DirtecX接口的方法是从用户态实现的。原始输出设备raw input用它来窃取密码,这也是属于用户态的。键盘过滤驱动以及挂钩键盘驱动的Dispatch例程等方法属于核心态实现的。 Ppt中后面提到的所谓的Inline Hook是广义的,就是我进行挂接的时候可以在Rin3上挂,也可以在Rin0下挂,我的hook可以挂在自己的游戏程序里面,从而获取密码,深入的话也可以深到话kbclass设备的回调函数。突破nPtotect保护也不难。

第二部分是内存读取。用户输入密码后,通常情况下密码没有经过处理的话,有一段时间用户输入的密码会以明文的形式存放在内存中,包括登录游戏后,游戏中人物装备等级等信息都可以从游戏进程的内存中读取。

第三是星号密码获取以及缓存密码,比如在QQ或MSN上输入密码的时候,可以选择记录密码的情况。 使用GetWindowText函数就可以获取常规的星号密码,当然对于具有密码属性的输入框在GetWindowText之前需要使用SendMessage取消其密码属性。

下面讲到浏览器插件,主要用于获取IE相关的信息,也可以用来突破HTPS。

来看张图片,小区域精确截图(图),这种方法可以应对许多种网游的保护措施,先安装一个全局鼠标钩子,对你鼠标点击的时候,比如鼠标点击这边,事先算一下你的按纽的像素,把边长除以二,以鼠标点击的点为正方形的中心,从而以这个点截取一个正方形,面积最大的就是我们所要的密码信息。小区域精确截图的方法和图象识别,从而可以把图象信息直接转化为字符。如果说比较复杂,图象识别不了的话,黑客们常使用的方法就是发邮件,因为发邮件是可以以HTML的方式,从而可以把图片嵌在里面,黑客收到信的时候,看密码就一目了然。虽然是截取的图,但是也能很清楚地看到。

除了刚才讲的这些,下面还有应用得比较广的,例如封包截取或者协议分析,从协议的角度分析人物信息、用户名、密码。现在还是有一些比较厉害的人可以通过调试,逆向工程,结合ARP欺骗,对于非对称密钥加密的话,传统的破解方法比较困难。但是在局域网里面可以结合ARP欺骗、伪造,实现相应的效果。基本上现在的木马在对付非对称密钥加密的时候基本上是采用欺骗的方法。

还有一些其他技术,比如一些猥琐方法,谈技术含量比较低,但还是有效果。举一个例子,很久之前人家想到QQ密码,他自己写一个界面和QQ基本上差不多的,然后输入之后,再把真正的QQ进程运营起来。这是被人鄙视的方法,要钻空子的话还是比较多的。几年前盛大对安全很重视,那时候推出的盛大密宝,但它那种对于真正想窃取的人也是形同虚设,但是那个可能比较困难,或者还需要入侵它的服务器,把相应的算法搞清楚。这是比较困难的,但是用得比较多的,现在很容易实现的就比如这张图(图),我们后面讲的解决方案也会碰到类似的问题,对于盛大密宝使用的这些方法,我先简单地把盛大密宝的使用过程讲一下。

在输入用户名、密码后,它会又出现一个对话框,盛大密宝是以1分钟为间隔。以一分钟为单位,有一个函数,那个函数有两个变量,盛大密宝的序列号做了变量,还有一个变量就是和时间相关的。以一分钟为单位,会随机生成六位数,但是登录之后游戏里面就会随机抽取三位,请你输入盛大密宝,所谓盛大密宝就像U盘大小,中间有一个写字屏,以一分钟为单位,按照它的算法随机生成六位数,游戏的程序比如说请输入第一位、第三位、第四位,从六位数里面选三位数,让你输入第几,这是游戏随机的。以我们常人的角度看来就很安全,安全性很高。但是还是能被破解,原理就是这样(图)。

比如这里有两台机器,这台机器上面已经感染了能够破解密宝的高级木马,攻击者已获取初次登录及的用户名、密码。攻击者用已获得受害者的用户名密码登录。当受害者登录游戏时输入的用户名和密码已被木马程序换掉,登录另外一个无关帐户。为什么木马要在受害者登录时把他的帐号密码换成其他帐号呢,因为一个帐号不能同时登录。这样受害者输入自己的用户名、密码的时候其实已经变成另外一个人的帐号了。他进去之后会出现一个框,要求输入盛大密宝随机生成的6位数中的3位数。而且3位数的序号是给定的,比如第一位、第三位、第四位的六位数。从六位里面选三位位置是随机的。攻击者登录后出现密宝信息输入框,比如说请输入六位数里面的第四位、五位、六位。如图,攻击者只需在木马控制端里输入四、五、六,点完发送。此时木马端收到信息后就会把受害者的第一位、第三位、第四位提示信息换成四、五、六位。这样受害者就会输入盛大密宝随机生成的6位数第4、5、6位数字,这正是攻击者登录游戏所需要的信息。所以攻击者就实现了破解盛大密宝保护的效果。

因为黑客进入游戏之后防止他再重新进入,发现帐号正在使用,可以在我们的木马端做一些手脚,拦截封包两三分钟内让他上不了网,等他看看是否有一些有价值的装备或者游戏币,等处理完之后再让他上线。或者暴力一点,就是直接终止进程。也可以挂钩NtCreateProcess/Ex、NtCreateSetion,在一定时间内禁止次进程创建。

从内存读取的方法在木马里面也是使用得非常广泛的。在QQ稍微老一点的版本也是同样存在内存里面。现在有一些网上银行及游戏,他可能采用软键盘,我刚才说的对付软件盘通常有两种,一种是截图的方法,还有就是挂钩TextOut函数,取得软件中的字符,类似于金山词霸的技术,也就是是屏幕取词,用户点击点密码时已经被屏幕取词获得密码的字符信息。我这里讲的是一些主流的,还有针对特定的情况有一些比较猥琐的方法。

刚才是从攻击的角度进行分析的。现在开始讲怎样防御。考虑防御站的角度不同,比如游戏开发商是从自己写游戏的角度。从第三方安全软件开发商,比如瑞星、卡巴斯基,或者从使用者、网络管理员,比如网络管理员怎么样从边界防火墙角度怎样进行相应的配置。现在我讲的主要侧重于游戏开发者的角度。从游戏开发商的角度和第三方安装软件的防御角度还是有区别的。因为如果是游戏开发商的话,他做防御是要小型化,主要针对我自身的特性。不像安全软件可以做的很全面很庞大。 从游戏开发商的角度是怎样做最少的事情取得自身游戏的安全性。

我们先从基于主机的角度谈一谈。我们刚才已经粗略地了解了网游木马的密码获取常用手段,对应地我们要将缓存密码加密,自定义窗口类对相应读取密码内容的窗口消息进行处理,从而使它用传统的方法获取不到密码。第二是防范按键记录,虽然这只是简简单单几个字,我是把涉及到的面讲一讲,同样是一个防范按键进入,可以做得很浅,但同样也可以做得很深。越深入底层公开的资料越少,操作的系统提供的现成接口比较少,需要自己做的比较多,所以难度系数增大,从而会写的人就比较少,安全性就提高了。但是随着防御越往底层做,虽然安全性提高了,但是稳定性也下降了。从理论上说,只要原理正确的,也是可以做到稳定的。但是因为这些东西是人开发的,由于水平、经验,尤其是开发时间的限制,没有那么多时间去测试,没有时间经过多种客户环境的考验,所以想推出一个非常底层的产品级的、比较稳定的,时间会比较漫长。现在防范键盘记录的一个比较底层的比较稳定的方法是挂kbclass中的KeyboardClassServiceCallback,兼容性也较好,兼容USB、PS/2的。

原来QQ采用的是虚拟键盘,虚拟键盘其实也是一种成本较低效果较好的方法。但需要防御我刚才说那些密码窃取方法,比如挂钩TextOut的屏幕取词以及小区域精确截图。另外就是软键盘中按键的顺序要随机生成,还有就是软键盘在屏幕上出现的位置最好也要随机,如果大键盘位置固定的话还是很容易被盗取。还有就是最好不用字符,用比较复杂具有较强干扰性的图片,这样图象解析就比较困难,一般只能用截屏。我们现在已经知道的屏幕截取的方法通常是CreateDC和模拟鼠标按键PrintScreen键,所以只要挂钩相关函数就可以防止截取。从产品可用性的角度,在输入密码的一分钟之内对截屏功能禁用,这样对可用性也没有什么影响,而且避免了因交互式保护的烦琐带来的用户体验下降的弊端。

还有一种是在网吧里比较盛行的基于ARP欺骗窃取整个局域网内的游戏帐号信息。现在网吧基本上都是交换机的,基本上都是通过ARP欺骗的方法,就可以破取局域网里面其它机器的分包,如果能把网游的协议逆向分析出的话,就可以破解获取整个局域网里所有使用游戏用户的信息。对于网吧和局域网用户,防范ARP欺骗是很有必要的。

网游木马使用的各种密码窃取技术都会使用到相关的函数,从基于主机主动防御的角度,对相关函数挂钩实施行为监控即可防御相应密码防御技术,如 NtOpenProcess、NtReadVirtualMemory、NtUserSetWindowsHookEx、CreateDC等 。其中挂钩NtOpenProcess/NtReadVirtualMemory用来防范木马程序读取游戏程序进程空间中的密码,NtUserSetWindowsHookEx用来防范安装全局钩子。另外还可以枚举设备栈,对键盘过滤驱动进行检查。 通常安全软件中使用较多的是编写驱动程序挂钩SSDT,还有少部分inline hook。去年出现的比较多的安全软件的驱动漏洞不少是因为SSDT挂钩后的处理函数编写不完善,所以实现行为监控功能时我们自己的处理函数也要写得很健壮,防止漏洞的产生。

对于防御ARP欺骗,通常采取NDIS HOOK或者NDIS IMD技术,截取ARP包进行分析,丢弃伪造的欺骗包。另外实现还应建立一个可信的IP-MAC库,所谓的可信基就是在确保网络没有欺骗的情况下,确保其他机器尤其是网关的IP-MAC映射关系,先把它存起来,然后截取到ARP封包时与事先建立的可信IP-MAC关系进行比较判断。还有一个是比较简单的,就是用系统自带arp命令实现IP/MAC绑定的,但是对于Windows2000应该是没有用的,这点网上几乎没有披露,印象中只有flashsky以前提及过。因为Windows2000没有检查IP-MAC绑定是静态的还是动态的,虽然进行了绑定,但只要有ARP请求/应答包,WIindows系统还是会把伪造的IP-MAC对应关系添加到自身的ARP缓存表中。ARP的绑定功能在Windows2000里面形同虚设。所以通用有效的还是使用驱动利用NDIS HOOK/NDIS IMD技术拦截ARP包分析过滤。

有些情况下要获取游戏密码以及人物信息的话,最好到它的进程空间里面去,所以有很多木马就把自己的dll先注入到你的游戏进程里面。但是现在许多安全软件比如卡巴7、江民2008都采用的主动防御技术,而已防范常规的诸如CreateRemoteThread、SetThreadContext等注入技术。为了绕过主动防御以及实现自启动,某些木马利用了Windows一个简单的系统机制,就是目录的优先级, 具体讲如果当没有写绝对路径只是相对路径,调用dll时,优先加载同目录下的,然后才是系统目录。比如在网游目录下释放一个kernel32.dll,kernel32.dll所有Ring3程序都需要用到的吧,所以只要你的游戏程序隐形起来了,木马释放的kernel32.dll也就注入到了游戏进程里面。 所以防止其他程序在游戏目录中创建相关文件也是比较重要的。关于具体的实现技术可以采用文件过滤驱动,甚至是Ring3下的全局钩子。另外,Ppt中提到的辅助方案:“游戏主进程检查自身模块中除了自身dll模块以及已签名文件有没其他dll模块,有则强行卸载”,与刚才说的互补的,还是比较有效的。

还有就是保护自身程序不被修改,因为当安全软件越来越严格,可能盗号木马无路可走时就以修改你自身的程序实现密码窃取以及自启动,所以对游戏自身
http://tech.qq.com/a/20080318/000411.htm
2008-3-20 14:19
0
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
6
学习牛人的思维
2008-3-20 14:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好强大的阵容啊。。。。
2008-3-20 14:42
0
雪    币: 93944
活跃值: (200204)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
先进的思维可以,落后的努力。
2008-3-20 15:13
0
雪    币: 8209
活跃值: (4458)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
9
传说中的牛博士,很牛
2008-3-20 16:14
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
10
只有学习的份了
2008-3-20 16:21
0
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
11
站在第一排学习
2008-3-20 16:38
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
12
沙发没了,坐地上学习
2008-3-20 16:39
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
13
6.      吴石    IM安全研究专家--《几种软件缺陷的可能利用方法》
TEAM509
2008-3-20 17:23
0
雪    币: 163
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
奇虎的大胖子 可以和我有一拼  都 那么胖! 看来胖子 也有脑子好用的.+
2008-3-20 17:25
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
15
有没有MJ0011?
2008-3-20 18:04
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
16
强!,上升理论体系
2008-3-20 18:10
0
雪    币: 126
活跃值: (61)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
我的那个网游木马防御的议题,貌似没贴的全,昨天内容还是全的,今天好像腾讯网页上后面几段文字没了,我来补上,接着5楼贴的:

=============
还有就是保护自身程序不被修改,因为当安全软件越来越严格,可能盗号木马无路可走时就以修改你自身的程序实现密码窃取以及自启动,所以对游戏自身的保护也很重要。

刚才说的主动防御行为监控的方法可以在不需要特征码的情况下实现通用的防护,但是和传统的特征码的方法相结合的话,往往可以取得更好的效果。而且自动更新也很重要,万一出现一个从来没有出现过的比较强的破解方法的话,应急小组知道这个情况,可以立马对程序进行更新。所以Office文件格式的漏洞为什么比PDF漏洞利用效果好,指的是非0day,因为PDF会强行自动更新,Office的是手动更新的(正版用户Office2003以及以后也会自动更新了)。

我们刚才是从游戏开发商的角度讲,所以他不可能就像卡巴斯基从安全软件的角度那样实施纵深立体防御,面面俱到。无论你怎么防,虽然说能够很大程度地防御,但是还是有漏过的地方。安全防护和黑客技术没有谁最厉害,你这个安全方案出现的话他完全可以钻你的空子,尤其做产品不是纯粹从技术角度出发,往往因为从程序的稳定性以及使用友好型的角度都会牺牲一些安全强度。 所以很难做到百分之百的安全,所以我们不妨换一角度,找一个可信基。比如现在因为手机的普及,可以将帐号与手机关联,登录以及修改密码时需要绑定的手机回复短信确认。有些游戏现在与MAC地址绑定,我认为绑定的话最好绑定PC以外的,因为木马程序已在机器当中,运用广义Hook的这一强大思想机型伪造,都能搞定。所以我们从另外一个角度,不应绑定pc上的,脱离它,比如和手机绑定,如果修改密码的话,它就会收到一条短消息,如果确认修改密码请回复Y等类似途径。对于虚拟物品的操作发短信通知用户并询问。当然对于虚拟物品操作可以尝试采用T+1方式,预先登记然后审核确认。

再就是动态口令卡,就像工商银行的网上银行。还有移动证书/Usbkey等。相对而言比较安全。但对于动态口令卡以及类似盛大密宝的保护措施,需要防御我刚才介绍的破解盛大密宝的那种思路。可以和基于主机的防御方法相结合。另外动态口令卡算法健壮性和验证服务器安全性也很重要。

时间快到了,先谈这些,谢谢大家。
2008-3-20 21:25
0
雪    币: 126
活跃值: (61)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
另外,“如果企业可以跳出在不安全的PC上的局限,通过手机作为可信物,相关操作比如登录以及密码修改需要短信回复确认,或将可以解决木马泛滥的问题。”,确切地讲是“...或将可以解决密码窃取类木马的泛滥问题”
2008-3-20 21:29
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
19
难道你,没发现有个奇虎的?
2008-3-20 22:01
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
20
都好老了啊。。。

牛人一大堆。

学习~~
2008-3-20 22:03
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
那个胖子就是MJ0011,  汗啊
我还一直以为MJ0011真是个女的,那就和国外那个发现vista漏洞的女的有一拼了
2008-3-20 23:51
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
牛博威=nbw ?

2008-3-21 03:26
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
在中国这个地方,女技术员不大可靠,强人就更不可靠了。有见过女厨师吗?LZ那些文章看似手段LS都很清楚,但却忘记了程序效率。破烂HOOK驱动可以让系统进程资源占用超高。
2008-3-21 08:46
0
雪    币: 108
活跃值: (141)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
24
现在国内的反外挂,不专业啊不专业~~
2008-3-21 10:24
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
25
很壮很彪捍。。。
2008-3-21 12:24
0
游客
登录 | 注册 方可回帖
返回
//