以下部分是我的一次大作业,写了大概有一周,拿出来凑篇博客,如果有错误的地方,还请指正。粘贴过程中可能图片有错误。

1.环境搭建及简介

1.1 实验环境

  • Windows 7 (靶机)
  • Parrot(攻击机)

1.2 环境简介

1.2.1 Windows 7(靶机)

Windows 7 ,版本号为7601, 已开启SMB服务,445端口开启,防火墙关闭。 IP地址:192.168.116.137

1.2.2 Parrot(攻击机)

Linux Parrot 4.19.0 ,Parrot 是一款专门用于渗透测试的Linux系统,其中集成了nmap, wireshark,Metasploit等600多种常用渗透测试工具,相比热门的kali更加强大。IP地址为:192.168.116.141.

2.漏洞探查及渗透

2.1漏洞探查

使用nmap工具进行端口和操作系统扫描。扫描结果显示靶机的135,139,445端口都开启,而且服务信息也显示出来。同时靶机操作系统最可能为windows 7。

对靶机检查看其是否存在永恒之蓝漏洞,设置目标IP为192.168.116.137,设置线程数为10,加速探查过程。

结果显示靶机可以被利用。

2.2 漏洞利用

使用tcp反弹式meterpreter作为渗透操作模块,默认本地4444端作为连接端口.

使用exploit/windows/smb/ms17010_eternalblue模块进行渗透。通过meterpreter可以进行提权,记录键盘,上传下载文件,监视摄像头等操作。

作为举例,我将摄像头连接到靶机上,然后通过parrot远程连接主机摄像头。

列举摄像头,发现存在EasyCamera,连接该摄像头,连接到该摄像头并返回一个网页视频流。

3.病毒源码分析

3.1病毒工作基本流程

WannaCry病毒感染后主要行为是将计算机上的多种文件类型文件加密,以此为筹码勒索用户,此外病毒通过随机生成公网IP地址和遍历内网IP地址,访问其445端口,以此快速传播。,病毒的基本工作流程如下:

3.2病毒源码分析

3.2.1 源码说明

源码来源:https://github.com/topcss/WannaCry

注:该源码通过原exe程序反编译而来

代码结构:

文件

作用

worm.c

蠕虫行为,包括感染,传播病毒

decryptor.c

文件加密,勒索

3.2.2worm.c

该病毒感染最初会尝试连接http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com,连接状态返回变量v8如果连接成功,则结束程序。如果连接失败,则调用函数 function_408140进行感染。

函数function_408140中,建立mssecsvc2.0进程,同时将该进程连接到计算机的服务控制数据库上。

将mssecsvc2.0写入注册表中,使其每次开机都会自动启动。

调用攻击载荷模块进行攻击,这段代码中有多个内存的释放和调用函数,如GlobalFree,memcpy,同时还使用到了_OVERLAAPPED结构体变量,因此推断是攻击载荷调用部分。

随机生成不同的公网IP地址,访问其445端口。

内网通过扫描网卡信息,遍历当前网段,从而进行传播。

在C:\\WINDOWS释放勒索模块tasksche.exe。

2.将一些特殊的字符串写入内存,这些字符串长度相同,应该是Hash之后的字符串,猜测可能是用于解密部分文件,用于证明其有能力解密文件,诱使用户支付。

3.2.3 decryptor.c

避开一些重要的系统文件,如系统文件目录(WINDOWS),驱动文件目录(Intel)等等,防止加密后影响系统的运行。

这一部分应该是加密是生成密钥。

发送网络请求,返回网络回复信息,但从目前这些信息中无法判断到底是什么行为。

c.wnry文件中主要包含配置文件,包括比特币钱包地址,tor浏览器下载地址等,该部分讲该文件写入文件,应该是为后续的下载行为做准备。

 

该部分反复遍历文件,并进行读写,同时还操作了.res文件,此外将.WNCRY文件后缀加到部分文件后面,推测应该是加密文件及修改文件后缀部分。

勒索用的比特币钱包地址硬编码在代码中。

7.这一部分代码存在明显的下载行为,因此推断是从互联网上下载一些病毒需要的资源。

这一段代码用于反复计算文件生成的时间和当前系统时间的时间差,应该是病毒行为中加密期限部分的实现,病毒通过通过设置期限和提高比特币赎金的方式威胁用户,迫使用户尽快支付。

由于该代码通过原来的exe文件反编译而来,而且在加解密部分使用了大量的goto和函数调用,所以目前只能分析到这样。

4. 靶机完全控制

通过前面两个阶段的漏洞初步利用,和代码分析,基本了解了永恒之蓝漏洞的利用和Wannacry病毒的基本工作原理,现在,我打算通过进一步深入利用该漏洞,通过利用攻击载荷生成木马,将木马上传到靶机,实现对靶机的完全控制。

4.1 使用模板生成木马

1.首先使用一个小exe文件作为木马的携带模板。我使用自己电脑上的11111111(某个敏感词,自行体会)工具来生成一个小的可执行程序。选择的载荷依然是windows/x64/meterpreter/reverse_tcp,为了一定程度上的避免杀毒软件,我使用metasploit默认的msfencoder来对生成的exe文件进行编码。

 

-p 参数表示使用的payloads,设置攻击机的IP地址,-e表示使用的编码模块为x86/shikataganai,使用该模块的原因是该模块在msfencoder的各种编码模块中效果评价为excellent,-f 表示生成的文件格式为exe,最后是输出文件,我命名为111111111111(某个敏感词,自行体会)(下图中分别是编码模块评分和模板及生成的文件)

2.将生成的木马程序进行简单的测试,将其上传到VirSCAN上进行简单测试。效果似乎还不错,绕过了一半的杀软。但鉴于平台使用的一些杀软的版本较老,该木马的真实效果可能会差很多。

 

 

然后尝试用upx继续加壳,但好像遇到了些问题,无法加壳。

 

目前生成的木马是让用户打开木马应用后返回给攻击机一个tcp连接,然后控制该主机。除此之外,还可以使用该木马进行社会工程学攻击,但由于目前我没有公网IP,所以只能在局域网内使用,以后可以通过购买域名进行内网穿透,实现公网下的连接。

4.2 木马上传

4.2.1 初次尝试

1.使用最初的渗透方法获取主机控制权。

 

2.给目标主机上传木马。

 

然后在win7的C盘下发现已经上传的111111111111(某个敏感词,自行体会)文件。

 

但好像出了点问题,无法运行,重新试试。

 

4.2.2 改换思路

这次换个思路,将靶机上的应用拖到攻击机上,然后捆绑木马,之后再上传上去替换原来的文件。

首先我在靶机上下载了一个小计算器应用,然后攻击机将该应用拖到本机,然后进行捆绑木马。

2. 重新进行编码,捆绑。

3. 评测,这次效果似乎更好,原因可能是我循环编码了20次。

 

上传木马替换原有文件。

但上传后依然不能执行,可能是编码过程出了些问题。

4.2.3 veil免杀载荷

由于编码后总是出问题,所以再次改换思路。这次我使用veil-Evasion生成免杀模块,然后使用msfconsole监听veil生成的监听模块,然后使用捆绑工具将监听模块和模板文件捆绑。

由于我的parrot虚拟机上没有veil,另一台kali上装过veil,所以之后的渗透过程在kali上完成。

 

1.生成可执行exe模块和监听模块。列出所有的可用模块。

 

选择c/meterpreter/rev_tcp模块,并设置,生成执行模块hi.exe和监听模块hi.rc。

 

veil本身就是专门用于免杀的工具,但还是先测试一下,看看效果。

结果有点尬了,只绕过了一半不到,最尬的是竟然绕过的大多是国内的杀软。百度,金山,腾讯,360都没反应... ...

上传模块,因为我用的exe捆绑机是在windows环境下,所以还得在windows下捆绑,真实环境下是绝对不会这样做的。

 

这是生成的捆绑文件,完全可执行。

 

3.攻击机上开启监听模块,同时在靶机上开启计算器。返回一个连接,建立一个session。

4.为了防止用户关闭计算器导致进程关闭,所以将会话进程迁移。使之成为一个独立进程。可以看出post/windows/manage/migrate将会话从原来的6744进程迁移到了7128进程。

在靶机上关闭计算器,会话依然存在。

5.将控制持久化,确保系统重启后meterpreter依然可以运行。这样其实是修改靶机的注册表,将meterpreter进程加入注册表项/HKLM/Sosftware/Microsoft/Windows/CurrentVersion/Run下,以后除非用户可以将这个键值手动删除或修改,否则一直会运行。

5. 总结

至此,所有的流程全部完成,最终,靶机变成了一台开机就被完全控制的肉鸡,后续可以通过这台机器进行各种操作,比如DDos,挖矿,等等。此外,还可以通过该主机扫描该内网内的其他主机,进行渗透,然后组成一个僵尸网络,完成更复杂的操作。

不足:在代码分析上,由于我还没有学习怎么详细分析汇编码,反编译工具也不了解,所以直接使用别人的反编译的代码分析,有很多都没有分析出来,后期渗透过程中,由于对文件加壳操作还不熟,出现编码后无法执行的问题也无法解决,虽然最后完成了对靶机的完全控制,但中间有些流程在真实环境下是完全不可操作的,所以后续还需要认真钻研。

6.参考

[1] David Kennedy, Jim O'Gorman.Metasploit:The Penetration Tester's Guide[M].北京:电子工业出版社,2017.7

[2] 任晓晖.黑客免杀攻防[M].北京:机械工业出版社,2013.10

[3] Peter Kim.The Hacker Playbook2:Practical Guide To Penetration Testing[M].北京:人民邮电出版社,2017.2

[4] 诸葛建伟,陈立波,孙松柏.Metasploit渗透测试.魔鬼训练营[M].北京:机械工业出版社,2013.8

  • https://www.freebuf.com/articles/terminal/153230.html
  • https://www.cnblogs.com/youcanch/articles/5671264.html

永恒之蓝及WannaCry分析的更多相关文章

  1. “永恒之蓝”(Wannacry)蠕虫全球肆虐 安装补丁的方法

    “永恒之蓝”利用0day漏洞 ,通过445端口(文件共享)在内网进行蠕虫式感染传播,没有安装安全软件或及时更新系统补丁的其他内网用户就极有可能被动感染,所以目前感染用户主要集中在企业.高校等内网环境下 ...

  2. 微软永恒之蓝ms17010补丁下载-wannacry

    勒索病毒爆发:上百国家遭"感染",Windows勒索病毒恐怖蔓延!勒索病毒,掀起了全球上百个国家.数十亿用户对网络安全的恐慌,微软推出的永恒之蓝ms17010补丁下载专为勒索病毒专 ...

  3. wannacry分析--20199319

    病毒概况 WannaCry病毒利用前阵子泄漏的方程式工具包中的"永恒之蓝"漏洞工具,进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry病毒进行感染,并作为攻击 ...

  4. 由"永恒之蓝"病毒而来的电脑科普知识

    永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...

  5. 关于NSA的EternalBlue(永恒之蓝) ms17-010漏洞利用

            好久没有用这个日志了,最近WannaCry横行,媒体铺天盖地的报道,我这后知后觉的才想起来研究下WannaCry利用的这个原产于美帝的国家安全局发现的漏洞,发现漏洞不说,可以,自己偷偷 ...

  6. 由"永恒之蓝"病毒而来的电脑知识科普

    永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...

  7. 永恒之蓝MS17-010漏洞复现

    永恒之蓝MS17-010漏洞复现 1.漏洞描述: 起因: 永恒之蓝(Eternalblue)是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包 ...

  8. 永恒之蓝(MS17-010)漏洞复现

    1. 漏洞介绍 永恒之蓝: 恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含"永恒之蓝"工具,"永恒之 ...

  9. WinDbg 蓝屏dump分析教程

    一.WinDbg是什么?它能做什么? WinDbg是在windows平台下,强大的用户态和内核态调试工具.它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏.程序崩溃(IE崩溃)原因,是我们日常 ...

随机推荐

  1. alpha week 2/2 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9798 一.小组情况 队名:扛把子 组长:迟俊文 组员:宋晓丽 梁梦瑶 韩昊 ...

  2. Java的Arrays类 基本用法

    初识Java的Arrays类 Arrays类包括很多用于操作数组的静态方法(例如排序和搜索),且静态方法可以通过类名Arrays直接调用.用之前需要导入Arrays类: import java.uti ...

  3. 更好一点的:Vue 利用指令实现禁止反复发送请求

    理论上可以用于任何元素,生效时会在元素上出现一个同大小的灰色蒙层(button元素会该表原生的disabled属性). /** * 当元素触发发起请求后,当发起的请求中最后一个请求的结果返回(不关心返 ...

  4. Identityserver4配置证书

    IS4中如果token的类型是JWT,则需要使用RS256算法生成非对称签名,这意味着必须使用私钥来签名JWT token,并且必须使用对应的公钥来验证token签名,即验证token是否有效.使用R ...

  5. 【数据结构】之散列链表(Java语言描述)

    散列链表,在JDK中的API实现是 HashMap 类. 为什么HashMap被称为“散列链表”?这与HashMap的内部存储结构有关.下面将根据源码进行分析. 首先要说的是,HashMap中维护着的 ...

  6. PHP页面跳转三种实现方法

    一.header()函数 header()函数是PHP中进行页面跳转的一种十分简单的方法.header()函数的主要功能是将HTTP协议标头(header)输出到浏览器.header()函数的定义如下 ...

  7. python模块StringIO和BytesIO

    StringIO和BytesIO StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创 ...

  8. 全新一代云服务器S6,重新定义性价比

    S6通用计算型云服务器,搭载全新一代处理器,配套华为自研高性能智能网卡,计算与网络性能全面升级.S6进一步强化高性价比定位,满足企业性能要求的同时,降低中小企业上云成本. 更多详情请访问ECS产品介绍 ...

  9. Pycharm常见快捷键

    Ctrl+/注释(取消注释)选择的行 Shift + Enter开始新行 Ctrl + Enter智能换行 TAB Shift+TAB缩进/取消缩进所选择的行 Ctrl + Alt + I自动缩进行 ...

  10. Xcode中.a文件引起的错误

    一.     TARGETS -> Build Settings-> Search Paths下 1.  Library Search Paths 删除不存在的路径,保留.a文件的路径(此 ...