【网络与系统安全实验】口令破解及防御

【网络与系统安全实验】口令破解及防御

口令的历史与现状

20世纪80年代,当计算机开始在公司里广泛应用时,人们很快就意识到需要保护计算机中的信息。仅用userID标识自己,很容易被其他人得到,出于这个考虑,用户登录时不仅要提供userID来标识自己是谁,还要提供只有自己才知道的口令来向系统证明自己的身份。

口令的作用
口令的作用就是向系统提供唯一标识个体身份的机制,只给个体所需信息的访问权,从而达到保护敏感信息和个人隐私的作用。

口令的出现提高了登陆系统时的安全性,但依然存在问题
1、口令过于简单,容易被破解;
2、过于复杂,不同记录口令的方式会增加口令的不安全性。
3、多数系统和软件有默认口令和内建帐号,而且很少有人去改动它们。主要是因为用户不知道有默认口令和帐号的存在;出于防止故障的观点,希望在产生重大问题时商家能访问系统;多数管理员想通过创建容易记忆的账号和口令或与其他用户共享口令的方法保证不被锁在系统之外,而以上两种都会给系统带来重大安全漏洞。

在这里还需要提到的是:口令必须定期更换。最基本的规则是口令的更换周期应当比强行破解口令的时间要短。

口令攻击方式

口令攻击方式概述

口令破解是入侵一个系统比较常用的方法。
有两种方法可以实现,第一种是手工破解,第二种是自动破解。

手工破解
攻击者要猜测口令必须手动输入且必须知道用户的userID并能进入被攻系统的登陆状态。这种方法虽然比较简单,但是费时间。
手工口令破解的步骤
1、产生可能的口令列表
2、按口令的可能性从高到低排序
3、输入每个口令
4、如果系统允许访问则成功,如果没有成功,则重试。不能超过口令的限制次数。

自动破解
只要得到了加密口令的副本,就可以离线破解。这种破解的方法是需要花一番功夫的,因为要得到加密口令的副本就必须得到系统访问权。但是一旦得到口令文件,口令的破解就会非常的快,而且不易被察觉出来,因为这是在脱机的情况下完成的。速度快的原因是因为使用了程序搜索一串单词来检查是否匹配,这样的话就能同时破解多个口令。
自动破解的步骤
1、找到可用的userID
2、找到所用的加密算法
3、获取加密口令
4、创建可能的口令名单
5、对每个单词加密
6、对所有的userID观察是否匹配
7、重复以上过程,直到找出所有口令为止

词典攻击

词典攻击使用的是一个包含大多数词典单词的文件,利用这些单词来猜测口令。在大多数系统中,和尝试所有的组合相比,词典攻击能在很短的时间内完成。

用词典攻击检查系统的安全性的好处是能针对用户或者公司制定。如果有一个词很多人都用来作为口令,就可以把它添加到词典中。

在Internet上有许多已经编好的词典,包括外文词典和针对特定类型公司的词典。

经过仔细的研究了解周围的环境,成功破解口令的可能性就会大大的增加。所以从安全的角度来讲,要求用户不要从周围环境中派生口令是很重要的。

强行攻击

很多人认为,如果使用足够长的口令或者使用足够完善的加密模式,就能有一个攻不破的口令。事实上,是没有攻不破的口令的,攻破只是一个时间的问题,哪怕是花上100年才能破解一个高级加密方式,起码是可以破解的,而且破解的时间会随着计算机速度的提高而减少。可能10年前花100年才能破解的口令现在只要花一星期就可以了。如果有速度足够快的计算机能尝试字母、数字、特殊字符所有的组合,将最终能破解所有的口令。这种攻击方式叫做强行攻击(也叫做暴力破解)。

使用强行攻击,基本上是 CPU 的速度和破解口令的时间上的矛盾。

还有一种强行攻击叫做分布式暴力破解,也就是说如果攻击者希望在尽量短的时间内破解口令,他不必购买大批昂贵的计算机,而是把一个大的破解任务分解成许多小任务,然后利用互联网上的计算机资源来完成这些小任务,就可以进行口令破解了。

组合攻击

词典攻击虽然速度快,但是只能发现词典单词口令;强行攻击能发现所有口令,但是破解的时间长。而且在很多情况下,管理员会要求用户的口令是字母和数字的组合,而这个时候,许多的用户就仅仅会在他们的口令后面添加几个数字,例如,把口令从 ericgolf 改成 ericgolf2324,而实际上这样的口令是很弱的。

有一种攻击是在使用词典单词的基础上为单词串接几个字母和数字,这种攻击就叫做组合攻击
组合攻击是使用词典中的单词,但是对单词进行了重组,它介于词典攻击和强行攻击之间。

其它的攻击方式

即使口令很安全、无法破解,还是有人会通过其他途径得到口令。下面介绍其它的口令攻击方法。

社会工程学

公司的一些信息是只有雇员和合同方才允许访问的,而其他人是不被允许的,在多数的公司里,如果得到信任,就会被允许有访问这个公司信息的访问特权。在数字化的时代里,把自己的 userID 和口令给了别人,那么别人就可以用这个 userID 去访问一些敏感的信息。但是,如果攻击者能使得公司的某个人确信他是被信任的实体,他就能获得该系统的帐号。 这就是社会工程学——欺骗人们去获得本来无法访问的信息

偷窥

得到口令的另一个简单而又可行的方法就是观察别人敲口令,这种办法就叫偷窥

搜索垃圾箱

有许多的人在丢弃垃圾的时候甚至不把电子邮件、文档、计划和口令撕成两半就丢弃了,更别说粉碎后再丢弃。而且许多公司的垃圾都是丢到一个垃圾箱里,大多数清洁工都是在晚上打扫办公室,如果凌晨2点到一些垃圾箱去找找,会很容易就找出一些相当有用的资料。

口令蠕虫

在2003年,“口令蠕虫”突袭我国互联网,它通过一个名为 dvldr32.exe 的可执行程序,实施发包进行网络感染操作,数以万计的国内服务器被感染并自动与境外服务器进行联接。

该“口令蠕虫”有三个特点
1、是自带一份口令字典,对网上主机超级用户口令进行基于字典的猜测。
2、一旦猜测口令成功,该蠕虫植入7个与远程控制和传染相关的程序,立即主动向国外的几个特定服务器联系,并可被远程控制。
3、该蠕虫扫描流量极大,容易造成网络严重拥塞。

口令攻击是常见的黑客攻击方式,但像“口令蠕虫”这样形成大面积、大规模自动化的网上口令攻击,并致使被攻击系统与国外特定服务器进行连接,是一种新的网络攻击方式。与以往利用操作系统或应用系统的技术漏洞进行攻击不同的是,口令蠕虫所利用的是网上用户对口令等管理的弱点进行攻击。

特洛伊木马

特洛伊木马程序可以直接侵入用户的电脑并进行破坏,它常被伪装成工具程序或者游戏等诱使用户打开带有特洛伊木马程序的邮件附件或从网上直接下载,一旦用户打开这些邮件的附件或者执行了这些程序之后,就在计算机系统中隐藏一个可以在OS启动时悄悄执行的程序。
当连接到因特网上时,这个程序就会通知攻击者。攻击者利用这个潜伏在其中的程序,可以任意地窥视你整个硬盘中的内容,监听键盘敲击行为等,从而悄无声息地盗走用户的口令。

网络监听

如果口令在网络上明文传输,那么很容易通过网络监听来得到网络上传输的口令。
1、如果是在共享式局域网内,用Sniffer就可以嗅探整个局域网内的数据包。
2、如果是在交换式局域网中,可以用ARP欺骗来监听整个局域网内的数据。
3、还可以在网关或者路由器上安装监听软件,从而监听通过网关或者路由器的所有数据包。

重放

为了防止传输过程中口令被监听,系统可能会对口令进行加密,黑客即使监听到了口令密文,也无法知道口令明文。但是黑客可以把截取到的认证信息重放,从而完成用户登陆。

典型的口令破解工具

口令破解器

口令破解器是一个程序,它能将口令解译出来,或者让口令保护失效。口令破解器一般意义上并不是真正的去解码,因为事实上有很多加密算法是不可逆的。大多数的口令破解器是通过尝试一个一个的单词,用知道的加密算法来加密这些单词,直到发现一个单词经过加密的结果和要解密的数据一样,那就认为这个单词就是要找到的密码了。这种方法是目前为止最有效的方法。
这种方法之所以比想象的有效的多的原因是由于许多人在选择密码时技巧性都不是很好。由于用户的密码设置往往都是一些有意义的单词或者干脆就是用户名本身,这样会使得破解器尝试次数大为降低。
从理论上来讲,任何口令都是可以破解的,只是一个时间的问题。

候选口令产生器

候选口令产生器的主要作用是产生认为是可能是口令的单词。
将候选口令加密后的密文与实际口令的密文进行比较。如果一致,当前候选口令发生器中送出来的单词就是要找的密码;如果不一致,则口令发生器再产生下一个候选口令。

根据攻击方式的不同,产生候选口令有三种方法:
1、从字典里面读出一个单词,使用这种方法的原因是许多用户取密码并不是很明智,比如用一个很好记的单词。所以攻击者通常就会将这些单词收集到一个文件里,叫做字典。在破解密码时,就会从字典里选出候选密码。
2、用枚举的方式来产生这样的单词。通常是从一个字母开始,一直增加,直到破解密码为止,通常需要指定组成密码的字符值。
3、综合运用前两种方法,以字典为基础,对字典中的每个单词进行重新组合,如在单词后面接上数字、把两个单词拼在一起、在两个单词中间插入生日等。

操作系统的口令文件

Linux口令文件

Linux系统用户的口令,本来是经过加密后保存在一个文本文件 password 中的,一般存放在 /etc 目录下,后来由于安全的需要把 password 文件中与用户口令相关的域提取出来,组织成文件 shadow,并规定只有超级用户才能读取。这种分离工作也称为 shadow 变换。
因此,在破解口令时,需要做 UnShadow 变换,将 /etc/password 与 /etc/shadow 合并起来。在此基础上才开始进行口令的破解。

查看Linux密码文件命令:cat /etc/shadow

Windows口令文件

Windows 对用户账户的安全管理使用了安全账号管理器(Security Account Manager,简称SAM)的机制。SAM数据库在磁盘上就保存在%systemroot%system32\config\目录下的sam文件中。包含所有组、帐户的信息,包括密码的HASH、帐户的SID等。

在对SAM破解之前,我们首先要获取SAM文件,登陆Windows系统后SAM是被锁死的,我们可以用以下方法获取SAM文件:
1、引导另一个操作系统:利用NTFS DOS的系统驱动来获得对NTFS硬盘的访问权限,抓出SAM。
2、获取备份SAM:Windows会在%systemroot%\reqair目录中备份一个SAM文件,多数管理员都会忘记删这些文件。

口令破解工具

Windows口令破解程序

L0phtcrack

L0phtcrack是一个Windows口令审计工具,能根据操作系统中存储的加密哈希来计算Windows口令,功能非常强大、丰富,是目前市面上最好的Windows口令破解程序之一。

它可以从本地系统、其它文件系统、系统备份中获取SAM文件,从而破解密码。通过四种方式破解口令:快速口令破解、普通口令破解、复杂口令破解、自定义口令破解。
1、快速口令破解
仅仅把字典中的每个单词和口令进行简单的对照尝试破解。只有字典中包含的密码才能被破解。
2、普通口令破解
使用字典中的单词进行普通的破解,并把字典中的单词进行修正破解。
3、复杂口令破解
使用字典中的单词进行普通的破解,并把字典中的单词进行修正破解,并且执行暴力破解,把字典中的字、数字、符号进行尽可能的组合。
4、自定义口令破解
自定义的口令破解可以设置口令破解方式。
字典攻击(dictionary attack)可以选择字典列表进行破解;
混合破解(hybrid attack)把单词数字或符号进行组合破解;
预定散列(precomputed hash attack)利用预先生成的口令散列值与SAM中的散列值进行匹配;
暴力破解(brute force attack)可以设置为字母+数字”、“字母+数字+普通符号”、“字母+数字+全部符号”。

NTSweep

NTSweep 是利用了 Microsoft 允许一个用户改变其它用户口令的机制,它使用的方法和其他口令破解程序不同,不是下载口令并离线破解。

NTSweep首先取定一个单词,使用这个单词作为帐号的原始口令并试图把用户的口令改为此单词。如果主域控制机器返回失败信息,就可知道这不是原来的口令,接着取下一个单词测试。反之如果返回成功信息,就说明这一定是帐号的口令。此方法很隐蔽,因为成功地把口令改成原来的值,用户不会知道口令曾经被人破解过。

NTCrack

NTCrack 是 UNIX 破解程序的一部分,但是在 NT 环境下破解。它不像其他程序一样提取口令哈希,它和NTSweep的工作原理类似。必须给NTCrack一个user id和要测试的口令组合,然后程序会告诉用户是否成功。

PWDump2

PWDump2不是一个口令破解程序,但是它能用来从SAM数据库中提取口令哈希。

Linux口令破解程序

Crack

Crack是最著名的Unix系统上破解UNIX口令的工具之一。使用标准的猜测技术确定口令,旨在快速定位UNIX口令弱点。检查口令是否为如下情况之一:和user id相同、单词password、数字串、字母串。

Crack的工作原理很简单。我们知道Unix加密口令是不会被解开的,这是因为加密算法是不可逆的。所以,一般的口令入侵是通过生成口令进行加密去匹配原口令密码,或直接从网上截获明文口令。
Crack 程序中包含了几个很大的字典库,进行解破时它会按照一定的规则将字词进行组合,然后对之进行加密,再与要解破的加密口令匹配。所以运行Crack通常要占用大量的CPU,并要运行相当长的时间才结束。

John the Ripper

John The Ripper这个软件是由著名的黑客组织UCF编写的,它支持UNIX、DOS、Windows。
对于老式的passwd文档(没有shadow),John可以直接读取并用字典穷举破解。
对于现代Linux的passwd+shadow的方式,John提供了unshadow程序可以直接把两者合成出老式的passwd文件。
四种破解模式:“字典文件”破解模式(Worldlist Mode);“简单”破解模式(Single Creck); “增强”破解模式(Incremental Mode)“外挂模块”破解模式(External Mode)

XIT

XIT是一个执行词典攻击的UNIX口令破解程序。XIT的功能有限,因为它只能运行词典攻击,但程序很小、运行很快。

Slurpie

Slurpie能执行词典攻击和定制的强行攻击,要规定所需要使用的字符数目和字符类型。

口令攻击的综合应用

本地口令攻击

Windows系统口令攻击

背景知识储备

Windows NT、Windows 2000、Windows XP以及Windows 2003中对用户账户的安全管理使用了安全账号管理器(Security Account Manager,简称SAM)的机制,安全账号管理器对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。
安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识都是完全不同的。
安全账号管理器的具体表现在%SystemRoot%\system32\config\sam文件。sam文件是Windows的用户账户数据库,所有Windows用户的登录名及口令等相关信息都会保存在这个文件中。如果我们用编辑器打开这些Windows的sam文件,除了乱码什么也看不到。因为Windows系统中将这些资料全部进行了加密处理,一般的编辑器是无法直接读取这些信息的。

Windows NT, 2000口令攻击

在NT和2000的操作系统中,如果从DOS启动然后删除了sam文件,则当系统重新启动时,会默认生成一个sam文件,并将管理员密码置为空。这样就能轻松登陆系统了。

Windows XP, 2003口令攻击

用于NT和2000的方法对XP和2003的系统并不奏效。因为如果不小心删除了sam文件,系统将无法启动,除非将备份的sam文件(在%SystemRoot %\repair目录下)恢复回来。但是我们知道了上述四种版本的Windows系统的账户密码是基于SAM机制的,那么对密码的破解就可以针对SAM文件进行。

用DOS启动盘启动计算机,并把SAM文件拷贝出来,用软件进行分析破解,则可以得到系统的口令。有很多软件都有分析SAM文件的功能,如L0phtCrack,由于L0phcrack功能强大,密码的破译只是一个迟早的事。
攻击者用DOS启动盘启动后,还可以用%SystemRoot%\repair\asm覆盖%SystemRoot%\ system32\config\sam,这样系统管理员Administrator的密码就恢复成安装操作系统时的密码了,而大部分人在安装操作系统时都将初始密码设置为空或者很简单。
目前有许多相应的软件可以在不登陆系统的情况下修改系统密码,如Passware Kit Enterprise这款软件可以自动把administrator密码修改为12345。
Passware Kit Enterprise还可以找回多种办公室应用程序档案失去或忘记的密码,包括Excel、Word、Windows 2003/XP/2K/NT、Lotus Notes、RAR、 WinZip、Access、Outlook、Acrobat、Quicken、QuickBooks、WordPerfect以及VBA,在此我们只需要使用其中的Windows KEY功能。

Unix系统口令攻击

Unix的加密口令是很难逆向破解的,黑客们常用的口令入侵工具所采用的技术是仿真对比,利用与原口令程序相同的方法,通过对比分析,用不同的加密口令去匹配原口令。
下面介绍口令破解工具Crack的主要工作流程。采用逆向比较法进行口令破解。
1、准备,对口令文件作UnShadow变换。
2、下载或自己生成一个字典文件。
3、穷举出口令字典中的每个条目,对每个单词运用一系列规则,如大小写交替使用,在单词的开头或结尾加上一些数字。
4、调用crypt()函数对使用规则生成的字符串进行加密变换。
5、取出密文口令,与crypt()函数的输出进行比较。
6、循环3到5步,直到口令破解成功。

远程口令攻击

远程口令攻击主要是指网络服务口令攻击,是一种远程在线攻击。许多网络服务,都是通过账号/口令来认证需要访问该服务的用户。 如Email,Telnet,FTP,HTTP等。可以远程进行穷举字典的方式来猜解口令,破解效率很低,而且容易被记录。

攻击过程大致如下:
1、建立与目标网络服务的网络连接。
2、选取一个用户列表文件和一个字典文件。
3、在用户列表文件和一个字典文件中,选取一组用户和口令,按照网络服务协议规定,将用户名和口令发给目标网络服务端口。
4、检测远程服务返回信息,确定口令尝试是否成功。
5、循环2到4步,直到口令破解成功为止。

口令攻击的防御

口令攻击防御概述

防范办法很简单,只要使自己的口令不在英语字典中,且不可能被别人猜测出就可以了。 一个好的口令应当至少有8个字符长,不要用个人信息(如生日、名字等),口令中要有一些非字母字符(如数字、标点符号、控制字符等),还要好记一些,不能写在纸上或计算机中的文件。
保持口令的安全要点如下:
1、不要将口令写下来
2、不要将口令存于电脑文件中
3、不要选取显而易见的信息作口令
4、不要让别人知道
5、不要在不同系统上使用同一口令
6、为了防止眼捷手快的人窃取口令,在输入口令时应当确定无人在身边
7、定期改变口令,至少6个月要改变一次

强口令的选取方法

强口令的定义差别很大,它和单位的业务类型、位置、雇员等等的因素有关。强调这一点是因为会因所处的环境不同而差别很大。定义也会因技术的增强而变化。

基于目前的技术,强口令必须具备以下的特征:
1、每45天换一次
2、口令至少包含10个字符
3、必须包含字母、数字、特殊的符号
4、字母、数字、特殊符号必须混合起来,而不是添加在尾部
5、不能包含词典单词
6、不能重复使用以前的五个口令
7、五次登陆失败后,数小时内口令要封闭

提议用户用句子而不是用单词作为口令。这就要选取一个容易记忆、不含词典中的单词、含有数字和特殊字符的口令。例如,使用每个单词的第一个字母作为口令。比如说,如果口令wIsmtIs#¥%5t,如果就这样记的话是非常困难的,但是如果你记住这句话“When I stub my toe I say “#¥%” 5 times”(我的脚趾头被绊时我说了5次 “#¥%*”),这样的话口令可能就会被记住了。简单的取每个单词的首字母,就组成了一个口令。

保护口令的方法

系统中存的任何口令都必须受到保护,防止未授权泄漏、修改和删除。

未授权泄漏在口令安全中占有重要的地位。
如果攻击者能得到口令的副本,则读取口令后,他就能获得系统访问权。这就是为什么强调用户不能将口令写下或者透漏给旁人的原因。如果攻击者能得到口令的副本,他会变成合法用户,所做的一切最后都会追踪到那个合法用户身上。

未授权修改也很重要,因为即使攻击者无法读到口令,但是可用他所知道的单词修改口令,这样你的口令变成了攻击者知道的值,他不需要知道实际口令就能做到这一点。这在各种操作系统中成了主要问题。

未授权的删除也很重要,因为攻击者删除帐号,或者导致拒绝服务攻击,或者用他知道的口令重新创建该帐号。

要保护口令不被未授权泄漏、修改和删除,口令就不能按纯文本方式存放在系统内,如果系统中存放有包含所有口令的文本文件,很容易被某些人读取并获得所有人的口令。保护口令的一个很重要的方法就是加密。加密能隐藏原始文本, 所以如果有人得到了加密口令,也无法确定原始口令。密码学最基本的形式使把明文隐藏为密文的过程,目的是使它不可读。

一次口令技术

仅从字面上理解,一次性口令技术好像要求用户每次使用时都要输入一个新的口令。 但事实正相反,用户所使用的仍然是同一个重复使用的口令。

一次口令的工作原理(挑战-应答)
1、在用户和远程服务器之间建立一个秘密,该秘密在此被称为“通行短语” ,相当于传统口令技术当中的“口令” 。同时,它们之间还应具备一种相同的“计算器”,该计算器实际上是某种算法的硬件或软件实现,它的作用是生成一次性口令。
2、当用户向服务器发出连接请求时,服务向用户提示输入种子值。种子值(seed)是分配给用户的在系统内具有唯一性的一个数值,也就是说,一个种子对应于一个用户,同时它是非保密的;可以把种子值形象地理解为用户名。
3、服务器收到用户名之后,给用户回发一个迭代值做为“挑战”。迭代值(iteration)是服务器临时产生的一个数值,与通行短语和种子值不同的是:它总是不断变化的。可以把迭代值形象地理解为一个随机数。
4、用户收到挑战后,将种子值,迭代值和通行短语输入到“计算器”中进行计算,并把结果作为回答返回服务器。
5、服务器暂存从用户那里收到回答,因为它也知道用户的通行短语,所以它能计算出用户正确的回答,通过比较就可以核实用户的确切身份。
我们可以看出,用户通过网络传给服务器的口令是种子值,迭代值和通行短语在计算器作用下的计算结果,用户本身的通行短语并没有在网上传播。只要计算器足够复杂,就很难从中提取出原始的通行短语,从而有效地抵御了网络监听攻击。又因为迭代值总是不断变化的,比如 每当身份认证成功时,将用户的迭代值自动减1,这使得下一次用户登录时使用鉴别信息与上次不同(一次性口令技术由此得名),从而有效地阻止了重放攻击。总之,与传统口令技术的单因子(口令)鉴别不同,一次性口令技术是一种多因子(种子值,迭代值和通行短语)鉴别技术,其中引入的不确定因子使得它更为安全。

生物技术

生物识别在近年内得到蓬勃发展,无论是国内,还是在美国等发达国家,或是在各个行业,各个领域,指纹ATM、指纹电子商务、指纹网络管理、指纹加密文件,指纹财务管理、指纹ERP都不乏生物密码时代的成功案例。

小结

本章的主要内容就是关于口令的攻击和防御,介绍了口令的重要性和口令的供给方法和防御。
攻击方法主要介绍了词典攻击、强行攻击和组合攻击三种比较典型的攻击方法,还有一些其它的攻击方法;
而防御的方法主要是介绍了强口令、加密和一次性口令的方法。

  • 4
    点赞
  • 19
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

Goallegoal

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值