CN115296832A - 应用服务端的攻击溯源方法及装置 - Google Patents

应用服务端的攻击溯源方法及装置 Download PDF

Info

Publication number
CN115296832A
CN115296832A CN202210635554.3A CN202210635554A CN115296832A CN 115296832 A CN115296832 A CN 115296832A CN 202210635554 A CN202210635554 A CN 202210635554A CN 115296832 A CN115296832 A CN 115296832A
Authority
CN
China
Prior art keywords
log
automaton
node
session request
tracing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210635554.3A
Other languages
English (en)
Other versions
CN115296832B (zh
Inventor
王瑞华
彭贻豪
万海
赵曦滨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202210635554.3A priority Critical patent/CN115296832B/zh
Publication of CN115296832A publication Critical patent/CN115296832A/zh
Application granted granted Critical
Publication of CN115296832B publication Critical patent/CN115296832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/146Tracing the source of attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种应用服务端的攻击溯源方法及装置,方法包括:获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据匹配关系构建AC自动机;针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,根据会话请求对AC自动机的当前状态节点进行状态转移,并将会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志;在溯源图中以异常检测的告警事件为起点向前回溯至目标分隔日志,根据目标分隔日志,定位攻击关联的会话请求序列和界面事件。通过上述方法可以实现应用服务端的攻击溯源,解决了现有技术PC端进行浏览行为采集和分析的成本较高,导致攻击溯源很难在高并发系统中稳定工作的问题。

Description

应用服务端的攻击溯源方法及装置
技术领域
本发明涉及网络安全技术领域,具体而言,涉及一种应用服务端的攻击溯源方法及装置。
背景技术
对于企业和组织,各种web服务通常是对外暴露的,因此这些服务中的安全漏洞经常成为网络攻击的潜在入侵点。WEB应用一般采用浏览器-服务器架构(B-S架构),用户在PC上使用浏览器加载网站页面,通过各类界面操作来向服务端发送网络请求,以使用网站提供的各类功能。这种模式给了黑客可乘之机,他们可以通过发送一些不符合正常业务逻辑的请求流来发起攻击(比如恶意文件上传、SQL注入、跨站脚本攻击等)。当攻击发生并被入侵检测系统(IDS)报警后,安全人员希望找到精确的攻击入口,即黑客使用了什么功能、点击了什么按钮发起了这次攻击,以对漏洞进行精确的修复。针对企业和组织的网络攻击,其入口点往往是web应用的用户界面(UI)。找到攻击者利用的UI元素,对于攻击拦截以及web应用的修复来说是非常重要的。
关于web UI的攻击溯源方法,可以使用传统的溯源算法从报警实体出发,进而找到可能造成影响的进程,但这些进程往往是长时间运行的,面临着严重的依赖爆炸问题,导致溯源算法无法进一步准确溯源到发起攻击的具体元素。为了解决依赖爆炸问题,可以使用向二进制文件或源代码插桩的方式,首先,插桩者在插入自己的代码后需要保证程序的稳定性、并且WEB应用的升级非常迅速,需要随应用的升级而升级自己的插桩程序,其次,插桩者需要为应用的修改负责,尤其是很难保证引入的代码不会带来新的安全性问题,最后,有些涉及企业机密的应用难以向第三方人员提供源代码或者二进制文件,使得方案在真实企业环境下的可行性较差。
现有技术针对WEB服务精度溯源的问题,提出了能够使用非插桩方法精确溯源至界面事件的溯源方案,该方案可以在PC端运行,通过对windows PC的界面事件解析器进行分析来构建GUI级溯源图,并基于时间戳匹配的GUI溯源图和底层溯源图的匹配。然而,在大多数企业,由于服务端的WEB应用往往有很高的并发,无法处理服务器端多用户同时请求会带来的日志交错问题,使得浏览行为采集通常在PC端执行,而PC端进行浏览行为采集和分析的成本较高,导致攻击溯源很难在高并发系统中稳定工作。
发明内容
本发明提供了一种应用服务端的攻击溯源方法及装置,利用审计日志与网络请求之间的对应关系以及网络请求与UI元素/事件之间的对应关系,准确且自动地从报警事件出发溯源至触发报警的具体界面动作,能够处理服务器端多用户请求带来的日志交错问题,在高并发系统中稳定工作,保证溯源精度,并准确追踪到真正产生请求的用户,从而解决了现有技术中PC端进行浏览行为采集和分析的成本较高,导致攻击溯源很难在高并发系统中稳定工作的问题。具体的技术方案如下:
第一方面,本发明实施例提供了一种应用服务端的攻击溯源方法,所述方法包括:
获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机;
针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志;
将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。
可选的,所述获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机,包括:
收集网络应用程序的集成测试用例,利用所述集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系;
根据所述匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对所述字典树结构上所有节点构造失配指针,构建AC自动机。
可选的,所述收集网络应用程序的集成测试用例,利用所述集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,包括:
收集网络应用程序的集成测试用例,在所述集成测试用例的执行过程中使用模拟用户点击的自动化测试工具对网络提供的功能进行覆盖;
每当执行集成测试用例中的一个界面事件时添加分隔日志,利用所述分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
可选的,所述每当执行集成测试用例中的一个界面事件时添加分隔日志,利用所述分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,包括:
每当执行集成测试用例中一个界面事件时添加分隔日志,当检测到网络应用对应进程发生的协程切换时,利用所述分隔日志的日志分区技术向系统审计日志中插入界面事件的系统调用,并记录协程切换的进程编号;
根据所述协程切换的进程编号对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
可选的,所述根据所述匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对所述字典树结构上所有节点构造失配指针,构建AC自动机,包括:
根据所述匹配关系对每个界面事件对应的前后端请求序列进行建模,得到属于每个界面事件的最后若干个字符;
将所述属于每个界面事件的最后若干个字符组成的字符串后,根据所有字符串构造字典树结构;
针对所述字典树结构中当前节点添加失配指针,以使得所述当前节点沿着所述失配指针所指向的目标节点是字典树结构上除了当前节点之外的所有节点中满足预设条件的节点,所述预设条件为与当前节点的后缀相同且长度最大的节点。
可选的,所述根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志,包括:
根据所述会话请求判断所述AC自动机的当前状态节点是否包含有字符的出边,若包含,则转移到所述出边对应的子节点,否则,沿着所述AC自动机的当前状态节点对应的失配指针向上跳转,直至跳转到的节点包含有字符的出边,转移到所述出边对应的子节点;
获取每次转移过程中所述会话请求对应的自动机节点信息,通过主动式日志分区方式将所述会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志。
可选的,所述获取每次转移过程中所述会话请求对应的自动机节点信息,通过主动式日志分区方式将所述会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志,包括:
根据所述AC自动机中每次会话请求所触发节点状态转移后的自动机节点标识,获取每次转移过程中所述会话请求对应的自动机节点信息;
利用主动式日志分区方式将系统审计日志中插入的系统调用的预设参数设置为所述会话请求对应的自动机节点信息,以将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志。
可选的,所述将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件,包括:
使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,从所述目标分隔日志提取会话请求的自动机节点信息;
根据所述会话请求的自动机节点信息查询攻击关联的会话请求序列,从所述攻击关联的会话请求序列中定位出攻击关联的界面事件。
可选的,所述使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,从所述目标分隔日志提取会话请求的自动机节点信息,包括:
使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述标准格式的溯源图中以异常检测的告警事件为起点向前回溯至告警事件的进程节点;
利用所述告警事件的进程节点查询时间戳最接近告警事件的目标分隔日志,并获取所述目标分隔日志中记录的会话标识,根据所述会话标识确定会话请求以及所述会话请求的自动机节点信息。
第二方面,本发明实施例提供了一种应用服务端的攻击溯源装置,所述装置包括:
构建单元,用于获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机;
转移单元,用于针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志;
定位单元,用于将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。
可选的,所述构建单元包括:
收集模块,用于收集网络应用程序的集成测试用例,利用所述集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系;
构建模块,用于根据所述匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对所述字典树结构上所有节点构造失配指针,构建AC自动机。
可选的,所述收集模块包括:
收集子模块,用于收集网络应用程序的集成测试用例,在所述集成测试用例的执行过程中使用模拟用户点击的自动化测试工具对网络提供的功能进行覆盖;
建立子模块,用于每当执行集成测试用例中的一个界面事件时添加分隔日志,利用所述分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
可选的,所述建立子模块,具体用于每当执行集成测试用例中一个界面事件时添加分隔日志,当检测到网络应用对应进程发生的协程切换时,利用所述分隔日志的日志分区技术向系统审计日志中插入界面事件的系统调用,并记录协程切换的进程编号;
所述建立子模块,具体还用于根据所述协程切换的进程编号对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
可选的,所述构建模块,具体用于根据所述匹配关系对每个界面事件对应的前后端请求序列进行建模,得到属于每个界面事件的最后若干个字符;
所述构建模块,具体还用于将所述属于每个界面事件的最后若干个字符组成的字符串后,根据所有字符串构造字典树结构;
所述构建模块,具体还用于针对所述字典树结构中当前节点添加失配指针,以使得所述当前节点沿着所述失配指针所指向的目标节点是字典树结构上除了当前节点之外的所有节点中满足预设条件的节点,所述预设条件为与当前节点的后缀相同且长度最大的节点。
可选的,所述转移单元包括:
判断模块,用于根据所述会话请求判断所述AC自动机的当前状态节点是否包含有字符的出边,若包含,则转移到所述出边对应的子节点,否则,沿着所述AC自动机的当前状态节点对应的失配指针向上跳转,直至跳转到的节点包含有字符的出边,转移到所述出边对应的子节点;
获取模块,用于获取每次转移过程中所述会话请求对应的自动机节点信息,通过主动式日志分区方式将所述会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志。
可选的,所述获取模块,具体用于根据所述AC自动机中每次会话请求所触发节点状态转移后的自动机节点标识,获取每次转移过程中所述会话请求对应的自动机节点信息;
所述获取模块,具体还用于利用主动式日志分区方式将系统审计日志中插入的系统调用的预设参数设置为所述会话请求对应的自动机节点信息,以将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志。
可选的,所述定位单元包括:
提取模块,用于使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,从所述目标分隔日志提取会话请求的自动机节点信息;
定位模块,用于根据所述会话请求的自动机节点信息查询攻击关联的会话请求序列,从所述攻击关联的会话请求序列中定位出攻击关联的界面事件。
可选的,所述提取模块,具体用于使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述标准格式的溯源图中以异常检测的告警事件为起点向前回溯至告警事件的进程节点;
所述提取模块,具体还用于利用所述告警事件的进程节点查询时间戳最接近告警事件的目标分隔日志,并获取所述目标分隔日志中记录的会话标识,根据所述会话标识确定会话请求以及所述会话请求的自动机节点信息。
第三方面,本发明实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述的方法。
第四方面,本发明实施例提供了一种应用服务端的攻击溯源方法的设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现第一方面所述的方法。
由上述内容可知,本发明实施例提供的应用服务端的攻击溯源方法及装置,通过获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据匹配关系构建AC自动机,针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志,进一步将所述系统审计日志构造成溯源图,在溯源图中以异常检测的告警事件为起点向前回溯至时间戳最接近告警事件的目标分隔日志,根据目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。相比于现有技术使用非插桩方法精确溯源至界面事件的溯源方案相比,本发明实施例利用审计日志与网络请求之间的对应关系以及网络请求与UI元素/事件之间的对应关系,准确且自动地从报警事件出发溯源至触发报警的具体界面动作,能够处理服务器端多用户请求带来的日志交错问题,在高并发系统中稳定工作,保证溯源精度,并准确追踪到真正产生请求的用户,从而解决了现有技术中PC端进行浏览行为采集和分析的成本较高,导致攻击溯源很难在高并发系统中稳定工作的问题。
此外,本实施例还可以实现的技术效果包括:
(1)提出了非插桩的网络服务精确溯源方案,能够从报警事件出发溯源至触发报警的具体界面动作。
(2)只需要在服务器端进行数据采集,无需在PC端采集任何浏览行为日志。
(3)能够处理服务器端多用户同时请求带来的日志交错问题,在高并发系统中能够稳定的工作,保证攻击溯源的精度,并准确的追溯到真正产生请求的用户。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用服务端的攻击溯源方法的流程图;
图2为本发明实施例提供的构造出的AC自动机的示意图;
图3为本发明实施例提供的攻击溯源方法的框架示意图;
图4为本发明实施例提供的一种应用服务端的攻击溯源装置的组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
本发明提供了一种应用服务端的攻击溯源方法及装置,利用审计日志与网络请求之间的对应关系以及网络请求与UI元素/事件之间的对应关系,准确且自动地从报警事件出发溯源至触发报警的具体界面动作,能够处理服务器端多用户请求带来的日志交错问题,在高并发系统中稳定工作,保证溯源精度,并准确追踪到真正产生请求的用户,从而解决了现有技术中PC端进行浏览行为采集和分析的成本较高,导致攻击溯源很难在高并发系统中稳定工作的问题。本发明实施例提供了针对网络应用的精确攻击溯源方法。这里利用了两种关联信息。第一种信息是通过构建以进程节点和分隔日志进行分区的系统审计日志,捕获系统审计日志与网络请求之间的对应关系;第二种信息是在应用测试中,使用AC自动机进行建模,捕获网络请求与界面事件之间的对应关系。利用这两种信息,即使在高并发的场景下,也可以准确且自动地从一个告警事件定位到一个界面事件。此外,本发明实施例只需部署在服务端,无需从客户端的浏览器上收集日志。
图1为本发明实施例提供的一种应用服务端的攻击溯源方法的流程示意图。所述方法可以包括如下步骤:
S100:获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机。
可以理解的是,这里构建AC自动机的过程相当于匹配关系的训练阶段,每一次界面事件动作都会产生一系列后端请求,遵循软件工程的规范,网络应用在正式上线发布前,需要经过严格的测试,其中包括充分的集成测试,即通过模拟用户点击的自动化测试工具(比如selenium)对网络提供的功能进行覆盖,这些测试用例可以覆盖到网络提供的所有功能,从而可利用测试用例的执行过程建立网络应用在运行时每个界面事件与前后端请求序列的对应关系,这里采用AC自动机来建模该对应关系。具体地,可以收集网络应用程序的集成测试用例,利用集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对字典树结构上所有节点构造失配指针,构建AC自动机。
具体在这些测试用例的执行过程中,每当执行一个界面事件时,都会主动添加一个分隔日志来区分界面事件产生的请求序列,并获得修饰后的请求日志,为了方便溯源分析中的模式匹配,使用AC自动机对界面事件和请求序列之间的匹配关系进行建模,并将匹配关系存储至AC自动机的基础关系数据库中,这里在建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系的过程中,可通过收集网络应用程序的集成测试用例,在集成测试用例的执行过程中使用模拟用户点击的自动化测试工具对网络提供的功能进行覆盖,每当执行集成测试用例中的一个界面事件时添加分隔日志,利用分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
具体地,每当执行集成测试用例中一个界面事件时添加分隔日志,当检测到网络应用对应进程发生的协程切换时,利用分隔日志的日志分区技术向系统审计日志中插入界面事件的系统调用,并记录协程切换的进程编号,并根据协程切换的进程编号对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
通常情况下,网络服务器在处理网络请求的过程中可能产生大量的系统调用,这些系统调用按时间顺序记录在系统审计日志中,这些日志可以分为两种类型,一种是网络数据传输相关的审计日志,由于网络请求可能包含大量数据,可能需要多次系统调用才能完成数据接收。在溯源图中,它们由从套接字实体到web后端进程实体的边表示;另一种是业务逻辑处理相关的审计日志,网络服务器一旦收到请求,就会与其他进程通信,写入文件,或读取文件等,以完成请求。这些动作相关的系统调用,由从web后端进程到其他实体的边表示,例如,文件实体、数据库实体、进程实体等。
可以了解到业务逻辑处理相关的审计日志是网络数据传输相关的审计日志的结果,它们之间有对应关系,因此,从可疑系统审计日志中找到对应的网络请求,实际上就是从给定的业务逻辑处理相关的审计日志中找到网络数据传输相关的审计日志。这里可以基于进程/线程的分区方法和基于分隔日志的分区方法。
进一步的,针对基于进程/线程的分区方法进行具体阐述,对于采用进程池或线程池处理网络请求的web应用,池中的每个进程/线程都会顺序地承载一些网络请求。当一个进程/线程处理的这些网络请求,在系统审计日志中出现的系统调用一般是顺序,所以可以使用进程号和线程号对交错在一起的日志进行初步的划分。
考虑到基于进程号/线程号的分区方式存在以下两个问题,(1)服务器端承载了大量的并发,以至于同一个进程/线程处理同一时刻的连续两个网络请求时发生了日志交错,此时,在大量并发之下,同一时刻,进程池中的一个进程可能连续处理两个请求。由于日志记录框架的问题,在这种情况下,尽管两个请求是顺序发生的,但其产生的日志在记录时仍然可能会交错在一起。如果继续按照上述方法进行查找,就会产生错误的溯源结果;(2)web应用采用多协程的方式处理并发,协程类似于轻量化的线程,允许执行被挂起与被恢复,其特点是调度次数少并且系统负载低。进程和线程的调度都是由操作系统控制的,切换开销较大,同时由于操作系统需要保证不同进程和线程之间的公平,所以会使用一些例如时间片轮转的策略不断地进行切换;而协程作为语言层级的构造,切换开销较小,同时协程的调度往往是非抢占式的,只有当协程遇到阻塞而主动让出执行权时才会发生协程的切换。一个WEB应用进程在处理请求时可能发生多次协程切换,这使得一个进程并非按顺序一个一个(one by one)地处理到来的请求,而是可以在一个时间段内处理多个请求。显然,在存在协程切换的情况下,上述基于进程号/线程号的分区算法也会失效,建辉追溯到错误的日志。
进一步的,针对基于分隔日志的分区方法进行具体阐述,每当检测到系统接收到一个系统调用,或者web应用对应的进程发生了一次协程切换,主动向系统中插入一条固定编号的不存在的系统调用,系统审计日志会记录这一次调用,该日志起到标记作用,由于系统中不存在该系统调用,因此并不会有明显的系统开销。每当进行一次协程切换时,都会执行一次系统调用。通过进程将系统审计日志进行分区后,考虑到相同进程的审计日志,在插入的分隔日志帮助下,可以看到属于相同的后端请求的日志。
可以理解的是,在协程切换时记录日志,在不同语言中有不同的实现方式,例如,Python的Asyncio模块可以使用其内置的loop.set_task_factory函数,修改创建协程任务的默认行为。在创建协程任务时,用调试用的asyncio.Coroutines.CoroWrapper的子类对协程进行封装,可以重载其send方法。由于这个步骤不会修改应用自身的逻辑,因此也是可以通过非插桩的方式进行实现的。
具体在构建AC自动机的过程中,可根据匹配关系对每个界面事件对应的前后端请求序列进行建模,得到属于每个界面事件的最后若干个字符,将属于每个界面事件的最后若干个字符组成字符串后,根据所有字符串构造字典树结构,针对字典树结构中当前节点添加失配指针,以使得当前节点沿着所述失配指针所指向的目标节点是字典树结构上除了当前节点之外的所有节点中满足预设条件的节点,这里预设条件为与当前节点的后缀相同且长度最大的节点。
具体实际应用场景中,在获得插入了分隔日志的系统审计日志后,溯源攻击算法实现了后端请求与系统审计日志的匹配。对于每一条待追溯的系统审计日志,可以找到在其之前与其进程号相同,并且系统调用号为插入分隔日志的进程号,其记载的参数代表系统调用是属于前端还是后端的请求。所以,对于任一系统审计日志,只需要从前往后扫描一遍,在扫描的过程中维护每个进程目前晚于插入分隔日志对应系统调用的参数,可以以线性的时间复杂度确定每个系统审计日志所对应的前后端请求。
考虑到前后端请求序列中有多个界面事件,例如,一个请求序列中包含有界面事件1“打开文件”和界面事件2“用户登录”,具体在利用集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系的过程中,可通过以下实现:
给定(1)UI元素/事件的集合-请求序列的配对P={p|p.element是一个UI元素并且p.s是被p.element触发的请求序列},建模了UI元素/事件可能产生一个请求序列的事实。
(2)对于一个请求序列S,它的所有非空后缀的集合:Suf={S[left...L-1]|left属于[0,L-1],其中L表示S的长度},建模了可能属于一个UI元素/事件的最后若干个字符。
这里需要找到所有可能的UI元素/事件R包含于P,使得对于每个r属于R,r.s的某个前缀在Suf中。换句话说,r.s的一个前缀是S的一个后缀。
由于界面事件与前后端匹配请求序列之间的匹配关系是一个经典的多字符串匹配问题,进一步地,可以使用AC自动机来解决,AC自动机是一个成熟且高效的解决方案,AC自动机可以将多个模式串组合在一起,来构建一棵带返回边的树,有这利于降低字符串匹配所需的时空复杂度。针对给定的多个模式串组合,具体AC自动机的构建过程,可通过以下实现:
以串a,ab,bab,bc,bca,c和caa为例子,它们构造出的AC自动机如图2所示,参照图2中(a)所示的模型构建阶段,虚线边代表的是fail指针,如果去除所有的fail指针对应的虚线边,这就是一棵标准的Trie树。虚线节点表示有串以此节点结尾(即:每个虚线节点到根节点的路径对应了一个模式串)。
给定一个字符串cabca,如果想找出哪些模式串以它的一个后缀为前缀。在图2中(b)所示的运行阶段中,AC自动机将逐个字符地接收该字符串。从根节点开始,如果有当前字符的转移边,则跳转到对应的节点。经过两次转换后,当前节点没有带有b的出边,那么它会沿着fail边不断向上跳跃,直到它连有这个字符的转换边。它会到达一个通过a与根节点相连的节点,然后沿着b的边进行转移。相同地,它会向上跳跃一次,到达具有c出边的节点,然后进行转移。它最终到达图2中(c)所示的开始位置。
为了定位所有可能的模式串,在查询阶段,如图2中(c)所示的查询阶段,从上一步的最后一个节点(节点A)开始,需要不断沿着fail边向上跳跃,直到根节点,并标记沿途所有经过的节点及其子树中的节点。虚线节点是所有可能的模式串(本例中的节点A:bca、B:caa、C:a和D:ab)。
在本发明实施例中,AC自动机构建阶段,首先需要获得界面元素/事件-请求序列的配对,然后基于这些配对来构造一个AC自动机。由于符合软件工程标准的web应用在正常部署之前需要进行充分的测试,因此会有大量的集成测试用例涵盖了该web应用的所有功能,可以充分地收集和使用这些测试用例来模拟正常的UI事件,从而得到UI元素/事件-请求序列的配对。通常情况下,测试人员使用Selenium等自动化测试工具来测试应用程序的UI。通过编写代码,测试人员与UI交互,模拟真实用户的使用。以Selenium为例,页面上的每个交互UI元素在测试代码中都是一个对象实例。当测试者调用该实例的方法,比如“click”时,浏览器会自动做出相应的响应,可能会向服务器发送一系列连续的网络请求。
此时,攻击溯源算法为后端构建一个代理服务器,它会自动将收到的请求转发给真正的后端服务器,并将响应记录在请求头中的特殊命令,如下表1所示,当测试人员调用方法时,首先发送stop命令来停止记录前一个UI元素对应的后端请求,然后发送start命令表示新的UI元素开始交互。当所有UI元素都测试完毕后,会发送一个finish命令来表示测试已经完成。在具体实现中,可以只封装测试工具的相关方法,不需要改变测试代码,因此无需插桩就可以实现。
通过以上步骤可得到UI元素/事件-请求序列的配对,然后从这些配对中构造AC自动机,在构建过程中,将每个请求视为一个字符,将请求序列视为一个字符串,按照上文中标准AC自动机的构建步骤进行构建,具体实现步骤如下:
1、对于所有的串ti,i为不超过train_num的正整数,建立一棵Trie树。
2、对于Trie树中的每一个节点添加一个fail指针。对于Trie树上的一个节点i,从根节点到它的路径上经过的所有边构成一个字符串Si。节点i的fail指针指向了节点j,当且仅当j是Trie树上除了节点i之外的所有节点中,满足Sj是Si的后缀,并且Sj的长度最大的节点。
这里AC自动机可用于匹配和查询,它包含了web应用的所有正常UI事件对应的请求序列,可应用至在后续的溯源分析中。
S110:针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志。
这里根据会话请求对AC自动机的当前状态节点进行状态转移的过程可以理解为在线运行阶段,针对在线运行阶段,通过将用户的状态记录在cookie中,可以将不同用户对web应用的访问进行区分,以使不同用户属于不同的会话。在线运行阶段,针对每个会话建立一个AC自动机。在收到一个请求后,除了系统自身的审计日志之外,还会主动添加一条对应的审计日志,包含了请求的会话号、进程号、时间戳、和在自动机上的节点位置。这条日志用于对既有的审计日志进行区分,从而缓解依赖爆炸问题。同时,在后端收到请求时,请求对应的会话在AC自动机上的当前节点会发生相应移动。
具体地,可以根据会话请求判断所述AC自动机的当前状态节点是否包含有字符的出边,若包含,则转移到所述出边对应的子节点,否则,沿着AC自动机的当前状态节点对应的失配指针向上跳转,直至跳转到的节点包含有字符的出边,转移到出边对应的子节点;进一步获取每次转移过程中会话请求对应的自动机节点信息,通过主动式日志分区方式将会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志。
具体地,可以根据AC自动机中每次会话请求所触发节点状态转移后的自动机节点标识,获取每次转移过程中所述会话请求对应的自动机节点信息,并利用主动式日志分区方式将系统审计日志中插入的系统调用的预设参数设置为会话请求对应的自动机节点信息,以将会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志。
可以理解的是,这里为每个会话附加一个AC自动机,根据web服务器接收到的请求进行AC自动机的状态转换,并存储AC自动机当前状态的节点ID,具体在AC自动机的当前状态节点进行转移的过程中,主要考虑以下几方面:
1、如果当前节有该字符的出边,那么转移到对应的子节点。
2、如果当前节点没有该字符的出边,那么沿着fail指针往上跳转,直到有该字符的出边为止,转移到对应的节点。
3、如果跳转到根节点仍没有该字符的出边,那么转移到根节点。
对于一次后端请求,会发生一次AC自动机上节点信息的状态转移,很明显最坏的时间复杂度是O(d),其中d为Trie树的深度,利用类似字符串匹配算法的分析方法,可以知道平均每一次转移的时间复杂度是O(1)的。而Trie树的深度可以视作一个很小的常数,因此对系统不会有明显的负载。如果一个后端请求到来时,节点转移到了根节点,那么意味着该后端请求不可能匹配任何UI元素,有可能是由脚本发出的不符合界面逻辑的后端请求,因此会对其进行阻塞。
为了能够记录每个节点对应的节点号,这里复用了在上文中提到的主动式日志分区方式中插入的空系统调用,每个该系统调用对应了一次请求,因为已获知该请求对应的自动机节点号,可以将该系统调用的参数设置为对应的自动机节点号,这样就能在不增加额外开销的情况下,将每个请求的自动机节点信息记录到系统审计日志和系统级溯源图中,以方便后续的溯源分析。
S120:将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。
其中,溯源图是一张代表了系统中主体(进程、线程等)与客体(文件、注册表、网络socket等)之间的关系的有向图,其中边的方向代表着数据流的流向。这里可以将从实体U到实体V在t时刻发生的事件e记录为(u,v,t),e即为溯源图中的一条边。如果事件e1=(u1,v1,t1)和事件e2=(u2,v2,t2)满足v1=u2且t1<t2,则称e1与e2存在因果关系。溯源分析(Forensic Analysis)是根据溯源图上的因果关系,分析攻击的起源和其造成的影响的算法,它包含后向分析和前向分析两个步骤。后向分析可以发现攻击的起源,它从一个征兆事件开始一直回溯,依据事件的时间戳来获得一条因果链路。前向分析算法可以发现一系列被攻击影响到的事件,它往往以后向分析找到的节点为入口。
可以理解的是,当溯源图中的实体(多为长时间运行的进程)产生了过多的输入边和输出边,导致溯源分析过程中,其每条输出边都依赖于其所有输入边的现象,产生依赖爆炸的现象。web应用对应的后端进程是溯源图中的依赖爆炸实体,因为这些进程往往长时间运行,接受来自大量ip发来的网络请求,并访问大量地本地数据库文件以执行业务逻辑,如果一个ip上传了一个恶意文件,则从这个恶意文件开始溯源,经过web后端对应的进程,会溯源至大量正常ip,将会引发大量的误报。
这里定位攻击关联的会话请求序列和界面事件的过程可以理解为攻击溯源阶段,针对攻击溯源阶段,当收到来自异常检测系统的报警,例如,侦测到某些由web上传的恶意木马后,从系统审计日志构造系统溯源图,并在此溯源图上以报警实体为起点向前回溯,从而找到对应会话,以及对应的AC自动机。利用AC自动机和对应关系数据库,可以得到所有可能的请求序列集合,以及对应的界面动作(元素)集合。
具体地,可以使用溯源图生成工具将系统审计日志转换为标准格式的溯源图,在溯源图中以异常检测的告警事件为起点回溯分析至时间戳最接近告警事件的目标分隔日志,从目标分隔日志提取会话请求的自动机节点信息;进一步根据会话请求的自动机节点信息查询攻击关联的会话请求序列,从攻击关联的会话请求序列中定位出攻击关联的界面事件。
具体地,可以使用溯源图生成工具将系统审计日志转换为标准格式的溯源图,在标准格式的溯源图中以异常检测的告警事件为起点向前回溯至告警事件的进程节点,利用告警事件的进程节点查询时间戳最接近告警事件的目标分隔日志,并获取目标分隔日志中记录的会话标识,根据会话标识确定会话请求以及会话请求的自动机节点信息。
可以理解的是,溯源分析过程中,可获取到以恶意请求结束的请求序列、请求的会话对应的AC自动机、AC自动机的当前节点ID,此时可根据AC自动机的查询功能,来获取所有可能的UI元素/事件。
本发明实施例中,图3为攻击溯源方法的框架示意图,该攻击溯源方法主要涉及到三个阶段,分别为训练阶段、在线运行阶段以及攻击溯源阶段,下面针对各个阶段进行详细描述:
针对训练阶段,攻击溯源算法目标是获得界面事件与其产生的web请求序列之间的关系。为了实现这一目标,收集了web应用程序的集成测试用例,这些测试用例是用Selenium等常用测试框架编写的。在这些测试用例的执行过程中,每当我们执行一个UI事件时,都会主动添加一个分隔日志来区分界面事件产生的请求序列,并获得修饰后的请求日志。为了方便溯源分析中的模式匹配,使用AC自动机对界面事件和请求序列之间的关系进行建模,并将匹配关系存储在AC自动机关联的数据库中。
针对在线运行阶段,用户在使用网络服务时,会与浏览器进行交互并执行真实的浏览活动,以便服务器接收浏览器发送的请求。在线运行阶段,对于每个用户,将一个自动机附加到其会话中。当收到请求时,会在操作系统的审计日志中插入一个额外的分隔日志,其中包含会话ID、进程ID、线程ID、时间戳和附加AC自动机的当前状态。分隔日志对现有的系统审计日志进行分区,插入这些日志后,对于每个会话,将通过部署在服务器上的代理插件在线维护附加的AC自动机的节点状态。
针对攻击溯源阶段,当报警系统检测到告警事件时,攻击溯源算法的目标是追溯到对应的网络请求并匹配可能的界面事件。攻击溯源阶段由两部分组成,即网络请求调查和界面事件调查。第一部分,通过请求序列分析,攻击溯源算法会分析在在线运行阶段获得的分隔日志,找到时间戳最接近报警事件的分隔日志。攻击溯源算法记录了这条日志的相关信息,包括会话ID和对应的AC自动机节点。在第二部分中,根据请求序列及其在AC自动机中的节点状态,攻击溯源算法会找到所有可能的web请求序列。在获得这些可能的web请求序列后,攻击溯源算法那最终通过查询AC自动机关联的数据库来定位到可能的界面事件。
具体在实际应用场景中,可以使用日志审计工具从收集的服务端系统审计构建溯源图,在溯源图中从恶意文件开始追溯,达到导致文件上传的web应用对应的进程,得到与恶意文件上传操作相关的恶意审计日志,然后借助精确的日志分区,从恶意审计日志开始,在审计日志中找到插入的最新的分隔日志,并根据分隔日志,进一步找到与恶意文件上传行为高度相关的网络请求。由于已经预先收集了涵盖有所有web功能的测试用例来构建AC自动机,该自动机在训练阶段中捕获了UI元素/事件与其相应的web请求序列之间的关系,一旦给出web请求和AC自动机的当前状态,就可以查询自动机来找到所有可能的请求序列和相应的UI事件。
示例性的,相关技术在攻击溯源过程中,针对运营超过10个web网站的安全专员,当收到异常检测的报警,发现内网中出现了一个恶意文件后,便迅速开始溯源攻击,通过观察由系统审计日志产生的溯源图,从该溯源图的文件读写操作中追溯到一个进程号为279的进程,进一步查询到该进程是企业下web1.com网站的后端进程,但进一步向上溯源时,由于279号进程连接了过多的web请求和ip,很难从中确定哪个ip通过哪个web请求利用web1.com的什么功能发起了这次攻击,进一步根据该网站的web请求记录进行排查,根据在该时间段内出现的web请求,大致锁定了可能造成攻击发生的5个文件上传点,立刻对这些文件进行测试,最终发现攻击者是通过在头像上传时将jpg格式的文件改为了shell文件,导致恶意文件的成功上传。此时修复漏洞并重新上线网站需要耗费较长的时间,很难及时准确定位到攻击事件。而本申请提供的攻击溯源方法,可从系统审计日志构建的溯源图出发,溯源至导致报警发生的web请求,并通过模式匹配找到导致与恶意行为相关请求出现的界面操作。
本发明实施例提供的针对web应用的攻击溯源方法,利用了两种关联信息,第一种信息是通过构建以PID/TID和分隔日志进行分区的系统审计日志,捕获系统审计日志与网络请求之间的对应关系;第二种信息是在应用测试中,使用AC自动机进行建模,捕获网络请求与UI元素/事件之间的对应关系。利用这两种信息,即使在高并发场景下,也可以准确且自动地从一个告警定位到一个UI元素/事件,此外,攻击溯源算法只需要部署在服务端,不需要从客户端的浏览器上收集日志。
基于上述实施例,本发明的另一实施例提供了一种应用服务端的攻击溯源装置,如图4所示,所述装置包括:
构建单元20,可以用于获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机;
转移单元22,可以用于针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志;
定位单元24,可以用于将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。
在具体应用场景中,所述构建单元20包括:
收集模块,可以用于收集网络应用程序的集成测试用例,利用所述集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系;
构建模块,可以用于根据所述匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对所述字典树结构上所有节点构造失配指针,构建AC自动机。
在具体应用场景中,所述收集模块包括:
收集子模块,可以用于收集网络应用程序的集成测试用例,在所述集成测试用例的执行过程中使用模拟用户点击的自动化测试工具对网络提供的功能进行覆盖;
建立子模块,可以用于每当执行集成测试用例中的一个界面事件时添加分隔日志,利用所述分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
在具体应用场景中,所述建立子模块,具体可以用于每当执行集成测试用例中一个界面事件时添加分隔日志,当检测到网络应用对应进程发生的协程切换时,利用所述分隔日志的日志分区技术向系统审计日志中插入界面事件的系统调用,并记录协程切换的进程编号;
所述建立子模块,具体还可以用于根据所述协程切换的进程编号对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
在具体应用场景中,所述构建模块,具体可以用于根据所述匹配关系对每个界面事件对应的前后端请求序列进行建模,得到属于每个界面事件的最后若干个字符;
所述构建模块,具体还可以用于将所述属于每个界面事件的最后若干个字符组成的字符串后,根据所有字符串构造字典树结构;
所述构建模块,具体还可以用于针对所述字典树结构中当前节点添加失配指针,以使得所述当前节点沿着所述失配指针所指向的目标节点是字典树结构上除了当前节点之外的所有节点中满足预设条件的节点,所述预设条件为与当前节点的后缀相同且长度最大的节点。
在具体应用场景中,所述转移单元22包括:
判断模块,可以用于根据所述会话请求判断所述AC自动机的当前状态节点是否包含有字符的出边,若包含,则转移到所述出边对应的子节点,否则,沿着所述AC自动机的当前状态节点对应的失配指针向上跳转,直至跳转到的节点包含有字符的出边,转移到所述出边对应的子节点;
获取模块,可以用于获取每次转移过程中所述会话请求对应的自动机节点信息,通过主动式日志分区方式将所述会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志。
在具体应用场景中,所述获取模块,具体可以用于根据所述AC自动机中每次会话请求所触发节点状态转移后的自动机节点标识,获取每次转移过程中所述会话请求对应的自动机节点信息;
所述获取模块,具体还可以用于利用主动式日志分区方式将系统审计日志中插入的系统调用的预设参数设置为所述会话请求对应的自动机节点信息,以将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志。
在具体应用场景中,所述定位单元24包括:
提取模块,可以用于使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,从所述目标分隔日志提取会话请求的自动机节点信息;
定位模块,可以用于根据所述会话请求的自动机节点信息查询攻击关联的会话请求序列,从所述攻击关联的会话请求序列中定位出攻击关联的界面事件。
在具体应用场景中,所述提取模块,具体可以用于使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述标准格式的溯源图中以异常检测的告警事件为起点向前回溯至告警事件的进程节点;
所述提取模块,具体还可以用于利用所述告警事件的进程节点查询时间戳最接近告警事件的目标分隔日志,并获取所述目标分隔日志中记录的会话标识,根据所述会话标识确定会话请求以及所述会话请求的自动机节点信息。
基于上述方法实施例,本发明的另一实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现上述方法。
基于上述实施例,本发明的另一实施例提供了一种应用服务端的攻击溯源方法,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的方法。
上述装置实施例与方法实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

Claims (10)

1.一种应用服务端的攻击溯源方法,其特征在于,所述方法包括:
获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机;
针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志;
将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。
2.如权利要求1所述的方法,其特征在于,所述获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机,包括:
收集网络应用程序的集成测试用例,利用所述集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系;
根据所述匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对所述字典树结构上所有节点构造失配指针,构建AC自动机。
3.如权利要求2所述的方法,其特征在于,所述收集网络应用程序的集成测试用例,利用所述集成测试用例建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,包括:
收集网络应用程序的集成测试用例,在所述集成测试用例的执行过程中使用模拟用户点击的自动化测试工具对网络提供的功能进行覆盖;
每当执行集成测试用例中的一个界面事件时添加分隔日志,利用所述分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
4.如权利要求3所述的方法,其特征在于,所述每当执行集成测试用例中的一个界面事件时添加分隔日志,利用所述分隔日志的日志分区技术对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,包括:
每当执行集成测试用例中一个界面事件时添加分隔日志,当检测到网络应用对应进程发生的协程切换时,利用所述分隔日志的日志分区技术向系统审计日志中插入界面事件的系统调用,并记录协程切换的进程编号;
根据所述协程切换的进程编号对系统审计日志进行分区,以获取与界面事件产生的前后端请求相匹配的系统审计日志,建立应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系。
5.如权利要求2所述的方法,其特征在于,所述根据所述匹配关系将每个界面事件对应的前后端请求序列建模的字符串构造成字典树结构,针对所述字典树结构上所有节点构造失配指针,构建AC自动机,包括:
根据所述匹配关系对每个界面事件对应的前后端请求序列进行建模,得到属于每个界面事件的最后若干个字符;
将所述属于每个界面事件的最后若干个字符组成的字符串后,根据所有字符串构造字典树结构;
针对所述字典树结构中当前节点添加失配指针,以使得所述当前节点沿着所述失配指针所指向的目标节点是字典树结构上除了当前节点之外的所有节点中满足预设条件的节点,所述预设条件为与当前节点的后缀相同且长度最大的节点。
6.如权利要求1所述的方法,其特征在于,所述根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志,包括:
根据所述会话请求判断所述AC自动机的当前状态节点是否包含有字符的出边,若包含,则转移到所述出边对应的子节点,否则,沿着所述AC自动机的当前状态节点对应的失配指针向上跳转,直至跳转到的节点包含有字符的出边,转移到所述出边对应的子节点;
获取每次转移过程中所述会话请求对应的自动机节点信息,通过主动式日志分区方式将所述会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志。
7.如权利要求6所述的方法,其特征在于,所述获取每次转移过程中所述会话请求对应的自动机节点信息,通过主动式日志分区方式将所述会话请求的自动机节点信息记录至系统审计日志中新增的分隔日志,包括:
根据所述AC自动机中每次会话请求所触发节点状态转移后的自动机节点标识,获取每次转移过程中所述会话请求对应的自动机节点信息;
利用主动式日志分区方式将系统审计日志中插入的系统调用的预设参数设置为所述会话请求对应的自动机节点信息,以将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志。
8.如权利要求1-7中任一项所述的方法,其特征在于,所述将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件,包括:
使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,从所述目标分隔日志提取会话请求的自动机节点信息;
根据所述会话请求的自动机节点信息查询攻击关联的会话请求序列,从所述攻击关联的会话请求序列中定位出攻击关联的界面事件。
9.如权利要求8所述的方法,其特征在于,所述使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,从所述目标分隔日志提取会话请求的自动机节点信息,包括:
使用溯源图生成工具将所述系统审计日志转换为标准格式的溯源图,在所述标准格式的溯源图中以异常检测的告警事件为起点向前回溯至告警事件的进程节点;
利用所述告警事件的进程节点查询时间戳最接近告警事件的目标分隔日志,并获取所述目标分隔日志中记录的会话标识,根据所述会话标识确定会话请求以及所述会话请求的自动机节点信息。
10.一种应用服务端的攻击溯源装置,其特征在于,所述装置包括:
构建单元,用于获取应用程序在运行时每个界面事件与前后端请求序列之间的匹配关系,根据所述匹配关系构建AC自动机;
转移单元,用于针对每个用户使用网络服务产生的会话附加AC自动机的当前状态,当接收到网络服务的会话请求时,根据所述会话请求对所述AC自动机的当前状态节点进行状态转移,并通过主动式日志分区方式将所述会话请求对应的自动机节点信息记录至系统审计日志中新增的分隔日志;
定位单元,用于将所述系统审计日志构造成溯源图,在所述溯源图中以异常检测的告警事件为起点溯源分析至时间戳最接近告警事件的目标分隔日志,根据所述目标分隔日志中记录会话请求的自动机节点信息,定位攻击关联的会话请求序列和界面事件。
CN202210635554.3A 2022-06-06 2022-06-06 应用服务端的攻击溯源方法及装置 Active CN115296832B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210635554.3A CN115296832B (zh) 2022-06-06 2022-06-06 应用服务端的攻击溯源方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210635554.3A CN115296832B (zh) 2022-06-06 2022-06-06 应用服务端的攻击溯源方法及装置

Publications (2)

Publication Number Publication Date
CN115296832A true CN115296832A (zh) 2022-11-04
CN115296832B CN115296832B (zh) 2024-01-26

Family

ID=83820681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210635554.3A Active CN115296832B (zh) 2022-06-06 2022-06-06 应用服务端的攻击溯源方法及装置

Country Status (1)

Country Link
CN (1) CN115296832B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110009811A (ko) * 2009-07-23 2011-01-31 충남대학교산학협력단 감사자료 기반의 웹공격 이벤트 추출 시스템 및 방법
CN107515778A (zh) * 2017-08-25 2017-12-26 武汉大学 一种基于上下文感知的起源追踪方法及系统
CN112765603A (zh) * 2021-01-28 2021-05-07 电子科技大学 一种结合系统日志与起源图的异常溯源方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110009811A (ko) * 2009-07-23 2011-01-31 충남대학교산학협력단 감사자료 기반의 웹공격 이벤트 추출 시스템 및 방법
CN107515778A (zh) * 2017-08-25 2017-12-26 武汉大学 一种基于上下文感知的起源追踪方法及系统
CN112765603A (zh) * 2021-01-28 2021-05-07 电子科技大学 一种结合系统日志与起源图的异常溯源方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邓诗琪;刘晓明;武旭东;雷敏;: "Web服务器攻击日志分析研究", 信息网络安全, no. 06 *

Also Published As

Publication number Publication date
CN115296832B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
Duchêne et al. State of the art of network protocol reverse engineering tools
Mizutani Incremental mining of system log format
Caballero et al. Polyglot: Automatic extraction of protocol message format using dynamic binary analysis
Bossert et al. Towards automated protocol reverse engineering using semantic information
US10387656B2 (en) Integrated interactive application security testing
Tak et al. Logan: Problem diagnosis in the cloud using log-based reference models
Gascon et al. Pulsar: Stateful black-box fuzzing of proprietary network protocols
Gorbunov et al. Autofuzz: Automated network protocol fuzzing framework
Dai et al. Networkprofiler: Towards automatic fingerprinting of android apps
US20200106792A1 (en) Method and system for penetration testing classification based on captured log data
CN110221977B (zh) 基于ai的网站渗透测试方法
Kleber et al. Survey of protocol reverse engineering algorithms: Decomposition of tools for static traffic analysis
Debar et al. Fixed vs. variable-length patterns for detecting suspicious process behavior
CN107046526A (zh) 基于Fuzzing算法的分布式异构网络漏洞挖掘方法
JPWO2020075335A1 (ja) 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム
EP3433782B1 (en) Integrated interactive application security testing
Azodi et al. A new approach to building a multi-tier direct access knowledgebase for IDS/SIEM systems
Murtaza et al. Total ads: Automated software anomaly detection system
Antunes et al. ReverX: Reverse engineering of protocols
Lee et al. PRETT: protocol reverse engineering using binary tokens and network traces
Acosta et al. Network data curation toolkit: cybersecurity data collection, aided-labeling, and rule generation
CN115296832B (zh) 应用服务端的攻击溯源方法及装置
Alekseev et al. Finite state machine based flow analysis for webrtc applications
CN108228448B (zh) 一种代码跟踪方法及装置
Wang et al. A model-based behavioral fuzzing approach for network service

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Peng Yihao

Inventor after: Wang Ruihua

Inventor after: Wan Hai

Inventor after: Zhao Xibin

Inventor before: Wang Ruihua

Inventor before: Peng Yihao

Inventor before: Wan Hai

Inventor before: Zhao Xibin

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant