免费发布信息
当前位置:APP交易 > 热点资讯 > app交易 >  原创干货 | WannaMine蠕虫清理

原创干货 | WannaMine蠕虫清理

发表时间:2021-07-09 16:56:54  来源:红帽社区  浏览:次   【】【】【
红帽社区是一个垂直网络安全社区,融合“红帽先锋”正能量精神,每日分享最新安全资讯,提供安全问答、靶场、众测、漏洞库等功能,是网络安全爱好者学习、交流的优质社区。

前言

今天接到了内网的检测服务器告警,检测到我的主机对外扫描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端口,如下图所示

脚本编写思路为监听445端口,如有连接即写入文件并记录连接IP 代码如下

# 服务器
import socket
import threading
import time
# 处理客户端请求
# 监听任意地址
IP_ADDRESS = '0.0.0.0'
# 记录的文件名
FILENAME = 'log.txt'
# 监听端口
PORT = 445```language

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

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

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

def printinfo(string):
    print('\033[0;34m ' + string + ' \033[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()

运行后如图所示

当有连接发生时输出相关内容(连接IP、端口、事件产生时间),并记录到脚本运行目录下的log.txt中

诱捕

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

分析

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

同时系统进程中出现了一个使用cmd启动的非system32目录下的svchost程序

系统服务中被随机创建了一个服务,本次诱捕机中的服务为ApplicationProtocolHost

并在C:\Windows\System32下释放与服务名称一致的dll文件,用于被系统正常的svchost启动

由于病毒的服务名称会从以下字符串中拼凑,所以服务名并不为鉴别病毒的可靠方式

主服务的命名规则为“字符串1+字符串2+字符串3”,如上面提及的ApplicationProtocolHost,即Application+Protocol+Host。

但是由于系统为中文操作系统,因此可以通过该服务的描述进行甄别

WannaMine 4.0挖矿主体病毒文件为dllhostex.exe(C:\Windows\System32\dllhostex.exe),负责挖取门罗币。

清理方式

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

前言

今天接到了内网的检测服务器告警,检测到我的主机对外扫描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端口,如下图所示
image.png
脚本编写思路为监听445端口,如有连接即写入文件并记录连接IP 代码如下

# 服务器
import socket
import threading
import time
# 处理客户端请求
# 监听任意地址
IP_ADDRESS = '0.0.0.0'
# 记录的文件名
FILENAME = 'log.txt'
# 监听端口
PORT = 445```language

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

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

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

def printinfo(string):
    print('\033[0;34m ' + string + ' \033[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()

运行后如图所示
image.png
当有连接发生时输出相关内容(连接IP、端口、事件产生时间),并记录到脚本运行目录下的log.txt中
image.png
image.png

诱捕

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

分析

被成功攻陷后被植入相关工具(NSA武器库),武器库的路径位于C:\Windows\NetworkDistribution
image.png
同时系统进程中出现了一个使用cmd启动的非system32目录下的svchost程序
image.png
系统服务中被随机创建了一个服务,本次诱捕机中的服务为ApplicationProtocolHost
image.png
并在C:\Windows\System32下释放与服务名称一致的dll文件,用于被系统正常的svchost启动
image.png
由于病毒的服务名称会从以下字符串中拼凑,所以服务名并不为鉴别病毒的可靠方式
image.png
主服务的命名规则为“字符串1+字符串2+字符串3”,如上面提及的ApplicationProtocolHost,即Application+Protocol+Host。
image.png
但是由于系统为中文操作系统,因此可以通过该服务的描述进行甄别
image.png
WannaMine 4.0挖矿主体病毒文件为dllhostex.exe(C:\Windows\System32\dllhostex.exe),负责挖取门罗币。
image.png

清理方式

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


责任编辑:
声明:本平台发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。

德品

1377 678 6470