密码攻击

密码是验证身份的重要方式,而在所有系统中最不安全的环节就是用户使用的密码,渗透测试中密码攻击是很重要的部分,因为大多数人都不愿意采用复杂的密码。

创建字典

可以通过对密码信息收集并分析,创建一个密码字典,提高成功率。

密码信息收集

搜集目标相关的姓名、生日、手机号、车牌号、身份证号等信息。大部分人为了方便记忆,会使用最简单的密码或者与使用者个人的相关信息作为密码。收集这些信息,添加到字典中能提高破解成功率。

密码策略分析

密码策略就是系统对用户设置的密码进行各项限制,如不能仅使用数字、不能使用连续的数字和英文字母等,例如一些软件会设有对应的密码策略,以提高其安全性。通过对这些设备的密码策略进行分析,可以有针对性地创建密码字典。

1.软件/系统固有策略

固有策略就是指软件/系统本身内置的密码策略。如果软件/系统有固有策略,用户在注册账户时,会提醒密码长度、复杂度的最低要求。安装Oracle数据库时,会提醒用户设置的密码是否足够复杂;安装Linux操作系统时,会提示有root用户密码设置要求等。通过对软件/系统固有策略进行分析,可以创建对应策略的字典。

2.加固策略

加固策略是指软件/系统额外的建议标准。例如,在Windows系统中,会使用组策略来加固密码策略,使用户设置更安全的密码。此时,用户则可以使用组策略分析工具,以分析密码策略,然后构建更强大的密码字典。

使用组策略分析密码策略,Win+R,输入gpedit.msc

image-20220125180304006

可以看到Windows系统密码策略的相关设置,如是否启用了复杂性要求、密码最小长度值、使用的期限,以及是否记住密码历史记录等。

3.分析已有密码字典策略

通过分析目标用户相关人群泄漏的密码,获取同类人群的密码设定策略,然后以此构建一个新的字典。

马尔可夫攻击方式(Markov Attack)可以分析已有的密码字典文件,并且统计密码字典每个字符的出现概率、位置分布以及前后关系。然后,结合这些规则,可以使用掩码生成更为有效的密码字典。

Kali 提供了一个名为Stasprocessor工具,支持MarkovAttack技术

statsgen [options] passwords.txt

该工具支持的选项及含义如下:

  • --version:显示版本信息
  • -h,--help:显示帮助信息
  • -o password.masks,--output=passwords.masks:保存掩码和统计信息到一个文件
  • --hiderare:隐藏比例小于1%的统计项
  • --minlength=8:过滤密码最小长度为8的密码
  • --maxlength=8:过滤密码最大长度为8的密码
  • --charset=loweralpha,numeric:指定过滤的密码字符,使用逗号分隔
  • --simplemask=stringdigit,allspecial:过滤密掩码格式,使用逗号分隔

生成字典

收集足够的目标用户信息及密码策略后,就可以根据获取的信息来创建密码字典

1.使用Crunch工具

Crunch是一种密码字典生成工具。它可以按照指定的规则生成密码字典,用户可以灵活地定制自己的密码字典文件

crunch <min> <max> [<charset string>][options]

参数表示生成密码的最小长度;表示生成密码的最大长度;表示指定的字符集;[options]表示有效的选项。

常用的选项及含义如下:

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

Crunch工具默认提供的字符集保存在/usr/share/crunch/charset.lst文件中。可以直接使用这些字符集来生成对应的密码字典

2.使用rsmangler工具

rsmangler是一个基于单词列表关键词生成字典的工具。使用该工具可以基于用户收集的信息,并利用常见密码构建规则来构建字典

rsmangler -f wordlist.txy -o password.txt

以上语法中的选项及含义如下:

  • -f,--file:指定输入文件,即用户收集到的密码单词
  • -o,--output:指定生成的字典文件名

3.使用rtgen工具

rtgen工具用来生成彩虹表。彩虹表是一个庞大的针对各种可能的字母组合和预先计算好的哈希值的集合。其中,生成的彩虹表包括多种算法,如LM、NTLM、MD5、SHA1和SHA256。然后,使用该彩虹表可以快速地破解各类密码。

rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index

以上语法中的参数含义如下:

  • hash_algorithm:指定使用的哈希算法。其中,可指定的值包括lm、ntlm、md5、sha1和sha256
  • charset:指定字符集,提供的字符集文件在/usr/share/rainbowcrack/charset.txt
  • plaintext_len_min:指定生成的密码最小长度
  • plaintext_len_max:指定生成的密码最大长度
  • table_index:指定表单数量
  • chain_len:指定链长度,chain_num:指定链个数
  • part_index:指定块数量

使用rtgen工具生成一个基于MD5的彩虹表

rtgen md5 loweralpha 4 8 010001000 0

彩虹表默认保存在/usr/share/rainbowcrack目录中使用rtsort命令对其进行排序

rtsort <文件名>

破解哈希密码

实际应用中,软件和系统会将密码进行加密,再进行保存。常见的加密方式是各种哈希算法,这类算法可以将不同长度的密码加密成固定长度的字符串。由于加密后的字符串位定长,并且不能被直接逆向破解,所以安全度非常高,也因此被广泛应用。

识别哈希加密方式

下面使用hashid工具,识别哈希密码值6bcec2ba2597f089189735afeaa300d4的加密方式

image-20220129160906014

从输出信息显示了可能使用的哈希密码方式,其中,显示在前面的哈希类型方式可能性更大。可以猜测出,该密码的哈希类型为MD2或MD5

破解LM Hashes密码

LM(LAN Manager)Hash是Windows操作系统最早使用的密码哈希算法之一。下面将介绍使用findmyhash工具破解LMHashes密码的方法。

使用findmyhash工具破解密码的语法格式如下:

findmyhash <algorithm> OPRIONS

以上语法中,参数algorithm表示指定破解的密码算法类型,支持的算法有MD4、MD5、SHA1、SHA224、SHA256、SHA384、SHA512、RMD160、GOST、WHIRLPOOL、LM、NTLM、MYSQL、CISCO7、JUNIPER、LDAP_MD5和LDAp_SHA1。

OPTIONS表示可用的选项。

其中,常用的选项及含义如下:

  • -h <hash_value>:指定破解的哈希值
  • -f :指定破解的哈希文件列表
  • -g:如果不能破解哈希密码,将使用Google搜索并显示结果。其中,该选项只能和-h选项一起使用。

使用findmyhash工具破解LM哈希密码5f4dcc3b5aa765d61d8327deb882cf99的原始密码

findmyhash MD5 -h 5f4dcc3b5aa765d61d8327deb882cf99

成功破解了LM哈希密码5f4dcc3b5aa765d61d8327deb882cf99的原始密码,原始密码为password

直接使用哈希密码值

当无法破解哈希密码时,利用特定的漏洞可以直接使用哈希密码,而无须破解。在Metasploit框架中,可以通过使用exploit/windows/smb/psexec渗透测试模块,来直接使用哈希密码,绕过密码验证。

通过使用exploit/windows/smb/psexec渗透测试模块,来直接利用哈希密码

1.选择exploit/windows/smb/psexec模块,并查看模块配置选项

use exploit/windows/smb/psexec
show options

2.配置选项参赛

set rhosts <远程主机地址>
set SMBUser <设置SMB用户>
set SMBPsss <设置SMB密码>

3.实施渗透

run

路由器密码破解

大部分路由器都是使用用户名/密码的身份验证方式。而每个路由器的管理界面都有初始用户名和密码。由于一些管理员用户的失误,可能会使用初始密码或者弱密码。一旦控制路由器,就很容易对连接该路由器的主机实施各种数据嗅探和欺骗攻击

https://changchen.cc/archives/7/

Last modification:January 29, 2022
如果觉得我的文章对你有用,请随意赞赏