熊喵君的博客

Thinking will not overcome fear but action will.

FILEBEAT 使用与分析

0x00 前言

golang eBPF 开发入门(五)

网络开发之 XDP/TC

0x00 前言 XDP 与 TC 的位置: XDP:Ingress TC:Egress XDP VS DPDK: 参考文档: XDP tutorial Making eBPF programming easier via build env and examples 应用场景 XDP:ACL(防火墙) LB:如katran 0x0...

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

后台服务模块

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

golang eBPF 开发入门(三)

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

0x00 前言 上文 介绍了 ebpf 的内核态 / 用户态的通信示例,本文关注三个问题:为什么要使用 maps?maps 使用的一般场景?maps 的基本结构及实现原理。BPF Map 是内核空间和用户空间之间用于数据交换、信息传递的桥梁。是 eBPF 程序中使用的主要数据结构。BPF Map 本质上是以键 / 值方式存储在内核中的数据结构,在内核空间的程序创建 BPF Map 并返...

golang eBPF 开发入门(二)

kprobe/uprobe/tracepoint 开发实践

0x00 前言 本文专注于最右侧的技术 0x01 kprobe/uprobe/tracepoint 技术 tracepoint 0x02 kprobe 基础实践 开发步骤 1、准备对应版本的 kernel 内核源码,在对系统调用植入探针的过程中,需要了解对应函数的参数和返回值定义 uname -a #5.15.0-83-generic # 确认目标设备的 linux...

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

0x00 前言 0x0 XDP中的应用 0x0 参考 Golang 优化之路——bitset Go 每日一库之 roaring

gopsutil 使用与分析

一个跨平台的采集库 && windows API 实现

0x00 前言 gopsutil 屏蔽了各个系统之间的差异,具有非常好的可移植性 本文基于 v4.24.7 分析 0x01 应用实战 先引入一个问题,已知 srcip、srcport,如何查找到该信息对应(占用)的进程名字(pid)?思路大致如下: 通过 srcip、srcport 获取进程 pid 通过 pid 获取进程名(进程路径) Linux 实现 Windows...

ego/gocache:一个缓存管理通用工具库的实现

0x00 前言 gocache 是一个可扩展的缓存库(非缓存实现) 作为上层封装了众多开源 cache 库 / redis 的实现 缓存语义的包装,比如 chain cache,loadable cache 等 支持 cache 类通用指标的采集 版本分析基于 lib/v4.1.6 0x01 公共接口 Store adapters:存储适配器 该 interfa...

CS144:一个轻量级 TCP 重组器的实现与分析

0x00 前言 CS144 课程提供了一个用户态 TCP 协议的简单实践,先回顾下 TCP 的若干特点,为了最大限度的保证传输可靠: 1、可靠性保证 校验和,TCP 每个报文都有校验和字段,防止数据丢失或出错 序列化和确认号,保证每个序号的字节都交付,解决丢失、重复等问题 超时重传,对于超时未能确认的报文,TCP 会重传这些包,确保数据达到对端 拥塞控制等等 ...

GOST 应用与分析(一)(未完待续)

GOST 项目的介绍及 TUNNEL 实现分析

0x00 前言 gost 是一个非常有意思的项目,在笔者看来,像是乐高积木一样的代理连接器(多机端口转发器),其核心概念是四大模块: Service:Service 是指一个网络服务,它可以是一个服务器或者一个客户端。每一个 service 都有一个特定的网络地址和网络协议,如 HTTP,SOCKS5 等。GOST 通过 service 来接收和发送网络数据 Node:No...