Linux环境下基于调用栈图的入侵检测方法技术

技术编号:3517188 阅读:343 留言:0更新日期:2012-04-11 18:40
Linux环境下基于调用栈图的入侵检测方法,本发明专利技术通过获取系统调用对应的调用栈信息建立指定进程的调用栈图,并结合带最大匹配度的优先搜索和带滑动窗口的异常度度量方法,实现了对指定进程的系统调用调用链的异常检测机制。通过带最大匹配度的优先搜索,可以把被检测进程的系统调用的调用链在其对应的调用栈图上进行匹配,以获得到最大匹配度。实验结果表明在攻击检测水平相当的情况下,本发明专利技术系统的误警率要远低于国内外的同类系统。

【技术实现步骤摘要】

【技术保护点】
Linux环境下基于调用栈图的入侵检测方法,其特征在于:1)首先,获取调用栈数据首先通过Ptrace机制实时获取操作系统中每个进程产生的每个系统调用的调用栈数据,由父进程通过forkO产生一个子进程,然后父进程进入等待;在子 进程中通过PTRACE_ME主动请求被其父进程跟踪,然后在子进程中通过系统EXECVE函数运行被跟踪的父进程,进程返回标志为正数则表示为成功执行,否则,再次创建子进程,则会在执行第一个系统调用前停下来,并发送一个SIGCHILD信号给等待的父进程,父进程停止等待后发出PTRACE_SYSCALL请求重新启动停止的系统调用,父进程重新进入等待;子进程继续执行,在系统调用的入口处被信号SIGTRAP停止并发出SIGCHILD信号中止父进程的等待状态,父进程退出等待状态,此时获取到系统调用入口处的调用号、传入参数、返回地址以及调用函数的栈帧指针EBP,并进行相应调用栈图的生成或实时检测;然后父进程发出PTRACE_SYSCALL请求重新启动停止的系统调用,父进程第三次进入等待子进程停止信号的状态,子进程将被停止的系统调用运行结束,在系统调用退出前被信号SIGTRAP停止并通知父进程,父进程在此时获取系统调用运行后的返回值和系统调用中分配的栈帧信息,然后再发出重新启动信号让子进程继续运行下一个系统调用,开始新的一轮对系统调用数据的控制和观察,直到子进程结束;2)其次,用调用栈数据生成调用栈图通过调用栈图生成算法(CallStackGraphBuildingAlgorithm,CSGBA)对得到的调用栈数据即调用号、传入参数、返回地址以及调用函数的栈帧指针EB P进行训练,从而形成指定进程的由不同的实时检测的数据建成的调用栈图;将获得的实时检测的数据在建立的调用栈上进行分层匹配,调用栈图是有向图,由第i层的节点指向第i+1层的节点,在每个节点的数据结构中保存了与之相连的下一层节点的关联信息 ,其中包括关联节点和对应的关联边,调用栈图构建算法:是循环地将调用链的第i个节点Ch[i]在调用栈图上对应的第i层进行匹配,当第i层上存在这样的节点Ch[i]时,通过获取节点Ch[i]的关联边数据结构判断它与第i+1层的节点Ch[i+1]的关联关系,如果节点Ch[i]和节点Ch[i+1]在原有的图上不存在关联关系,则在原有的图上添加Ch[i]节点与Ch[i+1]节...

【技术特征摘要】

【专利技术属性】
技术研发人员:管晓宏冯力孙杰杨力伟
申请(专利权)人:西安交通大学
类型:发明
国别省市:87[中国|西安]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1