购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 口令安全

口令,也称密码,是一个常用的安全保护措施。尽管在账户和权限控制系统中,虽然存在生物特征识别、动态口令等多种身份验证措施,但是口令仍然广泛使用。随着国家对信息安全的重视程度不断提高,空口令、“1234”或“123456”之类的弱口令正在从我们身边大幅度减少,但口令设置方面依然存在以下安全隐患:

(1)工作系统口令通常包括单位、部门或应用系统的名称、电话号码、所在房间号等信息;

(2)个人系统口令通常包括生日、结婚纪念日等重要日期、本人或家人姓名拼音或其缩写等;

(3)利用键盘顺序的口令,例如:qwerty、1q2w3e、1qaz2wsx等;

(4)同一个口令登录多个系统,且口令长期不变。

2.3.1 口令破解技术

个人网络密码安全是整个网络安全的一个重要环节,如果个人密码遭到黑客破解,将引起非常严重的后果,例如,网络银行的存款被转账盗用,网络游戏的装备或者财产被盗,QQ币被盗等。因此网民需要了解密码攻击的手段并采取响应的安全措施保护密码安全,降低账户密码被盗引起的损失。黑客破解口令的方式大致有以下几种:

(1)暴力破解。暴力破解口令是常见的一种口令攻击方式,黑客利用一个海量口令字典,穷举用户口令。随着人们安全意识的增强,登录认证系统通常限制失败登录次数,目前这种攻击方式已显著减少。

(2)中间人攻击。中间人攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探。现在网络通信流量多进行加密处理,所以这种攻击方式也受到了一定限制。但是很多系统依然使用未加密的通信协议,例如TELNET、FTP、HTTP等,攻击者可以从此类未加密通信协议中拦截到敏感数据,从而利用敏感信息访问未授权系统。

(3)系统漏洞破解。

利用系统漏洞破解口令的方式主要有四种:

①利用系统存在的高危漏洞,直接侵入系统,破解口令文件;

②利用系统漏洞运行木马程序,记录键盘输入以获取口令;

③利用登录界面找回口令环节的程序设计缺陷,修改用户口令,登入系统;

④利用系统数据保护机制,解密用户自动保存的口令缓存,获得口令。

(4)社会工程学破解。黑客通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行欺骗、伤害等,以获取得用户口令。如冒充邮件管理员发送邮箱升级信息,把用户引到钓鱼网站,盗取邮箱口令。

(5)高级持续威胁破解。长期搜集攻击目标的各种信息,利用其中的口令设置的安全隐患,形成有针对性的口令表,通过几次手工登录尝试,成功登录系统,这就是高级持续威胁攻击。这种攻击方式比较隐蔽,很多安全设备无法识别,更需要引起我们的重视。

2.3.2 口令防御措施

(1)定期更改口令,新口令与历史口令不要有明显规律,不设置通用口令;

(2)口令设置不要与个人及所在单位有明显的关系,注意个人及单位信息的保密;

(3)采用多因素认证方式,可以减少单一口令失效可能造成的身份失窃概率;

(4)定期对信息系统进行安全评估、安全渗透测试,以便及时发现口令安全隐患;

(5)加大信息安全宣传力度,做到“知己知彼”,从攻击者角度考虑和实施口令安全防御方面的强化措施。

2.3.3 操作系统口令文件

一、 Windows系统口令文件

Windows对用户账号的安全管理使用了安全账号管理器SAM(Security Account Manager)的机制,该机制可用于对本地和远程用户进行身份验证,防止未经身份验证的用户访问系统。

Windows不会以明文的形式保存任何用户的密码,所有用户的密码会以Hash散列格式存储在注册表配置单元中,此文件可凭借System特权在文件管理器访问路径C:\Windows\System32\config\SAM或访问注册表HKEY_LOCAL_MACHINE\SAM获取。为了提高SAM数据库的安全性,微软在Windows NT 4.0之后引入了SYSKEY功能,启用SYSKEY后,SAM文件的磁盘副本被部分加密,而SYSKEY保存在C:\Windows\System32\config\system中,因此,若想获取SAM中的Hash信息,还需额外获取system文件。

Windows活动目录(Active Directory)是微软Windows域网络开发的目录服务,它作为一组进程和服务包含在大多数Windows Server操作系统中,其可以帮助用户快速准确地从目录中找到其所需要的信息。在规模较大的网络中,要把网络中的众多对象,如计算机、用户、用户组、打印机、共享文件等分门别类、井然有序地存放在一个大仓库中,并做好信息索引。拥有这个层次结构的数据库就是活动目录数据库。

运行Active Directory域服务(ADDS)角色的服务器被称为域控制器,它负责对Windows域网络中的所有用户和计算机进行身份验证和授权,为所有计算机分配和执行安全策略。活动目录数据库就保存在域控制器的C:\Windows\ntds\ntds.dit文件中,该数据库保存了活动目录中所有用户属性、密码Hash等信息。例如,当域用户登录到属于Windows域的计算机时,计算机与域控制器之间使用kerberos协议进行通信,域控制器利用活动目录数据库中保存的信息来验证用户身份、颁发票据。同样ntds.dit中涉及凭据等敏感信息是加密的,若想获取这些信息,也需先获取System文件。

二、 Linux系统口令文件

Linux将用户密码保存在/etc/shadow文件中,例如,Linux中添加了新用户tom,并将该用户密码设为abc123,如图2-3所示,/etc/shadow文件也会增加一行tom信息。

图2-3 tom信息一行

/etc/shadow每行条目信息以字符“:”作为分隔符,共有九个字段。

(1)账号名称。

(2)密码哈希。

(3)修改日期。表明上一次修改密码的日期与1970-1-1相距的天数。

(4)密码不可改的天数。如果为0,则表明随时可修改密码。

(5)密码需要修改的期限。如果为99999则表明永远不用改,若为其他数字,如12345,则表明必须在距离1970-1-1的12345天内修改密码,否则密码失效。

(6)修改器前N天发出警告。若根据第5个字段该账号需要在2022-6-20前修改密码,则前N天系统会向对应的用户发出警告。

(7)密码过期的宽限。若该数字为M,则表明账号过期的M天内仍可修改账号密码。

(8)账号失效日期。若该数字为X,则表明距离1970-1-1的X天后,账号失效。

(9)保留。该字段为保留项。

九个字段中的第二个字段为通过哈希算法计算得到的密码的哈希,其格式为:id salt encrypted。其中id如表2-1所示指定了计算密码哈希所使用的算法,通过该表也可知上述增加tom用户密码便是使用SHA-512哈希算法加密后保存在shadow文件中。salt是一个最多16个字符的随机生成的字符串用于增加破解难度。encrypted就是通过哈希算法和salt计算出的哈希值。

表2-1 id对应哈希算法

2.3.4 操作系统口令安全

一、 Windows系统口令安全

Windows本地认证采用SAM Hash比对的形式来判断用户密码是否正确,计算机本地用户的所有密码被加密存储在%SystemRoot%\system32\config\sam文件中,当用户登录系统的时候,系统会自动地读取SAM文件中的“密码”与用户输入的密码进行比对,如果相同,证明认证成功。

对于本地SAM身份验证,我们首先导出SAM、System两个文件,reg save hklm \sam sam、reg save hklm\system system两条命令,如图2-4所示便可导出。

图2-4 导出sam和system

导出成功后如图2-5 所示,可使用Mimikatz工具对其进行解析从而获取用户密码Hash(mimikatz可从https \github.com \gentilkiwi\ mimikatz进行下载),命令为lsadump sam \sam <sam文件路径> \system <system文件路径> 。

图2-5 Mimikatz解析获取Hash

1.LM-Hash和NTLM-Hash

本地认证的过程就是Windows把用户输入的密码凭证和SAM里的加密Hash比对的过程。Windows对用户的密码凭证有LM Hash和NTLM-Hash两种加密算法。LM Hash全称是LAN Manager Hash,Windows最早用的加密算法,由IBM设计。从Windows Vista和Windows Server 2008 开始,默认情况下只存储NTLM Hash,LM Hash将不再存在。

(1)LM Hash计算方式

●用户密码转换为大写,再转换为16进制字符串,若长度不足14字节将会用0补全。

●密码的16进制字符串被分为两个7 byte部分。每个部分转换为比特流,并且长度为56 bit,长度不足使用0在左边补齐长度。

●再分7 bit为一组,每组末尾加0,再组成一组。

●上述步骤得到的两组,分别作为key对"KGS!@#%"进行DES加密。

●将加密后的两组拼接在一起,得到最终LM Hash值。

(2)LM Hash存在着一些固有的漏洞

●密码长度最大只能为14个字符。

●密码不区分大小写,生成Hash的时候统一转化为大写。

●当密码长度小于7个字符的时候,Hash后半部分必定为aad3b435b51404ee,可通过该点快速判断密码长度。

●所有可显示字符中去除回车、制表符、小写英文后再加上补足的0字符共72个字符,LM Hash计算的时候将14个字符拆分为了7+7,因此该密码复杂度为2*72 7 ,明显小于72 14 的14字符的密码理论强度。

● DES密码强度不高。

上述代码为根据LM Hash计算方式编写的密码爆破Python程序,运行上述代码足够多的时间即可破解成功,计算机的计算机能力越强,所耗费的时间就越短。

(3)NTLM Hash计算方式

●将用户密码转化为十六进制格式。

●将十六进制格式的密码进行Unicode编码。

●使用MD4摘要算法对Unicode编码数据进行Hash计算。

● NTLM Hash计算方式,密码长度不再限制14个字符,能够区分大小写,且使用了安全系数高的MD4算法进行加密。之前的LM Hash破解思路不再适用。

(4)破解NTLM Hash的方法

●使用彩虹表、数据库比对进行Hash比对。

● Hashcat字典或暴力破解。

Hashcat号称世界上最快的密码破解工具,它基于cpu gpu规则的引擎,目前已公开的密码加密(哈希)算法基本都支持。如图2-6所示,使用Hashcat进行破解。-m指定算法类型(1000 代表NTLM),-a指定破解模式。

图2-6 Hashcat破解NTLM Hash

破解所耗费时间取决于密码的复杂程度。如图2-7所示,查看破解结果。

图2-7 Hashcat破解结果

对于Windows域NTDS.dit用户密码的获取,首先需要获取ntds.dit和System这两个文件,AD服务运行中会占用ntds.dit文件无法直接拷贝,可使用ntdsutil通过创建快照的方式进行拷贝。

ntds.dit文件是一种ESE数据库文件,ESE即Extensible Storage Engine,可拓展存储引擎,是微软提出的一种数据存储技术,Windows内使用ESE存储的还有Microsoft Exchange Server、Active Directory、Windows Search、Windows Update、Help and support center。如图2-8所示,使用impacket-secretsdump等工具可完成对该文件的解析和哈希提取。

图2-8 impacket-secretsdump解析ntds.dit

二、 Linux系统口令安全

Linux的shadow文件仍可使用Hashcat进行破解,例如,shadow文件中tom用户的密码的哈希为 6 6MKxhTCFnskvx29l SjKpuItPzEHMqBF.ilowJ/QmFqYAbcnfMufaRo1ZV uejjUNOW7gXhQXXerCogc6/QUnVWsZck/SlgOXVGSM4b/,将此Hash保存到文件中,使用以下命令即可进行破解,-m参数中的1800。

-m 1800表明指定破解模式为SHA512(Unix)。

破解所耗费时间取决于密码的复杂程度,如图2-9所示破解结果。

图2-9 Hashcat破解shadow文件结果 +8szIQb228ZOGMDMPcz/EDopysVW/0spXaKzw6HeiTDUhzDt9+KHPyEMaMF8l0Tr

点击中间区域
呼出菜单
上一章
目录
下一章
×