目录
一.实验目的
二.实验原理
三.实验内容
一.收集信息
二.猜解密码
三.密码强度检测
源码
测试用例
程序输出结果编辑
四.小结与讨论
1.举出保护个人敏感信息的方法(最少三点)。
2.如何提高你的密码强壮性,以避免黑客利用密码心理学猜解你的密码?
一.实验目的
1.理解社会工程学的概念
2.掌握获取敏感信息的方法
3.提高自我信息防护的意识和方法
4.理解密码心理学的概念
5.理解密码特征分析
6.掌握黑客猜解密码的切入方法
7.掌握如何提高密码强壮性
二.实验原理
一.什么是社会工程学
著名黑客Kevin Mitnick在上世纪90年代让“黑客社会工程学”这个术语流行了起来,不过这个简单的概念本身(引诱某人去做某事,或者泄露敏感信息)却早有年头了。专家们认为,如今的黑客仍在继续采用黑客社会工程学的新老伎俩盗窃密码、安装恶意软件或者攫取利益。
社会工程学(Social Engineering),一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段,取得自身利益的手法。它并不能等同于一般的欺骗手法,社会工程学尤其复杂,即使自认为最警惕最小心的人,一样可能会被高明的社会工程学手段损害利益。
二.社会工程学攻击的特点
社会工程学通常是利用大众对陌生人疏于防范和容易轻信他人的特点,施展诡计让受害者掉入陷阱。该技巧通常以交谈、欺骗、假冒或口语用字等方式,从合法用户中套取敏感的信息,例如:用户名单、用户密码及网络结构,即使很警惕很小心的人,一样也有可能被高明的社会工程学手段损害利益,可以说是防不胜防。网络安全是一个整体,对于某个目标在久攻不下的情况下,黑客会把矛头指向目标的系统管理员,因为人在这个整体中往往是最不安全的因素,黑客通过搜索引擎对系统管理员的一些个人信息进行搜索,比如电子邮件地址、MSN、QQ等关键词,分析出这些系统管理员的个人爱好,常去的网站、论坛,甚至个人的真实信息。然后利用掌握的信息与系统管理员拉关系套近乎,骗取对方的信任,使其一步步落入黑客设计好的圈套,最终造成系统被入侵。这也就是我们常说的“没有绝对的安全,只有相对的安全,只有时刻保持警惕,才能换来网络的安宁”。
熟练的社会工程学使用者都擅长进行信息收集,很多表面上看起来一点用都没有的信息都会被这些人利用起来进行渗透。比如说一个电话号码,一个人的名字,或者工作ID的号码,都可能被利用起来。举个例子,比如说一个社会工程学使用者想从一家信用卡公司获取一些情报,但是又没有相关的证明证明他可以合法的从这家公司拿到这些情报。这时候,他就可以利用社会工程学,从和这家信用卡公司相关的银行收集相关的信息从而达到他的目的。比如说冒充这家银行从信用卡公司取得信息,例如文件或者ID号码证明之类,又或者是经常与信用卡公司进行业务联系的职员的姓名等等。现在的很多公司为了方便和快捷,在一些服务上会采用电话服务,这样就更容易让这些攻击者有机可乘,只需提供从银行获得的相关资料,信用卡公司就会把一些敏感的信息给予攻击者。
三.如何保护个人敏感信息
(1)在上网的时候要有自我保护意识,如果出现一些不熟悉、不知名的网站,最好不要进入,因为这些网站中往往就隐藏着陷阱。事实上,当您上网浏览的时候,尤其是需要发送某些包含个人隐私信息的时候,很容易在所经过的网络上留下自己的踪迹,如果这些蛛丝马迹不幸被黑客截获并加以利用,后果可想而知。尤其是现在,电子商务蓬勃发展,在一些商务网站购物时,有时需要注册成为某些网站的会员,这时就存在隐私保护的问题,有些不必要填写的隐私最好不要写。不少网迷在电子银行开设了账户,有了自己的电子钱包,上网时就更要小心谨慎了。
(2)要经常清理浏览器缓存,浏览器的缓存中会保留许多我们的上网记录,时常清理它们有助于保护个人资料。
(3)设置受限站点。有一些黑客站点,会恶意窃取用户信息,在充分了解了这类网站基本信息的情况下,如果想防止自己及家人不小心撞到这类网里时被“套牢”,可以把这些网站列到浏览器的“黑名单”里,使浏览器能够自动拒绝这些网站发出的某些对用户不利的指令。
(4)对一些陌生邮件也要提防。如果在邮箱里发现了可疑的邮件,一定不要打开,特别是不要登录邮件中提供的不明网站,以免“中毒”。
三.什么是密码心理学
密码心理学就是从用户的心理入手,分析对方心理,从而更快的破解出密码。掌握好密码心理学可以缩短破解时间,快速获得用户信息。
密码心理学的研究者做过一个实验,实验是这样设计的:随机抽取100名大学生,让他们每人写下两个单词,并且告诉他们,这两个单词将用作重要系统的管理员密码,请慎重选择。
这个实验的结果令人相当吃惊:37人使用了自己的中文姓名全拼或者简拼;23人使用了常用的英文单词如hello,good等;18人选择了计算机中常用的单词如system,admin,administrator等;7人使用了自己的生日如19801010,801010,101080等。这项实验的目的就是为了查看一般计算机用户在选择重要密码时的心理状态,按照用户选择密码的依据,我们不妨将这些依据分类,每一类称为一个密码特征,那么一个密码就是由一个或者多个密码特征组合而成的。
密码本身的保密性是来源于其随机性,整个密码的被猜中概率(P)是多个密码特征概率的乘积,只有所有密码特征概率(Pi|i=1,2,3,……n)都处在一个较低的水平上时,整个密码才是安全的。可以用公式表达成:
P(c)=P1×P2×P3×……×Pn
我们还可以看出,当特征数量增多时(即n比较大),密码的安全性也较高。
然而实验结果显示出了某些心理状态的高概率分布——姓名被选中的概率高达37%,简单英语被选中的概率高达23%。这意味着一个采用操作员姓名拼音做密码的计算机有37%的概率被攻破,这样的密码基本上已经完全丧失功能了。
四.密码特征分析
我们常用的一些密码特征分析如下:
1.姓名特征
非常不赞成使用,无论是拼音全拼简拼还是英文名,都具有十分高的被猜中概率,非常不安全。
2.数字特征
这些特征包括生日、电话、员工号码、门牌号码等。纯粹的数字密码假设有N位,那么每位的独立被猜中概率为1/10,密码整体完全被随机猜中的概率为1/(10N);而我们如果采用了字母和数字混合的方式构造N位密码,则它的完全被随机猜中的概率降为1/(62N),当N>4时,两者的概率相差将非常大。
3.长度特征
长度是另外一个关键特征,过短的密码会很容易被暴力破解(穷举)。0位的密码会使大部分人成为入侵者,也会让一些人自豪的自称为“黑客”,并在别人桌面上留下一份“黑客声明”。一般来讲,应用于关键计算机系统的8位以下的密码都是不推荐的。当然过长的密码可能不便记忆也不便输入,一般很少见到有人使用一个包含256个字符的密码。
4.密码关联概率
所谓密码关联概率,是指同一个系统管理员在不同应用场所所使用的密码之间相同或者具备某确定规律的概率。不幸的是,大部分人都使用了高度关联的密码。举例来说,一个用户用“Hu73WQ0Oue31Nmvb4”作为自己计算机管理员密码(很高兴的看到,这个用户已经采用了非常安全的密码),但是不幸的是他的疏忽造成了此密码被泄漏,更加不幸的是他在网上银行、网上私人空间等均采用了相同密码——后果是可想而知的。另外一个例子是某企业网络中有100台计算机,计算机1号的管理员密码是“admin001”,2号计算机的密码则是“admin002”。依据这两条信息,弱智也能猜到3号计算机的密码是“admin003”——遗憾的是,许许多多管理员的智力,并不比弱智好多少,原因居然是:他们认为自己太聪明了!
5.用户名特征
用户名与密码配对使用,然而这里也有大量玄机。此特征中被猜中概率最高的行为,就是采用了与用户名一样的密码。那么用户帐号“admin”使用“adminpassword”做密码安全吗?我告诉你,它的安全性仅仅比采用“password”做密码好一点点。此外,本文开头所描述的案例中还暴露了一个问题,那就是计算机中应该只允许必须要用的帐户存在,大部分人并不需要使用系统默认的“Administrator”或者“guest”登录,那么就应该删除此帐号。
6.有效期特征
许多人懒于定期修改密码,这样,一个儿时的玩伴可能在你80岁的时候窃取你银行中的所有养老金,而你却不知道何人所为。有效期特征是所有特征中非常有趣的一个,它拥有一个时间参数——随着当前密码应用时间的增加,此特征被猜中的概率也在增加。增加的原因可能来自于越来越多的个人信息、习惯被黑客所掌握;也可能是有一台超级计算机正在用穷举法破解你的密码,并预计在一个月后得到结果;也可能是一个黑客早已得到你的密码,可是为了不至于很快被警察捉到,于是等到1年之后才动手;如果你怀疑自己的帐号可能被他人登录过却并没有损失,不要迟疑,立即修改密码——黑客可能嫌你帐户中的金额还不够多,等着你将家里那100万元存入呢!
7.大众密码
“aaa”、“123456”、“abcd”是不是密码呢?是的,而且还被许多人应用着。这些密码同样也被黑客放在黑客词典的首页上。这样的密码除了好记一些,毫无安全性可言。
密码特征还有许多,这里列出的,都是容易遭受黑客尝试的一些。要获得比较安全的密码,那么就应该尽量选择那些不容易被想到的密码特征来组合自己的密码并启用密码策略。在WindowsXP系统中,密码策略在控制面板中的“性能和维护-管理工具-本地安全策略-帐户策略-密码策略”中。密码策略对我们上面提到的一些特征进行了强制处理。
五.黑客猜解密码的切入方法
黑客猜解密码的基本思路:一般猜解、利用搜索引擎猜解和配合社会工程学猜解。猜解时主要考虑下面的心理原则:
1.中文拼音
对中国人来说,一般都没有用英文名的习惯,所以很多人用中文拼音做密码;如果去论坛之类的地方,对方会要求注册一个用户名,由于简称很容易被注册,所以一般用全称。如果是密码,一般要倒过来考虑,先从简称再全称,理由是短,输入时间快,而且好记忆。
2.简单数字
数字也是用得很多的,123,123456(因为一般我们的习惯是六位数字,包括银行的存折都是六位,论坛最低要求也是六位),试一下qq的密码,其实不少人是这样的,特别是新手。下面一些也是常用的:1,11,111,123,168,1314,520(特殊意义的数字)……。
3.生日
生日用得特别多,有人把存折和身份证放一起丢了,盗贼用他的生日拿到了钱。这是由于人们怕忘记密码,会造成不必要的麻烦,故使用自己永远都不会忘记的生日做密码。上面说到的六位,所以刚刚好可以这样设置790102,似乎很省事,可是一旦泄露麻烦就大了。一般人都有这样的习惯:六位就是790102,四位是7912。如果那个月和日是只有一位的,也就是1~9,一般人就是用四位的,如:7632,而不是760302,如果日期是双位的,10~31,一般人也就是用到六位而不会是五位,如:760321而不是76321。如果月是双位,一般日就是双位的,如:761203,而一般不是76123。总体来说也就是月和日都是同样位数的。因为这样比较美观。也有人不用日,只用到月,如:763,但对中国人来说7603用得少,因为0看起来是多余的。
4.形式单一
一个做暴力破解机软件的人,只要他思考过,而且技术上能达到的话,破解应该按照这个顺序来:数字→字母→特殊符号。对方用户名一般不用大写字母,都是小写的多。例如用cyh比CYH多,而且用caiyihao比用CAIYIHAO多。密码就要考虑大小写,理论上也应该按照先小写再大写来。因为用户输入大写字不是按shift键而是按caps lock键,所以理论上来说,要使用大写则所有字母都会是大写。
5.信息暴露
一个黑客会从细微入手分析用户的信息。从电子邮箱入手的话可以知道一些什么呢?例如:caiyihao790101@163.com,可以看出来对方是使用姓名的全拼和生日做用户名。也可通过昵称来获得用户信息。例如:QQ昵称为“浩”,很明显名里有“浩”字。
六.针对密码的猜解,如何提高密码强壮性
1.增加长度和样式
密码的位数不要短于6位,使用大写字母和小写字母、字符和数字的集合。
2.避开个人信息
不要以任何单词、生日、数字、手机号做为密码,这种太容易被破解,例如生日,看似有8位,但对于出生在19XX的人,一年只有12个月,一个月最多只有31天,几分钟就可以试出来,都无需程序来计算。
3.增加复杂性
密码中的英文最好有大小写之分;如果在程序允许的情况下,最好能加上英文半角的符号;不要用a、b、c等比较小顺序的字母或数字开头,因为用字典暴力破解的程序,一般都是从数字或英文字母排序开始算的,如果设为z的话,破解的机率就小很多。
4.寻找一种相对复杂的规律
无规律性的密码不好记忆,有种比较简单的方法,例如密码是blueidea,首先在头加一个$号,成为$blueidea,然后在尾加上一个)号,成为$blueidea),这种还是不安全,再把中间的打乱,成为$ideablue),随便把中间的某几个改为大写字母就会成为$IdeabLue),再加上一两个数字成为$I1de9ab9Lu8e20),这样密码的强壮性就大大提高了。如果还是觉得不安全,可以继续把中间的字母打乱;
一些程序或注册入口对密码设定的比较死,只能用数字和字母。这种情况下可以把blueidea改变字母的大小写变成bLUeIdEa,打乱EaIdbLUe,再加上数字成为E9aI4db2LU6e,这样可以安全很多;
还可以用一句话来设定密码,例如“好好学习,天天向上”,先取拼音的第一个字母,hhxxttxs,变成h2x2ttxs,再变成H2X2tTXs,再变成tTXsH2X2,加上头和尾,ItTXsH2X2O,一个强壮的密码就诞生了。
5.强记复杂密码
如果认为上述方法比较麻烦,可以强记两到三个比较复杂的密码,用的时候把它们重新排序,例如常用密码为ItTXs和Lu8e20,组合后为ItTXsLu8e20,再打乱顺序就得到了新密码Lu8eItTXs20。
6.提高个人电脑的安全性
注意在自己的电脑中安装比较可靠的杀毒软件,但如果电脑里有木马的话,再复杂的密码也是没有任何作用的。故不要上不可信的网站,不要让别人很容易的得到你的信息。这包括身份证号码、电话号码、社会安全号码、您的手机号码、您所居住街道的名字等等。
7.掌握网络安全技巧
最好只注册那种用MD5算法进行加密的论坛,那样管理员就无法知道你的密码。
8.定期更改密码
例如每个月的第一个星期五,也不用重新想,可以把密码的排序更改一下,还好记忆。
9.避免同一密码重复使用
不要所有的地方都用一个密码,根据重要和非重要的原则来设定密码。
10.避免个人信息泄露
不要把自己的密码写在别人可以看到的地方,如笔记本,纸巾上等等,最好是强记在脑子里,不要在输入密码的时候让别人看到,多练几次,打快点,旁人自然就看不到了,更不能把自己的密码告诉别人,这样对自己对别人都是很不负责任的。
三.实验内容
一.收集信息
(1)查看并分析目标个人资料,可能具有利用价值的信息
性别 | 男 |
生日 | 6月21日 |
血型 | B型 |
生肖 | 兔 |
星座 | 双子座 |
省份 | 山东 |
城市 | 泰安 |
(2)访问其QQ空间,除照片外,并未发现有价值信息
(3)查看其留言板现实中朋友,可能具有利用价值的信息
真实朋友 | 王建 |
(4)访问王建的qq空间,发现王建的头像照片
(5)使用校内网的高级搜索,配合推测的“王建”个人信息,搜索此人
(6)在所有搜索结果中,配合4中已确定的王建的相貌,排除其他同名者,最终确定王建校内网账号
(7)通过校内网中王建的好友信息,配合目标qq空间中的照片,确定其真实姓名及资料,可能具有利用价值的信息
目标姓名 | 张磊 |
目标学校 | 鲁东大学 |
(8)通过已获得目标的真实姓名和所在学校,通过google搜索查询,可得到如下结果
(9)进入网页,分析详细信息,获得目标的中学信息及毕业年份
(10)我们继续使用google,使用其姓名、大学、中学信息进行信息搜集,甚至发现了此人更多的敏感信息
(11)请将搜集到目标的个人信息填入下表:
姓名 | 张磊 |
性别 | 男 |
手机号码 | 13515455767 |
邮箱 | leileiaideni@126.com |
生日 | 6月21日 |
血型 | B型 |
生肖 | 兔 |
星座 | 双子座 |
省份 | 山东 |
城市 | 泰安 |
大学名称 | 鲁东大学 |
大学入学年份 | 2006 |
大学院系 | 交通学院 |
大学班级 | 0603班 |
中学名称 | 泰安一中 |
中学班级 | 03级八班 |
二.猜解密码
1.点击工具栏“添加账户”按钮,生成欲猜解的账户。
「注」 猜解的账户密码均不大于12位。
2.在C:\创建superdic.txt。
3.分析表1,将所猜到的可能的用户密码保存到C:\superdic.txt中,此文件将作为密码字典。
4.使用LC5工具猜解用户密码,具体操作如下:
(1)点击工具栏“LC5”按钮打开“LC5”实验工具。
(2)选择“session”菜单中的“session options”项,打开“Auditing Options For This Session”对话框,在“Dictionary Crack”栏中点击“Dictionary List”按钮,在对话框中点击“Add”按钮,文件类型设置为所有文件,将创建的superdic.txt添加到字典列表中,点击“OK”按钮完成添加,在“Auditing Options For This Session”对话框中继续点击“OK”按钮完成设置。
(3)返回LC5主界面,选择“Session”|“Import…”(导入)菜单项,在弹出的“Import”对话框中选择“local machine”,选择“Session”菜单项,点击“Begin Audit”(开始审计)开始破解用户口令。
(4)将成功破解到的结果填入表2中:
Host1 | ZHANGLEI |
Host2 | 19870621 |
Host3 | 13515455767 |
Host4 | ZHANGLEI123 |
Host5 | ZL0621 |
Host6 | LEILEIAIDENI |
三.密码强度检测
密码安全强度和字符串的构成有关,字符串中包含的字符类型越多,则安全强度越高。把安全强度分为强、中和弱四种。其中强密码表示字符串中含有数字、大写字母、小写字母和符号这4类字符,弱密码表示只含有一类字符,其余为中密码。要求编程实现:从文件输入字行串列表,输出该字符串作力密码时的安全强度。输出:强密码、中密码、弱密码和不合要求(长度小于8个字符),要求给出源码、测试用例和程序输出结果。
源码
#include<stdlib.h>
#include<string>
using namespace std;
int cnt = 0,a[4]={0};
string str;
int main() {
cout << "请输入一个字符串:" << endl;
cin >> str;
int len=str.length();
for(int i=0;i<n;i++){
if(str[i]<=57 && str[i]>=48){
if(a[0]==0){
a[0]=1;
cnt++;
}
}
else if(str[i]<=90 && str[i]>=65){
if(a[1]==0){
a[1]=1;
cnt++;
}
}
else if(str[i]<=122 && str[i]>=97){
if(a[2]==0){
a[2]=1;
cnt++;
}
}
else{
if(a[3]==0){
a[3]=1;
cnt++;
}
}
}
if(cnt==1){
cout<<"弱密码";
}
else if(cnt==4){
cout<<"强密码";
}
else{
cout<<"中密码";
}
}
测试用例
aaaaa
123456789
1234qwrqwr
1234@qQqqq
程序输出结果
四.小结与讨论
1.举出保护个人敏感信息的方法(最少三点)。
一、要妥善保管好个人信息,尤其是银行卡、手机等信息载体,在网络注册、实名验证时要谨慎填写个人信息,身份证号、支付账号、手机号码等个人私密信息切勿随意泄露;
二、是养成定期修改密码的好习惯,对重要账号(如常用邮箱,网上支付,聊天账号等)必须设置单独密码,绝不一码多用,且密码要设置为数字加字母等较为复杂的组合;
三、是不随意连接不明、免费wifi,不点击短信中非HTTP是开头的不明链接和扫描未知二维码,不轻信电话、短信、QQ、微信中所谓退款、贷款验资、司法协查、商品退款、积分兑换、中奖退税等信息。
2.如何提高你的密码强壮性,以避免黑客利用密码心理学猜解你的密码?
一、拒绝惰性,不同网站设置不同的密码。为了防止你的密码被黑客“撞裤”,不同的网站应该设置不同的密码。
二、口令句密码。在创建口令句时,用户可以将自己置身于任何场景中,甚至是让人有强烈反应的短语。流行语/歌词/名言警句等等大家都很熟悉的句子不适合拿来做口令句,容易被黑客编进密码本暴力破解,熟知的小众的最棒。
三、密码设置要尽可能的陌生。密码中不要体现出你的门牌号、电话号码、名字,身份证后几位,不要设连续的数字,不要设与银行卡密码一样的密码,并且千万不要使用高频密码,例如123456等。
四、经常更换密码。一个密码不要使用太长的时间,建议90天更换一次密码。