背景
正当我打游戏打得尽兴的时候,我舍友发信息过来,附带了一条勒索病毒信息。我的第一反应是:wcwcwc!!不会这么倒霉吧!信息上说只要支付相应的比特币金额,就能恢复数据。这你说给谁会信啊??!!同时也欢迎各位大佬对他的邮箱服务器发起社工攻击,为民除害。
我上网搜了下0.006比特币
对应的人民币金额是多少?what??我那小小的数据竟然要支付两千多块钱来恢复??
接着我顺着邮箱地址,在奇安信勒索病毒搜索引擎上搜到,服务器可能中了以下病毒,均无法解密
对邮箱进行信息收集,没发现多少有价值的东西
本来想先看看日志,看看能不能提取到样本。谁知道舍友说他重装了所有服务!what???
那既然这样的话,目测应该是他的mysql服务设置了弱口令,黑客应该是从他的对外开放服务,然后进入了内部,最后把数据给锁死的。因为弱密码的原因,所以两三下就拿下了该服务。
应急响应流程
首先我们先使用top
手工排查一下有没有创建后门任务,看了下没有什么可疑的进程,CPU占用率也不是很高
查看passwd文件的修改日期,并且查看文件中存在的特权用户,有没有空口令账户等
目测好像也没有什么异常,接着我检查了下开放的端口服务,也没有发现可疑的服务
继续查看定时任务,只有服务器的安全加固和云监控这个定时任务,没发现可疑任务
最后我使用了github中非常好用的一个应急响应脚本,综合检查是否存在rootkit,后门木马等一系列操作,这是下载地址https://github.com/al0ne/LinuxCheck
最后也没发现任何可疑的东西,可能黑客觉得这些信息都没啥价值吧哈哈哈,所以连权限持久化都没做!
溯源
本以为这part就这样结束了的!谁知道来了个梅开二度?好家伙,还进行了爆破,锲而不舍却没成功。
刚刚好证实了他之前没做持久化的事实!!不知道是忘记了还是觉得没价值
立马查了下secure
文件的日志记录,看到他尝试爆破我们的root用户名密码
我在NOVASENSE
上跟踪到这是个韩国的IP,并且初步判断可能是跳板机或者是肉鸡
跟着IP走,我收集到了他的电话号码和一些区块链信息,也没多大价值
紧跟着我收集到了这台主机是被已被攻下了的,证实了这是肉鸡无疑了。是通过SSH服务攻破的,里面还藏了一堆CVE
锁定机子的大体方位
因为一昧地追查肉鸡,不能纵向深入也没多大意思,所以我就没追查下去了
系统加固
- 首先我使用
pwgen
生成10个随机的密码进行设置,因为密码生成器算法相对较好,所以应该也没那么容易被穷举出来
yum install pwgen.x86_64
pwgen -c -n -y -1 12 10
紧接着我把常用的22端口更改为88端口
使用nmap
扫描验证一下结果
- 我将root用户设置为了不可登录,把普通账户提升为超级管理员权限
root:x:0:0:root:/root:/sbin/nologin
lZ:x:0:0::/home/lZ:/bin/bash
- 编写shell脚本,并设置定时任务,将尝试失败20次以上的用户加入到黑名单当中,
*/1 * * * * /bin/bash /root/protectssh/protectssh.sh
#!/bin/bash
#protectssh.sh
#Prevent SSH from being hacked
#SSH配置文件所在位置
SSH_config='/etc/hosts.deny'
#ssh 日志文件位置
SSH_log='/var/log/secure'
#记录尝试登陆超过15次且未登陆成功的ip,以及添加进黑名单的时间日志
Deny_log='/var/lib/ssh_shell/ssh_deny.log'
#储存所有ip及访问次数文件
Visit_ip='/var/lib/ssh_shell/ssh_visit.txt'
#超过设置下面次数将被添加进黑名单
Visit_number=20
#检查ssh日志文件是否存在
if [ ! -e $SSH_log ]
then
echo -e "\033[41;37m ssh 日志文件不存在 请检查原因 \033[0m"
exit 1
fi
if [ ! -e "$SSH_config.bak" ]
then
cp $SSH_config $SSH_config.bak
if [ $? -eq 0 ]
then
echo " 备份文件成功" >>$Deny_log
else
echo -e"\033[41;37m ssh备份文件不成功 \033[0m"
exit 2
fi
else
echo " 已有备份文件 " >>$Deny_log
fi
cat $SSH_log |awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{ print $2"==="$1}' > $Visit_ip
echo "---------$(date +%F_%T)------------" >>$Deny_log
for VI in $(cat $Visit_ip)
do
Number=$(echo $VI |awk -F=== '{print $2}')
IP=$(echo $VI |awk -F=== '{print $1}')
if [ $Number -gt $Visit_number ]
then
grep $IP "$SSH_config" >/dev/null
if [ $? -ne 0 ]
then
echo " sshd:$IP:deny" >>$SSH_config
echo "$IP " >>$Deny_log
fi
fi
done
- 安装防暴力破解软件fail2ban,具体安装教程网上很详细,这里我只演示效果
那个暴力破解失败的warning警告消除啦!!!