一次模拟Windows挖矿病毒应急响应的流程及思路
什么是挖矿病毒?
挖矿病毒并非传统意义上专门用于破坏计算机系统的病毒,它本质是为了获取虚拟货币收益而非法侵占用户计算资源的恶意程序。这些虚拟货币如比特币、以太坊等,其获取过程依赖计算机的算力进行复杂运算,挖矿病毒正是利用这一特点来谋取利益。
工作原理
挖矿病毒入侵计算机后,会在后台启动挖矿程序。它会调用 CPU、GPU等硬件资源,使这些硬件满负荷或高负荷运转来进行虚拟货币的挖掘运算。挖矿病毒还会自我隐藏和保护,防止被用户或安全软件轻易发现和清除。它会修改系统设置、隐藏进程,甚至对抗安全软件的查杀,以持续运行挖矿程序。
特征 & 排查方向
分析定性
通过进程找到文件,上传威胁情报平台分析
应急处置
启动靶机(靶机来源—知攻善防实验室)
-
可以看到,刚启动就自动打开cmd执行了一串命令,这就是病毒自启动恶意脚本
-
打开控制管理器,发现cpu被一个程序拉满,尝试结束任务,但还会自启动
-
进入这个文件存放目录,发现一个批处理文件。看看写了什么?顺便将病毒放进微步检测一下
---逐行分析代码--- 第 1 行: @ 符号的作用是让当前这一行命令本身不显示在命令行窗口中。 echo off 是用于关闭命令行窗口中命令的回显功能。 第 2 行: find ":" 命令会在输入内容里查找冒号 :。在 tasklist 的输出结果中,如果存在xmrig.exe 进程,输出内容里就会包含冒号;若不存在该进程,输出内容就不会有冒号。 >NUL 表示把 find 命令的输出结果重定向到空设备,也就是不显示输出结果。 第 3 行: errorlevel 是一个环境变量,它会保存上一条命令的退出状态码。在 Windows 系统中,命令执行成功时退出状态码通常为 0,执行失败时退出状态码一般大于 0。 if errorlevel 1 意味着如果上一条命令(即 find 命令)的退出状态码大于或等于 1,就表明没有找到 :,也就是没有找到 xmrig.exe 进程。 goto ALREADY RUNNING 表示跳转到标签 :ALREADY RUNNING 处继续执行后续代码。 第 4 行: start 用于启动一个新的程序或进程。 /low 参数将启动的进程优先级设置为低,这样该进程就不会过多占用系统资源,避免影响其他程序的正常运行。 %~dpO 是批处理脚本中的变量替换,%~dp 会获取当前批处理脚本所在的驱动器和路径,O 在这里代表脚本本身,所以 %~dpO 就是当前脚本所在的路径。 xmrig.exe 是要启动的挖矿程序。 %* 表示传递给当前批处理脚本的所有参数,会将这些参数一并传递给 xmrig.exe。 第 5 行: 跳转到标签 :EXIT 处,直接结束脚本的执行。 第 6 行: 这是一个标签,用于标记代码中的一个位置,供 goto 命令跳转使用。 第 7 行: 这行代码会输出提示信息,表明门罗币挖矿程序已经在后台运行,拒绝再次启动另一个实例。 第 8 行: 告知用户如果想先停止后台运行的挖矿程序,可以执行 taskkill /IM xmrig.exe 命令。/IM 用于指定要终止的进程映像名称。 第 9 行: 结束 总体而言,这段批处理脚本的功能是检查 xmrig.exe 进程是否已经在运行,如果没有运行,就以低优先级启动该进程;如果已经在运行,就给出提示信息,拒绝再次启动。
-
知道具体含义后,尝试删除 .bat 文件再结束病毒,果然不会再自启动了
-
打开 .json 文件,发现了外联域名及一串钱包地址
放到微步检测一下,检测出矿池 -
接下来就可以按常规思路检查,也可以使用蓝队辅助工具(例如火绒剑等等)
由于此服务器上没有部署网站,所以极大可能是攻击者通过内网横向移动到此服务器,检查是否开启高危端口 -
看看 windows 登录日志 - - - win+r 输入eventvwr.msc
可以发现大量4625登陆失败的日志
通过详细信息可以看到具体是从哪台内网主机,什么协议进行横向移动的,进而着手检查此主机
通过筛选4624登陆成功日志可以发现,此服务器是被 rdp 爆破进入 -
源头找到了,接下来可以排查攻击者留在服务器上的权限维持操作了
-
启动项
- 用户启动目录:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。该目录下的程序快捷方式仅对当前登录用户有效,当用户登录系统时,系统会自动运行该目录下的程序。 - 所有用户启动目录:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
。此目录中的程序快捷方式对所有登录到该计算机的用户都有效,只要系统启动,无论哪个用户登录,都会自动运行这里的程序。 - 注册表启动项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
:用于存储当前用户的启动项信息,仅对当前用户生效。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
:包含了对所有用户都生效的系统级启动项信息。
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
:在 64 位 Windows 系统中,用于存储 32 位应用程序的启动项信息,以兼容 32 位软件在 64 位系统上运行。
启动项没有问题,但在一级一级翻目录时发现在中间目录下存在一个 .bat 文件
可以发现,这个文件就是开机自动运行的那行代码 - 用户启动目录:
-
排查服务 - - - win+r 输入 msconfig
发现一个和病毒名称相同的一个服务,有很大程度就是攻击者留的后门,直接删除,由于无法在配置里直接删除,只能通过cmd、powershell、注册表方式删除
-
cmd:
sc queryex type=service state=all
来列出所有服务,找到要删除的服务的名称。sc delete <服务名称>
删除服务
-
-
排查计划任务 - - - win+r 输入 tskschd.msc
找到了之前删除的恶意代码,确实写入了计划任务中,删除即可
-
注册表 - - - win+r 输入 regedit.exe
排查注册表还是需要通过工具操作会比较方便
- 查完之后,重启靶机,一切回归正常,至此靶机全部模拟过程结束!!!
靶机地址