Wannacrypt蠕虫老树开花?又见Wannacrypt
Wannacrypt蠕虫是一个在2017年就出现的远古毒株,其利用永恒之蓝漏洞降维打击用户服务器,而后进行扩散+勒索,曾经一度风靡全球,可谓是闻者伤心,听着落泪,因为这玩意解密是不可能 解密的。
而2023年的今天,该病毒居然死灰复燃了?
2023年3月5日,某厂区客户现场反馈大量内网服务器出现蓝屏情况,现场工程师安装360安全卫士后,提示为Wannacry蠕虫病毒
从描述中可以猜测是永恒之蓝把服务器打蓝屏了,而后现场通过与现场工程师协同了解到,当时蓝屏的服务器是一台实时数据库服务器,操作系统版本为windows server pack 2 。由于厂区服务器特殊,是不能经常升级的,所以可以理解。。。
通过上述的图片,我推断感染为WannaCrypt蠕虫病毒,该病毒实际爆发事件为2017年,通过永恒之蓝漏洞攻击目标机器,而后通过访问“开关”来判定出网情况,之后释放tasksche.exe文件,而后对系统进行加密,达到勒索的效果。
同时会对内网、外网进行横向攻击,利用永恒之蓝漏洞、SMB、RDP协议爆破来获取更多的权限,幸运的是,此次勒索病毒并没有达到勒索的状态。
这是一款老病毒了,在得知他不能起到勒索的作用后,其实就基本可以判断这就是一次非针对性的流窜,被乱打正着了,清理起来也很容易,结束掉mssecsvc.exe进程,看一下c:/windows目录下有没有tasksche.exe文件,看到直接删除而后打补丁,更改密码即可
但是由于该蠕虫病毒传播性较强,于是乎笔者像前场人员要来了这台服务器的登录日志,可能是沟通有问题,他只给了我登录成功和登录失败的日志
由于永恒之蓝漏洞一大特性是会重启,那么其实可以根据以下进行判断
事件ID 4625(登录失败):如果攻击者尝试通过SMB服务进行远程执行代码攻击,那么会在目标机器的安全事件日志中产生大量登录失败的事件记录。可以筛选该事件ID,以找到与攻击相关的记录。
事件ID 5140(共享对象被其他进程访问):攻击者可能会试图利用漏洞访问共享文件夹或文件,如果成功,系统将记录此事件。
事件ID 7034(服务崩溃):攻击者可能会试图通过攻击SMB服务或相关的Windows服务来执行代码,导致服务崩溃,这会在系统事件日志中记录。
事件ID 7045(服务安装):攻击者可能会通过安装恶意服务的方式利用漏洞。此时,系统将记录新服务的安装记录。
但是他只给了我登录成功和登录失败的日志,那么我们应该如何去用这个日志去获取我们想要的信息呢?
上面也提到过,Wannacay蠕虫病毒在内网会利用MS17010漏洞以及SMB协议漏洞进行攻击,似乎并没有提到会利用到445端口、3389等端口的弱口令暴力破解攻击,但是实际上根据笔者对日志的审计,发现的确会留下很多ntlmssp登录失败日志
其实可以看到,该服务器实际上2021年就已经被打了,但是直到今天其他服务器蓝屏了才发现设备被入侵了,这也是目前国很常见的一个现象,只要没有造成直接的财产损失,他就不是病毒。
那么回到正题,该样本实际上已经没有分析的必要了,因为这是一个老病毒了,我们只需要按部就班的清除就行,索性勒索病毒似乎并没有起,所以我们只需要排查哪些机器已经被污染了,就一起断网清除就可以了
至于为什么一插网线就又有“弹窗”,那是因为内网里其他的机器没有清理病毒,只要网络环境一恢复,那么要不了两分钟立马就给你重新感染,我们通过3.5日的日志也可以看出来,正如我们猜想的那样
笔者简单的看了一下爆破的记录,发现每次爆破都不会很多,少则二三十、多则一两百,没有出现上一次紫狐Rootkit爆破次数达到上万的情况,那么也从侧面说明了,该服务器很有可能是存在弱口令或者是口令共用的情况
而后果然证实了,218确实存在mssecmvc.exe文件,但是依然没有发现本应该存在的tasksche.exe文件以及另一个,这又让我怀疑,这到底是不是wannacay蠕虫病毒
但是当样本给了我之后,我又很确定,这就是mssecmvc2.0蠕虫病毒
而后在本地断网运行后,也的确是在C:/windows目录下生成了tasksche.exe文件
查看一下运行的参数
wmic process get caption,commandline /value
使用IDA看了一下,特征也挺符合的
打开第一眼看到的其实就是访问http://www.iuqerfsodp9ifjaposdfjhgosuri地址,这个地址其实什么也不是,可以理解为是一个开关
0040814A mov esi, offset aHttpWww_iuqerf ; “http://www.iuqerfsodp9ifjaposdfjhgosuri”…
此时按F5进入伪代码,查看一下函数逻辑
其实看起来不是很好看,但是大致就是将http://www.iuqerfsodp9ifjaposdfjhgosuri传入szUrl中,而后访问成功的话就返回0,程序继续往下走,否则就会进入到408090地址
我们先跟踪一下aHttpWww_iuqerf
并没有什么卵用,我们回到刚刚的伪代码,双击408090
我们进入到此函数后,发现该函数首先判断程序是不是双击运行的,双机运行的话是就进入到407F20函数,否则就会打开服务主函数,启动服务管理器(28行)
我们首先进入到407F20函数
第一步,进入407C40函数,带参数执行mssecmvc恶意程序,而后打开服务器创建服务进程,更改成微软的服务名称用来躲避杀软
我们再进入407CE0,该函数的目的其实是为了将tasksche.exe藏起来,这样如果只是把明面上的删除了,过一段时间依然会返回来(我猜的)
最后,如程序是正常执行的,那么此时程序会进入到408000服务主函数内
如注释所看,该函数目的是注册一个服务,服务名为mssecsvc2.0,若是服务注册成功则会进入407BD0主函数内
我们进入到407BD0函数地址
我们首先进入407B90函数地址,如下图所示,此函数主要功能其实就是初始化网络环境,准备加载两个PE文件
我们再进入407A20内容,其实就是申请两个内存空间(到底是堆栈还是内存?)用来存放即将要用到的payload,不管你是x86还是x64架构,直接塞两次进去,而后保存文件,存在的话就打开
我们再来看一下 407720函数,此函数用来进行内网SMB协议漏洞攻击
我们先来查看409160获取网卡信息函数
4076B0 局域网内传播函数,利用SMB协议漏洞或者是SMB协议爆破连接目标机器
由此,我们得出如下结论
到此暂时告一段落,其余的笔者能力有限(菜逼),接下来就要从日志入手,快速知道局域网都哪些人中招了
废话不多说,我们直接从登录失败日志即可得到我们想要的答案;因为该蠕虫会通过445端口进行爆破,那么我们只需要检索服务器4625登录失败日志,找到机器行为的,那么就可以知道谁攻击我,谁攻击我,谁就是有问题的机器
又拐回来了,日志虽然只有5000+条,但是时间线太长,如果一条一条筛不太现实,这个时候我们直接上工具
Log Parser Studio ,这是一款图形化日志分析工具,我们只需要用到几条简单的SQL语句即可快速筛选我们想要的内容
首先我们先将系统日志导入到工具内
而后我们新建一个窗口,修改日志类型,输入sql语句
SELECT TimeGenerated AS [时间],EXTRACT_TOKEN(Strings,5,'|') AS [登录用户名],EXTRACT_TOKEN(Strings,6,'|') AS [登录域],EXTRACT_TOKEN(Strings,19,'|') AS [源IP地址],EXTRACT_TOKEN(Strings,10,'|') AS [登录类型],EXTRACT_TOKEN(Strings,11,'|') AS [登录进程]
FROM C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtx
WHERE
EventID=4625
此SQL语句可以获取所有的4624登录失败日志,筛选出爆破的时间、爆破的用户名、登录域、源IP地址、登录类型、登录进程信息;我们着重关注登录类型为3,登录进程为Ntlmssp的,这个进程其实就是445/3389爆破的记录
我们可以点击红色感叹号执行,而后将结果导出到表格里,这样更方便我们观察
导出结果如下图所示
我们以此类推,导出4624结果
SELECT TimeGenerated AS [时间],EXTRACT_TOKEN(Strings,5,'|') AS [登录用户名],EXTRACT_TOKEN(Strings,6,'|') AS [登录域],EXTRACT_TOKEN(Strings,18,'|') AS [源IP地址],EXTRACT_TOKEN(Strings,8,'|') AS [登录类型],EXTRACT_TOKEN(Strings,9,'|') AS [登录进程]
FROM C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtx
WHERE EventID=4624
我们看一下导出结果
这两个并没有卵用,我们只需要知道谁爆破我们了就可以了,那么我们可以这样做
SELECT DISTINCT to_date(TimeGenerated) AS [时间],EXTRACT_TOKEN(Strings,19,'|') AS [源IP地址],EXTRACT_TOKEN(Strings,10,'|') AS [登录类型],EXTRACT_TOKEN(Strings,11,'|') AS [登录进程],EXTRACT_TOKEN(Strings,5,'|') AS [登录用户名],COUNT(*) AS [总数]
FROM C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtx
WHERE EventID = 4625
GROUP BY to_date(TimeGenerated), EXTRACT_TOKEN(Strings,19,'|') ,EXTRACT_TOKEN(Strings,10,'|') , EXTRACT_TOKEN(Strings,11,'|'), EXTRACT_TOKEN(Strings,5,'|')
HAVING COUNT(*) > 5
ORDER BY to_date(TimeGenerated), COUNT(*) DESC
我们直接将每天的IP去重复,然后按照日期排序,将每天对我们爆破过的IP进行单独计数,我们直接就知道了都有谁爆破我们了,大大的爽
只筛选4625的源IP地址
SELECT DISTINCT EventID, EXTRACT_TOKEN(Strings,19,'|') AS IPAddress
FROM C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtx
WHERE EventID = 4625
至此告一段落,清除也简单,结束掉进程,删除就行了
相关文章:

Wannacrypt蠕虫老树开花?又见Wannacrypt
Wannacrypt蠕虫是一个在2017年就出现的远古毒株,其利用永恒之蓝漏洞降维打击用户服务器,而后进行扩散勒索,曾经一度风靡全球,可谓是闻者伤心,听着落泪,因为这玩意解密是不可能 解密的。 而2023年的今天&am…...

结合基于规则和机器学习的方法构建强大的混合系统
经过这些年的发展,我们都确信ML即使不能表现得更好,至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束,我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的,虽然机器学习在解决问题…...

Spring Security OAuth2实现多用户类型认证、刷新Token
原本的OAuth2登录支持用户名密码登录,现在还想支持另外用id号码和密码登录。但是OAuth2默认提供的UserDetailsService只允许传入一个参数:想要实现多种用户登录,是不是可以考虑loadUserByUsername方法携带多个参数呢?接下来记录一…...

云计算介绍,让你更了解云计算
同学们好! 第一次接触IT行业吗?没关系,看完这篇文章肯定会让你不再陌生。给自己几分钟时间,认真看完哦! 1、不知道什么是云计算? 网络计算云计算 官方定义是:通过网络提供可伸缩的分布式计算…...

阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞
就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。这不又到了面试跳槽的黄金段,成功升职加薪,不成功饱受打击。当然也要注意&…...
【JDK1.8 新特性】Lambda表达式
1. 什么是Lambda表达式? Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达…...
【Vue.js】Vuex核心概念
文章目录全局状态管理模式Vuexvuex是什么?什么是“状态管理模式”?vuex的应用场景Vuex安装开始核心概念一、State1、单一状态树2、在 Vue 组件中获得 Vuex 状态3、mapState辅助函数二、Getter三、Mutation1、提交载荷(Payload)2、…...

react router零基础使用教程
安装既然学习 react router 就免不了运行 react安装 reactnpx create-react-app my-appcd my-appnpm start安装 react routernpm install react-router-dom如果一切正常,就让我们打开 index.js 文件。配置路由引入 react-router-dom 的 RouterProviderimport {Route…...
IOC三种依赖注入的方式,以及区别
目录构造方法注入(constructor injection)setter 方法注入(setter injection)接口注入(interface injection)三种方式比较构造方法注入(constructor injection) 构造方法中声明依赖…...

Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存
文章目录1.安装新版本PCL-1.132.在工程中使用新版本的PCL-1.133.pcl-1.13误装到/usr/local/下如何卸载1.安装新版本PCL-1.13 下载PCL-1.13代码: 修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安…...

计算机图形学08:中点BH算法绘制抛物线(100x = y^2)
作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、算法原理二、…...

基于java的高校辅导员工作管理系统
摘 要网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块,对于高校辅导员工作管理将是又一个传统管理到智能化信息管理的改革,设计高校辅导员工作管理系统的目的就是借助计算机让复杂的班级信息、学籍信息等管…...

字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!
前言职场中的那些魔幻操作,研发最烦的是哪个?“面对业务需求的时候,可能都听过这样一句话:这个很简单,直接开发,三天内上线;”朋友说:“产品听了流泪,测试见了崩溃&#…...

详细介绍关于链表【数据结构】
文章目录链表单链表尾插头插尾删第一种方式删除第二种头删查找pos之前插入pos位置删除pos后面插入pos位置后面删除链表 顺序表缺点: 空间不够了 需要扩容,但是扩容是有消耗的头部或中间位置需要插入或删除,需要挪动 ,但是挪动是…...

2.3 二分搜索技术
二分搜索算法是运用分治策略的典型例子。给定己排好府的 n个元素a10:n-1],现要在这n个元素中找出一特定元素3。首先较容易想到的是用顺序搜索方法,逐个比较a10:1-1]中元素,直至找出元素,或搜索遍整个数组后确定,不在其…...

RWEQ模型的土壤风蚀模数估算、其变化归因分析
土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2,占国土总面积的16.7%,严重影响这些地区的资源开发和社会经…...

学习streamlit-1
Streamlit A faster way to build and share data apps streamlit在几分钟内就可以将数据脚本转换为可共享的web应用程序,并且是纯python编程,无需前端经验。 快速开始 streamlit非常容易上手,运行demo只需2行代码: pip install…...
GPS定位知识介绍
GPS定位和网络定位 GPS定位需要卫星参与,设备借助搜到的卫星讯号,计算出设备的位置。网络定位是指利用基站、WIFI MAC,获取一个粗略的位置。3D定位和2D 定位 3D一般是指使用至少4颗以上卫星完成的定位。2D一般使用3颗卫星完成的定位过程。...

【Linux】理解Linux环境变量
🍎作者:阿润菜菜 📖专栏:Linux系统编程 初识环境变量 什么是环境变量 我们平常所用的Linux指令其实也是可执行程序,和我们自己写的二进制程序没什么两样,那么为什么我们在执行自己的程序的时候需要加上 ./…...
ISCSI块存储-集群
ISCSI块存储-集群 1、ISCSI概述 ISCSI与SCSI原理对比 底层都是硬盘 ISCSI第二层就是通过gateway/网络获取–>SCSI:是直连获取 常见的用于ISCSI服务的网络拓扑类型 SAN:Storage Area Network:存储区域网络; 多采用告诉光纤…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...