关于破解网络验证的一些心得和体会
觉得写得挺好,但是我就是看不懂,给需要的人看,唉,还得继续学习知识前言~
欢迎诸位大牛们指出错误,但是请不要喷哦~帖子是写给和我一样的萌新看的,大牛们笑笑即可
虽说是针对萌新写的,但是也最好有一点小基础的哦~
有关网络验证的一些心得
网络验证,顾名思义,就是把你的用户名、注册码、机器码等信息拿到网络上的一台服务器上去进行比较,然后服务器返回你一个信息告诉你是否验证成功。
网络验证最常见的有两种情况,一种是用你的用户名和密码来获取一些软件必须的数据或者运行信息。
比如说,软件本身的功能就是不全的,你输入了注册码之后,它就会给你下载一个完整版的软件
这就好比你还没有登录吾爱的论坛,没有权限访问一些带有附加权限的帖子一样——你没有注册码,那些正版数据是无法搞到的
对于这一种情况,除非服务器存在漏洞可以让你拿掉服务器,否则必须要有一个正版授权来提取这些缺失的数据
第二种情况,那就是软件本身功能是全的,只不过验证的那个部分跑到服务器上去进行了而已
既然软件的功能是全的,那么一般的爆破都能搞定的。由于验证注册码的那部分跑到服务器上去验证了,所以想搞到算法是不太现实的。
有时候根本就不存在什么所谓的算法,当软件购买之后,服务器就会自动生成一个全新且随机的license给你
所以,对于网络验证来说,绕过是关键,想力图取得算法来制作注册机基本上是不可能的,就算制作出来了注册机作者也可以很轻松的封杀掉。
而这里主要就是说一些有关网络验证“绕过”的心得。
很多人说,网络验证其实和本地验证没啥区别,改改跳转一样爆破,何必写篇文章出来?那么如果遇到强壳该怎么办呢?
实际上,强壳不代表强验证,加壳是个傻瓜式的过程,并不代表编程者的编程能力提高了。如果验证很水的话,有几率不修改程序直接拿下这个验证。
大家拿到一个网络验证的软件,不一定必须要往od里面扔。在破解网络验证的时候,抓包是非常重要的。为什么这么说呢?
绝大多数软件都是连接到了一个域名上面去,直接连接IP的少之又少。如果我们抓包发现这个软件连接了一个域名,那么这对我们是非常有利的。
而网络验证一般都是使用http服务或者是远程连接一个数据库。对于第三种自写协议来验证的,超出了我们目前能研究的范围,我们能做的,只能爆破。
我们这里分两类进行讨论。这里的方法比较广,根据情况来用,不止局限于强壳或者没加壳的情况。
首先是http,即远程访问一个网页,根据网页的内容来判断的情况。
http是最简单的,遇见http不代表一定要扔od了。你可以先抓包,看看这个东西到底访问了什么页面。
这里注意善于运用百度,类似飘零、cc这样的网络验证系统是非常容易识别的。像我一样的萌新们,第一眼可能会看不出到底是一个什么网络验证系统。
(这里只讨论过登陆,不讨论存在其他必要数据的情况,否则请回到第一大类)
但是如果你抓包了,你就应该能看到类似的话:
GET http://www.xxx.com/user_verify.php?username=这里是你输入的用户名&sn=注册码
那么,你完全可以把user_verify.php这个文件名拿到百度上去搜索嘛~(这里这个user_verify.php是我随便脑补的,实际上不存在)
一般来说,这样就能很容易识别出这个系统到底是什么。啥?什么都没搜到?不怕,我们继续往下看
当你信息收集完毕了……
知道了基本的协议,我们就可以分类来搞定它了。这里先看看对于http的一些对策。
1.经过抓包研究,已经知道了这是个什么系统,比如飘零。那么直接山寨之,可以抓包或者上od来拿到必要的连接信息,然后用现成的软件一键山寨。
2.抓包,各种搜索之后不清楚这是个什么系统,但是能够猜到如果注册码正确能够返回什么——那么修改掉hosts,本地搭建服务器,手动山寨之。
3.抓包,不清楚这是个什么系统,也猜不到这是什么,但是发现这个软件是.net写的——反编译,直接改代码,搞定。
4.抓包,发现是https——可以用https代{过}{滤}理来继续抓包,但是更建议脱壳od。
5.抓包,明白该怎样山寨,但是修改了hosts之后触发了暗桩——od清理了暗桩然后爆破,或者是别在电脑上做手脚,路由器大家都有吧,直接在路由器的域名解析上做手脚,相当于硬件山寨!
6.完全不知道这是个什么系统,或者这个系统是作者自己写的,绕了一大圈都没发现什么有价值的东西。那么,你能做的就只有上od了。直接爆破。
7.试图od然后遇到vmp这类的壳?查看内存,揪出网络验证地址然后山寨,这招基本上是通杀的
另外,学过渗透的应该知道,这种网络验证是基于web的,如果服务器程序本身有漏洞,拿下服务器不商量。这样还有几率还能成功破解第一大类里面的那些特殊数据。
http说完了,我们再来谈谈数据库。
相比起http来说,远程连接数据库的做法破解起来会更加简单。这要从数据库的工作原理来说起。
如果想要远程连接一个mysql或者sqlserver这样的数据库,那么软件一定内置了一个数据库地址和账号。这和http的机理相仿——你必须登录进数据库才能操作数据嘛~
但是这里你要注意,我用了一个“操作”词语,而不是“读取”。为什么呢?
和http比起来,数据库在没有故意限制的情况下,是可以双向的。如果这个软件内置的数据库账号权限足够强大,你理论上是可以在数据库里面执行任意指令的。比如查询、删除、添加、更新等等,都可以做到。而正因为数据库的方便性,开发起来比较简单,很多人喜欢用它来开发如注册呀、登陆呀这样的东西。
所以,问题来了——如果你无法修改软件,或者不想修改软件,那么最关键的就是如何去找到这个数据库地址和账号。数据库连接是加密的,通过抓包肯定不行。但是抓包也是有必要的,能让你快速识别出这是否是一个数据库类型的网络验证。
那么?我们怎么办呢?还是一样,分情况来。
首先是如何判断这是一个数据库类型的网络验证:
1.抓包,发现程序访问了一个端口号为1433(sqlserver)或者3306(mysql)的远程地址【之前的帖子这里端口号书写错误,现已修正】,那么99%可判定为数据库。
2.抓包,发现程序访问了一个很乱的端口号,传送的都是乱码——不妨把这个地址和端口号放到浏览器里看看能不能打开——什么?打不开网页?那应该就是数据库了。
好了,如果你确定了这是数据库,那么……
1.脱壳,直接上od,爆破
2.不脱壳,和破解飘零的原理一样,查看内存,揪出数据库地址和连接账号,直接用数据库管理软件(如navicat)登陆数据库,然后想做什么你就可以做什么了(你可以把他的数据表全下载下来然后本地山寨,或者是添加个超级nb的账号,都可以)
3.脱壳,上c32asm或者是winhex,搜索你抓取到的端口号,有几率直接拿下数据库账号(然后操作同第二条)
对于网络验证来说,核心思想就是这样了,能爆破还是爆破,简单有效。
但是如果确实是不可以爆破,那么不妨山寨一下,有时候山寨比爆破还好用。
转载其它网站
这个好啊 哈哈
页:
[1]