应急响应-挖矿木马-技术操作指南

初步预判

如何判断遭遇挖矿木马

判断是否遭遇挖矿木马,通常采用以下3种方法。

  • 被植入挖矿木马的计算机会出现CPU使用率飙升、系统卡顿、部分服务无法正常运行等现象。
  • 通过服务器性能检测设备查看服务器性能,从而判断异常。
  • 挖矿木马会与矿池地址建立连接,可通过查看安全检测类设备告警判断。
判断挖矿木马挖矿时间
  • 查看挖矿木马文件创建时间。通过挖矿木马文件创建的时间,可以判断其初始运行时间。但从文件属性来查看有时也不准确,挖矿程序常会利用任务计划方法定时运行,每次运行将会更新文件运行时间。
  • 查看任务计划创建时间。挖矿木马通常会创建任务计划,定期运行,所有可以查看任务计划的创建时间。但任务计划也可能存在更新的情况,若进行了二次更新,则会刷新更新时间。另外,还有的挖矿木马拥有修改文件创建时间和任务计划创建时间的功能,以此达到伪装的目的。
  • 查看矿池地址。挖矿木马会与矿池地址建立连接,所有可通过安全检测类设备查看第一次连接矿池地址的时间,也可以作为判断依据。
判断挖矿木马传播范围
  • 挖矿木马会与矿池地址建立连接,可以利用安全检测类设备查看挖矿设备。
了解网络部署环境
  • 了解网络部署环境才能够进一步判断传播范围。需要了解的内容包括:网络架构、主机数据、系统类型、相关安全设备(如流量设备、日志监测)等。如果内外没有划分安全域,那么病毒也可能在内网中大面积传播;如果内网划分了安全域,那么可有效减小感染面积。
典型案例
  • 2019年12月25日,某企业内部发现多台Linux服务器的CPU资源占用率过高,因此立刻进行应急响应排查。首先,查看系统实时运行状态,如图所示,发现存在使用随机字符串命名的进程“MLEFDb”,占用大部分CPU资源,初步怀疑其为挖矿木马病毒。
  • 初步怀疑后,需要更多证据进行确认。通过该程序PID查看进程信息,如图所示,该程序的二进制文件已被删除。通过删除时间,可判断为挖矿木马病毒于2019年12月25日20:14,在此服务器上执行结束并自删除文件,初步判断此服务器在2019年12月25日20:14前被植入挖矿木马病毒。
  • 此原始可疑程序已经不存在,但其还在后台继续运行。如果将服务器关闭重启,那么挖矿病毒是否就无法继续启动了?显然不是,因此下一步需要排查定时任务,查看定时任务如图所示,发现存在可疑定时任务,每隔23分钟执行一次名为“.aliyun.sh”的脚本文件。
  • 此时定位到可疑脚本文件,直接查看“.aliyun.sh”脚本文件,发现该可疑脚本文件使用base64加密,如图所示。
  • 解密后的脚本内容如图所示。
  • 通过阅读解密后的脚本内容发现,该脚本首先会判断运行脚本文件的用户权限,然后随机域名 域名“civiclink.network”和“onion.in.net”等的“/crn”和“/int” 目录下, 下载文件并授权执行。通过分析该下载文件,可判断该文件为挖矿木马的母体。

系统排查

  • 挖矿木马一般会创建恶意的进程连接矿池,利用系统内存、CPU、GPU资源来进行挖矿,同时会利用系统功能来实现病毒的持久化,如创建用户、服务、任务计划、注册表、启动项等,甚至可能修改防火墙策略。因此,在初步排查阶段就应该检查是否存在恶意用户,检查网络是否与异常IP地址建立连接,检查进程、服务、任务计划等,来判断主机是否已感染了挖矿木马。
Windwos系统排查
检查用户信息
  • 攻击者为了能够在系统中持久化驻留,可能会创建新的用户,如k8h3d用户,如图所示。该用户是很流行的供应链攻击中的驱动人生挖矿蠕虫病毒创建的一个后门用户。在判断恶意用户时,也可以与系统管理员进行沟通,判断异常的用户账户。
  • 使用【net user】命令,可查看系统用户情况。或者打开【计算机管理】窗口,在【本地用户和组】中可查找可疑用户级隐藏用户(用户名以$结尾的为隐藏用户),如图所示。
  • 有时攻击者也会克隆正常的用户名来隐藏自己,我们可以通过注册表方法查找克隆用户。另外,还可以通过专门的工具查找克隆用户,如使用LP_Check工具进行排查,“admin$”是一个克隆用户,如图所示。
检查网络连接、进程、服务、任务计划
  • 一般情况下,在排查挖矿木马的过程中,首先会查看网络连接,确定与矿池IP地址建立连接的进程,通过进程PID查找相应的进程。在处理过程中,可能会遇到进程查杀后又重新启动的现象,这说明挖矿木马可能通过创建服务、任务计划来实现病毒的持久化,所有在查杀进程后还需要进一步观察是否又有重新启动的现象,若有,则需排查相应的服务、任务计划。
网络连接排查
  • 大多数挖矿木马一般会通过“永恒之蓝”漏洞在内网传播,如驱动人生挖矿蠕虫病毒,Nrs挖矿木马等。所有当看到一个进程对一个内网主机发送打量的445请求时,基本可以判断其为恶意进程,然后在通过恶意进程PID确定挖矿木马位置。如图所示,使用【netstat -ano | find "445"】命令,可查看网络连接,发现本地IP地址及大量访问其他主机的445端口。
  • 查看网络连接也可以使用TCPView工具。TCPView工具可用于检测当前系统中的进行及其对应的连接状态,如图所示。进程标记为绿色时表示该连接为新发起的,标记为红色时表示该连接为结束状态。
进程排查
  • 若存在恶意网络连接,则可根据进程PID定位具体的位置;若没有发现恶意网络连接,则需要对主机的进程进行排查。如图所示,通过任务管理器查看主机当前进程,并发现了可疑进程。
  • 恶意进程排查相对困难时,可以使用PCHunter进行协助。但要注意,针对重要业务在线服务器及比较旧的系统,尽量不要使用PCHunter,因为其易触发蓝屏,导致服务器重启或业务中断等。
任务计划排查、服务排查
  • 大部分挖矿木马会持久化驻留,主要通过建立任务计划的方法定期在后台执行。在windows系统中打开【任务计划程序】窗口,可查看异常的任务计划。如图所示,在2019/2/25 12:04先后创建了2个服务,无限期地每隔50分钟重复一次,在14:49:31创建了第三个服务,无限期地每隔1小时重复一次。
  • 另一种在Windows服务器在持久化驻留的方法:创建服务,启动挖矿木马程序。如图所示,Msra挖矿蠕虫程序通过创建“Function NetBIOS Manager”服务,启动挖矿木马程序。
  • 又如在进行WannaMine挖矿木马排查时,在系统服务中存在snmpstorsrv服务,每当计算机启动时,病毒会以服务形式自动在后台运行,如图所示,在“Windwos\System32”的目录下找到挖矿木马可执行文件。
  • 分析该文件发现,该服务通过设置注册表“HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\services\snmpstorsrv\Parameters”项中的ServiceDll值,将恶意DLL文件注入Windwos正常程序svchost.exe(Windwos服务主进程)中,如图所示。
Linux系统排查方法
  • 与Windwos系统相似,在处理Linux系统的挖矿木马时,需要检查用户信息、进程等。
检查用户信息
  • 查看系统所有用户信息可使用命令【cat /etc/passwd】,检查中需要与管理员确认是否有可疑用户。可使用如下判断可疑用户:
  • 使用【lastlog】命令,可查看系统中所有用户最后的登录信息;
  • 使用【lastb】命令,查看用户错误登录列表;
  • 使用【last】命令,查看用户最近登录信息(数据源为/var/log/wtmp、var/log/btmp、/var/log/utmp),wtmp存储登录成功的信息、btmp存储登录失败的信息、utmp存储当前正在登录的信息;
  • 使用【who】命令,可查看当前用户登录系统的情况;
  • 使用【awk -F: 'length($2)==0 {print $1}' /etc/shadow】命令,可查看是否 存在空口令账户。
  • 如图所示,使用【cat /etc/passwd】命令查询到get账户UID值为0 ,具有root权限,因此需要重点排查。
检查进程
ps aux
  • 查看系统进程可以使用命令【ps aux】。一般,挖矿木马在Linux系统下的特征十分明显,运行命令行会带一个矿池网站的参数,并且可以看到该进程占用大量CPU资源。根据挖矿占用大量CPU资源和与矿池建立连接的特征基本可以确定该进程为挖矿进程。如图所示,发现PID为7749的进程的CPU占用率到达2027.1%,且与矿池 “tcp://xmr.crypto-pool.fr:433”连接。
  • 在查找日志之前,可以在网上搜索挖矿程序名和矿池名,有很大概率可以发现之前“中招”的用户案例或安全厂商提供的类似分析文档,以便快速排查入侵原因。
netstat -antp
  • 使用【netstat -anpt】命令,可查看进程、端口及对应的PID,然后根据PID,利用【ls -alh /proc/PID】命令。可查看其对应的可执行程序。如图所示,发现PID为28842的进程存在大量连接,比较可疑。
ls -alh /proc/28842
  • 使用【ls -alh /proc/28842】命令,可查看对应的可执行程序,找到可疑文件“kdevtmpfsi”,对其进行分析,以确认是否为恶意文件,如图所示。
挖矿链接地址
  • 可以通过挖矿链接地址进行确认。分析地址“178.170.189.5”和“91.215.168.111”,发现存在恶意挖矿行为,因此可确认挖矿木马进程,如图所示。
Top
  • 使用【top】命令,根据CPU占用率查看可疑进程。如图所示,发现PID为2842的进程的CPU占用率较高,因此需要重点排查。
lsof -p PID
  • 发现可疑进程后,需要更详细进行查看,可以使用【lsof -p PID】命令,查看PID对应的可执行程序,使用【lsof -i:port】命令,查看指定端口对应的程序。如图所示,在使用命令【lsof -p 1260】后,显示进程下的打开的文件。
ll /proc/1260
  • 使用【ll /proc/1260】命令,可查看进程详细信息,如图所示。
发现异常流量,但未发现异常事件
  • 进过上述步骤,一般可疑定位到异常文件及进程。在发现恶意挖矿流量,但没有发现异常进程的情况下,挖矿进行有可能被隐藏或当前使用的命令被替换。这种情况下,可以使用【rpm -Va】命令来检测,检测出的变动参数如下:
    • S,表示文件的长度发生了变化;
    • M,表示文件的访问权限或文件类型发生了变化;
    • 5,表示MD5发生了变化;
    • D,表示设备节点的属性发生了变化;
    • L,表示文件的符号链接发生了变化;
    • U,表示文件/子目录/设备节点的owner 发生了变化;
    • G,表示文件/子目录/设备节点的group 发生了变化;
    • T,表示文件最后一次修改的时间发生了变化。
  • 如图所示,“/etc/profile”“/etc/ssh/sshd_config”等文件的长度、MD5、 文件最后一次修改的时间均发生了变化。如果系统命令已经被替换,那么可直接 从纯净系统复制【ps】和【top】等命令到受感染主机使用。
  • 如果一切校验均正常,将不会产生任何输出,如图所示。
  • 一般特别需要关注【top】、【ps】和【netstat】一类的命令,如果命令被修改, 那么再查看进程或网络连接可能就不准确了。如果遇到类似的情况,可以使用 BusyBox 工具进行查看。由于BusyBox采用静态编译,不依赖于系统的动态链接 库,因此不受ld.so.preload 劫持影响,能够正常操作文件。
  • 如果是恶意进程,可以使用【kill -9 PID】命令来结束进程,然后使用【rm -f filename】命令来删除病毒。如果 root 用户无法删除相关文件,那么很可能是因 为文件被添加了i属性。使用【lsattr filename】命令,可查看文件属性,然后使用 【chattr -i filename】命令,可移除 i 属性,进而删除文件。如图5.4.26所示,使用 命令【rm-f LeRsUi】命令,发现不能删除的文件“LeRsUi”,使用【lsattr LeRsUi】 命令,发现该文件有i属性,使用【chattr -i LeRsUi】命令,移除i属性后,再使 用【rm-f LeRsUi】命令,可成功删除。
  • 另外,挖矿木马通常利用定时任务来实现持久化驻留,简单查杀进程和程序不一定能完全解决问题。因此可使用【crontab -l】命令,查看任务计划。如图所示,使用【crontab -u yarn -l】命令,发现异常任务计划,其每隔23分钟执行一次.aliyun.sh脚本。
  • 以上指定的所有命令很可能会被攻击者恶意替换,所以可使用以下方法判断: 第一,可在命令目录查看相关系统命令的修改时间,如使用【ls -alt /bin】命令查 看;第二,可查看相关文件的大小,若明显偏大,则很可能被替换;第三,可使 用【rpm -Va】命令,查看发生过变化的软件包,若一切校验均正常,则将不会产 生任何输出;第四,可使用第三方查杀工具,如chkrootkit、rkhunter等。

日志排查

Windwos系统排查方法
  • 系统日志记录着Windwos系统及其各种服务运行的细节,起着非常重要的作用。默认情况下,Windwos系统日志存放在% SystemRoot%\System32\Winevt\Logs 中, 分别为:Application.evtx(应用程序日志)、Security.evtx(安全性日志)、System.evtx(系统日志)。
  • 可以使用系统自带的事件查看器查看安全性日志,如查看是否存在大量审核失败的日志(暴力破解)等。如图所示,存在大量事假ID为4797的记录,该记录表示试图查询账户是否存在空白密码。
以下为重点关注ID
  • 4728:表示把用户添加进安全全局组,如Administrators组。
  • 4797:表示试图查询账户是否存在空白密码。
  • 4624:表示在大部分登录事件成功时会产生的日志。
  • 4625:表示在大部分登录事件失败时会产生的日志(解锁屏幕并不会产生 这个日志)。
  • 4672:表示在特权用户登录成功时会产生的日志,如登录Administrator, 一般会看到4624和4672日志一起出现。
  • 4648:表示一些其他的登录情况。
  • 如果系统日志太多、太复杂,可以导出,然后使用 LogParser 进行解析和筛 选检查,也可使用其他日志分析工具完成。
Linux系统排查方法
查看任务计划日志
  • 可使用以下命令查看任务计划日志:
    • 【crontab -l】命令,查看当前的任务计划有哪些,是否有后门木马程序启动相关信息;
    • 【ls /etc/cron* 】命令,查看 etc 目录任务计划相关文件;
    • 【cat /var/log/cron】命令,查看任务计划日志;
    • 【ls /var/spool/mail】命令,查看相关日志记录文件;
    • 【cat /var/spool/mail/root】命令,发现针对 80 端口的攻击行为(当 Web 访问 177 网络安全应急响应技术实战指南 异常时,及时向当前系统配置的邮箱地址发送报警邮件的信息)。
查看自启动日志
  • 启动项也是排查的必要项目。可使用以下命令查看自启动日志:
    • 【cat /var/log/messages】命令,查看整体系统信息,其中也记录了某个用户切 换到root权限的日志;
    • 【cat /var/log/secure】命令,查看验证和授权方面的信息,如sshd会将所有信 息(其中包括失败登录)记录在这里;
    • 【cat /var/log/lastlog】命令,查看所有用户最近的信息,二进制文件,需要用 lastlog 查看内容;
    • 【cat /var/log/btmp】命令,查看所有失败登录信息,使用last命令可查看btmp 文件;
    • 【cat /var/log/maillog】命令,查看系统运行电子邮件服务器的日志信息;
    • 【cat ~/.bash_history】命令,查看之前使用过的shell 命令。

清除加固

  • 实施以上排查分析流程,在确认了挖矿木马程序或文件后,需及时进行清除 加固,防止再次感染。
封堵矿池地址。
  • 挖矿程序有外连行为,应用安全设备阻断矿池地址,防止用户对外通信。
清理任务计划、禁用可疑用户。
  • 任务计划的作用是定时启动挖矿程序或更新代码,所以如果确认了挖矿任务 计划,应及时清理。 由挖矿木马程序创建的用户,可能作为攻击跳板或用作其他攻击操作,当确 认为异常用户后,需及时禁用或删除。
结束异常进程。
  • 大多数挖矿木马的表象特征为占用 CPU 资源过高,所以当确认为挖矿木马 后,应及时结束进程。
清除挖矿木马。
  • 结束进程并不代表挖矿木马就不会再运行,需要找到对应进程文件及其相关 联的脚本文件一并删除。
全盘杀毒、加固
  • 实施以上操作后,仍需继续观察是否还有反复迹象,是否还有进程或任务计划没有清理干净。
  • 使用杀毒软件全盘杀毒,并对系统、应用做安全加固。
  • 删除挖矿木马利用的漏洞,防止系统再次“中招”。
  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值