工具:ollydbg2.0 , Wireshark,
步骤:
1. 软件有加壳,要先脱壳,在这里就不说了,另外写了一篇
2. 用Wireshark抓包,发现用的是802.1X的EAP协议,eap具体的协议结构网上有很多的

宽带上网助手认证网络总共要发送3个数据包,1个发起连接请求的广播start包,1个identity包,在这里是用户名包,还有一个则是密码包,若认证成功则会返回success包,之后每隔一段时间服务器就发送request包,客户端回应identity包,直到用户下线或断网,下线则发生off包
3. start包和off包的构造:
OD载入脱壳后的程序,右键->search for->all intermodulelar call中找到pcap_sendpacket函数,双击来到相应的代码,向上找下就发现有4处调用这个函数,在每个函数的最开始都下断点,让程序运行起来,会发现断在第一个start包的构造函数处(因为源程序中有把状态写入日志的无关部分,所以代码有省略):
Address Hex dump Command Comments 00408AA0 /$ 56 PUSH ESI ; 发送start包和off包 00408AA1 |. 68 80000000 PUSH 80 ; /Arg1 = 80 00408AA6 |. E8 E3460000 CALL 0040D18E ; /mycrack.0040D18E 00408AB6 |> 53 PUSH EBX 00408AB7 |. 8A5C24 0C MOV BL,BYTE PTR SS:[ARG.1] 00408ABB |. 80FB 01 CMP BL,1 00408ABE |. 57 PUSH EDI 00408ABF |. 0F85 C0000000 JNE 00408B85 ; 是否是第一个请求包arg1==1? ………………………………… 00408B83 |. EB 10 JMP SHORT 00408B95 00408B85 |> A1 A0984100 MOV EAX,DWORD PTR DS:[4198A0] ; off包时候的服务器mac 00408B8A |. 8BD6 MOV EDX,ESI 00408B8C |. 8902 MOV DWORD PTR DS:[EDX],EAX 00408B8E |. 66:8B0D A4984 MOV CX,WORD PTR DS:[4198A4] 00408B95 |> 66:894A 04 MOV WORD PTR DS:[EDX+4],CX 00408B99 |> E8 428AFFFF CALL 004015E0 ; [mycrack.004015E0 00408B9E |. 80FB 01 CMP BL,1 00408BA1 |. 8B08 MOV ECX,DWORD PTR DS:[EAX] 00408BA3 |. 8D56 06 LEA EDX,[ESI+6] 00408BA6 |. 890A MOV DWORD PTR DS:[EDX],ECX ; 写入本机的MAC地址 00408BA8 |. 66:8B40 04 MOV AX,WORD PTR DS:[EAX+4] 00408BAC |. 66:8942 04 MOV WORD PTR DS:[EDX+4],AX 00408BB0 |. C646 0C 88 MOV BYTE PTR DS:[ESI+0C],88 ; 写入88, 802.1X Authentication (0x888e) 00408BB4 |. C646 0D 8E MOV BYTE PTR DS:[ESI+0D],8E ; 写入8E 00408BB8 |. C646 0E 01 MOV BYTE PTR DS:[ESI+0E],1 ; 写入1 version 00408BBC |. 885E 0F MOV BYTE PTR DS:[ESI+0F],BL ; 写入type,start为1 00408BBF |. C646 10 00 MOV BYTE PTR DS:[ESI+10],0 ; 写入length 0 00408BC3 |. C646 11 00 MOV BYTE PTR DS:[ESI+11],0 ; 0 00408BC7 |. 75 04 JNE SHORT 00408BCD 00408BC9 |. 6A 00 PUSH 0 00408BCB |. EB 06 JMP SHORT 00408BD3 00408BCD |> E8 EE87FFFF CALL 004013C0 ; [mycrack.004013C0 00408BD2 |. 50 PUSH EAX 00408BD3 |> E8 74440000 CALL <JMP.&ws2_32.htonl> ; Jump to ws2_32.htonl 00408BD8 |. 8B3D 68654100 MOV EDI,DWORD PTR DS:[416568] ; ASCII "linkage" 00408BDE |. 8D4E 12 LEA ECX,[ESI+12] 00408BE1 |. 8BD1 MOV EDX,ECX 00408BE3 |. 893A MOV DWORD PTR DS:[EDX],EDI ; 填入link 00408BE5 |. 8B3D 6C654100 MOV EDI,DWORD PTR DS:[41656C] ; ASCII "age" 00408BEB |. 6A 1E PUSH 1E ; start包长度 00408BED |. 897A 04 MOV DWORD PTR DS:[EDX+4],EDI ; 填入age,linkage为trailer部分 00408BF0 |. 56 PUSH ESI ; start包地址 00408BF1 |. 8941 08 MOV DWORD PTR DS:[ECX+8],EAX 00408BF4 |. E8 17360000 CALL 0040C210 ;发送start
在这里离线包和start包差不多,就只是type处不同,start和off包的构造比较简单没有经过任何处理
本文详细解析了使用OllyDbg和Wireshark破解802.1X认证过程的方法。通过分析软件如何构造start包和off包,深入理解认证交互流程。
849

被折叠的 条评论
为什么被折叠?



