我网络上的一个很要好的小弟一天突然跑过来向我诉苦?
他玩的一款游戏帐号丢掉了,里面的大量金币不翼而飞。
1:有没有乱安装什么软件,特别是不出名的小软件??
2:有没有安装杀毒软件,防火墙之类的??有出现防火墙或是杀毒软件报警吗??
答曰:安装了 360之类的一系列产品?含防火墙之类的 ,
答曰:这个游戏用RMB玩的,怎么可能借给别人 ??我又不二
这个症状确实有点诡异,按理这已经是马奇诺防线了,怎么会出现问题呢??
杀毒软件和防火墙在,基本可以排除了ARP的可能性,百思不得其解!
作为一名资深的老中医,疑难杂症还是得去看,不能丢下患者不管 。决定一探究竟 。
点击登录,发现先请求一个DNS域名,具体域名我擦除了,避免广告嫌疑 !
登录过程先通过DNS获取到真正的IP地址 ,然后再进行通讯 ,
没有毛病啊,看到这里,我陷入了沉思,难道分析方向有错误??
我默默的点燃了一根烟,也许尼古丁的作用,我脑中闪过了一个非常容易忽略的问题!
于是打开QQ,在圈子里面发了句话,DNS 目前有哪些牛逼的方式??
一个人阴沉的回了一句,DNS挟持流量,电信级别,不能影响用户体验。
听了吓我一跳,不过做为技术研究,至少知道了 有DNS流量劫持这么回事。
举个简单的例子一说就明白,比如 taobao.com 的ip
如果被挟持了 ,就会返回被挟持的ip(例如 250.250.250.250) ,这就是DNS挟持,
被挟持后的数据不再是送往 140.205.220.96 ,
而是送往了 250.250.250.250 这个服务器去了
万一有人经不起诱惑呢??传说DNS劫持的,电信级别的,一天 轻松 6位数,具体别人如何做我不清楚了,不敢妄加猜测。
确实不少被侦破的DNS流量劫持案件,那么就说明这个产业链是存在的。
据常在河边走的老人说,别人做挟持都是做黑色的,灰色的,而且只在指定时间段挟持一小段时间,那个不出问题,钱跟天上掉下来的一样
我开始不相信,度娘了下,还真有那么些人干这个事 ,太神奇了 。
上面这个案例是说 给广告主做挟持?这个利润是简单的 150W 么??真的是150W??我陷入了沉思 。
还得继续往下看病啊!小弟那边兴奋得催促我继续往下 !
既然DNS可以挟持,那么加密后的数据就送到了 指定的服务器下面了
那么非法的服务器上面只需要做数据解密就可以了!大家可能又是一轮狂喷。
数据加密了 ,咋解密啊 ??你太藐视现代密码学了。无知者无畏。呵呵。
前面假设 DNS被挟持了,那么就意味登录的时候 ,会送过来 一个 加密后的登录包
只需要解开这个包,就会出现用户名和密码 以及 其他的相关信息 (例如机器码等)
这里我不得不再次打开OC,载入该游戏,分析下流程 。
通过分析 ,知道了通讯流程了 ,我终于缓了口气,马上就可以进入实际操作了
首先我们正常登录一次游戏 ,输入错误的用户名和密码
通过 API Monitor 拦截 recv 和 send 很快我们得到一次通讯的数据
上面图我摘取了 其中 两个关键性的包 ,其他的包 我就省略了,
也就是说 ,DNS挟持后,服务器会收到一堆加密包 ,这个时候 我们就需要解密 ,才得到真正的数据 ,这个时候 ,大家可以思考下 :
假设在挟持服务器 也做一个 tcp 响应的服务器 ,会怎么样呢 ??模拟真的服务器,然后返回事先准备好的数据包 ,客户端他就能正常了 。
也就是说 挟持服务器实现登录逻辑 ,返回固定的数据包给客户端 ,
我们知道 客户端 Exe 它是包含了 加密,解密算法逻辑的 ,只要你有Key 你就可以解密的
现在我们也有了每次发包 收数据包的 数据了,接下来 就是OC分析 ,强大的OC开始发挥作用了
我们知道点击登录按钮,客户端发送数据 ,然后收到数据后 ,就会进去第一步
Call key生成算法 得出来的key都是一样的,这个可以事先通过OC 分析获取到 KEY
就可以 Call 客户端里面的解密算法函数 ,得出明文数据。
待解密数据就如同面粉,你丢面粉进去,就出来一个馒头 ,机器还是那个机器
你丢待加密数据进去 ,一个Call 就能出来解密数据 ,这个熟悉逆向的人来说
不太难 ,对于客户端比较复杂的,用这个方法 就不需要套算法 ,非常有效 ,
2:脱机解密工具 就类似制作一个机器,有了这个机器,直接把客户端丢垃圾桶
可以通过分析 ,分析出来 采用的是什么算法 加密的
我们都有了 这三个数据 ,那么我们就用工具猜把 ,世界上多少种算法 固定了
以上过程 说了很多,对于过来人,一看就懂,不明白就会觉得我是胡言乱语 。
挟持过程 我们需要写一个挟持服务器配合,我和小弟说,但是我不能写啊,
小弟很着急说,那你可以做技术研究啊,我们研究下 流程,这个可以的
测试 ,噢耶,确实出来效果了 ,我点了一根烟,内心那个兴奋 。
是噢 ,我开始没有注意,确实不能登录 ,因为挟持了 ,不可能挟持服务器做一个
类似官方的服务器把 ,我狠狠的用两个手指捏灭了 烟头,做不出来 不抽了
接下来 我们必须解决了 能正常登录 ,即能截取又不能妨碍别人游戏啊,不然投诉客服
发现了,不闹大了 ,得做到神不知鬼不觉呀 。。小弟加紧催促 。
如果第一个服务器不通,程序会自动寻找备用服务器 ,
这是一个思路啊 ,我拍拍大腿 ,第一次 我们截取成功了 ,返回了一个登录失败的数据 ,
这个时候 用户会再次点击登录 ,这时候 又会发请求给挟持服务器了
这个时候 我们已经得到了数据 ,第二次他再发送登录请求过来,我们就告诉他 这个服务器坏了 ,让他链接备用服务器 ,这样不就可以了么 ?? 这个设计是非常巧妙的。不信自己去试。
想到这里,非常兴奋,我马上翻了下新华字典,找找tcp 相关的信息 。
通过查找,我们发现 tcp 有一个3次握手的 毛病,就是在创建连接的时候
会先进行三次握手 ,在第二次握手的时候 ,我们返回一个 服务器不可用的信号,这个时候客户端就会认为 服务器不通 ,就会链接 备用服务器 ,这样就解决了 即能解密又能 不影响用户体验啦,
我把我的思路告诉了小弟,小弟一脸蒙,你能不能用形象点说,小弟很不耐烦
狗腿子再回一句,那我进去了哦 ,然后接着 就开始.....
狗腿子,回了句 哦 ,然后 就跑去 第二个厕所 上了 ,就不再去第一个厕所了
挟持服务器在获取到了加密数据后,客户端第二次 点击登录的时候 ,直接返回一个端口未开放的信号,
非常简单 ,通过wincap 开发包,在3次握手过程做手脚 ,返回一个 服务器不可用 的信号
至此,我们已经实现了 即可以 截取,又可以不影响用户体验了 ,完美了
至此,一个完整的方案已经出来了。我把这个方案 发给小弟,
小弟试了 ,非常满意,原来如此,终于知道了为什么没有中毒还会丢账号。
以后注意了 ,我叮嘱小弟以后别玩了,中了这些招,基本无解,客户端装10个杀软都没有用
结果圈子里所有的人都笑了,这个方案已经有做了 ,你不要研究了 ,给我发一套源码,
别人玩得嗨得很 ,躲被子笑得合不上嘴 ,大家 这样安慰我。
为了 小弟这么一个奇葩的事,折腾了一上午 ,这是很多年前的陈年老事了
劫持做广告,挟持菠菜,劫持H站,挟持游戏,等等,很多貌似非常严谨,不可破的算法,在某些环节出了问题,就不是那么牢不可破了
今天在这里写个回忆录 。谢谢观赏 ,听村里的老人说长期点赞有壮阳补阴之功效。