一次性付费进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:460500587
微信公众号:计算机与网络安全
ID:Computer-network
密码攻击就是在不知道密钥的情况下,恢复出密码明文。密码攻击是所有渗透测试的一个重要部分。如果作为一个渗透测试人员,不了解密码和密码破解,简直无法想象。所以无论做什么或我们的技术能力到了什么程度,密码似乎仍然是保护数据和限制系统访问权限的最常用方法。本文介绍各种密码攻击方法,如密码在线攻击、路由器密码攻击和创建密码字典等。
一、密码在线破解
为了使用户能成功登录到目标系统,所以需要获取一个正确的密码。在Kali中,在线破解密码的工具很多,其中最常用的两款分别是Hydra和Medusa。下面介绍使用Hydra和Medusa工具实现密码在线破解。
1、Hydra工具
Hydra 是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解,如FTP、HTTP、HTTPS、MySQL、MS SQL、Oracle、Cisco、IMAP和VNC等。其密码能否被破解,关键在于字典是否足够强大。很多用户可能对Hydra比较熟悉,因为该工具有图形界面,且操作十分简单,基本上可以“傻瓜”操作。下面介绍使用Hydra工具破解在线密码。
使用Hydra工具破解在线密码,具体操作步骤如下所示。
(1)启动 Hydra 攻击。在 Kali 桌面依次选择“应用程序”—Kali Linux—“密码攻击”—“在线攻击”—hydra-gtk命令,将显示如图1所示的界面。
图1 启动界面
(2)该界面用于设置目标系统的地址、端口和协议等。如果要查看密码攻击的过程,将Output Options框中的Show Attempts复选框勾上。在该界面单击Passwords选项卡,将显示如图2所示的界面。
图2 指定密码字典
(3)在该界面指定用户名和密码列表文件。本例中使用Kali系统中存在的用户名和密码列表文件,并选择 Loop around users 选项。其中,用户名和密码文件分别保存在/usr/share/wfuzz/wordlist/fuzzdb/wordlists-user-passwd/names/nameslist.txt和/usr/share/wfuzz/wordlist/fuzzdb/wordlists-user-passwd/passwds/john.txt中。
(4)设置好密码字典后,单击Tuning选项卡,将显示如图3所示的界面。
图3 基本设置
(5)在该界面设置任务的编号和超时时间。如果运行任务太多的话,服务的响应速率将下降。所以要建议将原来默认的任务编号16修改为2,超时时间修改为15。然后将Exit after first found pair的复选框勾上,表示找到第一对匹配项时则停止攻击。
(6)以上的配置都设置完后,单击到Start选项卡进行攻击,如图4所示。
图4 攻击界面
(7)在该界面显示了四个按钮,分别是启动、停止、保存输出和清除输出。这里单击Start按钮开始攻击,攻击过程如图5所示。
图5 攻击过程
(8)xHydra工具根据自定的用户名和密码文件中的条目,进行匹配。当找到匹配的用户名和密码时,则停止攻击,如图5所示。
2、Medusa工具
Medusa 工具是通过并行登录暴力破解的方法,尝试获取远程验证服务访问权限。Medusa能够验证的远程服务,如AFP、FTP、HTTP、IMAP、MS SQL、NetWare、NNTP、PcAnyWhere、POP3、REXEC、RLOGIN、SMTPAUTH、SNMP、SSHv2、Telnet、VNC和Web Form等。下面介绍使用Medusa工具获取路由器的访问权。
启动Medusa工具,在终端直接运行medusa命令,如下所示:
或者在桌面上依次选择“应用程序”—Kali Linux—“密码攻击”—“在线攻击”—medusa命令,将输出如下所示的信息:
以上输出的信息显示了medusa命令的帮助信息。包括meduas命令的语法、可使用的选项及参数。用户可以根据自己的需要,选择相应的选项获取路由器的访问权。下面看一个例子的运行结果。
使用medusa暴力破解地址为192.168.5.1的路由器,执行命令如下所示:
以上输出的信息是破解路由器密码的一个过程。一般路由器默认的用户名和密码都是admin。但是通常,用户会将密码进行修改。所以这里指定一个密码字典 john.txt,通过该字典对路由器进行暴力破解。从最后一行输出的信息,可以看到路由器的用户名和密码分别为admin和daxueba。
二、分析密码
在实现密码破解之前,介绍一下如何分析密码。分析密码的目的是,通过从目标系统、组织中收集信息来获得一个较小的密码字典。下面介绍使用 Ettercap 工具或MSFCONSOLE来分析密码。
1、Ettercap工具
Ettercap是Linux下一个强大的欺骗工具,也适用于Windows。用户能够使用Ettercap工具快速地创建伪造的包,实现从网络适配器到应用软件各种级别的包,绑定监听数据到一个本地端口等。
使用Ettercap分析密码的具体操作步骤如下所示。
(1)配置Ettercap的配置文件etter.conf。首先使用locate命令查找到Ettercap配置文件保存的位置。执行命令如下所示:
从以上输出信息中,可以看到Ettercap配置文件etter.conf保存在/etc/ettercap/中。
(2)使用VIM编辑etter.conf配置文件。将该文件中ec_uid和ec_gid配置项值修改为0,并将Linux部分附近IPTABLES行的注释去掉。修改结果如下所示:
(3)启动Ettercap。使用Ettercap命令的-G选项,启动图形界面。执行命令如下所示:
执行以上命令后,将显示如图6所示的界面。
图6 Ettercap初始界面
(4)通过使用中间人攻击的方式,收集目标系统上的各种重要信息。通过这些信息来构建可能的密码字典。
2、使用MSFCONSOLE分析密码
使用Metasploit MSFCONSOLE的search_email_collector模块分析密码。通过该模块可以搜集一个组织相关的各种邮件信息。这些邮件信息有助于构建用户字典。具体操作步骤如下所示。
(1)使用MSFCONSOLE。执行命令如下所示:
(2)查询search_email_collector模块。执行命令如下所示:
执行以上命令后,在输出结果中看到以上信息,就表示存在 search_email_collector模块。
(3)使用辅助模块search_email_collector。执行命令如下所示:
输出的信息表示,已切换到search_email_collector模块。
(4)查看search_email_collector模块下有效的选项。执行命令如下所示:
输出的信息显示了 search_email_collector模块中有效的配置选项,根据用户自己的情况配置相应的选项。
(5)下面分别配置DOMAIN和OUTFILE选项,如下所示:
(6)启动渗透攻击。执行命令如下所示:
输出的信息显示了所有 gmail.cm 的邮箱地址,并且将所有信息保存在 fromwillie.txt文件中。此时用户可以根据收集到的邮箱用户信息,猜测它的密码。
3、哈希值识别工具Hash Identifier
哈希值是使用HASH算法通过逻辑运算得到的数值。不同的内容使用HASH算法运算后,得到的哈希值不同。下面介绍使用Hash Identifier工具识别哈希值的加密方式。
(1)启动hash-identifier命令。在图形界面依次选择“应用程序”—Kali Linux—“密码攻击”—“离线攻击”—hash-identifier命令,将显示如下所示的信息:
从输出的信息中看到 HASH:提示符,就表示成功打开了 hash-identifier 命令的终端。此时,攻击时就有LM加密的哈希值。
(2)攻击6bcec2ba2597f089189735afeaa300d4哈希值。执行命令如下所示:
从输出的信息中,可以看到6bcec2ba2597f089189735afeaa300d4哈希值可能是使用MD5加密的。
三、破解LMHashes密码
LM(LAN Manager)Hash 是 Windows 操作系统最早使用的密码哈希算法之一。在Windows 2000、XP、Vista和Windows 7中使用了更先进的NTLMv2之前,这是唯一可用的版本。这些新的操作系统虽然可以支持使用LM哈希,但主要是为了提供向后兼容性。不过在Windows Vista和Windows 7中,该算法默认是被禁用的。
在Kali Linux中,可以使用findmyhash工具破解LM Hashes密码。其中,findmyhash命令的语法格式如下所示:
以上语法中,各个选项含义如下所示。
● Encryption:指定使用的哈希加密类型。
● -h:指定要破解的LM哈希值。
使用findmyhash命令攻击LM Hashes密码。执行命令如下所示:
以上输出的信息是攻击LM Hashes密码的过程。经过一番的攻击,最后获取到哈希值5f4dcc3b5aa765d61d8327deb882cf99的原始密码是password。
如果觉得破解LM Hashes太慢的话,可以使用Metasploit中的psexec模块绕过Hash值。下面介绍使用psexec模块绕过Hash值的方法。
(1)通过在目标主机(Windows 7)上运行Veil创建的可执行文件backup.exe,成功获取一个活跃的远程会话,如下所示:
从以上信息中,可以看到成功打开了会话1。
(2)查看用户权限信息。执行命令如下所示:
从输出的信息中,可以看到该用户的权限是一个普通权限。接下来,使用 bypassuac模块绕过UAC。
(3)设置lyw用户绕过UAC。执行命令如下所示:
从输出的信息中,可以看到此时lyw用户权限已经为SYSTEM。
(4)查看目标主机上所有用户的哈希密码值。执行命令如下所示:
从输出的信息中,可以看到捕获到六个用户的哈希密码值。此时,可以使用SMB psexec模块绕过Hash值。
(5)后台运行会话2。执行命令如下所示:
(6)使用SMB psexec模块,并设置需要的配置选项参数。执行命令如下所示:
(7)启动攻击。执行命令如下所示:
从输出的信息中,可以看到使用“Test”用户成功的打开了一个会话。
四、绕过Utilman登录
Utilman是Windows辅助工具管理器。该程序是存放在Windows系统文件中最重要的文件,通常情况下是在安装系统过程中自动创建的,对于系统正常运行来说至关重要。在Windows下,使用Windows+U组合键可以调用Utilman进程。下面介绍绕过Utilman程序登录系统,就可以运行其他操作。
(1)在Windows界面,启动Kali Linux LiveCD,如图7所示。
图7 Kali Linux引导界面
(2)在该界面选择Live (686-pae),按下回车键即可启动Kali Linux,如图8所示。
图8 Kali Linux操作系统
(3)在该界面打开 Windows 文件系统。在 Kali Linux 桌面依次选择 Places—43GB Filesystem选项,将打开如图9所示的界面。这里的43G表示当前Windows系统的磁盘大小。
图9 Windows磁盘中的文件和文件夹
(4)该界面显示了 Windows 操作系统中的文件和文件夹。这里依次打开Windows—System32文件夹,将显示如图10所示的内容。
图10 System32目录中的内容
(5)在该文件夹中找到 Utilman.exe 文件,将该文件重命名为 Utilman.old。然后复制cmd.exe文件,并将其文件名修改为Utilman.exe。
(6)现在关闭Kali Linux,并启动Windows系统。在登录界面按下Windows+u组合键,将显示如图11所示的界面。
图11 Windows登录界面
(7)从该界面可以看到打开一个命令提示符窗口。在该窗口中,可以执行一些 DOS命令。例如,使用whoami命令查看用户信息,将显示如图12所示的界面。
图12 用户权限信息
(8)从输出的界面可以看到,当前用户拥有最高的权限。此时,就可以进行任何的操作。
学习了绕过Utilman登录后,可以使用mimikatz工具恢复目标系统锁定状态时用户的密码。下面介绍使用mimikatz工具,从锁定状态恢复密码。
在操作之前需要做一些准备工作。首先从http://blog.gentilkiwi.com/mimikatz网站下载mimikatz 工具,其软件包名为 mimikatz_trunk.zip。然后将该软件包解压,并保存到一个USB磁盘中。本例中,将解压的文件保存到优盘的mimikatz目录中。
(1)在系统中安装Utilman Bypass,以便能执行一些命令。
(2)在锁定桌面的Windows桌面按下Windows+u组合键,如图13所示。
图13 启动命令行
默认情况下使用Windows+u组合键启动DOS窗口后,该窗口缓冲区的高度是30。当输出的数据较多时,将看不到所有的内容。所以需要到DOS窗口的属性菜单中,增加窗口的高度,如图14所示。
图14 属性菜单
在该界面选择“布局”标签,修改屏幕缓冲区大小下面的高度值。然后单击“确定”按钮,即可滚动鼠标查看所有内容。
(3)从图13中可以看到,Windows7系统处于锁定状态。此时通过在命令行执行一些命令恢复Windows用户密码。首先确认当前用户的权限,执行命令如下所示:
(4)进入到USB磁盘中,并查看磁盘中的内容。本例中的USB磁盘号F:,执行命令如下所示:
从输出的信息中,可以看到 mimikatz 目录中有三个文件。其中 Win32和 x64表示mimikatz的两个版本。根据自己的系统架构选择相应的版本,本例中的操作系统是32位,所以选择使用Win32。
(5)查看Win32目录中的内容:
从输出的信息中,可以看到Win32目录中有三个文件。其中,mimikatz是一个可执行文件。
(6)运行mimikatz程序。执行命令如下所示:
输出信息显示了mimikatz的一些相关信息,其中mimikatz #提示符表示成功登录到了mimikatz程序。
(7)恢复密码。执行命令如下所示:
或:
将输出如下所示的信息:
从以上输出信息中,可以看到锁定用户的所有信息。如用户名、各种加密的HASH值、域名和密码等。
五、破解纯文本密码工具mimikatz
mimikatz是一款强大的系统密码破解获取工具。该工具有段时间是作为一个独立程序运行。现在已被添加到Metasploit框架中,并作为一个可加载的Meterpreter模块。当成功的获取到一个远程会话时,使用 mimikatz 工具可以很快的恢复密码。下面介绍使用mimikatz工具恢复密码。
演示使用mimikatz恢复纯文本密码,具体操作步骤如下所示。
(1)通过在目标主机(Windows 7)上运行Veil创建的可执行文件backup.exe,获取一个远程会话。如下所示:
从输出的信息中,可以看到获取到了一个与192.168.6.110主机的远程会话。
(2)确认目标用户的权限。执行命令如下所示:
从输出信息中,可以看到当前用户已经是系统权限。此时,就可以进行其他操作了。
(3)加载mimikatz模块。执行命令如下所示:
从输出的信息中,可以看到mimikatz模块已加载成功。
(4)查看mimikatz模块下有效的命令。执行命令如下所示:
执行以上命令后,会输出大量的信息。其中,在Meterpreter中所有的命令都已分类。这里主要介绍一下mimikatz相关的命令,如下所示:
以上输出信息显示了可执行的Mimikatz命令。如回复kerberos信息、livessp信息和哈希信息等。
恢复哈希密码。执行命令如下所示:
执行以上命令后,输出五列信息。分别表示认证ID、包、域名、用户名和密码。从该界面可以看到,当前系统中 bob 用户的哈希密码值中。在哈希密码值中,前面的 lm 表示使用LM方式加密;ntlm表示使用NTLM方式加密。
获取kerberos(网络认证协议)信息。执行命令如下所示:
从输出的信息中可以看到,输出的信息类似msv命令输出的信息。唯一不同的就是,这里可以看到使用哈希加密的原始密码。从以上信息中,可以看到 bob 用户的密码为www.123。
获取wdigest(摘要式身份验证)信息,如下所示:
以上输出的信息就是当前用户摘要式身份验证的信息。
恢复livessp身份验证信息。执行命令如下所示:
以上输出的信息显示了当前用户livessp身份验证信息。
六、破解操作系统用户密码
当忘记操作系统的密码或者攻击某台主机时,需要知道该系统中某个用户的用户名和密码。下面分别介绍破解Windows和Linux用户密码。
1、破解Windows用户密码
Windows系统的用户名和密码保存在SAM(安全账号管理器)文件中。在基于NT内核的Windows系统中,包括Windows 2000及后续版本,这个文件保存在“C:\Windows\System32\Config”目录下。出于安全原因,微软特定添加了一些额外的安全措施将该文件保护了起来。首先,操作系统启动之后,SAM文件将同时被锁定。这意味着操作系统运行之时,用户无法打开或复制SAM文件。除了锁定,整个SAM文件还经过加密,且不可见。
幸运的是,现在有办法绕过这些限制。在远程计算机上,只要目标处于运行状态,就可以利用Meterpreter和SAM Juicer获取计算机上的散列文件。获得访问系统的物理权限之后,用户就可以在其上启动其他的操作系统,如在 USB 或 DVD-ROM 设备上的 Kali Linux。启动目标计算机进入到其他的操作系统之后,用户可以使用Kali中的John the Ripper工具来破解该Windows用户密码。
使用John the Ripper工具破解Windows用户密码,具体操作步骤如下所示。
(1)检查当前系统中的硬盘驱动。执行命令如下所示:
输出的信息表示当前系统中有一块磁盘,并只有一个分区。该文件系统类型是NTFS,也是Windows系统的所存放的磁盘。
(2)挂载硬盘驱动。执行命令如下所示:
执行以上命令后,没有任何输出信息。
(3)切换目录,进入到Windows SAM文件的位置。执行命令如下所示:
在该目录中,可以看到SAM文件。
(4)使用SamDump2提取SAM文件。执行命令如下所示:
从输出信息中可以看到提取了SAM文件。将该文件的内容重定向到了/root/hash.txt文件中。
(5)运行john命令,实现密码攻击。执行命令如下所示:
2、破解Linux用户密码
破解Linux的密码基本上和破解Windows密码的方法非常类似,在该过程中只有一点不同。Linux系统没有使用SAM文件夹来保存密码散列。Linux系统将加密的密码散列包含在一个叫做shadow的文件里,该文件的绝对路径为/etc/shadow。
不过,在使用John the Ripper破解/etc/shadow文件之前,还需要/etc/passwd文件。这和提取Windows密码散列需要system文件和SAM文件是一样的道理。John the Ripper自带了一个功能,它可以将shadow和passwd文件结合在一起,这样就可以使用该工具破解Linux系统的用户密码。
使用John the Ripper工具破解Linux用户密码,具体操作步骤如下所示。
(1)使用unshadow提取密码散列。执行命令如下所示:
执行以上命令后,会将/etc/passwd/文件与/etc/shadow/文件结合在一起,生成一个叫做linux_hashes.txt的文件,保存在/tmp/目录中。
从输出的结果中,可以看到当前系统中共有三个用户,其密码都为123456。
使用John the Ripper开始破解Linux密码之前,需要使用支持破解不同类型密码散列的John the Ripper版本。如果用错版本或者使用未打补丁的John the Ripper,程序将返回错误信息No password hashes loaded(没有价值密码散列)。大多数现代Linux系统都使用SHA散列加密算法保存密码。
七、创建密码字典
所谓的密码字典主要是配合密码破解软件所使用,密码字典里包括许多人们习惯性设置的密码。这样可以提高密码破解软件的密码破解成功率和命中率,缩短密码破解的时间。当然,如果一个人密码设置没有规律或很复杂,未包含在密码字典里,这个字典就没有用了,甚至会延长密码破解所需要的时间。在Linux中有Crunch和rtgen两个工具,可以来创建密码字典。为方便用户的使用,下面介绍这两个工具的使用方法。
1、Crunch工具
Crunch 是一种创建密码字典工具,该字典通常用于暴力破解。使用 Crunch 工具生成的密码可以发送到终端、文件或另一个程序。下面介绍使用Crunch工具创建密码字典。
使用Crunch生成字典,具体操作步骤如下所示。
(1)启动crunch命令。执行命令如下所示。
执行以上命令后,将输出如下所示的信息:
输出的信息显示了crunch命令的版本及语法格式。其中,使用crunch命令生成密码的语法格式如下所示:
crunch命令常用的选项如下所示。
● -o:用于指定输出字典文件的位置。
● -b:指定写入文件最大的字节数。该大小可以指定KB、MB或GB,但是必须与-o START选项一起使用。
● -t:设置使用的特殊格式。
● -l:该选项用于当-t选项指定@、%或^时,用来识别占位符的一些字符。
(2)创建一个密码列表文件,并保存在桌面上。其中,生成密码列表的最小长度为8,最大长度为10,并使用ABCDEFGabcdefg0123456789为字符集。执行命令如下所示:
从以上输出的信息中,可以看到将生成659TB大的文件,总共有66155263819776行。以上命令执行完成后,将在桌面上生成一个名为 generatedCrunch.txt 的字典文件。由于组合生成的密码较多,所以需要很长的时间。
(3)以上密码字典文件生成后,使用Nano命令打开。执行命令如下所示:
执行以上命令后,将会打开generatedCrunch.txt文件。该文件中保存了使用crunch命令生成的所有密码。
2、rtgen工具
rtgen工具用来生成彩虹表。彩虹表是一个庞大的和针对各种可能的字母组合预先计算好的哈希值的集合。彩虹表不一定是针对 MD5算法的,各种算法都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。
使用rtgen工具生成彩虹表,具体操作步骤如下所示:
(1)切换到rtgen目录。执行命令如下所示。
(2)使用rtgen命令生成一个基于MD5的彩虹表。执行命令如下所示:
以上信息显示了彩虹表的参数及生成过程。例如,生成的彩虹表文件名为md5_loweralpha-numeric#1-5_0_3800x33554432_0.rt;该表使用 MD5散列算法加密的;使用的字符集abcdefghijklmnopqrstuvwxyz0123456789等。
(3)为了容易使用生成的彩虹表,使用 rtsort 命令对该表进行排序。执行命令如下所示:
输出以上信息表示生成的彩虹表已成功进行排序。
八、使用NVIDIA计算机统一设备架构(CUDA)
CUDA(Compute Unified Device Architecture)是一种由NVIDIA推出的通用并行计算架构,该架构使用GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)及GPU内部的并行计算引擎。用户可以使用NVIDIA CUDA攻击使用哈希算法加密的密码,这样可以提高处理的速度。下面介绍使用OclHashcat工具攻击密码。
使用OclHashcat工具之前,一定要确定当前系统已正确安装了NVIDIA显卡驱动。在Kali 中,OclHashcat 默认安装在/usr/share/oclhashcat 目录中。所以需要先切换目录到OclHashcat,再启动OclHashcat工具。执行命令如下所示:
以上输出结果显示了OclHashcat目录下所有的文件。其中,cudaHashcat.bin可执行文件是用于破解密码文件的。在使用该可执行文件之前,先查看下它的帮助文档。执行命令如下所示:
输出的信息显示了cudaHashcat.bin命令的语法格式、可用选项及配置例子等。
了解 cudaHashcat 命令的语法及选项后,就可以指定要破解的密码文件了。执行命令如下所示:
下面对以上命令中的各参数将分别进行介绍,如下所示。
● ./cudaHashcat.bin:表示调用cudaHashcat命令。
● attackfile:指的是攻击的文件。
● -1 ? l? u? d? :表示指定的一个自定义字符集。该选项指定的字符集可以是小写字母、大写字母和数字。
● ?1?1?1?1:表示使用字符集唯一的左掩码。
● ?1?1?1?1:表示使用字符集唯一的右掩码。
九、物理访问攻击
物理访问攻击与提升用户的权限类似。即当一个普通用户登录到系统中,破解本地其他用户账户的密码。在Linux中,普通用户可以通过su命令代替其他用户执行某些操作,意味着该用户能够在Linux/Unix系统中提升自己的权限。在这种情况下,可以使用SUCrack工具暴力破解使用su的本地用户账户的密码,来完成后续的渗透攻击操作。下面介绍使用SUCrack工具攻击该用户。
SUCrack是一个多线程工具,允许用户暴力攻击使用su的本地用户账户的密码。该工具常用的几个选项如下所示。
● --help:查看SUCrack的帮助文件。
● -l:修改尝试攻击登录的用户。
● -s:设置显示统计的间隔时间。默认时间是3秒。
● -a:允许用户设置是否使用ANSI转义码。
● -w:是在SUCrack能够利用的线程数。因为SUCrack是多线程的,用户可以指定希望运行的线程数。这里建议仅使用1个,因为当每个尝试登录失败时,延迟3秒后将重新尝试连接。
使用SUCrack破解本地用户的密码。使用SUCrack命令时,需要指定一个密码文件。否则,将会得到一个搞笑的提示信息。执行命令如下所示:
从输出的信息中可以看到,本地用户root的密码为123456。因为使用su命令,不指定用户时,默认使用的是根 root 用户。所以,执行以上命令后,破解的是根用户 root 的密码。
如果用户想设置两个线程,每隔6秒显示统计信息并想要设置使用ANSI转义码。执行命令如下所示:
微信公众号:计算机与网络安全
ID:Computer-network