网安综合课程设计报告
基于seed-Ubuntu seed2.0版本
一、 实验环境
- 虚拟机环境
本实验采用基于SEED-Ubuntu20.04的虚拟机和docker,分别用作攻击者,受害者以及观察者。 - 实验工具
采用Nmap,Scapy,Docker等实验工具。 - 程序语言
采用了Python和C语言两种主流语言。 - 库/头文件
Python:
from scapy.all import *
from scapy.layers.inet import TCP, IP
C语言:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<sys/socket.h>
#include<netinet/ip.h>
#include<arpa/inet.h>
二、 构造攻击流量样本 - XSS攻击
Step1:进入www.xsslabelgg.com,登录Alice的账号:
Step2:在Alice的profile中写入:
Step3:保存后返回,发现出现弹窗:
- SQLI攻击
Step1:打开sql网页,用户名admin’;#密码随意:
Step2:点击Login后可以得到所有人的信息:
Step3:登录alice账号,查看profile:
Step4:在edit profile里面修改 ',salary='9999999:
Step5:保存之后发现工资变成了9999999
- 扫描攻击
Step1:建立docker环境:
Step2:在vm上安装nmap后,对10.9.0.5上对端口1-100进行扫描:
- SYN flood(DOS)攻击
Step1:建立docker环境:
Step2:关闭vm的SYN cookie:
Step3:在10.9.0.6上telnet 10.9.0.5,telnet成功:
Step4:清空10.9.0.5中的缓存:
Step5:在attacker中运行以下代码:
Step6:在10.9.0.5中查看队列使用情况,发现产生了大量的SYN_RECV:
Step7:在10.9.0.6中再次telnet 10.9.0.5,发现telnet失败:
- TCP RST攻击
Step1:建立docker环境:
Step2:在10.9.0.6上telnet 10.9.0.5,同时攻击者执行以下代码:
Step3:输入字符d后,连接被切断:
三、 基于Scapy的防御程序
-
基于报文负载特征的检测
依次检测报文的负载:
(1)对于SQLi攻击检测,主要匹配#,‘,;三个关键字;
(2)对于XSS攻击检测,主要匹配
四、 防御效果
查看程序执行完成后的alert.txt:
与answer.txt进行对比:
可以判断得出程序能够实现基于报文负载以及基于流的报文检测功能。
五、 总结
本次课程设计,我们小组每个组员都积极地参与了进来。我们不仅复习了去年和今年网安实训的实验内容,还在原来实验的基础上实现了对攻击的防御功能。这加强了我们对于网络攻击和网络防御的理解,同时极大提升了我们的编程能力,让我们体会到了团队合作的重要性和必要性。
在整个大作业的完成过程中也我们也遇到了很多困难,比如说,写代码的时候不细心,解释器总是报错。又比如说,混淆了alert.txt和answer.txt的含义,导致我们差点忽视了这两个文件的存在。好在组员及时地查询资料、询问老师,解决了问题。没有人可以闭门造车,我们总要与外界产生或多或少的联系。只有勤恳努力,才能收获美好。Stay hungry, Stay foolish!