熊喵君的博客

Thinking will not overcome fear but action will.

netlink 应用

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

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

Linux 安全对抗收集

安全对抗case及检测策略

0x00 前言 本文主要收集下主机入侵事件及原理 相关参考: Linux 应急响应手册 入侵过程小结 1、外部侦查 外部侦查即未获得目标任何权限的情况下,通过网络对目标进行信息/情报收集 常见手法为主机扫描,以及应用层扫描 2、外部攻击 外部攻击即在收集到对应信息后,通过特定应用,特定漏洞或者主机漏洞来对目标进行攻击,并获取上传/执行等能力的...

Linux 内核之旅:基础知识

0x00 前言 双向链表 hash 链表 队列:Priority sorted lists used for mutexes, drivers, etc rbtree:Red-Black trees are used for scheduling, virtual memory management, to track file descriptors and dir...

Linux 内核之旅(一):进程

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

数据结构与算法回顾(十):radix tree

内核中的 IDR 与 XArray

0x00 前言 前文httprouter分析,分析了基于字符串的radix tree的实现,本文分析下内核的radix tree(ID Radix Tree) page cache管理:如4.11.6内核版本中的radix_tree_root、radix_tree_node,被用于实现内核struct inode维度(文件)的page cache管理,关联结构address_s...

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 开发入门(六)

ebpf的一些细节补充

0x00 前言 0x01 Tail Call 尾调用 VS 普通函数调用 bpf_tail_call 机制在使用时有若干限制: 尾调用的程序必须已经加载到了 eBPF 程序的同一个 eBPF MAP 类型的数据结构中 bpf_tail_call 的调用深度是有限的(通常是32),以防止无限循环 尾调用不会传递任何参数,被调用的程序需要通过共享的 eBPF map ...

golang eBPF 开发入门(五)

网络开发之 XDP/TC 基础

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

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

后台服务模块

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