Open GoogleCodeExporter opened 8 years ago
再说一句,听说锐捷用了v3版本的算法我不知道这个说法正不
正确,因为观察整个包来说,3.50后续的版本只
增加了一个而外的数据段,前面基本上没什么改动。所以我��
�猜想是前面的eblog和md5部分一直没变,问题只
在于后面多出来的vz_api算出的那部分数据
Original comment by ben304...@gmail.com
on 23 Oct 2009 at 11:52
看了一下cpp.txt,其中还是有些不准的地方。
V3算法是锐捷官方的一份PDF文档中说的,“2.x版本中只有V2算�
��,3.x中同时存在V2、V3算法”,大概就
是指那32字节和128字节。
那32字节只要将Soar的算法稍作修改就行了(MentoHUST就这么做��
�
http://code.google.com/p/mentohust/),那128字节由vz_api算出,才是难
点重点,md5校验阶段不
知是怎么算出来的,其他阶段就是连续取32个随机数再格式化
。
看你的ida.txt貌似反汇编得不错,要是能把精力用在攻克vz_api�
��就好了。
以下是编写MentoHUST时的Start抓包分析:
目标Mac
源Mac
协议相关(88 8e 01 01)
长度(00 00)
ff ff 37 77 //00 00 13 11
ff //DHCP 00关01开
84 d7 c3 ce //本机IP
00 00 00 fe //子网掩码
84 d7 c3 80 //网关IP
ac b1 ff b0 //DNS IP
29 ac //验证值
00 00 13 11 38 30 32 31 78 2e 65 78 65 //8021x.exe
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03 1e 00 00 //版本3.30 系统0 客户端类型0
00 //不确定,可能没用
00 00 13 11 01
33 //不确定,见过33、7B、43,与长度有关?xrgsu为0028
1a 28 00 00 13 11 17 22
//各不相同,范例如下
[取 1 取 2 取 3 取 4 取5]
35 30 37 38 32 31 32 42 34 45 32 37 45 33 43 37
32 45 34 34 39 34 35 42 37 43 36 33 38 38 34 39
1a 0c 00 00 13 11 18 06 00 00 00 00 //第一次01
1a 0e 00 00 13 11 2d 08 00 00 00 00 00 00(6位本机Mac)
1a 08 00 00 13 11 2f 02
//也有MD5阶段为1a 18 00 00 13 11 2f 12 d1 a0 90 cc 1c 9a 19 75 aa dd c7 37
59 d3 92 2b
1a 09 00 00 13 11 35 03 00 //不使用和第二次00?
1a 18 00 00 13 11 36 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
//也有1a 18 00 00 13 11 36 12 00 00 00 00 00 00 00 00 00 00 45 09 08 08 00 00
1a 18 00 00 13 11 38 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
//IPv6地址
1a 88 00 00 13 11 4d 82
//各不相同,范例如下
35 30 37 38 32 31 32 62 30 34 65 32 37 65 33 63
37 32 65 34 34 38 33 37 36 65 30 38 30 63 32 34
34 30 35 38 30 30 39 36 34 66 66 63 37 64 35 34
37 65 65 31 30 38 65 65 37 63 35 63 37 34 34 33
34 31 32 61 37 62 30 66 37 30 34 32 35 39 65 65
36 62 34 64 30 64 37 62 31 66 62 65 34 62 37 61
37 39 65 39 30 65 32 36 31 35 38 34 30 62 31 62
33 66 37 35 37 61 37 61 33 61 65 31 37 38 33 34
1a 28 00 00 13 11 39 22
00....00
1a 48 00 00 13 11 54 42 36 51 46 34 58 32 4A 59 //可能存在6QF4X2JY
类型|总长度 |Vendor-Id |Vendor 类型|Vendor长度 |属性值
1a|0e |00 00 13 11|2d |08 |00 22 15 86 13 4c
0x17 0x22 32位校验
0x18 0x06 DHCP第几次
0x2d 0x08 客户机MAC
0x2f 0x02/12 未知
0x35 0x03 未知,DHCP?
0x36 0x12 未知,多全为0
0x38 0x12 IPv6地址
0x39 0x22 未知,目前全为0
0x4d 0x82 128位校验
0x54 0x42 未知
以下摘自那份pdf文档,原始的已删除,未备份:
算法配置项,以第一个为例:
“0x”和“Alg”为固定内容, “0x”和“Alg”之间的部分为
Su 版本代号。
主、从版本号用十六进制表示,比如上图中的从版本号,十��
�进制值为 28,表示从版本号为 40。
操作系统类型支持两种:00 表示 Windows,01表示 Linux。
客户端类型支持三种:00 表示 SuA,02 表示 SuForGSN。
防破解算法支持两种:V2 表示 V2 版算法,V3 表示 V3
版算法。
有精力的话还是去研究vz_api生成那128字节的算法吧,其他地��
�基本没必要研究了。
Original comment by hustsoft...@gmail.com
on 23 Oct 2009 at 9:45
我曾经有过在windows下直接注入vz_zpi.dll然后调用的想法,可是
不知道能不能这样操作。
Original comment by ben304...@gmail.com
on 24 Oct 2009 at 7:41
这样不就只能用在 ia32 平台了吗? 不好
Original comment by microcai...@gmail.com
on 30 Oct 2009 at 2:01
虽然不懂什么叫做ia32,但是猜想楼上的意思是说win32,我觉��
�做这种尝试就可以很直接判断v3算法是否只
跟后面的128字节有关,而且实施起来应该并不难吧?
Original comment by ben304...@gmail.com
on 30 Oct 2009 at 4:57
MentoHUST已经这么尝试过了:对锐捷认证的数据抓包做成MentoHUS
T的数据文件,在Start阶段调
用Vz_api.dll生成128字节的随机数写入抓包的Start包相应部分,��
�MD5阶段载入W32N55.dll,然
后调用Vz_api.dll又生成128字节写入MD5包相应部分,MentoHUST生成�
��32字节的算法是准确的,
结果是不可行。不知你打算怎样调用?
Original comment by www.eh...@gmail.com
on 31 Oct 2009 at 5:48
正是你说的那样,其实我并不清楚代码上怎么实现。如果结��
�是那样的话那就可能是vz_api对整个内存的某些
部分加入了运算...
Original comment by ben304...@gmail.com
on 1 Nov 2009 at 11:46
虽然我不懂,但是我觉得可以这样先试一下,反汇编vz_api.dll�
��具体使用了哪些数据,然后改vz_api或者
mentohust的内存使它们完全一致
Original comment by ben304...@gmail.com
on 1 Nov 2009 at 11:52
反正实现这个想法也是有难度的,那个vz_api.dll体积有近百kb��
�功能就是计算那128个字节,很
多人都是弄了一半就弄不下去了。当然,这是我们水平有限��
�你可以试试,说不定你可以解决。
Original comment by www.eh...@gmail.com
on 1 Nov 2009 at 2:54
我不清楚现在大家的研究重点是什么,是算法还是其他的,��
�果现在唯一的问题是算法的话大家都应该关注这
128字节,其它字节基本上都攻破了吧?
而且不好意思,我只是有这些想法,对于C和汇编我实在很菜�
��菜...
或者我尝试一下反汇编vz_api,把里面使用的内存段尽量都找��
�来。
Original comment by ben304...@gmail.com
on 2 Nov 2009 at 2:47
是算法.
这个是大难点阿
Original comment by microcai...@gmail.com
on 2 Nov 2009 at 4:23
3.6,似乎xgrsu还能用。。。
Original comment by sthots
on 8 Nov 2009 at 7:55
各位的V3无法认证是返回什么错误?
非管理员指定的客户端?ip动态类型绑定错误?
Original comment by yzlkes...@gmail.com
on 8 Nov 2009 at 8:11
V3 算法啊。目前还破解出来
Original comment by microcai...@gmail.com
on 15 Nov 2009 at 2:52
是没破解 就是问拿v2认证v3是什么返回
Original comment by yzlkes...@gmail.com
on 21 Nov 2009 at 2:47
ida 跑出来的 谁能看懂?
Original comment by yzlkes...@gmail.com
on 22 Nov 2009 at 4:35
Attachments:
楼上的包在我的机子上没有任何显示,是不是类似于IDA里面��
�TREEVIEW?
Original comment by ben304...@gmail.com
on 23 Nov 2009 at 4:53
不是什么了不起的东西 ida里的流程图
Original comment by yzlkes...@gmail.com
on 23 Nov 2009 at 11:42
楼上别激动,你的C也是ida弄出来的吧,都没什么了不起的,�
��题是这段C你编译过了吗?
Original comment by ben304...@gmail.com
on 23 Nov 2009 at 6:17
没有编译过 而且我没激动啊 汗 看来我措辞不当啊
这个主要看看算法吧
“话说这个DLL不是算法部分的DLL么…为什么会在加载的时候��
�判断自己是不是已经被加载…你给出
的部分就是dllmain,还是个假的链接器构造的入口,真入口在R
awDllMain里面,注册了自身信
息,以及读取了一些非标准资源。
里面有三个超过500行的大函数,三个超过1200行的函数,以及�
��个达到5600多行的函数,读起来
非常没有难度加恶心…反正看到Graph就恶心了…还有代码编写
非常没有水准,大段大段的Ctrl+C
Ctrl+V…”
Original comment by yzlkes...@gmail.com
on 24 Nov 2009 at 5:39
Thinks . I don't have ida. Thanks for de-compile for us all.
Original comment by microcai...@gmail.com
on 24 Nov 2009 at 3:47
Original issue reported on code.google.com by
ben304...@gmail.com
on 23 Oct 2009 at 11:48Attachments: