第1章:Metasploit基础与环境搭建
各位同学,我是老张。在汽车安全这行摸爬滚打了十几年,从最初的CAN总线逆向到现在的车载以太网渗透,Metasploit一直是我最趁手的兵器。今天咱们就来聊聊这个框架的核心概念,以及怎么把环境搭起来。
说实话,很多人一上来就急着跑exp,结果环境没配好,数据库没初始化,折腾半天连个shell都拿不到。我见过太多这样的案例了。所以这一章,咱们把基础打扎实。
1.1 Metasploit框架核心概念
Metasploit说白了就是一个漏洞利用的「武器库」。它把渗透测试中常用的模块化工具整合在一起,让你不用每次都从零开始写代码。我个人习惯把它分成四大类:
| 模块类型 | 英文名 | 一句话解释 |
|---|---|---|
| 漏洞利用 | Exploit | 负责「敲门」的模块,利用漏洞进入目标系统 |
| 攻击载荷 | Payload | 进门之后「干什么」的代码,比如反弹shell |
| 辅助模块 | Auxiliary | 扫描、嗅探、爆破等辅助功能 |
| 后渗透模块 | Post | 拿到权限后的信息收集、提权、横向移动 |
嗯,这里要注意:很多人把Exploit和Payload搞混。我打个比方——Exploit是撬锁的工具,Payload是进屋后你要干的事。你撬开锁但不进去,等于白干;你进去但没撬锁,那叫穿墙术,不现实。
核心记忆点:
- Exploit = 怎么进去
- Payload = 进去后做什么
- Auxiliary = 进去前的准备工作
- Post = 进去后的深度操作
我在项目中遇到过不少新手,选了个Exploit但忘了配Payload,结果漏洞触发了但啥也没发生。你想想看,门都开了,你站在门口发呆,多尴尬。
1.2 Kali Linux环境配置
Kali Linux是Metasploit的「亲爹」系统,预装了几乎所有工具。但我建议你别直接用默认配置,有几个坑得避开。
第一步:更新系统
sudo apt update && sudo apt upgrade -y
为什么要先更新?因为Kali的仓库更新很快,有些Exploit依赖新版本的库。我曾经因为没更新,跑一个车载系统的RCE漏洞时,提示缺少某个Ruby gem,折腾了半小时才发现是版本问题。
第二步:安装Metasploit
sudo apt install metasploit-framework -y
Kali默认是带Metasploit的,但有时候版本比较老。我个人习惯用apt安装,而不是从GitHub拉源码。为什么?因为apt会帮你处理依赖关系,省心。
小技巧:安装完成后,运行 msfconsole --version 确认版本。如果低于6.0,建议手动升级。
第三步:配置Ruby环境
Metasploit是用Ruby写的,所以Ruby环境很重要。Kali自带的Ruby版本通常够用,但如果你要编译一些自定义的Payload,可能需要安装额外的gem:
sudo gem install bundler
cd /usr/share/metasploit-framework
sudo bundle install
嗯,这一步不是必须的,但如果你遇到「缺少某某gem」的错误,回来跑一遍就行。
1.3 Metasploit数据库初始化
数据库是Metasploit的「记忆体」。没有它,你扫描的结果、收集的Hash、爆破的账号密码,全都没地方存。我个人习惯一开始就把数据库配好,省得后面手忙脚乱。
第一步:启动PostgreSQL
sudo systemctl start postgresql
sudo systemctl enable postgresql
第二步:创建数据库用户
sudo -u postgres createuser msf -P
# 输入密码,比如 msfpass
第三步:创建数据库
sudo -u postgres createdb -O msf msf_database
第四步:在msfconsole中连接
msfconsole
db_connect msf:msfpass@localhost:5432/msf_database
db_status
如果看到 [*] Connected to msf_database,说明成功了。
避坑指南:我曾经因为忘记启动PostgreSQL服务,直接运行msfconsole,结果所有扫描结果都没保存。后来养成了习惯:每次开msf之前,先检查 sudo systemctl status postgresql。
1.4 常用命令速查
这部分我直接给你一张表,平时贴在手边,用多了自然就记住了。
| 命令 | 作用 | 我的使用频率 |
|---|---|---|
msfconsole |
启动Metasploit控制台 | 每天100次 |
search |
搜索模块,比如 search canbus |
每天50次 |
use |
加载模块,比如 use exploit/multi/handler |
每天30次 |
show options |
查看当前模块的参数 | 每天20次 |
set |
设置参数,比如 set RHOSTS 192.168.1.1 |
每天80次 |
run |
执行当前模块 | 每天40次 |
sessions |
查看和管理已建立的会话 | 每天10次 |
db_nmap |
调用nmap并将结果存入数据库 | 每周5次 |
你想想看,这些命令其实就覆盖了80%的日常操作。剩下的20%,遇到问题再查文档也来得及。
1.5 知识体系结构图
下面这张图是我自己画的,把本章的核心逻辑串起来了。你看一眼,心里就有数了。
这张图从左到右,从上到下,就是咱们这一章的全部内容。你把它存下来,以后忘了就看看。
我的个人建议:初学者别急着跑复杂的Exploit。先把 search、use、set、run 这四个命令练熟,配合数据库的 db_nmap 做一次完整的扫描-利用流程。等你觉得「嗯,不过如此」的时候,再去看那些高级技巧。
好了,这一章就到这里。环境搭好了,命令记住了,下一章咱们就开始真刀真枪地干。
公众号:蓝海资料掘金营,微信deep3321