熊喵君的博客

Thinking will not overcome fear but action will.

Linux 内核之旅(二):VFS

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

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

0x00 前言 0x0 参考 4.6 深入理解 Linux 虚拟内存管理 4.7 深入理解 Linux 物理内存管理

Linux 安全对抗收集

安全对抗case及检测策略

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

Linux 内核之旅(一):进程

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

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

数据的搬运工

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

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 ...

golang eBPF 开发入门(三)

通信:eBPF 中的 Maps 数据结构分析与应用

0x00 前言 上文 介绍了 ebpf 的内核态 / 用户态的通信示例,本文关注这几个问题: 为什么要使用 maps maps 使用的一般场景 maps 的基本结构及实现原理 maps 的常用操作及场景(用户态 –> 内核态) 项目中的应用 BPF Map 是内核空间和用户空间之间用于数据交换、信息传递的桥梁,是 eBPF 程序中使用的主要数据结构。B...

golang eBPF 开发入门(二)

kprobe/uprobe/tracepoint/CO-RE 开发实践

0x00 前言 本文专注于最右侧的技术 强烈推荐: bcc Reference Guide Linux 系统动态追踪技术介绍 Linux 动态追踪: 0x01 kprobe/uprobe/tracepoint 技术 kprobe vs kretprobe kprobes 主要用来对内核进行轻量级的调试追踪,本质上是在指定的探测点(如函数的某行、函...

数据结构与算法回顾(九):bitmap

0x00 前言 0x01 原理 && 应用 bitmap 比较简单,用一个 bit 来标记某个元素对应的 value,而 Key 即是该元素。由于采用 bit 来存储一个数据,相对节省空间(不考虑稀疏存储的场景下)。假设要对 0-31 内的 3 个元素 (10,17,28) 排序,那么就可以采用 Bitmap 方法(假设这些元素没有重复)。bitmap 算法常用...