- SSH原理
最早的时候,互联网通信都是明文通信,内容都是明文通信,当然在如今,任然存在明文通信,这种情况在学校的网络中比较常见。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。ssh只是一种网络协议,有不同的安全需求,所以就有不同的实现,既有商业,也有开源,在这里,我要介绍的就是在linux下的开源实现。
SSH之所以安全,是因为它用到了公钥加密。不过,这里有一个坑,那就是中间人攻击,关于中间人攻击的说明,我会在以后的博客中更新,在这里只简单的描述一下SSH登录的基本原理。
整个过程是这样的:
(1)远程主机监听到用户的登录请求后,把公钥发给用户;
(2)用户使用这个公钥,将登录密码加密后返回回来;
(3)远程主机用自己的私钥解密登录密码,如果密码正确,就同意用户登录。
这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的”中间人攻击”(Man-in-the-middle attack)。
- ssh服务的版本探测
打开msfconsole控制台,
search ssh //输入该命令,查找与ssh服务相关的命令
我们在查找到的模块列表中找到这样一个版本扫描模块
然后使用该模块,在这里要注意的一点是ssh在这里使用的是默认端口22,所以省略的端口的设置,仅仅设置了主机地址。当然,如果ssh的服务端口不是默认的22,就要借助nmap之类的工具,扫描得到ssh到底使用了那个端口。
3.使用工具hydra爆破ssh
输入以下命令开始爆破
hydra -l(用户名) root -P(爆破字典) /usr/share/wordlists/passwords.txt(绝对路径,passwords.txt为字典文件名,可以将自己的字典加入到该目录下) -V(显示爆破过程) -t(指定线程数) 4 ssh://127.0.0.1(如果是默认端口,可以不写,如果不是默认端口,要加端口xx,如ssh://127.0.0.1:xx)
过程时间比较长,这里花费的时间取决于密码强度和字典的大小,经过一段时间后,密码已经成功爆破出来!