20252921 2025-2026-2 《网络攻防实践》课程总结

20252921 2025-2026-2 《网络攻防实践》课程总结

1. 内容总结

第1次实践 网络攻防实践环境搭建:本次实践主要是配好 VMware 虚拟机环境,搞清楚 NAT 模式(VMnet8)、仅主机模式(VMnet1)和桥接网卡是怎么分工的。然后部署了蜜网网关 Honeywall Roo,设定了一大堆网卡 IP 和网关。实验中我初步弄明白了攻击机、靶机和蜜网的互联拓扑。最头疼的是刚开始在 WinXPattacker 里面登录网关管理后台时总是连不上,折腾半天才发现是忘记用 https,直接走http会被拒。通过这次实验,我明白了网络隔离和连通性调试是做一切安全攻防的根基。
第2次实践 网络信息收集与漏洞扫描:本次实践围绕着收集目标信息展开。我用 WHOIS 查了新浪域名注册人,用 nslookup 查了对应的公网 IP。接着通过和舍友打 QQ 语音电话抓出了对端的真实 IP,并确定了物理位置,也认识到现在的即时通信工具多通过官方中转,直接获取好友 IP 难了很多。最后用 Nmap 对靶机进行了扫描(包含 -sP, -sS, -O, -sV),并用 Nessus 扫出了一堆 CVE 漏洞,画出了渗透攻击图。这次实验让我明白,信息收集就是安全测试里的“踩点”,系统暴露的端口和弱口令是黑客最喜欢的入口。
第3次实践 网络嗅探与协议分析:本次实践重点是用 tcpdump 和 Wireshark 进行抓包取证。先用 tcpdump 抓了自己电脑访问网易首页时的流量,搞懂了 DNS 和 HTTP 的多资源请求。接着用 Wireshark 嗅探了明文登录水木清华 BBS 的流量,直接在 TCP 流里剥离出了用户名和密码,彻底认识到明文协议在公共网络中跟裸奔没两样。最后分析了 listen.cap 扫描数据包,用 p0f 判定出攻击机用的是 Nmap SYN 扫描,分析了蜜罐上开放的 21、22、23、139、445 等活跃端口并识别了攻击机系统。
第4次实践 TCP/IP 协议攻击:本次实践动手验证了各种典型协议层缺陷。用netwox 80在局域网中发送伪造的 ARP 应答,成功篡改了靶机的 ARP 缓存表,截获其流量;用netwox 86发送ICMP重定向报文强行修改了主机的默认路由;用netwox 76发起 SYN Flood 洪泛攻击把半连接队列塞满,包发太猛导致自己 Kali卡死重启;用netwox 78成功重置断开了 Telnet 会话。最后用 ettercap 图形界面进行了ARP欺骗和Telnet会话劫持,拿到了账号。实验让我切实认识到网络协议设计时因缺乏身份认证带来的底层安全隐患。
第5次实践 防火墙与入侵检测:本次实践转为防守侧。先是用 Linux 的 iptables 配置规则,过滤 ICMP 数据包让别人 ping 不通,接着写规则只允许特定 IP 访问 80 端口,认识到了防火墙规则匹配顺序的重要性。然后用 Snort 加载规则文件去离线检测分析 listen.pcap 里的攻击流量。最后进入 HoneyWall 系统配置界面,读懂了黑白名单、snortd 开机自启脚本和honeywall.conf文件。这让我明白,网络防御是一套“访问控制 + 行为监测 + 蜜罐阻截”的协作体系。
第6次实践 Windows 系统攻防与取证分析:本次实践包含主机攻击和流量取证。先是用 Metasploit(msfconsole)加载针对经典 RPC 漏洞的windows/smb/ms08_067_netapi模块,拿下 Windows 2000 的最高系统 Shell。然后分析了一次黑客利用 Unicode 目录穿越和 MDACRDS漏洞渗透进入 NT 系统,再用 FTP下载后门并利用pwdump提取密码 hash 的全流程报文。最后在局域网下跟舍友褚浩搞了攻防对抗,成功打进并在新建的TT 文件夹下留下了Test.txt标记文件。
第7次实践 Linux 系统攻防对抗:本次实践以 Linux 系统为主要目标。我在 Kali 中通过 Metasploit 的multi/samba/usermap_script漏洞利用模块,成功拿到了 Metasploitable 靶机的 root 命令行控制权,验证了反弹 Shell 的工作机制。对抗环节中,我用distcc漏洞拿下对方 Shell,并配合 Wireshark 实时捕获了通信流量。这让我更直观地理解了漏洞利用、PAYLOAD 配置、反向连接和攻击流量特征之间的关联。
第8次实践 恶意代码分析与僵尸网络流量分析:这次实验极其硬核。首先用 PEiD 判断出 RaDa 样本加了 UPX 压缩壳,手动脱壳后提取明文 strings,挖出了 C&C 地址(10.10.10.10)、自启动注册表键和 DDoS Smurf 模块。接着使用 IDA Pro 逆向分析了两个 Crackme 程序,找出了 strcmp 和条件跳转指令,成功破解了 crackme1 的密码 "I know the secret",并且通过给 crackme2 重命名为 "crackmeplease.exe" 绕过了其文件名身份校验。最后用 tcpflow 和 tcpdump 过滤分析了 botnet.dat 包,统计出 165 个攻击 IP,定位了僵尸网络 IRC 服务器(209.196.44.172)和 SMB 蠕虫(PSEXESVC.EXE)的成功入侵行为。
第9次实践 缓冲区溢出与 Shellcode:本次实践开始学做 binary 溢出利用。首先用 vim 配合 16 进制模式(xxd)修改 pwn1 的 main 函数 call 指令偏移量,将正常调用的 foo 改为直接执行 getShell ;其次利用 gets 函数的溢出缺陷,计算出 32 字节的缓冲区偏移(28 字节变量 + 4 字节 EBP),构造 perl 攻击脚本成功覆盖返回地址,跳转执行 getShell ;最后在关闭 ASLR 并将栈设为可执行(execstack -s)后,通过 GDB 调试定位真实的栈地址,注入自己构造的 Shellcode(含 NOP 滑梯),劫持程序执行流拿到了 root Shell。
第10次实践 Web 安全:SQL 注入与 XSS:本次实践在 SEED 虚拟机中完成 Web 攻防。首先在 MySQL 命令行中熟悉了基本的数据库语句。然后在 SQL 注入靶场中分析 unsafe_home.php 的代码,通过输入 Admin'#将密码验证注释掉,直接登录了管理员账号;接着通过在更新字段中注入语句,越权篡改了其他用户的数据库密码。最后在留言板和主页里测试了存储型和反射型 XSS,通过注入script脚本实现了弹窗和Cookie的读取与窃取,理解了“绝不信任用户输入”在 Web 防护中的铁律。
第11次实践 Web 浏览器攻击与网页木马取证:本次实践完成了浏览器端攻击的复现与反分析。先是用Metasploit的 MS06-014 漏洞模块生成挂马网页链接,用Win2k靶机的IE浏览器访问后顺利拿到控制会话。接着对网页木马进行取证分析,从start.html开始,一步步剥离出new09.htm、iframe 外链和恶意 JS 脚本。面对多重混淆的脚本,依次完成 Base64 解码、XXTEA密文解密、字符转译和JS代码去混淆,挖出了其利用 ADODB.Stream、PPS影音等 ActiveX 漏洞释放远控木马的逻辑,最后利用流量分析复盘了攻击防御过程。

2. 最喜欢且做得最好的实践是哪次?为什么?

我最喜欢且认为自己做得最好的是第9次实践“缓冲区溢出与 Shellcode 注入”

这次实验带给我的冲击感最强,也最能体现计算机底层对抗的魅力。以前做渗透或者是玩Web,都是在使用别人开发好的框架或者通过逻辑绕过。第九次实验要求我们直接去修改程序的二进制字节码,或者通过精确控制输入的字符长度,去算准栈内存里那区区 32 字节的距离,直接把返回地址给干掉并塞进我们的 Shellcode 地址。当看到原本没有任何控制台功能的 pwn1 程序在我输入 Payload 后突然弹出了 /bin/sh 的超级用户提示符时,真的有一种把底层原理融会贯通的成就感。还有,这次实验的排错过程最扎实,极大地提升了我的 GDB 调试 and 内存分析能力。在注入自己构造的 Shellcode 时,因为虚拟机的内存环境和网上的教程并不完全一样,我直接套用别人的返回地址总是报Segment Fault段错误卡死。为了解决这个问题,我不得不耐下心来一步步操作,在GDB里设置断点,查看寄存器的数据,去推算NOP滑梯的内存区间。通过反复对比堆栈变化和十六进制导出内容,我最终找到了一个可用的栈上地址,把ASLR关掉,一发入魂成功爆破。最后,这次实验让我对安全底层和安全机制的防守有了更具象的认识。我亲手关闭了系统的ASLR并给二进制文件加上权限,这让我意识到为什么现在的操作系统会默认强制开启 数据执行保护和ASLR。这次实践,是我觉得收获最大、完成质量最高的一次。

3. 核心板块知识梳理

3.1 安全加固和检测技术

本课程中,我们学到了检测资产暴露面并对其进行安全加固的完整流程:
信息检测:先使用 Nmap 识别主机开放了哪些高危端口(如 135、139、445 ),使用 Nessus 对靶机进行弱口令和已知 CVE 的漏洞检测,生成风险评估报告。
边界防御与加固:利用 Linux 内置防火墙 iptables搭建访问控制屏障。在配置防火墙时,规则的匹配顺序非常关键,默认接受还是拦截需要先理顺。安全加固的最佳实践包括关闭无用端口、利用白名单限制服务访问 IP(如 Apache 网页服务仅允许开发机访问)、加强主机密码强度并定期打上补丁。
流量监测:依靠 Snort 配置入侵检测规则(IDS),通过在混杂模式下监听网卡抓包,提取带有网络扫描或攻击行为特征的包,生成实时的预警日志,这在日常系统运维中是防御者的眼睛。

3.2 Web 安全技术

Web 安全集中体现在第10次和第11次实践中:
SQL 注入防范:SQL 注入的本质在于没有对用户输入的数据做完善的过滤,导致数据被拼接进 SQL 语句中当成了“代码”执行。要防住它,必须弃用直接拼接字符串的写法,全面采用参数化查询(Prepared Statement)预编译机制,同时对后台数据库账户实施最小权限配置。
XSS 跨站脚本防范:XSS 的核心是浏览器盲目信任并执行了由其他用户提交的、未转义的 JavaScript 脚本。它不仅可以弹窗,还能盗取 Cookie 和会话凭证,甚至在留言板中自我复制形成蠕虫。防御手段主要是对所有输出到 HTML 页面中的用户输入进行严格的 HTML 编码/转义,并对敏感的 Cookie 加上 HttpOnly 属性防止被 JS 读取,同时在服务器部署 CSP。

3.3 逆向分析技术

逆向分析侧重于二进制文件和恶意样本分析(第8次、第9次实验):
静态逆向:使用 PEiD 识别程序是否加壳(如 UPX 压缩壳),脱壳后利用 strings 工具分析明文。接着用 IDA Pro 查看反汇编的控制流图(Flow Chart),分析逻辑流程。在 Crackme 实验中,我就是通过查找strcmp函数的入参和 jz / jnz 跳转指令,找到了密码绕过逻辑。
动态逆向与控制流:在第9次实验中,我用 GDB 动态挂载运行中的 pwn 程序,设置断点,观察栈帧指针 EBP 和栈顶指针 ESP 的变化,以及修改二进制 call 指令偏移量直接劫持程序调用getShell,这是逆向验证漏洞存在的重要技术手段。

3.4 主流代码审计技术

代码审计是寻找漏洞并验证代码安全性的关键:
输入输出路径分析:在 SQL 注入和 XSS 实验中,我理解了代码审计的首要任务是追踪Source,即看用户输入是如何通过 GET/POST 进入系统,中间经历了哪些处理,最终又进入了哪个敏感位置(如 SQL 执行器、页面渲染引擎)。
混淆与逆向审计:在网页木马取证中,恶意的 JS 代码通过八进制、十六进制转义以及 XXTEA 加密手段进行代码混淆,绕过静态安全检测。审计时不能光看变量名,需要跟着执行流把密文还原解密,定位调用 ActiveX 的组件并理清其行为,这要求审计人员必须具备代码执行逻辑和反编译能力。

3.5 程序设计

程序设计能力是攻防实操的底层支柱,理解代码逻辑才能攻防得当:
不安全函数缺陷:在缓冲区溢出实验中,C 语言程序因为使用了不安全的gets()函数,没有校验入参长度限制,直接导致了栈内存被非法改写。
编写自动化脚本:随着实验难度的加深,我发现光靠手动分析数据效率极低。在构造栈溢出 Payload 时,需要用 perl 脚本生成 16 进制流文件;在僵尸网络分析中,编写 Shell 管道命令可以快速完成海量 IP 提取和去重。后续我还需要加强 Python 的安全开发水平,编写属于自己的检测和加固小脚本。

3.6 计算机病毒技术

恶意代码的分析与取证主要涉及第8次和第11次实验:
特征与分类:我理解了病毒(宿主性/感染)、蠕虫(自传播/如 PSEXESVC 蠕虫)、木马(伪装/远控)以及僵尸网络(受控集群/IRC 通信)的差异。
木马特征分析:分析 RaDa 样本时,我了解了恶意软件常见的反分析手段。它通过判断注册表中 VMware Tools 的安装路径来实现反虚拟机检测(Anti-VM),在运行时释放临时文件到C:\RaDa\tmp目录,通过写入注册表自启动 Run 项建立持久化,并通过延时(sleep)来绕过沙箱检测,内置了屏幕截图和DDoS Smurf模块。
防御手段:需要结合网络流量监控(限制异常出站连接)、主机防病毒特征码匹配、沙箱动态审计以及及时的系统补丁升级,进行立体式防护。

3.7 网络溯源及防范技术

网络溯源技术是安全事件应急响应的核心:
流量回溯取证:通过 pcap 数据包分析,可以精准提取攻击发生的精确时间、攻击者的 IP 地址、被攻击的目标端口和具体的利用 Payload。例如在 NT 破译实验中,我们顺着 TCP 重组流,揪出了攻击者利用 Unicode 穿越查看boot.ini文件和通过 FTP 传输 NC 工具的证据。
僵尸网络溯源:在 botnet 流量分析中,我们提取了僵尸客户端(Bot)与 C&C 服务器通过 TCP 6667 端口进行的 IRC 通信,还原了它们利用JOIN进频道听候黑客指令的行为链。
防范技术:在完成溯源后,防守方需要迅速编写封禁 IP 策略、在防火墙配置隔离,并且停用高危的 ActiveX 插件,修复对应端口的组件漏洞,防止事件扩大。

3.8 加密解密技术

攻防博弈中,加解密技术既被防守方用于保护资产,也被攻击者用于隐藏恶意代码:
完整性校验(哈希):使用 MD5、SHA-1 或 SHA-256 算法可以计算出文件的哈希值,这常用于恶意样本的比对和威胁情报溯源。
流量混淆与代码还原:在网马分析中,攻击者将真实的下载路径用 Base64、XXTEA 加密算法进行加密,并用十六进制字符转译混淆。我利用解码原理将其还原,抓出了恶意的木马下载 URL。
网络安全通信:明文传输的 Telnet 协议是极度危险的,密码直接暴露在流量中。在实战中必须停用明文协议,升级为通过证书和非对称/对称加密算法保护的 SSH 和 HTTPS 加密通信,保护传输的会话安全。

3.9 信息系统运行维护

安全和运维分不开,安全系统必须建立在稳定运行的系统上:
环境调试与配置:实验中我需要手动修改 Linux 的网络接口配置,调试虚拟网卡,并在遇到冲突时进行静态排查。
服务生命周期管理:在 Kali 攻击机上,我需要开启 apache2 提供 HTTP 服务,运行 metasploit 数据库,启动 snort 守护进程。在做蜜网网关分析时,配置了 honeywall.conf 和 Snort 的启动脚本。如果系统里的端口没开、或者防火墙被动拦截了,都会导致实验现象不符合预期,这锻炼了我的系统排错和常态化运维能力。

3.10 网络协议分析

这是我们一整学期使用最多的核心技术:
包结构审计:利用 Wireshark 和 tcpdump,我可以亲眼观察到 TCP 的三次握手(SYN、SYN/ACK、ACK)和四次挥手的全部标志位,理解了序列号(Sequence Number)在会话防劫持中的作用。
标志位与扫描特征:在 listen.cap 中,我学会了过滤 tcp.flags.syn == 1 and tcp.flags.ack == 0,如果发现短时间内有大量指向不同端口的 SYN 包,且靶机只回应 RST,这正是 Nmap 进行 TCP SYN 半开扫描的流量特征;而通过 p0f 则是利用 TCP 的 MSS、Window Size 等指纹特征完成了操作系统的被动识别。

3.11 数据库

数据库安全在 Web 防御中起着决定性作用:
语句审计与漏洞成因:在 SQL 注入实验中,熟悉了 MySQL 命令行下的 use、show databases;、show tables;select * from credential; 语句。理解了 SQL 注入之所以能绕过登录,是因为前端拼接的数据改写了原本的逻辑控制,让 WHERE 判定恒成立。
数据库加固:除了开发层面必须的预编译防御外,运维人员需要对数据库实行“最小权限原则”,限制其跨库查询和调用 load_file / into outfile 读写文件的能力,防止黑客通过注入直接拿下服务器 Shell,同时对核心用户表的密码进行加盐哈希存储。

3.12 法律

攻防技术的学习和使用有着严明的红线:
合规与原则:我们在实验中所有的渗透、扫描、溢出操作,都仅仅限定在本地虚拟网段、授权靶机和本地物理网络中。绝对不能在未经授权的前提下,对任何真实的公网系统和企业进行资产探活、扫描或漏洞复现,这是底线。
法律法规学习
三法:《网络安全法》(确立网络运行安全、安全等级保护等基本制度)、《数据安全法》(规范数据处理活动,保护数据安全和分类分级)、《个人信息保护法》(规范个人隐私处理,明确“最小必要”和告知同意)。
两条例:《关键信息基础设施安全保护条例》(对国家安全利益相关的关键网络系统实施重点防护)、《网络数据安全管理条例》(规范了数据出境、数据传输安全和主体治理责任)。
作为网安专业学生,必须树立技术向善的责任意识,严格遵守《中华人民共和国网络安全法》,依法合规开展研究。

3.13 基础

这门课让我深切体会到,网络安全不是什么空中楼阁,它本质上是计算机网络、操作系统、数据结构、组成原理和数据库等基础学科的交叉应用:
搞不懂 IP、网关、ARP,就配不好蜜网,做不了协议攻击;
搞不懂进程、权限、注册表,就搞不明白木马后门和系统渗透;
搞不懂汇编语言、寄存器布局和堆栈寻址,就无法理解缓冲区溢出和栈区劫持。
只有老老实实把底层计算机基础打牢,才能看懂安全漏洞的生成机理,而不能只满足于“会点 Metasploit 的几个命令”。

4. 课程收获与不足

本门课最大的收获,是让我从单点知识学习逐渐建立了完整的网络攻防视角。课程从实验环境搭建开始,逐步覆盖信息收集、端口扫描、协议分析、协议攻击、防火墙与入侵检测、Windows/Linux 漏洞利用、恶意代码分析、缓冲区溢出、Web 安全和浏览器端攻防。这样的顺序让我认识到,真实攻防不是某一个工具的使用,而是从资产发现、漏洞验证、攻击利用、流量取证到安全加固的连续过程。
第二个收获是动手能力明显提升。以前对很多概念的理解停留在文字层面,比如三次握手、ARP 欺骗、SQL 注入、XSS、Shellcode、木马混淆等;通过实验后,我能在抓包结果、反汇编窗口、数据库语句、浏览器源码和日志文件中看到这些概念的真实表现。这种“看得见”的学习方式让我对网络安全更有兴趣,也更能发现自己哪里没有真正理解。
第三个收获是安全责任意识更强。通过信息收集、漏洞利用和木马分析,我认识到很多攻击并不神秘,系统补丁滞后、弱口令、明文协议、输入过滤不足和过度暴露服务都可能导致严重后果。学习攻击技术的目的不是炫技,而是为了理解风险、验证防护和提升系统安全性。
不足之处也比较明显。我对一些工具的高级参数和底层规则理解还不够深入,例如 Snort 规则编写、Nmap 扫描策略选择、Wireshark 复杂过滤表达式、Metasploit 模块细节等还需要更多练习。自动化能力不足,很多分析仍依赖手工操作,后续应该加强 Python、正则表达式、日志解析和批量检测脚本能力。代码审计和漏洞修复能力还需要提高,不能只会复现漏洞,还要能从源码层面定位问题并写出可靠修复方案。第四,报告撰写有时偏重过程截图,后续应更多总结原理、证据链、风险影响和防护建议,让实验报告不仅记录“做了什么”,也说明“为什么这样做”和“如何防住”。

posted @ 2026-06-21 19:04  DKYTT  阅读(7)  评论(0)    收藏  举报