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

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. C/C++ 条件编译静态库

    ==>windows 下方法: 1.方法一:VS工程中中直接添加 1.1在VS的属性->常规->附加库目录,添上文件夹的路径:例如:lib/x64: 1.2输入的附加依赖项,添加上库 ...

  2. vue 中 keep-alive 缓存数据、离开时位置

    路由中: 页面中: 需要缓存的组件中: 因为是keep-alive  所以在初始化页面的时候 会走一次生命周期 当二次进入的时候就已经是缓存状态了 不会在走生命周期 于是它就有了自己的周期函数分别是 ...

  3. 【论文阅读】Binary Multi-View Clustering

    文章地址:https://ieeexplore.ieee.org/document/8387526 出自:IEEE Trans. on Pattern Analysis and Machine Int ...

  4. 5. 彤哥说netty系列之Java NIO核心组件之Channel

    你好,我是彤哥,本篇是netty系列的第五篇. 简介 上一章我们一起学习了如何使用Java原生NIO实现群聊系统,这章我们一起来看看Java NIO的核心组件之一--Channel. 思维转变 首先, ...

  5. 删除节点(removeChild())

    remoceChild():方法将从一个给定元素里删除一个子节点: reference = element.removeChild(node); 这个方法的返回值是一个指向已经被删除的子节点的引用指针 ...

  6. 12-kubernetes Dashboard 认证及分级授权

    目录 部署 dashboard 查看 开放访问 配置dashboard用户 1. token 令牌认证 创建一个 serviceAccount dashboard-admin 绑定 clusterbi ...

  7. python模块IO

    Python之模块IO io概叙 io模块提供了python用于处理各种类型I/O的主要工具,主要有三种类型的I/O:文本I/O,二进制I/O和原始I/O:这些都是通用类型,各种后备存储可使用其中的每 ...

  8. 一张图讲解单机FastDFS图片服务器安装步骤(修订版)

    前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...

  9. 自定义cell的步骤

    ---恢复内容开始--- 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle ...

  10. SDWebImage学习之 NSCache

    1.使用SDWebImage的好处 1.异步下载(避免主线程卡死) 2.做好图片缓存(这样就不需要每次都加载网络图片) 3.解决了循环利用的问题 很容易造成内存警告