网站首页 > 技术文章 正文
什么是挖矿病毒?
挖矿病毒是一种特定的恶意软件,它在未经许可的情况下利用被感染设备(如计算机、服务器或移动设备)的计算资源来进行加密货币(如比特币、以太坊等)的挖矿操作。这类病毒会导致被感染设备的性能显著下降,产生大量电力消耗,并可能造成硬件损坏或者隐私等安全风险。
为什么会出现挖矿病毒?
比特币(Bitcon)和其他的虚拟加密货币的兴起为挖矿行为带来高额的潜在收益,为了获取更多的计算资源并降低成本,一些不法分子开始利用恶意软件来进行挖矿活动,在未经许可的情况下利用他人的设备来挖掘加密货币,从而产生了挖矿病毒。
挖矿病毒主要有如下的特点:
- 高收益低成本:挖矿病毒允许攻击者在不支付硬件和电力成本的情况下获得加密货币,从而获得高收益低成本。
- 操作成本低:通过编写和传播恶意软件,攻击者可以大规模感染设备进行挖矿。挖矿(Mining)是指计算机矿工通过解决复杂的数学问题以验证和添加新的交易到区块链中,从而获得加密货币的作为奖励,这一过程需要消耗大量的计算资源和电力。
挖矿病毒攻击的原理
- 恶意软件传播
- 钓鱼邮件:通过欺骗性邮件,诱使受害者下载并执行恶意附件或点击恶意链接。
- 恶意广告(Malvertising):在看似合法的广告中隐藏恶意代码,当用户点击广告或甚至只是浏览含有广告的网页时,自动下载和执行恶意软件。
- 漏洞利用:利用系统或应用程序中的已知漏洞,从而远程安装挖矿恶意软件。
- 破解软件和盗版软件:在破解软件或盗版软件中捆绑挖矿恶意软件,用户在安装这些软件时也同时安装了恶意程序。
- 恶意软件植入
- 恶意软件一旦进入目标系统,会进行一些自我隐藏和持久化的操作,包括:
- 文件混淆:通过混淆技术(obfuscation),例如多级加密、虚拟机检测等,来隐藏自身代码。
- 注册表修改:修改系统注册表项,使自身在系统启动时自动运行。
- 进程注入:恶意软件注入到合法的系统进程中,以避免被简单的进程监视工具检测到。
- 挖矿工作开始
- 恶意软件在目标系统上运行并开启挖矿进程。挖矿病毒会使用CPU和GPU资源来计算,加密货币成果通常被发送到攻击者控制的钱包地址。
- 劫持的资源通常通过以下方式用于挖矿:
- CPU挖矿:恶意软件利用CPU的计算能力来挖掘加密货币,例如Monero(门罗币)。
- GPU挖矿:对于带有高性能图形处理器(GPU)的设备,恶意软件可能会利用GPU的计算能力来进行挖矿。
- 网络传播:部分挖矿病毒具备蠕虫性质,可以自动扫描并感染同一网络中的其他系统。借助网络漏洞或弱密码攻击进一步传播感染。
如何识别挖矿病毒攻击?
主机感染了挖矿病毒之后,矿工占用了设备大量的计算资源,影响其他服务的正常运行,一般来说存在如下的迹象:
- 性能监控:注意计算机性能的突然下降或系统变慢,或者查看到CPU/GPU 使用率是否异常高。
- 网络流量:监控网络流量是否有异常活动,特别是与加密货币矿池相关的流量。
如何预防挖矿病毒攻击?
- 及时更新系统和软件:修补已知漏洞,减少漏洞利用的可能性。
- 启用防病毒和反恶意软件保护:安装并保持防病毒软件和反恶意软件工具的实时保护。
- 网络安全措施:使用网络防火墙、入侵防御系统(IPS),阻止可疑流量和通信。
- 用户教育:提高用户安全意识,尤其是针对钓鱼邮件、恶意广告和未经授权软件安装的防范。
- 策略和配置:限制用户权限,防止未授权的程序安装和执行,启用安全配置如应用程序白名单。
挖矿病毒处理
碰到一次挖矿病毒的袭扰,相关排查过程记录一下。
首先看到top下有一个“-bash" 进程占用cpu使用率极高,进入/proc/进程号,可以看到其运行目录为
/tmp/.x/-bash,将其删除。同时清除掉crontab定时任务。
但是过了15分钟左右,挖矿进程又起来了,但是运行目录变成了根目录,且找不到-bash 文件,此后无论怎么删除文件及杀掉进程,过一会该进程又会起来。
该脚本总是去生成 /tmp/.x/-bash 脚本去执行病毒进程,再把该脚本删除,让人不能轻易发现。如此一来,直接使用以下命令生成这个文件后,再强制赋予它不能删除、不能更改、不能移动的限制,这样病毒就不能将病毒内容输入该脚本去执行了:
$ touch -bash $ chattr +i -bash lsattr -bash ----i--------e- -bash |
如此处理后,该进程就没被调起来过了。
但是到底是哪里调用并生成了这个脚本呢?
查看/var/log/cron日志文件可以看到:
之前的确是通过crontab调用的,清除掉crontab后,它改从/etc/cron.daily和/etc/cron.weekly以及hourly
至此,可以看到他的源头文件是/bin/sysdrr
该定时任务脚本将该文件cp到/usr/bin/-bash,然后再执行该脚本,再rm删除脚本。
将该文件删除
好家伙还设置了不可操作权限
将该权限移除后顺利删除,并删除其他cron文件
最后,建议大家不要使用简单密码,这次该台服务器的密码就过于简单。
猜你喜欢
- 2025-09-09 使用Docker搭建一个Mail邮箱系统_docker搭建邮件服务器
- 2025-09-09 Linux必学技能 | 17个案例带运维小白快速精通Awk命令,拿来即用
- 2025-09-09 稳定的Claude Code渠道,白嫖100刀
- 2025-09-09 如何写出安全的、基本功能完善的Bash脚本
- 2025-09-09 如何限制访问域名之外的请求都禁止访问,包括域名对应的ip
- 2025-09-09 代理 IP 地址与端口:核心概念、匹配逻辑及常见配置误区
- 2025-09-09 Linux重复操作太痛苦?Shell脚本让你1分钟搞定1小时活
- 2025-06-30 linux计划任务管理(linux计划任务设置)
- 2025-06-30 Linux基本命令—修改命令别名(linux永久修改别名)
- 2025-06-30 CentOS nodejs环境配置(centos nodejs安装)
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)