熊喵君的博客

Thinking will not overcome fear but action will.

Linux HIDS 开发场景收集

0x00 场景收集 如何根据task_struct结构,获取到事件对应运行二进制的绝对路径? 如何获取进程打开的文件fd列表? 如何根据进程打开的文件fd列表,并且判断其是否为socket网络句柄? 如何根据task_struct结构,获取该进程对应的进程链信息(类似pstree)? 如何获取某个进程对应的socket五元组信息(如果打开了网络连接)? 如何...

Linux 内核之旅(二):VFS

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

EBPF 内核态代码学习(二):使用 eBPF 隐藏进程 / 文件信息

理解 ps/ls 等运行原理

0x00 前言 在主机安全对抗中,有一项技术叫进程隐藏,即能让特定的进程对 os 的常规检测机制变得不可见,其基本原理是 Linux 系统的 VFS,每个进程都在 /proc/ 目录下有一个以其进程 ID 命名的子目录,其中包含了该进程的各种信息(ps 命令就是通过查找这些文件夹来显示进程信息的,ls 命令也是同样原理) 进程隐藏:如果能隐藏某个进程的 /proc/${id} ...

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