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