网络安全——网络渗透测试(密码破译)

密码破译

密码是网络空间最基本的身份认证形式,也是网络攻击的主要目标之一。可以说,密码是否安全关系到整个网络的安全,是网络安全的第一道防线。登录网络系统通常需要用户账号和密码,如果用户密码遭到黑客破解,将引起非常严重的后果,例如身份盗窃、入侵破坏、窃取机密信息、网络银行的存款被转账等。因此,提高密码安全意识、强化密码保护措施是十分重要的。在加强密码保护力度的同时,了解密码破解的方法,方能对症下药。对于一名渗透测试技术人员而言,破解密码的能力也是一项必备技能,因为它是获取网络系统访问权限的一种有效方式。

1、密码及其安全性

密码也称为口令(password)​,是一种用来混淆信息的技术,使用者希望将正常的(可识别的)信息转变为无法识别的信息,但这种无法识别的信息部分是可以再加工并恢复和破解的。密码是一门科学,其含义很丰富,在此主要讨论用于登录网络系统的口令。

密码应当易于记忆,且难以猜测或破解。密码的安全性可以用密码强度来评价。密码强度是指一个密码被非授权用户或计算机破译的难度。密码强度通常用"弱"或"强"来形容。​"弱"和"强"是相对的,不同的密码系统对密码强度有不同的要求。

强密码是指独一无二且随机的密码,不容易被猜测或破解。强密码应具备以下基本特征:至少8个字符长;不包含全部或部分用户的账户名;至少包含大写字母、小写字母、数字以及键盘上的符号(如!、@、#)中的3类字符。

弱密码是指易于被猜测或通过枚举法破解的密码,包括短密码、常用密码、系统默认密码等。这些密码通常由一些可能被用作密码的词组成,如字典里的单词、真实姓名或与用户名相关的词汇。一般情况下,这些密码可以被快速破解。采用生日或者宠物的名字作为密码也是弱密码,因为有可能被熟人轻易猜解。以下是一些虽然易于记忆但容易破解的弱密码:

  • 包含字母、特殊字符和数字的密码,如stud@58、jun003@liu。
  • 只包含数字的密码,如195808。
  • 只包含特殊字符的密码,如&%*#@!。
  • 包含字母和数字的密码,如meet56。
  • 只包含大写或小写字母的密码,如MYDATE或者iloveyou。
  • 只包含字母和特殊字符的密码,如days@date。
  • 只包含特殊字符和数字的密码,如819@163。

这些密码在许多情况下经常被使用,可以说具有这些特征的密码都是不安全的。更有甚者,为了简单省事,一些用户喜欢直接输入计算机字母键盘第一排从左往右的6个字母"qwerty"​,这种低级密码难以起到保护作用。有些网络系统虽然要求至少输入8个字符的密码,但有一些用户为方便起见,直接按序输入1至8的阿拉伯数字。若按照8至1逆序输入,其安全性也要高许多。​"password"长期位居全球最危险密码榜首,而"123456""被公认为全球安全性最低的密码。

破解密码的方法千变万化,有多种多样的方法可供选择。从社会工程学到密码存储缺陷,再到安全性低的身份认证服务,任何一种手段都可以破解密码。例如,一些常用的密码破解技术包括枚举法破解(暴力破解)​、字典攻击和混合攻击。除此之外,还有在线攻击、离线攻击,以及非技术性破解等。仔细研究这些密码破解技术有助于提高渗透测试人员的洞察力,从而进一步提高密码安全防护能力。

2、枚举法破解

在对通过扫描获得的目标信息进行归纳推理时,若逐个考察了某类事件的所有可能情况因而得出一般结论,那么该结论是可靠的,则称这种归纳方法为枚举法。

从数学和逻辑学的角度,枚举法破解是一种暴力破解,属于暴力枚举在现实场景的运用。当攻击者获得密码哈希时,常用枚举法尝试登录用户账户,即通过利用大量猜测和枚举的方式来尝试获取用户口令。在实际应用中,枚举法破解通常有如下四种技术形态。

  • 密码猜测(Password Guessing):在不了解账户密码的情况下,使用常用密码字典猜测登录密码,而无须事先了解系统或环境密码。
  • 密码破解(Password Cracking):当获得凭证材料(例如密码哈希值)时,尝试解密密码并恢复可用的凭据,例如纯文本密码。
  • 密码喷洒(Password Spraying):使用多个密码暴力破解一个账号可能会导致该账号被锁定,此时可针对许多不同账户使用单个或少量的常用密码列表,尝试获取有效账户凭据。
  • 撞库(Credential Stuffing):使用受害者历史上泄露的数据获得凭据,通过凭据重叠访问目标系统。

作为枚举法破解的一个典型实例当属字典攻击。字典攻击是一种基于枚举法破解原理的密码破解技术。所谓字典,是指一种文本文档,其中预先(也可手动)加载了一个可能的密码通用列表。这类通用列表(字典)可以从许多网站免费下载得到,其中一些字典含有数百万条单词、短语、数字、符号等。实施字典攻击时,采用相应的应用程序(字典攻击软件)通过尝试使用该密码通用列表来依次猜测用户的密码。如果字典中的某个单词或短语能够成功猜中,攻击者就可以通过该密码访问目标系统的账户,获取敏感信息或实施其他攻击行为。字典攻击通常用于攻击弱密码,因为许多用户使用常见的单词、短语、数字、日期等作为密码,这些密码容易被字典攻击破解。

字典攻击成功的关键是密码字典,Kali Linux不但内置了许多字典文件,还提供了许多密码字典生成工具,如crunch等。使用crunch工具生成的密码可以发送到终端、文件或另一个程序。使用crunch命令生成密码的语法格式如下:

crunch命令常用选项如下:

  • -o:用于指定输出字典文件的位置。
  • -b:指定写入文件的最大字节数。其大小可以指定为KB、MB或GB,但必须与-o START选项一起使用。
  • -t:设置使用的特殊格式。
  • -l:该选项用于当-t选项指定@、%或^时,用来识别占位符的一些字符。

例如,使用crunch命令生成一个密码列表,并保存在桌面上。其中,生成密码列表的最小长度为7,最大长度为7,并使用ahjl0123为字符集。执行该命令后的运行结果如图所示。

执行完成以上命令后,将在桌面上生成一个名为password.txt的字典文件。由于组合生成的密码较多,需要很长时间及存储空间。密码字典文件生成后,使用nano命令打开,可以看到文件中保存的使用crunch命令生成的所有密码。

需要注意,创建密码字典是一个需要耗费一定时间和计算资源的过程;也可以到互联网的相关字典网站下载,但需要遵守相关法律法规,避免侵犯他人的隐私。Kali Linux自带rockyou词典压缩包(/usr/share/wordlists/rockyou.txt.gz)​,解压后就能用。

字典攻击是一种常见的密码破解方式,用于字典破解的软件工具也比较多,常见的有Hashcat、John the Ripper、Hydra等。例如,Hashcat的基本使用方法如下:

其中,-a参数指定破解模式,-m参数指定哈希类型,​hash type是所要破解的密码哈希的类型代码,​hash file是包含哈希值的文件(也可以直接给出哈希值)​,​dictionary file是字典文件。Hashcat能在后台运行,并尝试使用字典文件中的每个密码组合破解哈希值,需要耐心等待破解完成。例如,对于单个哈希值(如1a1fae753c443890539f21163b47a058)​,使用上述字典文件破解哈希值的运行示例如图所示。

为了防止字典攻击,用户应该选用强密码,包括大小写字母、数字和符号,并避免使用常见单词、短语、日期等作为密码。此外,用户还可以使用多因素认证等安全措施来增强密码的安全性。另外,系统管理员可以限制密码尝试次数,设置密码复杂度要求,禁止使用弱密码等方式来防范字典攻击。

3、在线破译

在线破译是指针对在线服务的认证凭证进行用户密码枚举破译,可分为被动在线破译和主动在线破译两种情况。

3.1、被动在线破译

被动在线破译主要指通过搭线联入网络,利用嗅探器对网络进行监听、捕获数据包,获取目标登录信息后进行流量分析来寻找密码。目前,已有许多嗅探器软件工具,如Sniffer、WireShark等,也可以采用某种计算机高级语言如Python自行编程实现。

在局域网上,要想迅速获得大量的账号(包括用户名和密码)​,最为有效的手段是采用嗅探器。目前,使用较为广泛的是WireShark。WireShark是一款可用于监听和分析流经网络流量的软件,通常可用于网络诊断,但也可以用于隐蔽地监听网络流量,实施被动在线破译密码。当网络流量以明文形式在网络上传输时,便可以使用网络监听的方式截获网上传送的数据包。任何直接通过HTTP、FTP、POP、SMTP、Telnet协议传输的数据包都会被WireShark监听。

3.2、主动在线破译

主动在线破译是指与目标系统直接交互破解密码。许多情况下这种破译方法速度较快,但有隐蔽性不强、易被监测发现的缺陷。

主动在线破译常采用一些恶意软件攻陷目标系统来获取密码和其他数据。具体而言,诸如木马、间谍软件和密钥记录器等恶意软件被证明比较行之有效。恶意软件的一种形式是键盘嗅探或击键记录,在用户输入时截获用户的各种信息,而不限于密码。

如果用户密码较为复杂,使用穷举方式很难破解,这时可以通过给用户安装木马病毒,设计"击键记录"程序,记录和监听用户的击键操作,然后对所记录的用户击键内容进行分析判断,破解出用户密码。

在Kali Linux中,Hydra是一款支持几乎所有协议的典型在线密码破解工具,可以爆破http、ftp、ssh、mysql等多种协议和认证机制。使用Hydra需根据其帮助信息配置相关参数。例如,破解HTTP基本认证时,Hydra的配置参数主要为:

  • -l/L:指定要破解的用户(-l指定破解的用户名;-L指定用户名字典文件)。
  • -p/P:指定密码(-p指定密码破解;-P指定密码字典文件)。
  • -s/S:指定要破解的目标URL(-s指定非默认端口;-S采用SSL链接)。
  • -v/-V:详细日志模式/每次尝试仅显示用户名密码。
  • -o:指定结果输出文件。

Hydra的基本命令格式为:hydra-l admin-P password.txt-s http: //localhost/-V http-get/admin,表示使用密码字典文件password.txt,以用户名admin,通过http-get请求尝试登录http: //localhost/admin。若找到正确的用户名和密码,则返回详细信息。

在Kali Linux中打开终端运行Hydra,或者使用Kali Linux应用程序的Applications菜单→PasswordAttacks→Online Attacks→hydra或者hydra-gtk。使用Hydra进行HTTP基本认证破解,执行hydra-Lusername.txt-P passwd.txt-u-e ns http-get://222.190.127.22/WebGoat/(示例)​,结果如图7.17所示。可以看到,Hydra最后显示"1 of 1 targetsuccessfully completed, 113 valid passwords found"​,即找到113个不同的用户名/密码组合,成功登录到服务器。

若要破解FTP服务账号,可参考使用如下Hydra命令格式示例:

若要破解MySQL账号,可参考使用如下Hydra命令格式示例:

若要破解SSH账号,可参考使用如下Hydra命令格式示例:

注意:不要在生产服务器上使用大量密码进行暴力破解,因为可能会中断服务、阻塞正常用户或触发保护机制。

4、离线破译

离线破译是一种攻击者不直接接触目标本身而获取密码的攻击方式,这种攻击方式不仅有效且难以被监测到。一种较新、较先进的高级离线攻击技术是通过预计算的哈希值(通常称为彩虹表)进行攻击,即彩虹表攻击。

4.1、预计算的哈希值(又称彩虹表)

为了保护账号安全,几乎所有网站都不会明文保存用户的密码,而是用哈希算法对密码进行计算,将得到的哈希值保存在数据库中。每次用户登录时将用户提交的密码用同样的算法计算,并将结果与数据库中保存的哈希值进行比对,以验证用户身份。

彩虹表攻击的基本原理是组合使用暴力破解和字典查表法,并在这两者之中取得一个折中,用可以承受的时间和存储空间进行破解。

所谓彩虹表就是一个用于哈希函数(如MD5、SHA)逆运算的预先计算好的表,常用于破解密码的哈希值(或称散列值、指纹、哈希密文、摘要、微缩图等)​。哈希值通常包含在配置文件、数据库、备份文件等中。在Linux系统中,密码通常以SHA-512的哈希值的形式存储在/etc/shadow文件中,如图所示。

4.2、制作彩虹表

利用彩虹表破解密码的基本步骤为:①制作彩虹表(rtgen)​;②排序(rtsort)​;③破解(rcrack)​。其中有许多制作彩虹表的方法,如可以使用RainbowCrack或Cain来生成。对于一台正常运行Windows系统的PC机(需要管理员权限)​,一种制作彩虹表的流程如下:

  • 下载winrtgen软件,双击运行winrtgen。
  • 单击"Add Table"按钮,出现"Rainbow Table Properties"对话框。
  • 在"Rainbow Table Properties"对话框中,从"Hash"下拉列表中选择"ntlm"。
  • 设置"Minimum Length"为4,"Maximum Length"为9,"Chain Count"为4000000。
  • 从"charset"下拉表中选择"loweralpha",单击"ok"按钮保存设置。
  • 单击"ok"按钮,Windows将开始创建彩虹表。

制作彩虹表文件需要花费许多时间和计算资源,具体取决于计算机的速度和所选择的设置。在大多数情况下,用户不需要自行制作彩虹表,主流的彩虹表都可以在网络上下载。彩虹表常用于破解由有限字符集组成的固定长度的纯文本密码。

4.3、利用彩虹表破解密码

通过上述两个步骤就完成了离线密码攻击的重要环节:一是从目标系统提取密码哈希值;二是制作了一个可能存在匹配密码的彩虹表。如果匹配成功,密码破解就成功了。一般来说,获取目标系统的哈希值后,根据哈希值的类型和破解需求,可以选择相应的破解方式和工具实施破解。常用的破解方式包括暴力破解、字典攻击、彩虹表攻击等。一种利用John the Ripper命令破解密码的基本语法格式为:

其中,options为命令参数选项(如--wordlist、--format、--show等)​,password-files为密码字典文件和哈希文件。例如,使用John the Ripper命令破解Linux系统中的/etc/shadow文件时,其命令执行情况如图所示。其中,/etc/shadow为Kali Linux系统哈希值的存放文件,也可以自己指定文件;password.txt是密码字典文件。密码能否成功破解,在于字典是否强大。

彩虹表是一种有效的密码破解手段,但并不是万能的。在操作前通过对原始密码进行"加盐"​,可增加彩虹表的破解难度。所谓"加盐"​,是指在哈希操作前先添加伪随机值以产生不同且唯一的哈希值的方法。在原始密码中"加盐"​,再进行哈希,可增加随机性,加大密码分析的难度。

5、非技术方法破译

获取密码并不仅仅依赖于破解技术,还可以用许多非技术方法获得。常见的一些非技术方法并不复杂,而且也很有效。

5.1、默认密码

探测目标系统的默认密码虽然称不上是一种真正的密码破解方法,但也是获取密码的一种途径。默认密码是系统硬件或软件制造商在开发时设置的。当用户购置了设备并安装使用时,应当及时更改密码。

5.2、猜测密码

猜测目标系统的密码虽然是一种技术含量最低的攻击方式,但有时却很有效,尤其是在那些不具备或未实施密码保护策略的环境中。通常可按照如下步骤猜测密码:①确定一个有效的用户;②确定一个可能的密码列表;③将可能的密码按照可能性排序;④逐一尝试密码,直到获得访问权限或穷尽所有可能的密码。

5.3、网络钓鱼

"网络钓鱼"是指通过发送大量欺骗性电子邮件、伪造网站登录站点等方式,引诱用户给出自己的敏感信息(如用户名、口令、账号、PIN码或信用卡等)的一种攻击活动。网络钓鱼属于社会工程学攻击的一种形式,常用的手段包括社会工程学、假冒电子商务网站、假冒网银、假冒证券网站等。

5.4、分析推理

如果用户使用了多个系统,可以先破解较为简单系统的用户密码,然后用已经破解的密码推算出其他系统的用户密码。有时,许多用户对于所有系统都使用相同的密码。

5.5、密码心理学

许多黑客破解密码并非依赖尖端的破解技术,而只是运用密码心理学,从用户心理入手,细微分析用户的心理及信息,从而猜测出密码。其实,还有很多途径可以获得用户机密信息,密码心理学如果运用得当,也可以快速破解并获得用户机密信息。

相关推荐
TJHHH.2 小时前
XSS-labs-master
前端·web安全·xss
爱学习的程序媛2 小时前
通信协议完整梳理
网络·网络协议·信息与通信·通信协议
故乡dee云3 小时前
华为云国际服务器连不上怎么办?安全组、端口、IP 和网络排查方法
服务器·网络·华为云
佳児素花痴╮3 小时前
服务器模型、网络调试工具、网络协议头分析
服务器·网络·网络协议
2401_895366503 小时前
ospf综合实验
网络
嵌入式阿蔡3 小时前
OTA 实战五(收官):量产落地 Checklist —— 版本号 / 防回滚 / 灰度 / 断点续传
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
IT小白杨4 小时前
短视频多账号运营环境管理指南:指纹浏览器与云手机技术解析
大数据·经验分享·web安全·智能手机·音视频·指纹浏览器
极创信息5 小时前
国产化信创适配认证高频术语:信创适配、软件自主可控、国产化率、代码溯源率、代码自主率、代码开源率是什么?
java·python·struts·eclipse·开源·php·hibernate
我星期八休息6 小时前
扩展—DNS与ICMP
linux·服务器·网络