暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一次真实的应急响应案例——篡改页面、挖矿(sysupdate、networkservice)(含靶场环境)

W小哥 2021-04-27
1309

一、事件描述:

某公司运维人员小李近期发现,通过搜索引擎访问该公司网站会自动跳转到恶意网站(博彩网站),但是直接输入域名访问该公司网站,则不会出现跳转问题,而且服务器CPU的使用率异常高,运维人员认为该公司服务器可能被黑客入侵了,现小李向XX安全公司求助,解决网站跳转问题。


 二、应急响应过程


2.1 查找植入暗链的代码

通过运维人员提供的信息:“通过搜索引擎访问该公司网站会自动跳转到恶意网站(博彩网站),但是直接输入域名访问该公司网站,则不会出现跳转问题”,可以判断出,网站首页已经被植入了暗链,那么可以先查看网站首页 index.jsp文件的代码


使用命令

    find  -name index.jsp

    查找服务器上所有的index.jsp文件


    查找结果如下图所示,通过返回的信息可以得知:

    1、公司首页的源码放在了tomcat的ROOT目录下

    2、tomcat中存在一个struts2框架

    接下来查看 opt/tomcat9/webapps/ROOT/index.jsp

    在index.jsp文件中发现了一段可疑的javascript代码

      <script type="text/javascript">
      var search=document.referrer;
      if(search.indexOf("baidu")>0||search.indexOf("so")>0||search.indexOf("soso")>0||search.indexOf("google")> 0||search.indexOf("youdao")>0||search.indexOf("sogou")>0)
      self.location="https://www.XXXXXXXX.com";
      </script>

      此段javascript代码的意思是:通过搜索引擎百度、搜搜、谷歌、有道、搜狗访问该文件,都会跳转到 https://www.XXXXXXXX.com 网站,结合运维人员描述的情况,可以确定首页被植入暗链的位置正是此处。

      2.2、查看访问日志

      2.2.1 发现弱口令

      tomcat的日志都在tomcat安装路径下的logs目录下
      本次案例在:/opt/tomcat9/logs/,其中access_log是用户访问网站的日志

      tomcat日志格式:

        例如:192.168.248.1 - - [14/Aug/2017:19:39:20 -0700] “GET cms/jeeadmin/jeecms/index.do HTTP/1.1200 555
        而与之对应的pattern是:pattern=”%h %l %u %t “%r” %s %b”


        %h 为远程主机名(若无法获取主机名亦可为远程主机IP)对应192.168.248.1
        %l 为远端登录名(由identd而来),除非IdentityCheck设为"On",否则将得到一个"-"
        %u 为远程用户名(根据验证信息而来),若不存在得到一个"-"
        %t 为时间,用普通日志时间格式(标准英语格式) 对应[14/Aug/2017:19:39:20 -0700]
        &quot; 为双引号"的实体编码
        %r 为请求头第一行(包括HTTP方法和请求的URI),对应GET cms/jeeadmin/jeecms/index.do HTTP/1.1
        %s 为HTTP响应状态码
        %b    为发送信息的字节数,不包括HTTP头,如果字节数为0的话,显示为-

        首先查看2021-02-24的访问日志,内容很少,大多数都是127.0.0.1本地访问的,只有几条是IP地址192.168.184.128访问的

        但是再查看的过程中,发现IP 192.168.184.128访问了tomcat的默认管理页面,并且以用户tomcat登录了管理页面

        接下来我们查看tomcat管理页面登录的配置,是否存在弱口令

          cd /opt/tomcat9/conf
          cat tomcat-users.xml

          可以看到使用的是默认账号密码 tomcat/tomcat 存在弱口令

          那么我们查看一下全部的日志文件,都是有哪些IP成功登录tomcat的管理后台了

            cat localhost_access_log.20* | grep tomcat

            得出结论:
            通过查看全部的日志,发现只有IP192.168.184.128成功登录了tomcat的管理后台(可疑行为记录保存)

            2.2.2 发现扫描行为

            接下来查看2021-02-25的访问日志,内容很多,通过日志信息可以看出,IP:192.168.184.146 的用户访问了很多的文件,而且文件很多都是不存在的,返回状态码为404,可疑确认IP:192.168.184.146 在对网站进行扫描行为(可疑行为记录保存)

            接下里统计一下每个IP访问的次数

              cat localhost_access_log.20* | awk '{print $1}'|sort -r -n |uniq -c

              可以看到IP:192.168.184.146、192.168.184.1的访问次数较高

              那么首先查看一下 192.168.184.146 访问记录

                cat localhost_access_log.20* |grep 192.168.184.146

                可以看到IP:192.168.184.146 的访问很多不存在的文件,返回状态码都是404,可以推断该IP是在进行扫描行为(可疑行为记录保存)

                接下来查看一下 192.168.184.1 访问记录

                  cat localhost_access_log.20* |grep 192.168.184.1|grep HEAD

                  可以看到IP:192.168.184.1 的访问很多不存在的文件,返回状态码都是404,可以推断该IP是在进行扫描行为(可疑行为记录保存)

                  得出结论 :
                  IP 192.168.184.1、192.168.184.146 都对该网站进行了目录扫描

                  2.2.3 发现webshell与网站漏洞

                  接下来查看192.168.184.1所有的访问记录中,是否存在可疑文件

                  命令:

                    cat localhost_access_log.20* | grep 192.168.184.1

                    发现192.168.184.1在进行扫描行为后,访问了config.jsp文件与tx.jsp文件,以及struts2-showcase文件

                    查看config.jsp文件内容: config.jsp是webshell

                    查看tx.jsp文件 :发现已被删除

                    使用工具检测struts2框架是否存在漏洞:存在漏洞

                    得出结论 :
                    1、存在webshell:config.jsp
                    2、struts2框架存在高危漏洞

                    2.3 查找并清除挖矿程序

                    通过运维人员提供的信息:“服务器CPU的使用率异常高”,可以判断出,服务器已经被植入了挖矿程序。

                    2.3.1清除定时任务

                    使用top命令查看CPU的使用率

                    发现存在PID为20338的异常进程 sysupdate

                    使用命令kill -9 20338 关闭该异常进程

                    没想到过了一会儿 sysupdate 异常进程又重新起来了(猜测可能存在守护进程或者定时任务)

                    查看定时任务:
                    crontab -l ,果不其然,存在定时任务,每30秒运行一次update.sh文件

                    那么就删除定时任务crontab -r

                    发现无法删除
                    文件无法删除,那么我们查看一下是否有隐藏权限:

                      lsattr root

                      如下可以看到当前文件被加入隐藏权限:

                      使用命令:chattr -i root
                       修改权限后,还是不能删除root定时任务

                      因此考虑是否为上级目录加入了权限导致该文件不可删除,我们返回上一级目录重复执行 lsattr 命令

                      可以找到在上级的 /cron目录被加入了隐藏权限,使用chattr命令修改权限

                        chattr -i  cron

                        隐藏权限取消掉之后我们再进行定时程序删除

                        2.3.2 清除挖矿程序

                        查看关联进程从上面的top命令知道了个用比较大的进程号,我们可以根据其中的某个进程,比如21001入手,来查找其他关联的进程

                        使用以下命令,如下图所示

                          systemctl status 21001

                          根据关联进程提示,进入到/etc目录下

                          在/etc/目录下,使用ls 查看所有的文件

                          发现有sysupdate、networkservice、sysguard、update.sh、config.json 五个文件,其中sysupdate、networkservice、sysguard三个文件都是二进制文件 比较大,这三个应该就是挖矿的主程序和守护程序。还有一个update.sh文件,这应该是对挖矿程序升级用的。

                          这个update.sh在定时任务中也有提示

                          那么清除挖矿程序:删除/etc下面的 sysupdate、networkservice、sysguard、update.sh和config.json几个文件

                          这时候,你可能会发现无法删除,因为挖矿程序使用了chattr +i 命令(禁止对文件的增删改查),那么使用如下命令取消该权限后,即可删除

                            chattr -i update.sh
                            rm -rf update.sh


                            chattr -i networkservice
                            rm -rf networkservice


                            chattr -i sysupdate
                            rm -rf sysupdate


                            chattr -i sysguard
                            rm -rf sysguard


                            chattr -i config.json
                            rm -rf config.json

                            清楚完挖矿程序文件后,使用命令:kill -9 PID (异常程序PID号)
                            之后等待几分钟,CPU都使用正常,无异常进程了,挖矿程序清除成功

                            三、总结

                            1、存在弱口令 tomcat/tomcat 192.168.184.128 成功登录
                            2、IP 192.168.184.1、192.168.184.146 都对该网站进行了目录扫描

                            3、存在webshell:config.jsp
                            4、struts2框架存在高危漏洞
                            5、清除挖矿程序

                            猜测是通过弱口令或者struts2框架漏洞进入,上传webshell与挖矿程序,并且执行挖矿程序

                            靶场环境放在了 知X星球 中

                            文章转载自W小哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论