熊喵君的博客

Thinking will not overcome fear but action will.

Linux 内核之旅(二):VFS

0x00 前言 Linux 支持多种文件系统格式(如 ext2、ext3、reiserfs、FAT、NTFS、iso9660 等),不同的磁盘分区或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以 mount 到某个目录下,使开发者看到一个统一的目录树,各种文件系统上的目录和文件,读写操作用起来也都是一样的。Linux 内核在各种不同的文件系统格式之上做了一个抽象层,使得文件...

Linux 内核之旅(三):虚拟内存管理

0x00 前言 前文讨论了进程,正在执行的程序,是可执行程序的动态实例,它是一个承担分配系统资源的实体,但操作系统创建进程时,会为进程创建相应的内存空间,这个内存空间称为进程的地址空间,每一个进程的地址空间都是独立的;当一个进程有了进程的地址空间,那么其管理结构被称为内存描述符mm_struct 0x01 内存描述符:mm_struct struct mm_struct { ...

netlink 应用

如何基于 netlink 机制实现进程监控

0x00 前言 本文介绍下基于 netlink 机制构建进程创建审计监控,Netlink 是一个套接字家族(socket family),被用于内核与用户态进程以及用户态进程之间的 IPC 通信 Netlink Connector 是一种特殊的基于 Netlink 协议的通信机制(协议号是 NETLINK_CONNECTOR),它构建在 Linux 内核中,用于内核与用户空间应用之间...

Linux 安全对抗收集

安全对抗case及检测策略

0x00 前言 本文主要收集下主机入侵事件及原理 0x01 反弹 Shell 反弹shell,通常是攻击机监听在某个TCP/UDP端口(AS 服务端),目标机(受害机 AS 客户端)主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机,本质是把 bash OR sh 进程的输入输出重定向到 socket,在 socket 中获取 stdin[0],stdout[1]...

Linux 内核之旅:基础知识

0x00 前言 0x01 双向链表 struct list_head { struct list_head *next, *prev; }; 0x0 参考 Linux 内核中的数据结构 内核基础设施——hlist_head/hlist_node结构解析

Linux 内核之旅(一):进程

0x00 前言 Operating System Kernel 操作系统内核(Operation System Kernel)本质上也是一种软件,可以看作是普通应用程序与硬件之间的一层中间层,其主要作用便是调度系统资源、控制 IO 设备、操作网络与文件系统等,并为上层应用提供便捷、抽象的应用接口 操作系统内核实际上是抽象出来的概念,本质上与用户进程一般无二,都是位于物理内存中的代码...

FILEBEAT :一款轻量级日志采集器agent的实现与分析

数据的搬运工

0x00 前言 下图形象的说明了filebeat的功能,主要包括两点: 支持从不同数据源收集数据并转换成事件 发送事件到指定的输出(支持多种输出) 支持从多种不同的input(上游)中接受需要收集的数据(如log input从日志文件中收集数据) 对收集来的数据进行加工(如多行合并,增加业务自定义字段,json encode等) 将加工好的数据发送到o...

基于golang的systemd守护进程应用分析

0x00 前言 场景如下: 服务开机启动 需要时刻监测某个重要服务是否在线,如果程序报错退出则自动重启服务,以此来保持服务常在线 systemd简介 1、基本操作,假设服务程序路径部署在/usr/local/bin/systemd-test,配置存储在/etc/systemd/system/systemd-test.service [Unit] Description...

golang eBPF 开发入门(五)

网络开发之 XDP/TC

0x00 前言 在 linux 内核网络协议栈中有多个网络钩子,数据包在进入到网卡再到流出网卡的过程会触发这些钩子上注册的回调函数执行相关过滤动作。如 netfilter 框架中的 5 个钩子,针对 ip 数据包进行过滤。除此之外,在更低一层还有 xdp 和 tc 系统对数据包进行处理 XDP 与 TC 的位置 XDP:Ingress TC:Egress XD...

主机入侵检测系统 Elkeid:设计与分析(一)

后台服务模块

0x00 前言 Elkeid 后台主要模块如下: AgentCenter 模块:负责与 Agent 进行通信,采集 Agent 数据并简单处理后汇总到消息队列集群,同时也负责对 Agent 进行管理包括 Agent 的升级,配置修改,任务下发等。同时 AgentCenter 也对外提供 HTTP 接口,Manager 模块通过这些 HTTP 接口实现对 AgentCenter ...