赞
踩
本文介绍了主机安全的ssh端口入侵&检测&响应。
包括以下几个内容
1. 熟练使用hydra、msf等平台对ssh服务开展爆破行为
2. 能够在服务器上找到入侵痕迹包括攻击时间、攻击方式、是否成功、攻击源等有价值信息
我们经常会用一些ssh工具直接使用默认端口22,设置记住密码自动登录,但这样如果你的密码不够复杂很容易被攻克
下面我们就来看看ssh攻克的具体方法及解决方式。
攻击主机ip:192.168.171.130(注:这里用kali虚拟机作为攻击主机)
受害者主机ip:192.168.171.121
检测主机ip:192.168.171.120
1. 使用nmap等端口扫描工具探测目标服务器是否存在ssh服务
1)在攻击主机的命令行下输入nmap -sS 192.168.171.121 对目标主机进行端口扫描:
2)检测发现目标主机存在ssh服务,尝试登陆几次判断是否存在登陆次数限制或登陆地址限制情况:
经过多次尝试登陆发现没有存在限制次数登陆和限制登录地址的情况,所以我们可以使用爆破工具加载字典对ssh服务进行爆破了。
2. 使用msf、hydra等工具加载字典对目标ssh服务开展爆破行为,这里使用hydra来做演示。
hydra和msf的使用方法不做过多介绍,否则篇幅无法控制。大家如果有不懂的,可以百度或者联系我。
1)在命令行下使用hydra加载用户名、密码字典对目标ssh服务开展爆破行为:
hydra -L user.txt -P pass.txt ssh://192.168.171.121
2)对爆破出来的用户名密码尝试登陆
ssh victim@192.168.171.121 输入密码后正常登陆:
3)创建SSH免密登陆
3.1)现在攻击主机上生成公钥信息
ssh-keygen -t rsa
3.2)将生成的公钥信息传到受害主机上
一定要注意是公钥文件后缀为.pub。
ssh-copy-id -i .ssh/id_rsa.pub victim@192.168.171.121
输入受害主机的密码后即可。
3.3)尝试可以免密登陆
ssh victim@192.168.171.121 直接登陆不用输入密码。
正常情况下是需要输入密码的,注意标红位置:
至此基本的SSH攻击已经结束了,思路很简单这个应该是基本功无压力。下面的过程就比较有收获了。
1. 登陆目标主机关闭ssh服务、查看被爆破成功账户、判断是否存在ssh免密登陆。
1)关闭ssh服务
systemctl stop sshd 或者/etc/init.d/sshd stop
2)查看被爆破成功的账户
两种方案可以查看到
2.1)第一种是查看ssh日志中的关键字眼 Accepted password for
注意Accepted的第一个字母大写否则匹配不到记录:
cat /var/log/secure | grep "Accepted password for"
从日志中能够发现victim和root账户均被爆破出来。
2.2)第二种是last命令查看登陆地址信息
last 命令效果等同于 who /var/log/wtmp。
3)检查是否存在免密登陆
因为从日志和wtmp记录中我们看到攻击者已经登陆了victim和root账户所以我们需要在这两个账户下面分别查看是否存在ssh公钥信息。
3.1)首先查看普通账户victim的.ssh目录下是否存在authorized_keys文件
ls -l /home/victim/.ssh/
从上面可以看出victim账户存在免密登陆而且还记录到了攻击者服务器的主机名和用户名信息。
3.2)然后查看root账户的.ssh目录是否存在authorized_keys文件
ls -l /root/.ssh/
从结果可以看到root账户下不存在免密登陆。
2. 检查系统用户是否存在异常账号若存在清除异常账户
cat /etc/passwd
无异常账户
3. 检查ssh日志是否存在短时间内大量的尝试登陆行为,从而判断这个登录成功的账户是正常登陆还是异常登陆
查看secure日志文件判断是否存在大量的Invalid user 字眼
cat /var/log/secure | grep "Invalid user"
cat /var/log/secure | grep "Accepted password for victim from 192.168.171.130" 记录登陆成功的时间点然后判断是否跟暴力破解的时间段一致,如果一致则表示该账户是被爆破成功登陆。或者直接找管理员确认登陆信息是否正常。
跟上面的secure日志中的时间点做匹配可以看到该账户是被暴力破解出来的。
4,检查定时任务是否存在异常情况
1)crontab -l查看当前用户的定时任务信息
2)sudo crontab -u root -l 查看root账户的定时任务信息
3)查看/etc/cron.d/文件夹中是否存在文件
能够看到cron.d文件夹中存在定时任务但是内容不含攻击行为。
4)查看/etc/cron.daily/ /etc/cron.weekly/ /etc/cron.hourly/ /etc/cron.monthly/ 这些文件夹下面是否存在定时任务
1. 修改被爆破账户密码增加密码复杂度
分别执行passwd victim 和passwd root命令修改victim和root账户密码。
2. 清除免密登陆信息
删除.ssh/目录下的authorized_keys文件。
rm -rf .ssh/authorized_keys
3,清除定时任务
如果存在定时任务直接删除定时任务文件或者进入到定时任务文件中删除所在行信息即可。
4,增加ssh登陆失败次数限制
编辑sshd_config配置文件修改MaxAuthTries记录。(sshd_config文件路径为 /etc/ssh/sshd_config)
保存退出后重启sshd服务。
再次尝试登陆且输入密码超过2次后会出现如下信息。
再次使用hydra尝试爆破ssh用户名密码。
查看secure日志:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。