Metasploit基础

专业术语

  • Exploit(渗透攻击)
    渗透攻击是指由攻击者或渗透测试者利用一个系统、应用或服务器的安全漏洞,所进行的攻击行为。攻击者使用渗透攻击去入侵系统时,往往会造成开发者所没有预期的一种特殊结果。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击(如SQL注入),及利用配置错误等。
  • Payload(攻击载荷)
    攻击载荷是我们期望目标系统在被渗透攻击之后去执行的代码,在Metasploit框架中可以自由地选择、传送和植入。如:反弹式shell是一种从目标主机到攻击机主机创建网络连接,并提供Windows命令行shell的攻击载荷,而bindshel攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。攻击载荷也可能是在目标操作系统上执行一些命令,如添加用户账户等。
  • Shellcode
    shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常以汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令之后,才会提供一个命令行shell或者Meterpreter shell。
  • Module(模块)
    一个模块是指Metasploit框架中所使用的一段软件代码组件。如渗透攻击模块(exploit module)、辅助模块(auxiliariy module)等。模块Metasploit框架是的核心。
  • Listener(监听)
    监听器是Metasploit框架用来等待连入网络连接的组件,举例来说,在目标主机被渗透攻击之后,他可能会连接互联网回连到攻击主机上,而监听器组件在攻击上等待被渗透攻击的系统来里连接,并负责处理这些网络连接。
  • Auxiliaries(辅助模块)
    该模块不会直接在测试者和目标主机之间建立访问,他们只负责执行扫描、嗅探、指纹识别、信息收集、口令猜测、Dos攻击等相关功能。
  • Post(后期渗透)
    Post主要用于取得目标系统远程控制权后,进行一系列的后渗透攻击动作;如获取敏感信息、实施跳板攻击等。
  • Encoders(编码工具)
    该模块在渗透测试中复负责免杀,以防止被杀毒软件、防火墙、IDS及类似安全软件检测出来。

Metasploit用户接口

  • 终端、命令行、图形化界面和功能程序(utilities,提供了对Metasploit框架中内部功能的直接访问)等。
  1. MSF终端(msfconsole)是目前Metasploit框架最流行的用户接口。MSF终端提供了一站式的接口,能访问Metasploit框架中几乎每一个选项和配置。可以使用MSF终端做任何事,包括发起一次渗透攻击、装载辅助模块、实施差点 、创建监听器或者对整个网络进行自动化渗透攻击。
  • 启动MSF终端msfconsole
root@kali:~# msfconsole
[-] ***rting thE Metasploit Framework console...\
[-] * WARNING: No database support: could not connect to server: Connection refused
	Is the server running on host "localhost" (::1) and accepting
	TCP/IP connections on port 5432?
could not connect to server: Connection refused
	Is the server running on host "localhost" (127.0.0.1) and accepting
	TCP/IP connections on port 5432?

[-] ***
       =[ metasploit v5.0.80-dev                          ]
+ -- --=[ 1983 exploits - 1088 auxiliary - 339 post       ]
+ -- --=[ 559 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

Metasploit tip: Enable HTTP request and response logging with set HttpTrace true

msf5 > 
  • 访问MSF终端的帮助文件help+metasploit命令
#查看connect命令
msf5 > help connect
Usage: connect [options] <host> <port>

Communicate with a host, similar to interacting via netcat, taking advantage of
any configured session pivoting.

OPTIONS:

    -C        Try to use CRLF for EOL sequence.
    -P <opt>  Specify source port.
    -S <opt>  Specify source address.
    -c <opt>  Specify which Comm to use.
    -h        Help banner.
    -i <opt>  Send the contents of a file.
    -p <opt>  List of proxies to use.
    -s        Connect with SSL.
    -u        Switch to a UDP socket.
    -w <opt>  Specify connect timeout.
    -z        Just try to connect, then return.
msf5 > 
  1. Armitage是一个完全交互的图形化用户接口
  • 执行Armitage命令来启动Armitage。选择“Start MSF”,即可连接到metasploit实例上。
root@kali:~# armitage
  • 若启动失败,可参考https://jingyan.baidu.com/article/4f7d5712d2a11b1a201927d5.html

Metasploit功能程序

  • metasploit的功能程序是在某些特定的场合下,对metasploit框架进行的一些特殊功能进行直接访问的接口,在渗透测试代码开发过程中特别有用。
  1. MSF攻击载荷生成器(msfpayload)
  • MSF攻击载荷生成器允许你能够生成shellcode、可执行代码和其他更多的东西,也可以让他们在框架软件之外的渗透代码中进行使用。shellcode可以生成包括C、JavaScript、甚至应用程序中Visual Basic脚本在内的多种格式,每种输出格式在不同场景中使用。
  • 查看msfvenom功能程序(攻击载荷生成和编码)需要哪些配置选项时,在命令行中输入msfvenom -h
root@kali:~# msfvenom -h
MsfVenom - a Metasploit standalone payload generator.
Also a replacement for msfpayload and msfencode.
Usage: /usr/bin/msfvenom [options] <var=val>
Example: /usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> -f exe -o payload.exe

Options:
    -l, --list            <type>     List all modules for [type]. Types are: payloads, encoders, nops, platforms, archs, encrypt, formats, all
    -p, --payload         <payload>  Payload to use (--list payloads to list, --list-options for arguments). Specify '-' or STDIN for custom
        --list-options               List --payload <value>'s standard, advanced and evasion options
    -f, --format          <format>   Output format (use --list formats to list)
    -e, --encoder         <encoder>  The encoder to use (use --list encoders to list)
        --sec-name        <value>    The new section name to use when generating large Windows binaries. Default: random 4-character alpha string
        --smallest                   Generate the smallest possible payload using all available encoders
        --encrypt         <value>    The type of encryption or encoding to apply to the shellcode (use --list encrypt to list)
        --encrypt-key     <value>    A key to be used for --encrypt
        --encrypt-iv      <value>    An initialization vector for --encrypt
    -a, --arch            <arch>     The architecture to use for --payload and --encoders (use --list archs to list)
        --platform        <platform> The platform for --payload (use --list platforms to list)
    -o, --out             <path>     Save the payload to a file
    -b, --bad-chars       <list>     Characters to avoid example: '\x00\xff'
    -n, --nopsled         <length>   Prepend a nopsled of [length] size on to the payload
        --pad-nops                   Use nopsled size specified by -n <length> as the total payload size, auto-prepending a nopsled of quantity (nops minus payload length)
    -s, --space           <length>   The maximum size of the resulting payload
        --encoder-space   <length>   The maximum size of the encoded payload (defaults to the -s value)
    -i, --iterations      <count>    The number of times to encode the payload
    -c, --add-code        <path>     Specify an additional win32 shellcode file to include
    -x, --template        <path>     Specify a custom executable file to use as a template
    -k, --keep                       Preserve the --template behaviour and inject the payload as a new thread
    -v, --var-name        <value>    Specify a custom variable name to use for certain output formats
    -t, --timeout         <second>   The number of seconds to wait when reading the payload from STDIN (default 30, 0 to disable)
    -h, --help                       Show this message
  • 查看某个攻击载荷模块的配置选项,采用payload-options即可。
root@kali:~# msfvenom -p windows/shell_reverse_tcp --payload-options
Error: Invalid option
MsfVenom - a Metasploit standalone payload generator.
Also a replacement for msfpayload and msfencode.
Usage: /usr/bin/msfvenom [options] <var=val>
Example: /usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> -f exe -o payload.exe
  1. MSF编码器(msfencode)
  • 由MSF攻击载荷生成器产生的shellcode包含了一些null空字符,在一些程序解析时,空字符会被认为是字符串的结束,从而使代码在完整执行之前被截断而终止运行。简单来说,这些\x00和\xff字符会破坏攻击载荷;此外,在网络明文传输的shellcode很可能被入侵检测系统(IDS)和杀毒软件识别,为解决以上问题,开发了MSF编码器。现已被集成在msfvenom功能程序中。
  • Metasploit提供了一系列不同场景的编码器,最强大的 x86/shikata_ga_nai编码器,在Metasploit中唯一拥有Excellent等级的编码器(依据模块的可靠性和稳定性进行评价)。对于编码器,一个Excellent的评价代表着它的应用面最广,并且较其他编码器可以容纳更大程度的代码微调。查看编码器及其等级,使用命令:msfvenom -l encoders
  1. Nasm shell
  • Nasm_shel.rb功能程序在你尝试了解汇编代码含义时是个非常有用的工具。特别是进行渗透代码开发时,需要对给定的汇编命令找出他的opcode操作码,就可以使用这个功能程序。
root@kali:/usr/share/metasploit-framework/tools/exploit# ./nasm_shell.rb
nasm > jmp esp
00000000  FFE4              jmp esp
nasm > 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值