前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >头歌----恶意流量监测

头歌----恶意流量监测

作者头像
莫浅子
发布2024-06-22 08:51:09
530
发布2024-06-22 08:51:09
举报

第一关:RE库的使用

任务描述

本关任务:编写一个能正则匹配出 ip 地址的小程序。

相关知识

为了完成本关任务,你需要掌握:

  1. re 的主要功能函数;
  2. re.search 函数;
  3. 例子。
re 的主要功能函数

常用的功能函数包括: compilesearchmatchsplitfindall(finditer)sub(subn)

re.search 函数

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

  1. re.search(pattern, string, flags=0)

函数参数说明:

参数

含义

pattern

匹配的正则表达式

string

要匹配的字符串。

flags

标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

例子
  1. import re
  2. line='www.python.org'
  3. trueIp =re.search('python',line)
  4. print(trueIp)

输出: www.python.org <_sre.SRE_Match object; span=(0, 11), match='192.168.1.1'>

编程要求

根据提示,在右侧编辑器 begin-end 内补充代码,使用 re.search 匹配出 IP 地址。

测试说明

平台会对你编写的代码进行测试: 代码请写在 Evidence 函数里,path 为存放 IP 的文件路径,文件内容为:192.168.1.1 请读取出文件内容,并用 re.search 匹配并输出结果;

预期输出: <re.Match object; span=(0, 11), match='192.168.1.1'>

代码语言:javascript
复制
import re

def Evidence(path):
    with open(path, 'r') as file:
        content = file.read()
        ip_pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
        ip_match = re.search(ip_pattern, content)
        print(ip_match)

第2关:pcap 包的读取

任务描述

本关任务:编写一个能读取 pcap 文件的程序

相关知识

为了完成本关任务,你需要掌握:如何读取 pcap 文件。

pcap 文件是常用的数据报存储格式,可以理解为就是一种文件格式,只不过里面的数据是按照特定格式存储的,所以我们想要解析里面的数据,也必须按照一定的格式。

编程要求

根据提示,在右侧编辑器 begin-end 内补充代码,读取 pcap 文件,并对其进行解析,输出要求的内容。

测试说明

要求输出以 192.168.8.130 为源地址和目标地址的包出现的次数; 预期输出: IP:192.168.8.130发了10次包,接收了9次包

代码语言:javascript
复制
from scapy.all import *
from scapy.layers.inet import *
from scapy.layers.l2 import *

def Evidence(path):
    packets = rdpcap(path)
    src_ip = "192.168.8.130"
    count_sent = 0
    count_received = 0

    for packet in packets:
        if IP in packet:
            if packet[IP].src == src_ip:
                count_sent += 1
            if packet[IP].dst == src_ip:
                count_received += 1

    print(f"IP:{src_ip}发了{count_sent}次包,接收了{count_received}次包")

第三关:pcap包的使用

任务描述

本关任务:编写一个能从 pcap 包检测 XSSSQL 注入攻击的小程序。

相关知识

为了完成本关任务,你需要掌握:1.re库的使用,2.pcap包的读取。

re.compile 函数

compile 函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match()search() 这两个函数使用。

语法格式为:

  1. re.compile(pattern[, flags])

参数

含义

pattern

一个字符串形式的正则表达式

flags

可选,表示匹配模式,比如忽略大小写,多行模式等

flag 具体参数为:

属性和方法

描述

re.S(DOTALL)

使.匹配包括换行在内的所有字符

re.I(IGNORECASE)

使匹配对大小写不敏感

re.L(LOCALE)

做本地化识别(locale-aware)匹配,法语等

re.M(MULTILINE)

多行匹配,影响^和$

re.X(VERBOSE)

该标志通过给予更灵活的格式以便将正则表达式写得更易于理解

re.U

根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B

例子
  1. pattern = re.compile('匹配XSS攻击的正则表达式', flags=re.)
  2. result_list = pattern.findall(data)
  3. for x in result_list:
  4. print ('恶意攻击序号:'+str(count_bad))
  5. print ('检测到XSS(跨站脚本攻击)!')
  6. print (data)
编程要求

有一个 pcap 文件 src/step3/1.pcap,需要检测其中的恶意流量。 请对其进行检测并按返回测试说明的格式返回。检测到一次攻击将记录一次序号,先检测 XSS 再检测 SQL 注入。 测试数据由评测系统读取并传递给 Evidence 函数,期间产生的输出将会与规定的输出进行比较,详细要求请见测试说明。 提示: 其中 XSS 攻击使用的 payload 有:

  1. <script>alert(1)</script>
  2. <iMg src=x onError=Alert(1) />

其中 SQL 注入使用的 payload 有:

  1. admin' union select user,password from users--+
  2. -3 uNion SeleCt user(),database(),3,4\`\`\`

同时在 pcap 解析出的数据中,特殊符号是经过浏览器 url 编码的,如:

  1. "<"号会变成%3C
  2. admin' union select user,password from users--+会变成
  3. admin%27+union+select+user%2Cpassword+from+users--%2B
测试说明

测试输入:无; 预期输出: 恶意攻击序号:1 检测到XSS(跨站脚本攻击)! username=%3CiMg+src%3Dx+onError%3DAlert%281%29+%2F%3E&password=123&Login=Login 恶意攻击序号:2 检测到SQL注入攻击! username=-3+uNion+SeleCt+user%28%29%2Cdatabase%28%29%2C3%2C4&password=123&Login=Login

代码语言:javascript
复制
from scapy.all import *
import re

def Evidence(pcap_path):
    # 请在此添加实现代码 #
    # ********** Begin *********#
    datas = []
    count_bad = 0  # 检测到的攻击数量
    packets = rdpcap(pcap_path)  # 读取pcap文件
    for packet in packets:
        if 'TCP' in packet:
            datas = str(packet['TCP'].payload).split('\r\n')
            for data in datas:
                # 检测XSS onerror/**/= onerror=
                pattern = re.compile('(\\%3C|<)(body|layer|div|meta|style|base|object|input|img|a|iframe|svg|textarea)(.*?)(onmouseover|onerror|onload|onfocus)(\\=|%3D)|(\\%3C|<)script(\\%3E|>)(javascript:|alert|confirm|prompt|autofocus)(\\%28|())', flags=re.IGNORECASE)
                result_list = pattern.findall(data)
                for x in result_list:
                    count_bad += 1
                    print('恶意攻击序号:' + str(count_bad))
                    print('检测到XSS(跨站脚本攻击)!')
                    print(data)
                # 检测SQL注入
                pattern = re.compile('(?:(union(.*?)select))|select.+(from|limit)|(?:from\\W+information_schema\\W)|(?:((?:current_)(user|database|schema|connection_id)))\\s*\$|into(\\s+)+(?:dump|out)file\\s*|group\\s+by.+\\(|sleep\\((\\s*)(\\d*)(\\s*)\$|(having|rongjitest)', flags=re.IGNORECASE)
                result_list = pattern.findall(data)
                for x in result_list:
                    count_bad += 1
                    print('恶意攻击序号:' + str(count_bad))
                    print('检测到SQL注入攻击!')
                    print(data)
    # ********** End **********#
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一关:RE库的使用
    • 任务描述
      • 相关知识
        • 编程要求
          • 测试说明
          • 第2关:pcap 包的读取
            • 任务描述
              • 相关知识
                • 编程要求
                  • 测试说明
                  • 第三关:pcap包的使用
                    • 任务描述
                      • 相关知识
                        • 编程要求
                          • 测试说明
                          相关产品与服务
                          腾讯云服务器利旧
                          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档