luxy2121

导航

20252920卢兴宇 2025-2026-2 《网络攻防实践》课程总结

20252920卢兴宇 2025-2026-2 《网络攻防实践》课程总结

1.内容总结

第1次实践 蜜网网关部署与配置:搭建网络攻防实验环境,配置VMware虚拟网络(攻击网段与蜜罐网段),部署Kali攻击机、Metasploitable靶机、WinXP攻击机及ROO蜜网网关,实现蜜罐网关的数据捕获与控制功能。

第2次实践 网络信息收集与扫描:通过whois查询域名注册信息,利用nslookup获取域名对应IP地址,使用资源监视器获取好友IP并定位地理位置,使用Nmap对靶机进行端口扫描、操作系统识别与服务探测,使用Nessus对靶机进行漏洞扫描与安全评估。

第3次实践 网络嗅探与协议分析:使用tcpdump对访问网站过程进行嗅探抓包,使用Wireshark捕获TELNET登录流量并进行协议分析(发现明文传输密码的安全缺陷),使用Wireshark/Snort/p0f对listen.pcap进行取证分析,识别攻击者IP、扫描工具(Nmap)、扫描方式(SYN半开扫描)、靶机开放端口及攻击者操作系统。

第4次实践 TCP/IP协议攻击:实践了ARP缓存欺骗攻击(使用netwox 80工具伪造ARP响应)、ICMP重定向攻击(使用netwox 86劫持流量)、SYN Flood拒绝服务攻击(使用hping3伪造大量SYN请求)、TCP RST攻击(使用netwox 78强制中断连接)及TCP会话劫持攻击(使用ettercap实现中间人攻击)。

第5次实践 防火墙与入侵检测:配置iptables实现ICMP数据包过滤和特定IP访问控制,使用Snort对pcap文件进行入侵检测并分析报警日志,分析蜜网网关HoneyWall的防火墙规则和IDS/IPS配置规则。

第6次实践 Windows远程渗透攻击:使用Metasploit中的MS08-067漏洞模块对Windows靶机进行远程渗透攻击,获取系统访问权;对NT系统破解攻击进行取证分析(识别Unicode编码攻击、RDS漏洞SQL注入、nc后门等攻击链);完成团队攻防对抗实践。

第7次实践 Linux远程渗透攻击:使用Metasploit针对Samba usermap_script漏洞对Linux靶机进行渗透攻击,获取远程Shell;利用vsftpd_234_backdoor后门漏洞进行攻防对抗,同步使用Wireshark进行流量捕获与分析溯源。

第8次实践 恶意代码分析:对RaDa恶意代码样本进行文件类型识别(PE文件)、UPX脱壳处理及字符串提取分析;使用IDA Pro对crackme1.exe和crackme2.exe进行静态逆向分析;对僵尸网络流量进行取证分析,统计僵尸网络规模(3461台主机)、识别攻击IP(165个)及攻击手段。

第9次实践 缓冲区溢出攻击:手工修改可执行文件机器码(将call指令目标重定向至getShell函数),利用foo函数的BoF漏洞构造攻击Payload覆盖返回地址,注入自定义Shellcode并执行(涉及关闭地址随机化、设置堆栈可执行、GDB调试定位栈地址等操作)。

第10次实践 Web安全——SQL注入与XSS攻击:完成SEED SQL注入实验(SELECT语句注入绕过登录验证、UPDATE语句注入修改他人薪资、参数化查询修复漏洞);完成SEED XSS跨站脚本攻击实验(弹窗显示Cookie、窃取Cookie发送至攻击者、自动添加好友、修改受害者信息、编写XSS蠕虫、HTMLawed插件防御)。

第11次实践 Web浏览器渗透攻击:使用Metasploit的MS06-014漏洞模块构造恶意网页木马,实现对Windows靶机的浏览器渗透攻击和远程控制;对网页木马攻击场景进行取证分析(XXTEA+Base64解密、识别四种ActiveX控件漏洞利用、提取shellcode中隐藏的恶意URL、脱壳分析下载的木马文件);完成浏览器攻防对抗实践。

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

我最喜欢且做得最好的实践是第10次实践——SQL注入与XSS跨站脚本攻击

选择这次实践的原因有几点:第一,Web安全漏洞是当今互联网最普遍、危害面最广的安全问题之一,SQL注入和XSS常年位居OWASP Top 10前列,学习这两类攻击具有极高的现实意义。第二,这次实践的内容设计非常完整且层层递进——从最简单的登录绕过,到UPDATE语句注入修改他人数据,再到XSS弹窗、窃取Cookie、自动加好友、篡改个人资料,最后到编写自我复制的XSS蠕虫,每一步都让我感受到攻击者是如何由浅入深、一步步扩大攻击效果的。第三,实践中不仅学习了攻击方法,还实际动手修复了漏洞——通过PHP参数化查询修复SQL注入、启用HTMLawed插件防御XSS,这种"攻防结合"的学习方式让我对安全防护有了更立体的理解。

在这次实践中,我做得最好的是XSS蠕虫的编写部分。我深入分析了Elgg平台添加好友和修改资料的HTTP请求机制,理解了__elgg_ts和__elgg_token的作用,成功构造出了具有自我复制能力的XSS蠕虫代码,实现了从Alice到Boby再到Samy的自动传播链。这个过程让我真正理解了XSS蠕虫的工作原理,也让我更加警惕实际Web应用中用户输入过滤的重要性。

3.本门课学到的知识总结

第1次实验:蜜网网关部署与配置

第一次实验是整个课程的基础,说白了就是把实验环境搭起来。别看后面又是扫描又是攻击的,要是这个环境没搭好,后面什么都干不了。我印象最深的是VMware里那几个网络模式的区分——VMnet1是Host-Only、VMnet8是NAT,一开始我还真分不太清,老是把攻击机和靶机配到不同网段,结果ping半天不通,回头一看才发现一个在桥接模式一个在NAT模式,白费了半天劲。

ROO蜜网网关这个东西我之前只是听说过蜜罐这个概念,真正配起来才发现它比自己想的要复杂一些。它是以透明网桥方式跑在攻击网段和蜜罐网段之间的,数据流经它的时候会被抓包记录,还能做访问控制。我当时配完以后在蜜网管理界面看到实时数据包滚过去,感觉挺奇妙的——原来你在网络上做什么动作,背后都有这么多包在跑。这个实验让我对”网络隔离”有了很实在的感受,后面做攻击实验的时候也更放心,因为知道蜜网网关会把流量隔开,不会影响到外面的真实网络。说实话,光是让这几台虚拟机互相能ping通,当时就折腾了我不少时间,但也是从这开始,我养成了一个习惯:遇到问题先查IP、子网掩码和网关,而不是瞎猜。

第2次实验:网络信息收集与扫描

这次实验让我有点”开眼界”的感觉。以前上网从来没想过,一个域名背后能查到那么多信息——注册人的名字、邮箱、注册时间、过期时间,全都在whois数据库里摆着。我用nslookup查了百度的IP,然后又去IP查询网站查出IP所在的机房和城市,整个信息链条串起来的时候,我才真正意识到”互联网上没有任何信息是真正隐藏的”这句话是什么意思。

比较好玩的是获取好友IP的那个环节。我和同学开了微信语音,然后在资源监视器的网络活动里找对应进程,真的看到了对方的IP地址。再用IP定位网站一查,城市位置八九不离十。虽然误差肯定有(IP定位不可能精确到门牌号),但这个体验让我很直观地理解了隐私泄露的风险。后来我在搜索引擎上搜了自己的名字和学号,虽然没查出什么明显的东西,但那次之后我确实把QQ空间和朋友圈的权限都调紧了一些。

Nmap的使用是这次的重头戏。说实话刚开始输入命令看到一堆参数弹出来的时候有点懵,但实际跑起来之后就清楚了:-sS是SYN半开扫描,-O是操作系统识别,-sV是服务版本探测。看到靶机开放了哪些端口、跑着什么服务、大概是什么操作系统,信息清晰列在眼前,确实有一种”透视”的感觉。Nessus的体验也类似,它直接给漏洞分了等级,高危的几个我印象里就有后来实验用到的Samba漏洞。这次实验让我认识到,攻击之前的信息收集比自己想象的重要得多,不了解目标就乱打是肯定打不进去的。

第3次实验:网络嗅探与协议分析

这次实验让我印象最深刻的是TELNET明文传输密码。在Wireshark里追踪TCP流,用户名和密码明晃晃地躺在数据包里,一个字母一个字母清清楚楚。我当时就想,如果这是在咖啡馆的公共WiFi里,有人开个抓包工具,那所有用明文协议的登录信息不就全被看光了吗?虽然现在TELNET基本没人用了,但这个实验让我真正理解了为什么大家一直在推HTTPS、SSH这些加密协议,也理解了中间人攻击为什么能成功——因为数据本身就没加密,抓到了就是抓到了。

分析listen.pcap那次挺有侦探的感觉。一开始数据包列表里密密麻麻什么都看不清,后来学会了用过滤条件:先看ARP请求确定攻击开始的标识,再看ICMP包判断有没有ping扫描,然后过滤SYN包看端口扫描行为。最后发现Window size固定是2048,这个是Nmap的特征指纹,再配合p0f识别出攻击者的操作系统是Linux 2.6.x。整个过程就像是在拼拼图,每一条过滤规则帮你缩小了一圈范围,最后把攻击者的工具、手法、操作系统都还原出来了。我在这之后每次看数据包都会下意识去看Window size和TTL这些字段,虽然不一定能精确判断,但至少多了一个分析角度。

tcpdump命令行抓包虽然没有Wireshark直观,但它轻量、不用图形界面,SSH连到服务器上就能用,我觉得在实际运维场景里可能更实用。尤其是用过滤表达式精准抓特定流量的时候,比打开Wireshark存好几个G的包要方便。

第4次实验:TCP/IP协议攻击

这次实验是我整个学期里最有感触的一次——一共做了五种攻击,每种都亲眼看到了效果。ARP欺骗那个最直观,攻击前ARP表里网关的MAC地址是对的,netwox一跑,再arp -a一看,网关的MAC变成了攻击机的MAC,流量就这样静悄悄地拐了弯。我当时在攻击机上开Wireshark看,靶机访问外网的包全被导过来了,感觉ARP协议那种”谁喊得大声就听谁的”的设计缺陷实在太明显了。

ICMP重定向攻击让我想笑——靶机本来默认网关是.1,我发了个伪造的重定向报文过去说”去百度的更优路径是走.6(攻击机)”,靶机二话不说就把路由表改了。没有验证,没有确认,说改就改。这种设计的初衷是好的(帮助网络里的主机找到更好的路径),但前提是网络是”友好”的,一旦有人别有用心,就成了很方便的攻击面。

SYN Flood那次我第一次亲眼看到了”Denial of Service”是什么意思。靶机80端口瞬间堆满了SYN_RECV状态的半连接,netstat出来的结果满屏都是,源IP全是随机伪造的。靶机资源就这么多,连接队列占满了,正常的请求根本进不来。我还特意在攻击的同时从另一台机器去访问靶机的网页,果然打不开了。

TCP RST和会话劫持从另一个角度展示了TCP的问题。RST攻击让我发现断开一个连接原来这么容易——不需要什么高级技巧,只要抓到序列号,一个伪造的RST包发出去了,连接就被强行中断。Ettercap做TCP会话劫持的时候更震撼,我在seedubuntu上telnet登录,输入的用户名和密码一字不差地出现在攻击机的ettercap界面上,连删除键的退格操作都能看到。我当时想的是,如果我在被劫持的会话里输了数据库密码或者服务器密码,那就等于拱手送人了。这些攻击让我意识到协议设计里的信任假设是安全问题的很大来源——设计的时候都假设每个人循规蹈矩,但现实是只要有机会就一定有人会利用。

第5次实验:防火墙与入侵检测

这次实验跟前几次的视角不太一样,前面都是在攻击,这次是在防守。iptables看起来就是几条命令,但背后的逻辑挺清楚的:数据包进来→匹配规则→决定放行还是丢掉。我用iptables -A INPUT -p icmp -j DROP把ICMP包全部丢掉,然后再从Kali去ping就完全不通了,效果立竿见影。后来又做了只允许特定IP访问telnet的实验,先iptables -P INPUT DROP把门全关上,再单独给Kali的IP开一条ACCEPT规则。这个”先全禁再逐个放开”的思路挺实用的,比反过来(先全放再逐个禁)要安全得多。

Snort分析pcap那部分让我对入侵检测有了一个初步认识。它不像防火墙那样直接拦流量,而是根据规则去匹配数据包里的特征,然后报警。我用它去扫之前的listen.pcap文件,成功识别出了Nmap扫描行为。Snort的规则文件里定义了各种攻击的特征模式,匹配到了就生成告警日志。不过我也注意到一个问题——规则库得不断更新,不然新出的攻击手法识别不出来,而且如果规则写得不够细致,误报的情况也不少见。

分析蜜网网关rc.firewall配置文件的时候,我看到了黑名单、白名单、防护名单这些东西的实际应用。蜜网网关既要让攻击者能打进来(不然蜜罐就没意义了),又要限制攻击者不能利用蜜罐去攻击别的主机(不然就成帮凶了),这个度得拿捏好。看配置的时候发现它对接外网的连接数做了限制,而且对特定端口的出站流量也做了过滤。这种”让攻击者进来但别让他出去干坏事”的策略我觉得设计得挺巧妙的。

第6次实验:Windows远程渗透攻击

这次是第一次在Windows平台上做漏洞利用,MS08-067这个漏洞我之前就听说过,据说当年很多勒索病毒也是走这个漏洞传播的。实际的攻击过程比我想的要”顺利”一些——metasploit里搜到模块,选好payload,设好LHOST和RHOST,exploit一敲就拿到shell了。ipconfig一敲显示的是靶机的IP,那一刻的感觉就是:真的进去了。

不过后面做NT系统破解取证分析的时候,我才体会到这个攻击如果从零开始分析有多难。pcap文件里有上万条数据包,要从里面找出攻击的全过程,需要耐心和技巧。过滤http流量之后,发现了一个很关键的特征:%C0%AF,这其实是/符号的Unicode编码。攻击者用这种编码绕过了安全检测,访问了boot.ini文件。然后又在另一个数据流里发现了特征字符串ADM!ROX!YOUR!WORLD,查了资料才知道这是msadc.pl攻击工具的标志。攻击者接着通过RDS漏洞执行了SQL注入,拿到了命令执行权限,然后ftp下载了nc.exe、pdump.exe、samdump.dll三个工具,用nc在6969端口建立了后门。我顺着TCP流一条条追踪下来,感觉就像在看一部犯罪记录片。尤其最后看到攻击者在6969端口尝试执行net group、net localgroup等命令想提权的时候,能感受到那种”已经在里面了,但还想更进一步”的攻击思路。

团队攻防对抗也很有意思。我攻击同学的Win2k,同学攻击我,两边同时用wireshark抓对方的流量。从攻击方角度看到的是”搜索漏洞→配置参数→执行exploit→拿到shell”,从防守方角度看到的是”端口扫描→连接建立→提权操作”,对比着看能学到很多。我攻击刘长天的靶机的时候,先在metasploit里建了文件传过去,对方那边能看到文件创建成功了,这说明攻击确实生效了。反过来,同学攻击我的时候我用wireshark监听,也能实时看到对方的操作步骤。这种对抗形式比单独做实验生动多了。

第7次实验:Linux远程渗透攻击

这次从Windows转到了Linux平台,利用的是Samba服务的usermap_script漏洞。跟MS08-067的流程差不多,还是metasploit那套操作,但这次攻击的是Linux系统,拿到shell之后用的都是Linux命令。打完以后我看了看Wireshark里抓的包,跟第6次对比了一下,能发现Windows和Linux在网络层面的攻击流量特征还是有些不同的。

vsftpd后门漏洞的攻防对抗部分,我同时在攻击机上跑metasploit、在防守方用Wireshark抓包,把攻击的全过程从两边都记录下来了。攻击成功后我在靶机上建了个文件夹、写了个文件,算是确认了权限。再从Wireshark里回溯,能清楚地看到攻击包发送的时间、shell会话建立的过程、以及后续输入命令产生的流量。这次实验让我对”攻击一定会留下痕迹”有了更深的体会——即使你不主动记录,网络流量也会忠实地记下一切。

不过说实话,这次实验在操作上和第六次重叠度比较高,都是msfconsole→search→use→set→exploit这个套路。我做完之后在想,如果让我换一个新的漏洞去攻击一个没见过的服务,我能不能独立找到合适的模块、选对payload、调通参数?目前可能还比较依赖现成的资料和步骤指引,独立发现和利用漏洞的能力还差得远。

第8次实验:恶意代码分析

这次实验的内容跟前七次完全不一样了,从网络攻防转到了二进制分析。RaDa恶意代码样本分析让我第一次完整地走了一遍恶意代码分析的基本流程:先用file命令和PEiD判断文件类型和加壳方式,然后脱壳,再用strings提取可打印字符串,最后用IDA Pro打开做静态分析。脱壳前后的对比非常明显——加壳状态下strings看到的基本全是乱码,脱壳以后函数名、字符串、IP地址全都露出来了,跟剥洋葱一样一层层往下剥。

crackme程序分析是我觉得这学期最有意思的实验之一。crackme1.exe用IDA Pro打开,在Strings窗口里直接看到了”I know the secret”这个字符串,猜它可能是口令,在命令行里一试,果然弹出了”You know how to speak to programs, Mr. Reverse-Engineer”。crackme2.exe更巧妙一些,需要把程序文件名改成crackmeplease.exe再跑,输出”We have a little secret: Chocolate”。通过这两个小程序,我第一次体会到了逆向工程的基本思路:不是靠”破解”什么加密算法,而是通过字符串、函数调用关系、流程图这些信息去理解程序的逻辑,找到关键比较点。说实话,在看IDA的流程图和函数调用图的时候我对汇编还是有点吃力,虽然有注释帮助,但很多细节是半懂不懂的状态,后续确实需要补汇编基础。

僵尸网络分析部分用到了tcpflow、tcpdump等命令行工具做数据提取,最后统计出3461台被控主机,165个攻击源IP。当我看到这个数字的时候说实话有点惊讶——一个僵尸网络控制了三千多台主机,如果同时发动DDoS攻击,想象一下那个流量规模。攻击者针对的是TCP 445等常见的Windows服务端口,利用的是SMB蠕虫。数据包分析过程中我还看到了PSEXESVC.EXE这个文件,查资料才知道它是PsExec工具的组件,配合SMB漏洞可以实现远程执行。整个过程让我理解了僵尸网络不是”一台黑客控制一堆电脑”那么简单,背后有IRC控制通道、有传播机制、有C&C服务器,是一个挺复杂的体系。

第9次实验:缓冲区溢出攻击

这是我觉得11次实验里最有难度的一次,也是最靠近底层的一次。之前在课本上学过缓冲区溢出的原理,但真正上手操作完全是另一回事。

第一个任务——手工修改可执行文件机器码——相对还好。通过objdump反汇编找到call指令的偏移地址,算出getShell函数地址和当前返回地址的差值,用vim把十六进制里的d7改成c3,保存运行,程序就跳到getShell去了。虽然操作不算复杂,但这是我第一次直接改二进制文件,看着vim里满屏的十六进制数字,挺新鲜的。而且这次改动让我对call指令的机器码编码方式有了直观认识:call地址 = 下一条指令地址 + 偏移量,这个以前只停留在课本几行字上,亲手算过一次之后记得特别牢。

第二个任务用Perl构造Payload覆盖返回地址,就需要对栈帧结构有比较清楚的理解了。28字节缓冲区 + 4字节旧EBP + 4字节返回地址 = 总共32字节才能覆盖到返回地址。我构造了32个'A'再加上\x7d\x84\x04\x08(getShell的地址,小端序),用管道喂给程序,果然跳到了getShell。但这里面有个很关键的前提——你得知道getShell的地址是多少。在真实场景里,ASLR(地址空间随机化)是开着的,栈地址每次运行都不一样,不会像实验里这么”顺利”。我为了做这个实验还特意关了地址随机化、开了栈可执行权限,等于是把所有保护措施都卸掉了才成功的,可见真实的漏洞利用比这个难得多。

第三个任务注入自定义Shellcode,是我觉得最折磨但做完最有成就感的部分。先是装了execstack把堆栈设为可执行,关了ASLR,然后用GDB附加进程调试,在ret指令位置下断点,找到esp的值(也就是Shellcode在栈上的地址),把Payload里对应位置的占位符改成这个地址,最后运行成功拿到Shell。这里面每一步都不能错——shellcode的机器码得写对、地址要用小端序、填充长度要精确到字节。我中间因为地址算错了两次,程序直接段错误崩掉,试到第三次才成功。做完之后我对栈、返回地址、指令指针这些东西的理解比之前深了不少,也算是明白了什么叫”攻击就是在极小的夹缝里找到可利用的空间”。不过话说回来,这也让我意识到我在汇编和底层知识上还有很大的差距——shellcode是照着给的,如果能自己写一个,那才说明真正掌握了。

第10次实验:Web安全——SQL注入与XSS攻击

Web安全是我在整个课程里最感兴趣的方向,因为跟日常上网的关系最紧密。SQL注入实验里我用Admin'#绕过登录验证的时候,一开始没完全理解#是干嘛的——后来仔细看了后端PHP代码才搞清楚,原来#在MySQL里是注释符,把后面的AND Password=...全注释掉了,所以输什么密码都无所谓。看懂源码前后的差异之后,SQL注入的原理一下子就透彻了:不是”破解”了密码,而是改变了SQL语句本身的逻辑。UPDATE注入同理,通过构造恶意NickName值闭合了前面的引号,然后在中间插入了自己的修改逻辑,再用#把后面的内容注释掉。看到Admin的薪资确实被改成了我设置的值,我觉得这个漏洞的威力很实在——一个看似无害的修改昵称的输入框,就能越权修改别人的数据。

修复实验也很有意义。我把unsafe_home.php里的字符串拼接改成了prepare+bind_param参数化查询,之前能注入成功的Admin'#再用就不管用了。这个对比非常直观地说明了参数化查询为什么能防注入:因为参数和SQL语句被分开了,用户输入不再被当成SQL代码的一部分来解析。我后来想,如果所有写数据库操作的开发者都在一开始就用参数化查询,SQL注入这个漏洞类别基本就不会存在了。

XSS系列实验层层递进,从弹个alert窗口开始,一步步做到能自我复制的XSS蠕虫。第一个任务就是注入一段<script>alert('...')</script>,刷新页面弹窗就出来了,看起来简单,但本质上和我后面做的蠕虫没有区别——都是让别人的浏览器执行了我写的JavaScript代码。窃取Cookie那步比较关键,我构造了一个img标签,把Cookie作为URL参数发到攻击机监听的端口上。当Boby访问Alice的主页时,Boby的Cookie就直接出现在了我的nc监听窗口里。那一刻的感受就是:Cookie真的是Web安全的命门,一旦被XSS拿到,攻击者就能冒充用户身份做各种操作。

自动加好友和修改资料的实验让我学会了怎么用浏览器开发者工具分析HTTP请求。打开Network标签,手动操作一次,看浏览器发了什么请求、带了什么参数、参数的值长什么样。然后用JavaScript模拟这个请求,配合__elgg_ts__elgg_token绕过了服务端的防CSRF校验。这里有个细节让我印象很深——__elgg_token的存在是为了防止CSRF攻击,但因为XSS脚本与受害者页面是同源的,它可以读取token并带着token发请求,所以token对XSS完全没用。这说明不同安全机制之间是有边界和适用范围的,不能光靠一种机制防所有攻击。

XSS蠕虫的编写是我觉得这学期做得最投入的一个环节。核心想法是将整个攻击代码(包含修改资料和添加好友的逻辑)通过encodeURIComponent编码后作为description参数的一部分发送出去,这样代码就被写进了受害者的个人资料里。当新的访问者打开这个被感染的主页时,同样的代码在他们浏览器里再次执行,实现自我传播。从Alice→Boby→Samy这个传播链验证成功的时候,我真正理解了当年Samy蠕虫为什么能在MySpace上几小时内感染上百万人。做完实验以后,我在日常逛网页的时候看到那些评论区、用户主页,都会下意识想”这里有没有做输出过滤”。

第11次实验:Web浏览器渗透攻击

最后一次实验回到了Windows平台,但攻击的入口从网络服务变成了Web浏览器。MS06-014漏洞利用的过程和之前metasploit的操作类似,但这次我构造的是一个恶意URL——靶机用IE浏览器访问这个链接,就会触发漏洞,攻击机获得反向Shell。我发现这种攻击方式的隐蔽性比直接端口扫描高得多,因为用户看到的就是一个网页链接,没有任何异常提示,背后的payload就悄悄执行了。

网页木马分析是这次最考验耐心的环节。start.htm文件打开之后是经过精心伪装的代码,里面嵌了内联框架和加密的JavaScript。XXTEA+Base64的解密流程我前后搞了好几遍才理顺:先用Base64解码,再用XXTEA算法解密,密钥是”script”(\x73\x63\x72\x69\x70\x74),解密出来的脚本里列出了四种ActiveX控件漏洞的利用代码。Adodb.Stream用来读写文件,MPS.StormPlayer和PowerPlayer利用缓冲区溢出,BaiduBar的DloadDS方法更是直接下载并执行任意文件。这些控件的设计本意都是提供合法的功能(流操作、媒体播放、下载管理等),但在恶意脚本的操纵下就成了攻击的跳板。

从shellcode里提取隐藏URL的过程让我印象深刻。shellcode本质是一串十六进制机器码,里面藏了下载木马的URL。我在一堆十六进制里找2f(斜杠的ASCII码),然后把能连起来的部分提取出来做十六进制到字符串的转换,最后得到了形如http://down.18dd.net/bb/bf.exe的下载地址。几个木马文件(bf.exe、pps.exe、bd.exe)脱壳分析后发现内容居然一模一样,只是名字不同,说明攻击者为了规避检测,把同一个恶意程序用不同文件名分发。

浏览器攻防对抗那次,我防守方用Wireshark抓包,在HTML源码里看到了大量的空格和换行——这是攻击者故意加的,用来混淆杀毒软件的特征检测。去掉多余空白之后代码逻辑就清晰了:遍历ActiveX控件→下载payload→写入文件→静默执行。在任务管理器里确实看到了对应的恶意进程,说明整个攻击链在实际环境中是能跑通的。这次实验也让我认识到,保持浏览器和插件的更新、禁用不必要的ActiveX控件,不是”安全意识”的空话,是真的能挡住很多实际攻击。

总体回顾

一个学期下来,十一轮实验从搭环境开始,一路做到网络扫描、协议分析、协议攻击、防火墙、Windows渗透、Linux渗透、恶意代码分析、缓冲区溢出、Web安全,最后到浏览器渗透。说实话,学期初我对”网络攻防”的想象跟实际做完之后的认知差距挺大的。一开始以为会是各种酷炫的黑客操作,真正做下来才发现大部分时间花在了配网络、查资料、排错、读日志和反复验证上。攻击只是整个流程里的一小段,前面有大量的信息收集和环境准备,后面还需要分析、溯源和修复。也许安全工作的真实面貌就是这样——不是炫技,是耐心和细节。

还有一个比较深的感受是,漏洞的原理和修复方法往往是同一个东西的两面。你理解了SQL注入是怎么拼接字符串的,自然就知道参数化查询为什么能修好它;你明白了ARP协议为什么能被欺骗,就会想到静态ARP绑定或者ARP监控可以作为防护手段;你看懂了栈溢出的覆盖过程,就能理解ASLR、Stack Canary和NX这些防护机制的设计意图。攻击和防御的知识是互相缠绕的,只学其中一半都会有一知半解的感觉。

5.课堂的收获与不足

收获:这门课最大的收获是让我真正动手接触了网络攻防的完整流程。刚开始做实验时,我经常卡在虚拟机网络不通、服务没启动、命令参数写错这些小问题上,后来慢慢学会了先查IP、网关、端口和进程,再去判断问题出在哪里。做完这些实验后,我对“攻击不是凭空发生的”这一点理解更深了,很多漏洞其实都和输入校验、权限控制、协议缺陷、版本过旧有关。写报告的过程也让我把很多原本只是照着做的步骤重新想了一遍,哪些地方是真懂了,哪些地方只是会操作,也看得更清楚。还有一点比较明显的变化是,我现在遇到报错不会像一开始那样慌,而是会先把现象记录下来,再一步步排查。

不足:不足主要是底层基础和编程能力还不够。缓冲区溢出、shellcode、恶意代码逆向这些内容,我能跟着步骤做出来,但如果换一个新题目,独立分析还是比较吃力。还有就是自动化脚本写得少,很多时候更依赖现成工具。后面我想重点补汇编、操作系统内存管理和Python脚本,把实验里的操作尽量和原理对应起来,而不是只停留在完成截图。另外,有些实验当时为了赶进度,只验证了最基本结果,没有继续尝试更多参数和变形场景,这一点以后需要改。

6.参考文献

  1. 诸葛建伟.《网络攻防技术与实践》[M]. 机械工业出版社
  2. SEED Labs Project. SQL Injection Attack Lab & XSS Attack Lab. https://seedsecuritylabs.org/
  3. OWASP Top 10 - 2021. https://owasp.org/www-project-top-ten/

posted on 2026-06-17 10:41  20252920卢兴宇  阅读(30)  评论(0)    收藏  举报