hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控

作者简介:张博,网易高级信息安全工程师。

9b52bcc686878823bd482dccb44987a6.png

0x00 简介

在入侵检测的过程中,进程创建监控是必不可少的一点,因为攻击者的绝大多数攻击行为都是以进程的方式呈现,所以及时获取到新进程创建的信息能帮助我们快速地定位攻击行为。

本文将介绍一些常见的监控进程创建的方式,包括其原理、Demo、使用条件和优缺点。行文仓促,如果有哪些错误和不足,还望大家批评指正。

0x01 常见方式

目前来看,常见的获取进程创建的信息的方式有以下四种:

  • So preload
  • Netlink Connector
  • Audit
  • Syscall hook

下面我们就从原理、Demo、使用条件和优缺点来了解一下这四种方式。

0x02 So preload

原理

首先跟大家介绍两点基础知识:

1.Linux 中大部分的可执行程序是动态链接的,常用的有关进程执行的函数例如 execve均实现在 libc.so 这个动态链接库中。

2.Linux 提供了一个 so preload 的机制,它允许定义优先加载的动态链接库,方便使用者有选择地载入不同动态链接库中的相同函数。

结合上述两点不难得出,我们可以通过 so preload 来覆盖 libc.so 中的 execve等函数来监控进程的创建。

Demo

下面我们就来实现一个简单的 demo 。

1.创建文件 hook.c ,内容如下:

#define _GNU_SOURCE

#include

#include

#include

typedef ssize_t (*execve_func_t)(const char* filename, char* const argv[], char* const envp[]);

static execve_func_t old_execve = NULL;

int execve(const char* filename, char* const argv[], char* const envp[]) {

printf("Running hook");

printf("Program executed: %s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hive 创建表_2min快速了解,Hive内部表和外部表

在了解内部表和外部表区别前,我们需要先了解一下Hive架构 :大家可以简单看一下这个架构图,我介绍其中要点:Hive的数据分为两种,一种为普通数据,一种为元数据。元数据存储着表的基本信息,增删改查…

C#微信公众号开发系列教程二(新手接入指南)

此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽。 微信公众号开发系列教程一(调试环境部署) 微信公众…

fastdfs windows部署_Go在windows下编译Linux可执行文件

欢迎关注我的头条号:Wooola,专注于Java、Golang、微服务架构,致力于每天分享原创文章、快乐编码和开源技术。前言最近楼主做了一个滑块验证码登录功能,但有个问题,悲观估计一天大约会产生两百多G临时图片放在fastdfs文…

我们并没有觉得MapReduce速度慢,直到Spark出现

learn from 从0开始学大数据(极客时间) Spark 拥有更快的执行速度 更友好的编程接口 迅速抢占 MapReduce 的市场份额,成为主流的大数据计算框架 val textFile sc.textFile("hdfs://...") // 根据 HDFS 路径生成一个输入数据 RDD v…

LeetCode 1178. 猜字谜(状态压缩+枚举二进制子集+哈希)

文章目录1. 题目2. 解题1. 题目 外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧。 字谜的迷面 puzzle 按字符串形式给出,如果一个单词 word 符合下面两个条件,那么它就可以算作谜底: 单词 word 中包含谜面 …

elasticsearch 工作原理_【154期】面试官:你能说说 Elasticsearch 查询数据的工作原理是什么吗?...

点击上方“Java面试题精选”,关注公众号面试刷图,查缺补漏>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅阶段汇总集合:一百期面试题汇总面试题ES 写入数据的工…

java会被淘汰吗_Java不会被淘汰的12个原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年…

java操作redis的操作_Java操作redis简单示例

第一:安装Redis首先我们要安装Redis,就像我们操作数据库一样,在操作之前肯定要先创建好数据库的环境。Redis的下载可以百度一下,或者打开下面的下载链接:https://github.com/MSOpenTech/redis也可以从我的百度网盘下载…

myeclipse启动报JVM terminated. Exit code=1

报错信息如图: 解决办法: 删除当前workspaces下文件夹,路径为:%Workspaces%/.metadata/.plugins/org.eclipse.core.runtime转载于:https://www.cnblogs.com/tancp/p/4102866.html

Java 常用类库

文章目录1. String、StringBuffer2. 基本数据类3. System 类4. Runtime 类5. Date、Calendar、DateFormat 类6. Math、Random 类7. hashCode() 方法8. 对象克隆1. String、StringBuffer public class testString {public static void main(String [] args){String s "Mi…

git如何选择性合并_小姐姐用 10 张动图,教会你 Git 命令使用

优质文章,第一时间送达!来源:机器之心git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道这些 git 命令执行的究竟是什么任务吗?如果你还有些分不清楚,那千万不能错过这篇文章…

传智播客java测试题_传智播客Java基础综合测试题

传智播客Java基础综合测试题传智播客Java基础综合测试题第一关1.动手完成 Java 开发包的安装,并设置环境变量 Path 。2.编写一个程序,要求程序运行后在屏幕上输出:***************************This is my first java program!***************…

为何Spark更高效?

learn from 从0开始学大数据(极客时间) Spark 的计算阶段 Hadoop MapReduce 简单粗暴地根据 shuffle 将大数据计算分成 Map 和 Reduce 两个阶段,然后就算完事了。 而 Spark 更细腻一点,将前一个的 Reduce 和后一个的 Map 连接起来…

iphone个系列尺寸_最值得入手的4款iPhone,都是内行人的最爱,拿出去有面子

现如今手机市场里最受大众欢迎的手机应该就是iPhone了,虽然iPhone的价格都普遍偏高,但是大家依然还是非常青睐于它,主要是因为iPhone的配置和性能确实是比其他机型要好,搭载的A系列仿生芯片和iOS系统都提升了它的性能,…

protocol(协议) 和 delegate(委托)也叫(代理)---辨析

protocol和delegate完全不是一回事。协议(protocol),(名词)要求。就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。委托(delegate),(动词)助手。顾名思义就是委托…

天池 在线编程 能否转换

文章目录1. 题目2. 解题1. 题目 给两个字符串 S 和 T, 判断 S 能不能通过删除一些字母(包括0个)变成 T. 样例1 输入: S "lintcode" 和 T "lint" 输出: true样例2 输入: S "lintcode" 和 T "ide" 输出: true样例3 输入: S "…

java 析构函数_C++与Java的区别(一)

一,前言网上经常看到编程语言之争,大伙儿皈依到不同门派,各自怀抱信仰,时不时还发生点儿“冲突”。这其中,C和Java的优劣,十多年前就常吵的火热。然而时代在进步,技术在发展,满街早已…

天池 在线编程 圣杯咒语

文章目录1. 题目2. 解题1. 题目 一段英文中同时出现大小写的字母中最大的那一个,现在给你一段英文,你能把这个字母找出来嘛? ps:一定存在答案 英文长度不会超过100000 样例 1: 输入:"aAbb" 输出&#xf…

crawler_java_数据平台结构

大数据生态架构 转载于:https://www.cnblogs.com/cphmvp/p/4105674.html

天池 在线编程 卡牌游戏(01背包)

文章目录1. 题目2. 解题1. 题目 你跟你的朋友在玩一个卡牌游戏,总共有 n 张牌。 每张牌的成本为 cost[i] 并且可以对对手造成 damage[i] 的伤害。 你总共有 totalMoney 元并且需要造成至少 totalDamage 的伤害才能获胜。 每张牌只能使用一次,判断你是否…