原创干货 | WannaMine蠕虫清理

admin 2021年4月30日09:36:04评论83 views字数 2610阅读8分42秒阅读模式

前言

今天接到了内网的检测服务器告警,检测到我的主机对外扫描445端口
本次监测使用了2台基于VMware ESXi架构的虚拟服务器,IP及系统架构如下
• 10.16.11.51 CentOS7【监测机】
• 10.16.11.15 Windows Server 2008 R2【诱捕机】

脚本编写

脚本使用Python3编写,运行于CentOS7虚拟机(10.16.11.51)上,由于感染后的机器特征为向外部扫描445端口,如下图所示

原创干货 | WannaMine蠕虫清理
脚本编写思路为监听445端口,如有连接即写入文件并记录连接IP 代码如下
```

服务器

import socket
import threading
import time

处理客户端请求

监听任意地址

IP_ADDRESS = '0.0.0.0'

记录的文件名

FILENAME = 'log.txt'

监听端口

PORT = 445```language

def printalert(string):
print('33[1;31m ' + string + ' 33[0m')

def printsuccess(string):
print('33[1;32m ' + string + ' 33[0m')

def printwarning(string):
print('33[1;33m ' + string + ' 33[0m')

def printinfo(string):
print('33[0;34m ' + string + ' 33[0m')

class tcp_server():
def init(self):
self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.tcp_socket.bind((IP_ADDRESS, PORT))
self.tcp_socket.listen(250)
self.proceses = []
printsuccess('Server Start Success,Waiting For Connect....n')

def run_server(self):
    while True:
        sock, addr = self.tcp_socket.accept()
        # 创建新线程来处理每个客户端连接
        t = threading.Thread(target=self.tcp_server, args=(sock, addr))
        t.start()
        t.join()

def tcp_server(self, sock, addr):
    # 事件产生时间
    TIME = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    printinfo('[i] Accept new connection from %s:%s' % addr + ' ...at [' + str(TIME) + ']n')
    printinfo('当前线程:' + threading.current_thread().name + 'n')
    self.writelog(addr)
    sock.close()
    printinfo('[-] Connection from %s:%s closed n' % addr)

# 写日志
def writelog(self, addr):
    # 事件产生时间
    TIME = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    with open(FILENAME, 'r') as file:
        line = file.read().splitlines()
        if addr[0] in line:
            printwarning('[!] Detect ' + str(addr[0]) + ' Connect ' + str(PORT) + ' Port At [' + str(TIME) + '] And This IP Has Been Recorded!n')
        else:
            with open(FILENAME, 'a+') as file1:
                file1.write(str(addr[0]) + 'n')
                printalert('[+] Detect ' + str(addr[0]) + ' Connect  ' + str(PORT) + ' Port At [' + str(TIME) + '] .n')

def main():
s = tcp_server()
s.run_server()

if name == 'main':

main()

```
运行后如图所示

原创干货 | WannaMine蠕虫清理
当有连接发生时输出相关内容(连接IP、端口、事件产生时间),并记录到脚本运行目录下的log.txt中

原创干货 | WannaMine蠕虫清理

原创干货 | WannaMine蠕虫清理

诱捕

10.16.11.15主机关闭防火墙,等待一段时间后被成功植入病毒

分析

被成功攻陷后被植入相关工具(NSA武器库),武器库的路径位于C:WindowsNetworkDistribution

原创干货 | WannaMine蠕虫清理
同时系统进程中出现了一个使用cmd启动的非system32目录下的svchost程序

原创干货 | WannaMine蠕虫清理
系统服务中被随机创建了一个服务,本次诱捕机中的服务为ApplicationProtocolHost

原创干货 | WannaMine蠕虫清理
并在C:WindowsSystem32下释放与服务名称一致的dll文件,用于被系统正常的svchost启动

原创干货 | WannaMine蠕虫清理
由于病毒的服务名称会从以下字符串中拼凑,所以服务名并不为鉴别病毒的可靠方式

原创干货 | WannaMine蠕虫清理
主服务的命名规则为“字符串1+字符串2+字符串3”,如上面提及的ApplicationProtocolHost,即Application+Protocol+Host。

原创干货 | WannaMine蠕虫清理
但是由于系统为中文操作系统,因此可以通过该服务的描述进行甄别

原创干货 | WannaMine蠕虫清理
WannaMine 4.0挖矿主体病毒文件为dllhostex.exe(C:WindowsSystem32dllhostex.exe),负责挖取门罗币。

原创干货 | WannaMine蠕虫清理

清理方式

1.禁用随机拼凑命名的服务。
2.使用XueTr(PChunter)卸载异常的svchost(非system32目录下的svchost程序)的挂载的模块(即上文提到的随机拼凑命名的.dll)并删除。
3.结束异常进程
4.删除随机拼凑命名的服务。
5.删除C:WindowsSystem32dllhostex.exeC:WindowsNetworkDistribution
6.安装MS17-010补丁

相关推荐: 初次登录 Linux 服务器马上要做的 9 件事

 导读:在将新配置的服务器投入工作之前,请确保你知道你正在使用什么。                           本文字数:3308,阅读时长大约:5分钟https://linux.cn/article-12959-1.html作者:Gaur…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月30日09:36:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   原创干货 | WannaMine蠕虫清理http://cn-sec.com/archives/246189.html