首页
社区
课程
招聘
[原创]EasyConnect VPN简单分析
发表于: 2019-10-3 15:11 22133

[原创]EasyConnect VPN简单分析

2019-10-3 15:11
22133

因为一些学生(包括我)的宿舍在校外,因此无法使用外网进入图书馆访问SCI、IEEE、知网等,这严重阻挡了我的学术热情,于是学校提供了一个VPN软件,学生能够通过它正常访问这些学术资源,这个软件界面如下:



虽然程序已经记住了正确的密码,但由于我忘了我输入的密码是什么,所以突发好奇,想获取这个密码,于是先用spy++看一下,能不能获取到,显然是不能:

好,既然不行,那我就用OD吧,先查一下壳,没有壳:



OD直接载入,运行程序,输入错误的密码,会提示:

好,既然要弹框,那我就对对话框函数下断,但是居然不行,不仅是MessageBox不行,GetDlgItem也不行。

然后我又换了种方法:找登录按钮的响应事件。

这个程序查壳信息是VC++ 6.0编译的,那么需要确定是VC++还是MFC;从模块窗口里可以看到,有mfc42.dll这个模块:

所以这个程序是用MFC写的,双击进入这个模块,输入MFC程序的按钮事件特征码:83 E8 0A。

结果只有一条,如下:

很不巧的是,搜出来的结果并不符合以往的经验,下面是正确的样子:

所以这个方法又舍弃了。

我决定搜索字符串了,哈哈。右键、中文搜索引擎、智能搜索,看看有没有“登录失败”的字符串。

这时就发生了灵异的事件:

前几次调试,搜索的时候,直接能在智能搜索里找到“登录失败”的字符串,然后往后分析差不多就完成了。结果后来准备写笔记的时候,重头开始调试一遍,结果智能搜索搜不到这个字符串了!我重新试了好几次,都找不到。难道我白分析了?

后来,我就乱试,看看OD里还有什么与字符串搜索有关的功能,结果发现一个:右键、查找、所有参考文本字符串。

我使用这个功能后,惊奇的发现了“登录失败”字符串了!

这下我涨经验了,智能搜索不到的字符串能在参考文本字符串里搜到,也许大家都知道,不怕大牛们喷。

好,找到这个字符串后,双击进入,发现左边有个红色线条,说明上面的代码就是重点:

接下来就是重点代码的分析了:

如图所示,序号❶处的call就是客户端发送登录信息到服务器,然后recv后就会返回,如果输入密码错误,这个call就会返回0,如果返回1就说明密码正确。

这个call的返回值就直接影响了序号❷处的跳转,如果返回0,那么计算出来的跳转目的地址就是图中的长线跳转,若跳,则会走向失败!如果返回1,则计算出来的目的地址就是这个jmp下面的一条指令,继续走下去,就会在序号❸处发现用户输入的所有信息:用户名+密码+校验码。

这下就差不多达到目的了,能够知道自己以前输入的密码是什么了,即便忘了也不用去使用找回密码等功能,一切靠自己自力更生。这也是个神奇的程序,能把正确的密码显示出来,可见极其不安全呐。

有人可能会说你调试的时候输入了错误的密码,而且也勾选了记住密码选项,那么程序就记住了你的错误密码,那最后根本运行不到上图中的❸处啊。没关系,这个程序重启的时候记住的还是原来正确的密码,这个就给我们破解提供了方便了。。。


接下来贴一下序号❶的call,跟进去看看,它里面大概是什么功能:

上面的代码就是客户端程序将用户输入的登录发送给服务端,至于怎么验证那是服务端的事情,我们的目的通过逆向客户端就能达到。


最后也有个意外的发现,运行这个程序的时候,进程列表里有个类似服务的字样:

该不会服务端程序也在我机器上吧?这留到下次分析吧。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-10-4 07:41 被BenBenWen编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (13)
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
感谢分享你的分析过程 辛苦
2019-10-3 15:59
0
雪    币: 35602
活跃值: (7155)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
编得很好,支持下。
2019-10-3 16:38
0
雪    币: 10241
活跃值: (2734)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
killpy 感谢分享你的分析过程 辛苦
感谢大佬捧场
2019-10-3 17:05
0
雪    币: 10241
活跃值: (2734)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
ninebell 编得很好,支持下。
欢迎交流
2019-10-3 17:05
0
雪    币: 26588
活跃值: (63242)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
6
感谢分享!
2019-10-3 17:52
0
雪    币: 548
活跃值: (2374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

我这也有一个,希望楼主能继续研究一下,怎么模拟usbkey登录:)

2019-10-3 23:32
0
雪    币: 10241
活跃值: (2734)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
crackwiki 我这也有一个,希望楼主能继续研究一下,怎么模拟usbkey登录:) ![](upload/attach/201910/324649_FUTRQCFJJQEXHJ7.png)
阔以,我再研究一哈
2019-10-3 23:57
0
雪    币: 105
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
膜拜大佬
2019-10-9 23:19
0
雪    币: 10
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哈哈,橹主还不赶紧去把妹,美妙的学生时代啊,时不再来
2019-10-13 14:17
0
雪    币: 548
活跃值: (2374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11

我喜欢桌面上啥图标都没有,干干净净做人做事。但这个程序每次登录都会在桌面新建一个快捷图标,让人很无语。分析了一下,发现关键在SangforCore.DLL中:
改成ret直接让函数返回就不会新建图标了。

2019-10-19 11:25
0
雪    币: 10241
活跃值: (2734)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
12
crackwiki 我喜欢桌面上啥图标都没有,干干净净做人做事。但这个程序每次登录都会在桌面新建一个快捷图标,让人很无语。分析了一下,发现关键在`SangforCore.DLL`中: ![](upload/attach/ ...
阔以的,大兄弟,继续研究
2019-10-20 19:24
0
雪    币: 401
活跃值: (50)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
crackwiki 我喜欢桌面上啥图标都没有,干干净净做人做事。但这个程序每次登录都会在桌面新建一个快捷图标,让人很无语。分析了一下,发现关键在`SangforCore.DLL`中: ![](upload/attach/ ...
也可以用个比较 lowb 点的办法,就是用 bat 来启动程序,然后再把快捷方式删掉,哈哈哈。
2019-10-20 21:31
0
雪    币: 3527
活跃值: (3908)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习了,感谢分享。
2019-11-30 15:51
0
游客
登录 | 注册 方可回帖
返回
//