代码编织梦想

分析病毒四部曲

在工作中,病毒分析师的任务就是从中毒的机器中提取样本,第一时间手工清理或是修复机器现场,之后再做分析。

分析病毒可以细分为四部曲:

1.提取样本,手工清理机器

2.行为分折,获取病毒行为

3.   详细分折,找到行为的恶意代码

4.   提出解决方案,提取特征给公司产品,完成查杀,编写文档报告,有条件编写专杀工具

样本的提取

在虚拟机中,运行样本(需要断网)。待病毒执行之后,开始提取样本。

使用PCHunter观察:

1.   查看可疑进程

2.查看启动项(注册表、计划任务等)

3.查看驱动、服务等可疑项

4.   查看其他杂项,网络连接

5.   使用抓包工具(WSExplorer)查看可疑流量

无异常

6、其他

样本信息:

文件: C:\Users\15PB\Desktop\Wannary\WannaCry.exe

大小: 3723264 bytes

文件版本:6.1.7601.17514 (win7sp1_rtm.101119-1850)

修改时间: 2017年5月13日, 13:55:05

MD5: DB349B97C37D22F5EA1D1841E3C89EB4

SHA1: E889544AFF85FFAF8B0D0DA705105DEE7C97FE26

SHA256:24d004a104d4d54034dbcffc2a4b19a11f39008a575aa614ea04703480b1022c

CRC32: 9FBB1227

文件: C:\ProgramData\znemvazsnwpqy217\Wannacry.exe

大小: 3514368 bytes

文件版本:6.1.7601.17514 (win7sp1_rtm.101119-1850)

修改时间: 2022年7月11日, 13:22:29

MD5: 84C82835A5D21BBCF75A61706D8AB549

SHA1: 5FF465AFAABCBF0150D1A3AB2C2E74F3A4426467

CRC32: 4022FCAA

使用PEid查看样本信息,VC++6.0的程序,并且没有加壳

查看其导入表:

使用ResourceHack查看资源,发现资源中有PE文件,将其提取出来

使用PEid的插件Krypto ANALyzer查看用到那些算法:

再看看刚才从资源中提取出的wannacry2.exe,查看其导入表:

用到了创建进程、获取资源、创建服务、注册表等相关API函数

使用ResourceHack查看资源,用到了PK压缩包,将其提取出来,命名为 : wannacry3.zip

提取出来后,压缩包中的内容是加密的:

手工清理机器:

1、结束可疑进程

2、删除可疑进程启动项,删除可疑服务的注册表键值,删除生成的一些文件

3、手工无法清除病毒,需要进一步分析

行为分析

获取样本之后,在虚拟机中,使用监控工具监控样本的运行。待病毒执行差不多之后,查看病毒的行为。(本病毒程序需要断网)

使用火绒剑,将样本拖到火绒剑,对样本进行监控:

1. 文件操作,主要看文件创建、修改、删除等操作

2. 注册表操作,主要看注册表设置、创建等操作

3.   进程操作,主要看创建进程、写入内存等操作

4.网络操作,主要看网络连接地址、IP等信息

5.   其他行为,以及人肉看样本运行后的反应

查看执行监控

分析样本的行为之后,发现的恶意行为:

1、在C:\Windows目录下创建病毒文件:tasksche.exe,在C:\ProgramData目录下创建文件夹:znemvazsnwpqy217

2、创建@Please_Read_Me@.txt文件,将文件感染为.WINCRY文件

3、创建注册表键值、设置注册表键值,HKEY_LOCAL_MACHINE\Software\Microsoft\Tracing\WannaCry_RASAPI32

HKEY_LOCAL_MACHINE\Software\Microsoft\Tracing\WannaCry_RASMANCS

4、设置启动项:C:\ProgramData\znemvazsnwpqy217\tasksche.exe

5、创建进程、跨进程写内存、打开设备、跨进程恢复线程

6、大量的持续性的网络连接行为(445端口)

详细分析

使用IDA对其进行分析,直接F5查看其伪代码

先判断是否能打开指定的URL,如果能访问,就退出程序,如果访问失败,就执行下面的病毒代码。因此,我们在前面运行病毒程序时需要断网。

分析sub_408090:

获取了当前模块名,然后判断了参数。如果参数小于2,说明是双击启动的程序,就执行sub_407F20函数;

里面又有两个函数,先分析sub_407C40:

创建了mssecsvc2.0的服务,显示名是Microsoft Security Center (2.0) Service,为了伪装自己,服务的路径是:C:\xxxx\WannaCry.exe -m security,创建之后,启动了这个服务。

分析sub_407CE0:

获取kernel32.dll的句柄,获取一些API,便于后面使用

找到R型资源,前面已经分析过了,里面是PE文件,加载资源,创建C:\Windows\tasksche.exe文件,然后将资源种的PE文件数据写到这个文件中。然后创建进程,启动这个tasksche.exe程序

如果参数大于等于2,说明是以服务的方式启动的程序,就打开服务管理器,打开服务mssecsvc2.0,然后执行sub_407FA0函数,更改服务的配置信息:

分析sub_408000:

注册一个函数处理服务控制的请求,然后设置了服务管理器的状态信息,分析sub_407BD0:

分析sub_407B90:

先初始化网络环境,如果成功返回0,就执行下面的函数。

分析sub_407620:

该函数是获取了一个密钥容器,然后初始化了临界资源对象。

分析sub_407A20:

申请了两块内存空间,将0x40B020上的内容拷贝到内存空间中,拷贝大小16480字节,将0x40F080上的内存拷贝内存空间中,拷贝大小51364个字节。将这两个地址上对于大小的文件拷贝出来保存exe,对其进行分析,发现40B020上的内容是个dll,导出表中有个PlayGame函数:

将数据拷贝到内存后,又执行了下面的操作:

分析sub_407720:

sub_409160,通过网卡设备,获取IP地址列表

sub_4076B0,连接445端口,如果能连接上,就利用漏洞进行攻击

sub_407480(connect_remote445),连接局域网IP的445端口,看是否能连接成功

如果连接成功,创建线程,执行sub_407540(exp_445),利用漏洞,在局域网内进行攻击

分析sub_407840:

先是获取两次系统运行时间,获取当前线程ID和句柄,然后有一个while循环,里面又有一个do-while循环,有一个随机函数:sub_407660(Random)

作用是随机生成几个数,然后将生成的数组成一个外网的IP地址,然后尝试连接这个IP的445端口,如果连接失败就睡眠,然后继续循环,如果连接成功,就跳出循环。

如果连接外网IP的445端口成功了,就会循环去连接这个IP子网段1-254得445端口,如果连接成功,就利用漏洞执行攻击的行为。

病毒主程序的流程图:

分析tasksche.exe程序:

分析sub_401225:

随机生成一个字符串作为服务名。

分析sub_401B5F(create_server_dir):创建服务的目录

sub_401AF6(create_dir):创建目录,并将目录设置为隐藏

sub_401F5D:创建服务,启动程序

sub_401CEB(create_server):创建服务、启动服务

sub_401EFF(create_mutex):创建互斥体

sub_401064(exec_shell):创建进程,执行cmd命令

分析sub_4010FD(reg_setORget):设置注册表,或者获取注册表中的病毒路径

分析sub_401DAB(unzip_src):释放资源,解压缩的解压密码:WNcry@2o17

分析sub_401E9E(write_cwnry):将比特币钱包的地址写入到c.wnry文件中

第一次传入的是1,就是读取c.wnry文件信息到内存中,第二次传入的是0,就是将DstBuf中的内容(钱包地址)写入到c.wnry文件中

分析sub_401064(exec_shell):创建进程,执行命令,将当前目录设置为隐藏,设置当前目录所有人都可以访问

分析sub_40170A(get_api):获取一些API函数,便于后面使用

分析sub_4012FD:构造函数,初始化

分析sub_401437:导入密钥,申请2段内存空间

sub_401861(g_CryptImportKey):导入密钥

分析sub_4014A6:解密t.wnry文件,返回PE文件(是个.dll文件)

通过OD观察,解密之后的文件是PE文件,大小是0x10000

分析sub_4021BD:加载DLL文件到申请的内存中,加载到0x100000000,记录一些PE信息

sub_4021E9:

有个循环,应该是在获取区段的一些信息

获取了API:GetNativeSystemInfo的地址,申请了内存:

获取了进程的堆句柄,申请了堆空间,将一些信息保存堆空间中,又申请了内存空间,将PE文件的一些信息保存到了申请的内存中,PE文件保存到了v22结构体中

分析sub_402924:遍历dll的导出表,找出TaskStart函数

找到TaskStart函数之后,调用这个函数:

分析sub_40137A:应该是析构函数:

tasksche.exe程序流程图:

分析tasksche.dll中的TaskStart函数

分析sub_10004690:创建互斥体,防止多开。如果返回1,说明病毒程序存在,就结束,如果返回0,说明病毒程序不存在,继续执行

分析sub_10001000(read_or_write):传入的参数是1,读取c.wnry文件到内存中

分析sub_100012D0(check_system_user):检测是否是系统用户

分析sub_10003410(get_api):获取一些API,便于后面使用

分析sub_10004600(create_mutex):创建互斥体,设置访问控制的属性

分析sub_10004500(check_crypt_file):读取00000000.dky和00000000.pky文件,测试加密是否正确

sub_10003D10(test_crypt):进行加密的测试,如果最后Str1和Str2相等,说明加密解密没有问题

分析sub_10004990:启动勒索弹窗的程序WannaDecryptor,将病毒目录添加到开机启动注册表中

sub_10001000(read_or_write):传入的参数是0,将配置信息写入到c.wrny文件中

sub_10004890(start_decrptysexe):如果不是系统用户、管理员用户,就创建线程,执行taskse.exe提升权限,然后启动@WanaDecryptor@.exe程序,弹出勒索对话框;如果是系统用户,就创建进程,启动@WanaDecryptor@.exe程序

sub_100047F0(create_reg_run):隐藏执行cmd命令,创建开机启动项,在注册表run下添加tasksche.exe

分析sub_10003AC0(createkey_file):创建00000000.pky文件(保存公钥)和00000000.eky文件(保存加密私钥)

g_CryptExportKey:创建pky文件,导出rsa公钥写入到创建的00000000.pky文件中

create_key:创建00000000.eky文件,将加密的密钥写入其中

encrypt_rsa:导出加密的私钥

分析sub_100046D0(open_res):打开00000000.res文件,第一次打开时文件不存在,所有会失败

分析sub_10004420(getrandom):随机生成8个字节,写入到res_file_buff中

分析sub_10004790(create_res_file):创建00000000.res文件,将全局变量res_file_buff中的内容写入到res中

sub_10004730(write_res_file):创建res文件,将res_file_buff中的内容写入到res中

分析sub_100045C0(check_dky_file):检测当前目录下是否有dky文件,测试加密函数

sub_10004500(check_crypt_file):

分析sub_10005730(encryptfile):如果设备有新磁盘加入,就遍历目录,加密其中的文件

sub_10005680:

sub_10001830(move_to_temp):移动部分文件到临时文件,由f.wnry文件保存这些文件名

StartAddress--sub_100029F0:创建线程,移动目录到临时文件

分析sub_10005540(encrypt):加密文件

sub_10005060(get_temp):获取临时目录,或创建一个隐藏的回收站目录

sub_10001910(get_path):创建C:\Windows\temp\3.WNCRYT

sub_100027F0(encrypt_dir):递归遍历文件,加密文件

sub_10002300(enum_dir):遍历文件,加密函数。如果遍历到的是目录,就将特目录过滤掉,将目录加入容器中,如果遍历到的是文件,就过滤掉3个病毒创建的文件,然后获取文件的类型,过滤掉.exe、.dll、.WNCRY文件,然后将文件保存到容器中

sub_10002F70(test_iscreatefile):检测这个目录是否可以创建文件,如果可以创建,就删除文件

sub_100032C0:过滤掉一些特殊的目录

sub_10002D60(check_file_type):获取文件的类型

如果是.exe和.dll文件,返回1,如果是.WNCRY文件,返回6,如果是要加密的文件类型,返回2:

如果是.WNCRYT,返回4,如果是byte文档,返回3。

sub_10002940(encrypt_file):加密文件

sub_10002200(encrypt_fun):加密文件

sub_10001960(encrypt_data):创建新文件,将加密的数据放到这个文件中

先进行判断,如果条件都满足,说明文件已经被感染了,就退出;如果不满足,就创建文件,用于保存加密的数据。

在加密文件中,先写入一些原始文件的信息

将加密后的数据写入到刚才创建的文件中

分析sub_10005190:填充磁盘。获取磁盘类型,如果是硬盘,就创建hibsys.WNCRYT文件,然后不停地将内存中地数据写到hibsys.WNCRYT文件中

sub_10005120(del_hibsys_file):删除hibsys.WNCRYT文件

分析sub_10001760(releaseresource):释放资源

分析sub_10005300(starttaskdl):创建线程,启动taskdl.exe程序

分析sub_10004990:分析过了,启动勒索弹框程序,将病毒目录加到开机启动项注册表中

分析sub_100057C0(batoperator):创建bat脚本,执行代码

分析sub_10004CD0(runbat):运行批处理文件,u.wnry变为解密文件@WanaDecryptor@.exe

sub_10001140:启动bat脚本并删除脚本

分析sub_10004DF0(create_rwnry):创建勒索文档,从r.wnry中读取数据到内存,然后写入到@Please_Read_Me@.txt中

分析sub_10005480(encrypt_file_):加密文件

sub_100053F0:加密文档

sub_10004F20:将b.wnry 拷贝到 @WanaDecryptor@.bmp 中,设置桌面背景

执行cmd命令,启动程序,填充磁盘,最后释放资源。

TaskStart函数的流程图:

5个线程回调函数:

病毒发作操作:

加密算法

1、内置RSA公钥是病毒制作者硬编码到病毒中的,随病毒进行传播;

2、病毒执行后,随机生成一对RSA公钥、私钥,公钥保存在00000000.pky文件中,

私钥会被内置RSA公钥进行RSA-2048加密,保存在00000000.eky中。

3、病毒会随机生成不同的AES密钥,AES-128-CBC模式加密每个文件(每个文件的AES密钥不同)

4、加密文件的AES密钥会被随机生成的RSA公钥进行RSA-2048加密,加密后的密钥和加密后的文件会构成加密后的文件.WNCRY

解决方案(或总结)

1、提取病毒的特征,利用杀毒软件查杀

        病毒特征:WANACRY!、WNcry@2o17

2、手工查杀

        1、删除病毒进程

        2、删除病毒启动项

        3、加密文档无法解密

3、修复方法

        1、系统升级、及时打补丁。

        2、被加密的文件,不重要的话,就重装系统,重要的话只能交赎金解密。

        3、关闭445端口。

        4、创建一个互斥体,防止病毒运行。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZK_1874/article/details/127578455

wannacry勒索病毒分析_九阳道人的博客-爱代码爱编程

Wannacry勒索病毒分析 在找活了,之前有幸听过奇安信的招聘会,大佬说,Wannacry病毒现在还在某些地方流行着,是经典的勒索病毒。这让我觉得分析这个病毒是刷经验的好机会,所以就在决定分析一下这个在2017年的纵横江

wannacry勒索病毒简单分析-爱代码爱编程

文章目录 样本概况样本信息环境及工具分析目标简单行为分析导入表分析字符串分析查看资源火绒剑行为监控病毒详细分析11.exe总结11.exe的主要行为taskche.exe总结taskche.exe的主要行为dump.dll总结dump.dll的主要行为总结 样本概况 样本信息 MD5:DB349B97C37D22F5EA1D1841E3C8

[网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密-爱代码爱编程

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了Vulnhub靶机渗透的DC-1题目,通过信息收集、CMS漏洞搜索、Drupal漏洞利用、Metasploit反弹shell、提权及数据库爆破获取flag。这篇文章将分享新知识,最近WannaRen勒索软件爆发(下图是安天的分析

[网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析-爱代码爱编程

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了通过Python利用永恒之蓝漏洞加载WannaCry勒索病毒,并实现对Win7文件加密的过程,但过程较为复杂,为什么不直接利用永恒之蓝呢?所以,这篇文章将直接分享MSF利用MS17-010漏洞进行反弹Shell,再上传勒索病毒进

[网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读-爱代码爱编程

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了逆向分析OllyDbg动态调试工具的基本用法,包括界面介绍、常用快捷键和TraceMe案例分析。这篇文章将继续详细讲解WannaCry蠕虫的传播机制,带领大家详细阅读源代码,分享WannaCry勒索病毒是如何传播感染的。作者分析该病

WannaCry勒索病毒复现及分析,蠕虫传播机制全网源码详细解读 | 原力计划-爱代码爱编程

作者 | 杨秀璋 编辑 | 夕颜 题图 | 东方 IC 出品 | CSDN(ID:CSDNnews) 这篇文章将详细讲解WannaCry蠕虫的传播机制,带领大家详细阅读源代码,分享WannaCry勒索病毒是如何传播感染的。作者分析该病毒一个月,一方面觉得自己技术菜,另一方面深知系统安全需要坚持,继续加油。希望文章对您有所帮助~ 本文

勒索病毒WannaCry深度技术分析——详解传播、感染和危害细节-爱代码爱编程

一、综述        5月12日,全球爆发的勒索病毒WannaCry借助高危漏洞“永恒之蓝”(EternalBlue)在世界范围内爆发,据报道包括美国、英国、中国、俄罗斯、西班牙、意大利、越南等百余个国家均遭受大规模攻击。我国的许多行业机构和大型企业也被攻击,有的单位甚至“全军覆没”,损失之严重为近年来所罕见。 本报告将从传播途径、危害方式和结果、受威胁

linux版本wannacry,WannaCry 勒索病毒也能感染 Linux-爱代码爱编程

原标题:WannaCry 勒索病毒也能感染 Linux WannaCry 已升级到 2.0 版,与之前版本的不同是,这个变种取消了 Kill Switch,不能通过注册某个域名来关闭变种勒索病毒的传播,该变种传播速度可能会更快。另据卡巴斯基技术人员 Raiu 及其团队分析,WannaCrypt 2.0 版的作者另有他人,并不是 WannaCryp

Wannacry勒索病毒样本分析-爱代码爱编程

一、病毒简介: WannaCry(又叫Wanna Decryptor),一种“蠕虫式”的勒索病毒软件,大小3.3MB,由不法分子利用NSA(National Security Agency,美国国家安全局)泄露的危险漏洞“EternalBlue”(永恒之蓝)进行传播 。勒索病毒肆虐,俨然是一场全球性互联网灾难,给广大电脑用户造成了巨大损失。最新统计数据显示

双系统linux清除勒索病毒,wannacry勒索病毒修复软件-爱代码爱编程

WannaCryransomware勒索者是一款比特币勒索病毒,最近全球很多人的电脑都中了这款病毒,用户需要支付比特币才能解锁电脑。据说中招的大多数都是win7用户,没有开启自动更新功能,没打三月份的补丁,西西本页为您带来解决办法! wannacry勒索病毒修复软件说明: wannacry勒索病毒专杀工具目前还没有出来,用户可以下载360安全卫士打

勒索病毒服务器文件加密后缀,WannaCry勒索病毒文件加密密码结构-爱代码爱编程

引言勒索病毒Wannacry爆发已经过去一周了,由于该病毒采用加密用户文件方式进行勒索,许多朋友对该病毒文件加解密过程比较感兴趣。在已见到的病毒分析报告[1-4]中对文件加解密过程描述的比较零散。为便于全面理解病毒使用的密码技术,本文综合多家的分析报告,从密码技术角度勾勒出该病毒文件加解密基本框架。包括加密策略、密钥结构、密钥生成与保护等,为有兴趣者提