熊喵君的博客

Thinking will not overcome fear but action will.

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

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 算法常用...

/proc 详解

0x00 前言 0x0 参考 Linux进程网络流量统计方法及实现 使用 golang gopacket 实现进程级流量监控 从内核代码角度详解proc目录 Linux下/proc目录简介

gopsutil 使用与分析

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

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

Linux 系统调用汇总

收集常用的 ebpf 的系统调用:review && hook

0x00 前言 本文汇总下开发过程中收集的一些 Linux 系统调用及用法 0x01 常用系统调用分类 进程控制 fork:创建一个新进程 clone:按指定条件创建子进程 execve:运行可执行文件 exit:中止进程 _exit:立即中止当前进程 getdtablesize:进程所能打开的最大文件数 getpgid:获取指定进程组标识号 ...

WinTun && WinDivert 使用与分析

基于Clash等开源项目的一些技术实现总结

0x00 前言 本文汇总下笔者在研究Clash(ClashMeta)等一些windows上的透明代理项目的一些技术思路总结,基于wintun OR windivert 0x01 配置&&功能 进程过滤 Rules 规则可支持按照PROCESS-NAME 源进程名、PROCESS-PATH 源进程路径等走对应的规则,比如 # clash 开 tun 模式代理,根据进...