学号20253910 2025-2026-2 《网络攻防实践》课程总结
学号20253910 2025-2026-2 《网络攻防实践》课程总结
1. 内容总结
第一次作业是搭建整个课程的基础实验环境。在VMware里配置了攻击机Kali和WinXP、靶机Win2K Server和Metasploitable、蜜网网关HoneyWall,划分了NAT网段让攻击网络和靶机网络互通。刚开始连虚拟机互通都折腾了老半天,DHCP分配IP失败、跨网段ping不通、HoneyWall管理界面打不开,光配通网络就花了一天多。好在搞完之后后面十次实验都不用再折腾环境了。
学了域名Whois查询、DNS A记录解析、IP地址归属地追踪。拿百度域名做了完整的信息搜集链路,从域名注册商MarkMonitor一路查到保定电信机房。还用Windows资源监视器抓了QQ的通信IP,发现现在的QQ主要走服务器中转,文字聊天不会直接暴露客户端真实IP,只有语音视频才会走P2P。最后用nmap对WinXP靶机做了全维度扫描,SYN扫描扫出21、135、139、445、3389五个开放端口,-O识别出是Windows XP SP2/SP3。
tcpdump配合BPF过滤规则抓SYN包统计访问天涯首页时到底连了多少台Web服务器,结果一数12个,这才直观体会到CDN和第三方服务到底把网页拆得有多散。Wireshark分析Telnet登录BBS的流量时,亲眼看到用户名和密码一个字符一个TCP包明文传过去,随便抓个包就能把账号密码全捞出来。最后用listen.cap做了完整的扫描攻击取证,结合Snort和p0f还原了攻击主机的IP、扫描手法和操作系统指纹。
分析了一个叫RaDa的后门程序样本,先用file命令识别出是PE32格式,然后用超级巡警脱壳器把UPX壳脱掉,脱完壳跑--authors参数直接拿到了作者信息——Raul Siles和David Perez,2004年Honeynet项目的SotM 32挑战样本。还用IDA Pro分析了两个crackme小程序,crackme1.exe的密码是"I know the secret",通过看函数调用图和字符串窗口找到的。最后分析了蜜罐5天的僵尸网络流量,了解了IRC协议怎么被用来做C&C通信。
在SEED Ubuntu上配iptables的时候犯了个低级错误——把规则全配到Kali攻击机上了,测了半天才发现配错了机器。调规则顺序也踩了坑,一开始把DROP写在ACCEPT前面导致白名单失效,后来才搞懂iptables是顺序匹配、命中即止的逻辑。Snort这边一开始告警日志为空,排查发现是没启用内置规则集,自己手写了几条Nmap扫描检测规则才能用。这次实验让我对Linux防火墙和IDS配合工作的方式有了实际的感受。
用Metasploit打MS08-067漏洞,开始以为很简单,结果reverse_tcp的payload怎么都弹不回来,尝试了meterpreter和generic两种shell都不行。最后分析是NAT环境的问题,换成正向连接的bind_tcp才成功拿到Win2K的Shell。自动目标识别也不稳定,手动指定TARGET=1之后成功率才从30%拉到100%。流量取证部分分析了6707个包的真实蜜罐攻击记录,从踩点、漏洞利用到后渗透操作一步步还原了攻击者的完整行为链。
用Metasploit打Metasploitable2的Samba usermap_script漏洞。这次同样遇到了反向Shell会话建立失败的问题,所有reverse类型的payload都提示"Exploit completed, but no session was created"。最后换成bind_netcat正向载荷,同时把目标端口从默认值改成445才成功。攻防对抗环节轮换当攻守两方,守方用tcpdump抓攻击流量然后用Wireshark分析,可以看到SMB协议里的命令注入和后续执行的每一条命令都是明文传输的。
在第四次作业基础上继续深入分析RaDa恶意代码,详细回答了七个问题——从文件摘要、程序目的、功能特性、反分析技术、恶意代码分类,到相似工具对比和作者调查条件。对crackme1.exe和crackme2.exe也做了更细致的分析。僵尸网络分析部分详细拆解了IRC协议在恶意代码C&C通信中的角色,以及蜜罐主机与多个IRC服务器的通信记录。
这是让我印象最深的一次实验。分三步走:第一步手工用vim改机器码,把main函数里call foo的指令偏移改成call getShell,直接拿Shell;第二步利用foo函数的栈溢出,32字节填充加返回地址覆盖,跳转到getShell;第三步注入真正的shellcode,通过关闭ASLR、设置栈可执行、gdb动态调试定位shellcode地址,最后执行/bin/sh的机器码拿到了交互式Shell。过程中挂vim、ptrace权限报错、地址算错重来,各种问题都碰了一遍。
本次实践涉及Web安全相关的基础内容,对常见的Web漏洞类型和安全测试工具有了初步认识。
用Metasploit的MS06-014和MS06-055两个模块对Win2K靶机做了浏览器端渗透。和之前打服务端漏洞不同,浏览器漏洞的触发要看靶机是否主动访问恶意页面、IE版本是否匹配、ActiveX是否启用。网页木马取证分析部分从一个入口start.html开始,逐层扒iframe、解密XXTEA+Base64编码的JS脚本、追踪下载的EXE文件,完整还原了木马的分阶段投递链路。
2. 最喜欢且做得最好的实践是哪次?为什么?
最喜欢的是第九次——缓冲区溢出漏洞利用。
主要是三个原因。第一,这次实验让我第一次亲手把一段二进制shellcode成功执行并拿到Shell,从"改几个字节的机器码就能改变程序走向"到"用gdb盯着栈一步步定位shellcode地址",整个过程有一种把底层的操作系统、汇编、内存布局串在一起的感觉。之前这些知识都停留在课本上,这次是实实在在跑出来的。
第二,这次实验的递进设计很合理。先改机器码理解call指令的相对偏移怎么算,再用栈溢出覆盖返回地址理解函数调用的栈帧布局,最后注入shellcode把前面两个概念合在一起用。三层做下来,栈溢出的原理不需要别人再讲我也能说清楚。
第三,这次实验出问题最多,折腾得最久。vim的xxd模式不小心按Ctrl+Z挂起了,gdb attach被ptrace权限挡了、地址算错了shellcode打不进去、ASLR忘记关导致地址每次都不一样——反复排查反复试,最后成功那一刻是真的爽。前面几次实验习惯了"改参数就行"的调试思路,这次是真正逼着自己去理解每一步在干什么。
3. 本门课学到的知识总结
下面按课程大纲的13个知识模块,把11次实践里真正动手做过、理解透彻的内容梳理一遍。为了更直观地展现知识体系,先用一张总览表把每条知识线和对应的实践关联起来,再逐条展开深入总结。
3.0 实践-知识点总览对照表
| 知识模块 | 涉及实践 | 掌握程度 | 核心收获 |
|---|---|---|---|
| 安全加固和检测技术 | 2、3、5 | 熟练 | nmap全参数扫描、Wireshark深度分析、iptables规则配置 |
| Web安全技术 | 10、11 | 了解 | SQL注入/XSS/CSRF原理、Burp Suite基本使用 |
| 逆向分析技术 | 4、8 | 入门 | IDA Pro静态分析、UPX脱壳、crackme密码破解 |
| 代码审计技术 | 9 | 入门 | 栈溢出漏洞分析、危险函数识别 |
| 程序设计 | 1-11贯穿 | 一般 | Python辅助工具编写、C栈溢出理解 |
| 计算机病毒技术 | 4、8 | 了解 | RaDa恶意代码深度分析、僵尸网络IRC通信 |
| 网络溯源及防范 | 3、5、6 | 了解 | 蜜罐流量取证、攻击链还原 |
| 加密解密技术 | 理论+实践4 | 了解 | 哈希算法应用、加壳与脱壳 |
| 信息系统运维 | 1-11贯穿 | 熟练 | Linux全栈运维、vim/gdb/wget日常操作 |
| 网络协议分析 | 2、3、6、7 | 熟练 | TCP/IP协议栈、HTTP/HTTPS/Telnet协议分析 |
| 数据库 | 10 | 基础 | MySQL基本操作、SQL注入防护 |
| 法律 | 理论课程 | 了解 | 三法两条例核心内容 |
| 基础 | 1-11贯穿 | 扎实 | 计算机组成/OS/网络/数据结构基础落地 |
3.1 安全加固和检测技术
这是本学期花时间最多、收获也最扎实的方向之一。
nmap工具技能树
| 功能 | 参数 | 实践场景 | 关键技术要点 |
|---|---|---|---|
| 主机发现 | -sP |
实践2:扫描WinXP靶机 | 通过ICMP Echo + TCP ACK综合判断主机存活,690微秒延迟确认同局域网 |
| TCP SYN扫描 | -sS |
实践2:扫出21/135/139/445/3389五个端口 | 半开扫描,只完成两次握手,不在目标日志留完整记录,隐蔽性最强 |
| UDP扫描 | -sU -p 53,161 |
实践2:UDP端口探测 | 无连接协议扫描慢且不准确,需等待超时判断,实战中优先扫TCP |
| 操作系统识别 | -O |
实践2:识别WinXP SP2/SP3 | 分析TTL值、窗口大小、TCP选项顺序等协议栈指纹,匹配内置指纹库 |
| 服务版本探测 | -sV |
实践2:确认FileZilla FTP、MS RPC等服务 | 在端口开放基础上进一步探测具体软件及版本,为漏洞匹配提供依据 |
Wireshark分析能力进阶路线
我在Wireshark上经历了一个明显的进步过程。最开始只能"看包来了",后来能写显示过滤器如tcp.port == 23和ip.addr == 192.168.200.2 && ip.addr == 192.168.200.133准确筛出目标流量,再到能右键追踪TCP流还原完整会话内容。在实践3中,我亲自验证了Telnet协议逐字符明文传输的安全缺陷——用户名的每个字符对应一个独立TCP包,密码同理,任何能抓到流量的人都能直接捞走所有登录凭证。在实践6中分析了6707个包的蜜罐攻击流量,从HTTP请求特征中认出攻击工具——!ADM!ROX!YOUR!WORLD!特征串对应rfp的msadc.pl工具,还原了从踩点→漏洞利用→Shell获取→痕迹清理的完整攻击链。
iptables防火墙核心理解
| 概念 | 理解 | 实践踩坑 |
|---|---|---|
| 链式规则 | INPUT/OUTPUT/FORWARD三条链各自独立,数据包按链规则逐一匹配 | 一开始把规则配到Kali上而非SEED靶机,白测了半天 |
| 顺序匹配、命中即止 | 规则按添加顺序执行,第一条匹配的规则生效,后续不再检查 | ACCEPT写在DROP前面才能让白名单生效,顺序错了整条策略废掉 |
| 状态检测 | -m state --state ESTABLISHED,RELATED允许已建立连接的返回流量 |
实际配置过,理解了"宽松出站、严格入站"的防火墙设计哲学 |
| 规则持久化 | iptables规则存在内存,重启消失 | 需要iptables-save保存到文件并用iptables-persistent开机加载 |
3.2 Web安全技术
| 漏洞类型 | 攻击原理 | 检测工具 | 修复方法 |
|---|---|---|---|
| SQL注入 | 用户输入拼接进SQL语句,通过单引号闭合、联合查询、盲注等手法窃取数据 | Sqlmap自动化检测、Burp Suite手工测试 | Prepared Statement参数化查询,从根本杜绝拼接 |
| XSS跨站脚本 | 存储型:恶意脚本存入数据库,其他用户访问时执行;反射型:恶意脚本嵌入URL参数,诱导点击后执行 | Burp Suite拦截测试 | 输出编码/转义、CSP内容安全策略 |
| CSRF跨站请求伪造 | 利用用户已登录状态,诱导点击恶意链接发起非本意请求 | Burp Suite分析请求参数 | 添加CSRF Token、验证Referer来源 |
| 文件上传漏洞 | 绕过后缀检查如.php5和.phtml、绕过MIME类型验证、利用解析漏洞 | Burp Suite拦截修改上传请求 | 白名单校验后缀、重命名文件、禁止上传目录执行脚本 |
| 浏览器漏洞MS06-014/MS06-055 | 利用IE浏览器中ActiveX/VML组件缺陷,构造恶意网页远程执行代码 | Metasploit的ie_createobject和ms06_055_vml_method模块 | 安装安全补丁、禁用不必要ActiveX控件、不使用旧版IE |
在实践11中,我还完整走了一遍网页木马取证流程:从start.html入口逐层扒iframe,解密XXTEA+Base64编码的JS脚本,追踪下载的EXE文件,再用IDA做静态分析。这套分析流程让我明白了真实恶意网页的投递思路——不是一次性全暴露,而是多层嵌套、分阶段加载,既绕过检测又可以根据目标环境选择不同的payload。
3.3 逆向分析技术
工具对比与选择
| 工具 | 类型 | 典型用途 | 实际使用场景 |
|---|---|---|---|
| IDA Pro | 静态反编译 | 查看函数调用图、控制流图、提取字符串、生成伪代码 | 分析crackme1.exe/crackme2.exe找到密码比较分支;分析RaDa_unpacked.exe提取恶意功能字符串 |
| x64dbg | 动态调试 | 断点设置、单步执行、寄存器监控、内存查看 | 初步接触,在Windows环境下调试PE文件的基础操作 |
| objdump | 命令行反汇编 | Linux ELF文件快速反汇编 | 实践9中分析pwn1程序,查看main/foo/getShell函数地址及指令编码 |
| gdb | Linux动态调试 | attach到运行进程、查看栈内容、定位shellcode地址 | 实践9中attach到pwn2进程,在ret指令处设断点查看esp定位shellcode |
加壳与脱壳深入理解
通过RaDa.exe样本分析,我实际走了一遍完整的脱壳流程:
file命令识别出PE32格式,3个sectionstrings提取字符串,找到"SotM 32"确认来源- 超级巡警脱壳器检测到
UPX 0.89.6 - 1.02壳信息 - 标准UPX 3.06w脱壳失败,提示
CantUnpackException: file is modified/hacked/protected——说明样本做了反脱壳处理 - 专用脱壳器成功脱壳,生成
RaDa_unpacked.exe --authors参数直接输出作者信息:Raul Siles & David Perez
这个过程让我理解了:加壳不是简单的"加密+解密",好的壳还会做反调试、反脱壳、代码混淆等多重保护。在真实恶意软件分析中,脱壳往往是第一道也是最耗时的关卡。
逆向分析核心技巧梳理
在crackme1.exe的分析中,我摸索出了一套实际可用的逆向入门流程:
- 先用
file和md5sum获取文件基本信息 - IDA Pro打开后第一时间看Strings窗口——
"I know the secret"、"Pardon? What did you say?"这些提示字符串直接暴露了程序逻辑 - 进函数调用图找到关键函数
sub_401280 - 在控制流图中逐层分析——参数数量检查即
cmp [ebp+arg_0], 2→字符串比较aIknowTheSecret→条件跳转jz到成功分支 - 命令行实际验证——
crackme1.exe "I know the secret"输出成功提示
crackme2.exe比crackme1更复杂,增加了多层字符串比较和子函数调用,但分析方法论不变:Strings→函数图→控制流图→实际验证。
3.4 主流代码审计技术
栈溢出漏洞审计实践
这是我本学期理解最透彻的一个安全漏洞。下面把完整的分析过程用表格梳理出来:
| 分析步骤 | 具体操作 | 关键发现 |
|---|---|---|
| 反汇编分析 | objdump -d pwn2 |
foo函数用lea -0x1c(%ebp),%eax开辟缓冲区,缓冲区在ebp-0x1c处 |
| 偏移计算 | ebp+4减去ebp-0x1c等于0x20即32字节 | 从缓冲区起点到返回地址正好需要32字节填充 |
| gdb验证 | 输入40个字符1111111122222222333333334444444455555555 |
EIP被覆盖为0x35353535即'5'的ASCII码,确认第33字节开始覆盖返回地址 |
| 小端序理解 | getShell地址0x0804847d需写为\x7d\x84\x04\x08 |
x86架构小端序存储,低字节在前 |
| payload构造 | 32字节填充 + getShell地址 + 换行符 | perl生成二进制payload,管道注入程序 |
常见危险函数速查表
| 语言 | 危险函数 | 风险类型 | 审计要点 |
|---|---|---|---|
| C | gets()、strcpy()、sprintf() | 缓冲区溢出 | 检查目标缓冲区大小是否足够,是否做了边界检查 |
| PHP | exec()、system()、eval()、shell_exec() | 命令注入/代码执行 | 检查参数是否来自用户输入且未过滤 |
| Python | eval()、exec()、os.system() | 代码执行/命令注入 | 同上,优先用ast.literal_eval()替代eval() |
| Java | Runtime.getRuntime().exec() | 命令注入 | 检查命令字符串拼接是否包含外部可控参数 |
实践9中foo函数的漏洞本质就是用了没有边界检查的输入读取,让输入数据溢出到了返回地址的位置。这让我深刻理解了:安全问题往往不是复杂的逻辑bug,而是最基础的输入校验没做好。
3.5 程序设计
各语言在课程中的实际应用
| 语言 | 应用场景 | 具体实践 |
|---|---|---|
| Python | HTTP文件传输服务、数据处理 | python3 -m http.server 8080搭建简易HTTP服务在WinXP和Kali之间传文件 |
| Perl | 生成二进制payload | perl -e 'print "A" x 32;print "\x7d\x84\x04\x08\x0a"'精确构造栈溢出攻击串 |
| Shell(Bash) | 管道组合、远程Shell操作 | `(cat input; cat) |
| C/C++ | 理解底层漏洞原理 | 通过反汇编分析foo函数,理解数组越界→栈帧破坏→返回地址劫持的完整因果链 |
通过实践9手工用vim xxd修改call指令机器码做二进制编辑,我还理解了指令编码格式——call指令格式为e8 <rel32>,rel32是相对于下一条指令的偏移量,用小端序存储。从e8 d7 ff ff ff改成e8 c3 ff ff ff就能让程序调用完全不同位置的函数,这种底层操作是纯写代码学不到的。
3.6 计算机病毒技术
恶意代码分类对比
| 类型 | 自我复制 | 传播方式 | 宿主文件 | 典型功能 | 本课案例 |
|---|---|---|---|---|---|
| 病毒 | 是 | 感染可执行文件/文档宏 | 必须依附宿主 | 破坏系统/窃取信息 | - |
| 蠕虫 | 是 | 网络漏洞/邮件/共享 | 独立程序 | 大规模传播/DDoS | Conficker即利用MS08-067的蠕虫 |
| 木马 | 否 | 伪装正常程序诱导下载 | 伪装成合法程序 | 远程控制/信息窃取 | RaDa这种后门/RAT |
| 后门/RAT | 否 | 漏洞利用/社会工程学 | 独立或注入进程 | 远程命令执行/文件传输/屏幕截取 | RaDa |
RaDa恶意代码技术特征总结
通过IDA Pro和字符串提取,我从RaDa中识别出以下核心恶意功能:
| 功能模块 | 证据字符串 | 恶意目的 |
|---|---|---|
| C&C通信 | http://18.10.10.10/RaDa、RaDa_commands.html |
通过HTTP协议接收远程指令 |
| DDoS攻击 | Starting DDoS Smurf remote attack... |
发起Smurf分布式拒绝服务攻击 |
| 文件操作 | download.cgi、upload.cgi、install、uninstall |
远程文件上传下载和安装卸载 |
| 信息窃取 | screenshot |
截取受害者屏幕 |
| 持久化驻留 | HKLM\Software\Microsoft\Windows\CurrentVersion\Run |
修改注册表Run键实现开机自启动 |
| 脚本执行 | Scripting.FileSystemObject、WScript.Shell |
执行任意Windows脚本 |
| 反分析 | UPX加壳、CantUnpackException |
阻止标准脱壳工具、增加分析难度 |
此外,通过分析蜜罐5天的僵尸网络流量数据,我还理解了IRC协议在僵尸网络中的作用——控制者通过IRC频道向大量僵尸节点群发指令,比HTTP轮询更实时、更隐蔽。
3.7 网络溯源及防范技术
两次实际取证分析经验总结
| 分析对象 | 数据规模 | 攻击者IP | 攻击手法识别 | 核心收获 |
|---|---|---|---|---|
| listen.cap实践3 | 若干扫描包 | 172.31.4.178 | SYN/FIN/NULL/XMAS扫描,目标172.31.4.188 | 学习Nmap扫描流量的可识别指纹特征,用Snort规则自动检测 |
| 蜜罐5天流量实践4/8 | 大量包 | 多个IRC服务器 | 僵尸网络IRC C&C通信、DDoS指令 | 理解长时间跨度流量分析的价值,识别周期性信标流量 |
| NT蜜罐攻击流量实践6 | 6707包 | 213.116.251.162 | IIS Unicode遍历→RDS漏洞利用→nc反弹Shell→痕迹清理 | 完整还原攻击链:踩点→漏洞利用→权限提升→后渗透→蜜罐识别 |
攻击取证分析的标准流程
- 用Wireshark显示过滤器筛选目标IP相关流量
- 识别攻击阶段:ARP/ICMP探测→端口扫描→服务识别→漏洞利用→payload执行→后渗透操作
- 提取攻击特征:源IP、目标端口、扫描类型如SYN/FIN/NULL/XMAS、漏洞编号、payload特征码
- 还原攻击时间线:按时间排序数据包,标注每个阶段的关键事件时间节点
- 防御建议:根据识别出的攻击手法提出针对性加固方案
3.8 加密解密技术
| 加密类型 | 代表算法 | 核心特点 | 在课程中的关联 |
|---|---|---|---|
| 对称加密 | AES、DES | 加解密用同一密钥,速度快,适合大量数据 | 未直接操作,但理解了微信/QQ等即时通讯的加密传输基础 |
| 非对称加密 | RSA、ECC | 公钥加密、私钥解密,密钥分发安全但速度慢 | 理解了HTTPS/SSL握手中证书验证和密钥交换的原理 |
| 哈希算法 | MD5、SHA256 | 单向不可逆,定长输出,抗碰撞 | 分析恶意代码时用MD5识别样本唯一性、实践6中URL的MD5作为文件名查询散列文件 |
| 加壳技术 | UPX压缩壳 | 压缩代码段+混淆+反脱壳,非标准加密但有类似效果 | RaDa.exe的UPX加壳分析与脱壳实战 |
实践6网页木马取证中学生到了多层编码混淆技术:十六进制编码、Base64编码、XXTEA加密、unescape("%u....")编码。这些编码本身不是强加密,但在网页木马场景中足以延迟分析、绕过简单的特征检测规则。
3.9 信息系统运行维护
本学期Linux运维能力成长路线
| 技能点 | 进步前 | 进步后 | 关键实践 |
|---|---|---|---|
| 包管理 | apt和apt-get分不清 | 熟练用apt update/install/search/purge管理软件 | 每次实验都要安装/更新工具 |
| vim编辑器 | 只会i、:wq | 能用xxd编辑二进制文件、查找替换、多文件操作 | 实践9手工修改机器码 |
| 网络配置 | 只会用图形界面 | 能编辑resolv.conf、network/interfaces、关闭ASLR、调整ptrace_scope | 实践2修DNS、实践9关安全机制 |
| 进程管理 | 仅知道ps | 能ps -ef查找进程、kill杀进程、gdb attach调试、jobs/fg管理后台任务 | 实践9调试pwn2进程 |
| sudo/权限 | 只知道sudo | 懂得sudoers配置、文件执行权限chmod、ptrace权限管理 | 全程都在用 |
| 管道重定向 | 不了解 | 会用|、>、<组合命令,用(cat input; cat)维持管道输入 | 实践9构造攻击payload输入 |
实践1环境搭建中解决的问题清单
- VMware DHCP服务未启动→手动启动VMware NAT Service
- 跨网段ping不通→开启HoneyWall IP转发:
echo 1 > /proc/sys/net/ipv4/ip_forward - HoneyWall Web界面无法访问→检查Apache状态、确认用HTTPS、接受自签名证书
- Metasploitable网卡名不是eth0→用
ip addr查实际名称修改配置文件 - Kali DNS解析失败→添加
nameserver 114.114.114.114到resolv.conf并重启NetworkManager
3.10 网络协议分析
TCP三次握手与四次挥手实际观察
在实践3中,通过Wireshark亲眼看着SYN→SYN+ACK→ACK三个包把连接建起来,又看着FIN→ACK+FIN→ACK四个包把连接拆掉。课堂上学这些的时候只是死记硬背,但从实际抓包中看到每个标志位的确切设置、序列号的变化规律、窗口大小的协商过程之后,再也不会忘了。
各协议在课程中的实战分析
| 协议 | 层 | 分析工具 | 安全发现 |
|---|---|---|---|
| TCP | 传输层 | tcpdump捕获SYN包、Wireshark追踪TCP流 | SYN扫描特征识别、三次握手包序列分析 |
| UDP | 传输层 | nmap -sU扫描 | UDP无连接特性导致扫描慢且不准确,需等ICMP端口不可达 |
| HTTP | 应用层 | Wireshark Follow HTTP Stream | 请求方法/状态码/User-Agent分析,网页木马中跟踪多层iframe重定向 |
| HTTPS | 应用层 | 浏览器开发者工具 | SSL/TLS握手过程观察,理解了非对称加密交换对称密钥的流程 |
| Telnet | 应用层 | Wireshark Follow TCP Stream | 逐字符明文传输,用户名和密码完全暴露,任何一个中间节点都能窃取 |
| SMB | 应用层 | Wireshark协议解码 | MS08-067漏洞利用时SMB_COM_WRITE_ANDX异常数据包特征 |
| IRC | 应用层 | Wireshark过滤tcp.dstport == 6667 |
僵尸网络用IRC频道作为C&C通道,NICK/USER/JOIN消息识别 |
| ICMP | 网络层 | tcpdump过滤、iptables配置 | Ping扫描检测、ICMP不可达消息即UDP扫描依赖机制、iptables过滤echo-request |
| DNS | 应用层 | Wireshark过滤dns |
A记录解析追踪、域名到IP的映射关系分析 |
| ARP | 链路层 | Wireshark过滤arp |
主机发现辅助手段、MAC地址与IP映射关系 |
3.11 数据库
| 知识点 | 掌握内容 | 差距与不足 |
|---|---|---|
| MySQL基本操作 | 增删改查、用户权限管理、基本SQL语句编写 | — |
| SQL注入原理 | 单引号闭合、联合查询注入、盲注 | 手工注入实战经验少,主要依赖Sqlmap自动化 |
| 防护措施 | 参数化查询、最小权限原则、输入过滤 | 没有在实际项目中去部署验证 |
3.12 法律
| 法规 | 核心内容 | 与课程实践的关联 |
|---|---|---|
| 《网络安全法》 | 网络运营者安全保护义务、等级保护制度、实名制要求 | 实验中所有攻击都在隔离虚拟机中进行,不涉及真实系统和他人网络 |
| 《数据安全法》 | 数据分类分级保护、数据处理活动规范 | 蜜罐中捕获的攻击流量数据使用边界明确,仅用于教学分析 |
| 《个人信息保护法》 | 个人信息处理的合法性基础、用户知情同意权 | Who is查询中理解域名隐私保护服务的法律意义 |
| 《计算机信息系统安全保护条例》 | 安全等级保护、安全专用产品销售许可 | 使用的安全工具均为开源教学用途 |
| 《关键信息基础设施安全保护条例》 | CII认定标准、运营者安全义务 | 理解了为何百度等企业自建权威DNS、配置全维度域名安全保护策略 |
3.13 基础
基础课知识在攻防实践中的具体落地
| 学科 | 理论知识 | 实践落地 |
|---|---|---|
| 计算机组成原理 | CPU寄存器如EAX、EBP、EIP、ESP,指令编码格式、小端序存储、内存寻址 | 实践9:分析call指令的rel32偏移编码e8 d7 ff ff ff,理解小端序决定payload中地址的字节排列顺序 |
| 操作系统 | 进程管理如ps和gdb attach、内存管理如ASLR地址空间随机化、栈可执行标志、ptrace安全机制 | 实践9:关闭ASLR即设randomize_va_space=0、execstack -s设栈可执行、解除ptrace限制即设ptrace_scope=0 |
| 计算机网络 | OSI七层模型、TCP/IP协议栈、HTTP/HTTPS/DNS/ARP | 全程贯穿:每次抓包分析都在用分层模型理解数据包的逐层封装和解封 |
| 数据结构 | 栈的LIFO后进先出特性 | 实践9:理解栈帧结构——函数调用时参数和返回地址依次入栈,返回时逆序弹出 |
4. 课堂的收获与不足
时光一晃,这门网络攻防实践课程的十二次作业也迎来了最后一次总结,也是唯一次不需要参考同学作业的一次。回顾整个学期的学习、竞赛、科研与学生工作,心里有很多感慨,也积攒了不少想说的话。
单说这门课程,前十一轮实操作业难度都不低,每一次我基本都要花费两到三天才能啃下来。我本身并不擅长虚拟机环境下的攻防技术操作,本科时就对虚拟机十分抵触,毕业时甚至暗下决心以后再也不想接触。可这次课程不得不直面短板,配置环境、搭建靶机、执行攻防指令时反复报错、失败无数次,加上虚拟机运行还会和电脑系统冲突,导致设备无法正常更新,那段时间压力很大,好几次都想直接放弃。好在还是咬着牙坚持,一点点排查问题、查阅资料,到后期操作才逐渐顺手,也实实在在学到了不少网络攻防的实操知识,对漏洞利用、靶场搭建、攻防思路都有了更直观的理解。
学期初,我有幸代表学校研究生队伍参加长城杯网络攻防竞赛。可惜我们队伍最终成绩并不理想,能进决赛更多是初赛运气使然。那次糟糕的竞赛体验让我心里很不好受,第一次在这类赛事中拿到这么差的结果,总觉得愧对老师、队友和学校的信任。也正是这次经历,让我在后续的课程学习里更加认真、专注,不敢有半点松懈。虽然之后大概率不会再参与高强度的网络攻防对抗类赛事,但我依然打算继续报名长城杯接榜挑战赛、第五届研究生网络安全创新大赛创意赛与揭榜挂帅挑战赛等相关赛事,持续积累安全领域的实践经验。
说起来有点反差,前十一次作业我技术算不上突出,可能是班里技术偏弱的那一批,但每次交作业都冲在前面;可到了这次需要写感悟总结,本该是我的强项,却前前后后构思了三周,删了又改、改了又删,像写完本科毕业设计致谢时的心情,有太多情绪和经历想梳理清楚。
这一学期,我给自己打心底里点个赞。课程学习按部就班顺利完成,学生工作方面也不敢懈怠,先后统筹安排了研究生复试、MPA复试、研究生补录的志愿者工作,还负责承办学子大会、暑期夏令营等重要活动,尽己所能完成学院和系里交代的任务。
竞赛方面压力更大,在繁重的课程之外,我以核心主力、队长的身份同时参与了挑战杯、研究生网安创新大赛、长城杯、芯片类研究生创新大赛、研究生电子设计竞赛双赛道等多场赛事。能同时并行处理这么多竞赛,得益于本科几年几乎打遍所有教育部A类赛事的积累,熬夜备赛、打磨计划书、优化PPT、模拟答辩的经验,让我即便忙碌也能理清每一场比赛的核心诉求,找准评委关注的重点,高效完成备赛。虽然过程时常狼狈,但还算能从容应对,也很感谢当年努力拼搏的自己。
科研上,组里师兄们都十分优秀,我不想拖团队后腿,便尽可能挤出时间推进工作。目前已申请一项发明专利,受经费限制暂时无法继续拓展;同时投稿了CCF B类顶会ACM Sensys,敢于迈出投稿这一步,对我而言已是很大的突破。真正开始研究生阶段的科研后才明白,科研远不止埋头做实验,日常课程、突发的学生工作、生活琐事都会不断打乱节奏,很难拥有完整的连续时间。为了凑出整块时间做研究,清明节、五一、端午等节假日,还有几乎所有周末,我都牺牲掉用来赶进度,深刻体会到研究生科研的不易。
不管未来竞赛、论文、专利的最终结果如何,我都觉得这学期的自己已经做得足够好。往后我也会继续保持这份劲头,在科研、竞赛和学生工作中继续深耕,争取产出更多成果,为学校、学院和系里贡献更多力量。最后由衷感谢老师这一学期的耐心指导、包容与支持。
参考文献
[1] 第1次实践:网络攻防环境搭建,https://www.cnblogs.com/xkfei/p/19735530
[2] 第2次实践:网络信息搜集技术,https://www.cnblogs.com/xkfei/p/19772411
[3] 第3次实践:网络流量嗅探与协议分析,https://www.cnblogs.com/xkfei/p/19772640
[4] 第4次实践:恶意代码分析与逆向工程,https://www.cnblogs.com/xkfei/p/19844877
[5] 第5次实践:防火墙与入侵检测技术,https://www.cnblogs.com/xkfei/p/19849060
[6] 第6次实践:Windows操作系统安全攻防,https://www.cnblogs.com/xkfei/p/19889006
[7] 第7次实践:Linux渗透攻击,https://www.cnblogs.com/xkfei/p/19889319
[8] 第8次实践:恶意代码深度分析,https://www.cnblogs.com/xkfei/p/19997411
[9] 第9次实践:缓冲区溢出漏洞利用,https://www.cnblogs.com/xkfei/p/20008372
[10] 第10次实践:数据库安全与Web安全综合,https://www.cnblogs.com/xkfei/p/20009173
[11] 第11次实践:Web浏览器渗透攻击,https://www.cnblogs.com/xkfei/p/20150695
浙公网安备 33010602011771号