绕过某云网络验证思路分析
经过该云网络验证客服允许的情况下,我们注册并购买了测试软件位,并将一个未加壳的exe可执行文件上传到了云端加密系统,接下来我对该验证的免费加密系统进行了简单的分析。
0x00 文件分析
加密类型
从该云端系统下载加密完毕后的程序后,发现文件的体积明显增大7倍左右。从官网的介绍上来看,虚拟引擎应该借鉴了VMP3.X,因为我的调试环境中,3.X以下的可以直接过滤掉。
代码保护比较
PE信息
通过Exeinfo PE文件可以很清楚地看到该加密后程序的PE信息:
文件PE信息
区段信息
经过加密后,区段基本处于不可读阶段,所以我这里还是决定选择了ollydbg
动态调试,希望能够通过运行查看是否能够解密.text
和.data
区段
0x01 猜想验证方式
由于该验证使用了VMP
,并且对于VM虚拟机和debugger
都有检测,这让我想起了以前分析过的一款倒闭的验证:
如果视频无法播放,点击这里试试
当时这款验证也是使用了VMP,不过验证的地址是固定的,特征保持不变,并且在一般的验证上存在逻辑问题,可以在某Call
处将eax
直接置1,即可跳过无条件跳过验证,并且释放源文件。
我猜测此次验证所使用的方法也是大同小异,不过特征可能不会不同。
劣质分析图
0x02 动态调试
配置好OD后,运行该验证,成功解码基址00400000
,并且得到了解码后文件的完整数据段,由此成功证实了我上面的猜想,这种一键加验证的相当于就是套了个验证壳,只要过掉登录验证后,就不会有其他心跳验证。
00401000汇编代码
寻找验证CALL
对于这种自写验证壳的验证弹窗,通常不会调用MessageBox
,而是自写一个信息框提示窗口,常用bp指令为 bp CreateWindowExW
或 bp CreateWindowExA
,通过在这两个地址下断点,在单步回到验证。
单步来到验证壳段后,尝试搜索Unicode和ASCII关键字符,结果如下:
中文字符
从这里可以得知,该验证是由易语言(EasyLanguage)编写,并且使用VMP引擎变异虚拟加密。
在CreateWindowExW
断点后,我们点击登陆按钮,成功断下,并且进行单步跟踪,并且在RETN
处断点跳转,最终跟踪到了验证部分:
验证部分
为了验证猜想正确,我们在该头部断点,并且重新点击登陆,结果成功断下,我们再次进行单步跟踪,查看解码后的数据结果。
单步跟踪后,可以发现程序获取了本机的内网ip和网关:
在一个关键偏移CALL,出现了延迟,并且返回了登录的明文状态码,可以很明确地得知该CALL为验证登录,寄存器和数据地址中也可以很明确地看到返回的json
内容:
Json的相应相应内容
所以这里又给出了一种方法:通过截取数据包,修改返回的JSON相应内容,达到登录效果
JSON内容
code | 状态码 |
---|---|
msg | 提示信息 |
count | 计次 |
data | 附加数据 |
判断状态
通过对JSON
内容的解析,程序获取到各个JSON
参数所对应的值,并且做出判断,判断寄存器eax
是否为0,不为0则跳,为了通过验证我们手动置零或者nop
该指令:
验证思路
这里通过判断寄存器eax
是否为0可以看出,其实是code
对应的值,所以可以通过修改内存中code的值达到通过验证的目的,从而证明截包修改返回数据登录的可行性。
0x03 验证成功
由于内存随机分配,所以无法定位到地址,该验证也仅为1.0版本,目前已将小建议发送给了验证的作者,希望能够对验证进行加固修复,下图为内存补丁后的情况:
相关文章
- 理解分布式一致性:Paxos协议之Multi-Paxos
- 理解分布式一致性:Paxos协议之Basic Paxos
- 理解分布式一致性:Raft协议
- 5G用户带动营收增长KT三季度营收达62174亿韩元
- 你知道什么是路由器吗?
- 看完WiFi发展历程:终于明白了WiFi 6的重要性
- 为啥你的宽带网速,永远没有运营商说的那么快?
- 网络冗余设计中需要考虑的七个因素
- 你的办公室WiFi太慢,可能是被它干扰了!
- IDC调查:只有9%的企业计划使用5G进行物联网部署
- 企业园区网络建设成本高?锐捷极简以太全光网提供“良方”解困局
- 面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵
- 5G 落地进入爆发期,是时候让毫米波登场了
- 每日算法:爬楼梯问题
- 下一代WiFi:出门一公里还有信号!
- 企业在协作工具方面很难跟上安全性和合规性的步伐
- 阿里云域名绑定IP以及二级域名使用手把手教学
- 网络请求避坑,2021新规范-私有网络请求(Private Network Access)
- 内网主从智能 DNS 从此不再烦恼
- 韩国电信网络瘫痪后续 最新补偿方案出炉