Linux HOOK机制与Netfilter HOOK

一. 什么是HOOK(钩子)

在计算机中**,基本所有的软件程序都可以通过hook方式进行行为拦截,hook方式就是改变原始的执行流。**

二. Linux常见HOOK方式

1、修改函数指针。

2、用户态动态库拦截。

①利用环境变量LD_PRELOAD和预装载机制进行HOOK;
②利用函数ptrace,可实现对已运行的程序进行HOOK;

3、内核态系统调用拦截。

通过修改全局系统调用表sys_ call _table,对系统调用进行劫持;

4、堆栈式文件系统拦截。

5、LSM(Linux Security Modules)

Linux安全模块(Linux Secrity Module,简称LSM)是一种轻量级通用访问控制框架,适合于多种访问控制模型在它上面以内核可加载模块的形实现。用户可以根据自己的需求选择合适的安全模块加载到内核上实现。

6、Netfilter HOOK

三. Netfilter HOOK

Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换****(NAT) 和基于协议类型的连接跟踪成为了可能。

Netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数进行处理。

Iptables是一个工具,可以用来在Netfilter中增加、修改、删除数据包处理规则,Netfilter 与 IP 协议栈是无缝契合的,是一种免费的软件防火墙。

1. Nefilter在linux内核中的位置

2. 四表五链

Netfilter中有三个主要的概念:规则、表、链,等级依次递增。

  • 规则是对特定报文的处理说明,包括匹配字段和action。
  • 链是一组规则的集合。
  • 表是链中相同功能的规则集合。

**iptables****包括"**四表五链"。

  • Filter****表用于过滤数据包,是iptables的默认表
  • NAT****表用于对数据包的网络地址转换
  • Mangle用于修改数据包,也用于给数据包添加一些标记,从而便于后续其它模块对数据包进行处理;
  • Raw****表用于连接跟踪;

五个HOOK点(链)分别是:

PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

下图更直观的体现了五条链

四. 参考连接

Hook技术--⑥Netfilter_netfilter hook-CSDN博客文章浏览阅读276次。Netfilter/IPTables是Linux2.4.x之后新一代的Linux防火墙机制,是一套融入到linux内核网络协议栈的框架,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,在报文流经的关键位置处,基于不同协议(ipv4/ipv6)的hook方式,使用hook列表中对应的钩子函数匹配处理,以实现过滤、修改报文、跟踪等功能;_netfilter hookhttps://blog.csdn.net/m0_53485135/article/details/134136255深入解析Linux内核中的Netfilter:保护你的网络安全https://zhuanlan.zhihu.com/p/674127640

linux系统下的各种hook方式\Linux内核hook系统调用_linux hook-CSDN博客文章浏览阅读1.1w次,点赞6次,收藏72次。文章目录一、linux系统下的各种hook方式1. 函数指针hook2. 动态库劫持3. Linux系统调用劫持 hook4. 堆栈式文件系统5. LSM二、Linux内核hook系统调用一、linux系统下的各种hook方式在计算机中,基本所有的软件程序都可以通过hook方式进行行为拦截,hook方式就是改变原始的执行流,Linux平台上常见的拦截:修改函数指针。用户态动态库拦截。内核态系统调用拦截。堆栈式文件系统拦截。LSM(Linux Security Modules)1. 函数_linux hookhttps://blog.csdn.net/inthat/article/details/119931358

两种linux系统下常见的HOOK方法 - 嵌入式技术 - 电子发烧友网两种linux系统下常见的HOOK方法-Linux提供了一个名为LD_PRELOAD的环境变量。这个环境变量允许用户指定一个或多个共享链接库文件的路径。当程序启动时,动态加载器会在加载C语言运行库之前,首先加载LD_PRELOAD所指定的共享链接库。这种加载方式被称为预装载。https://www.elecfans.com/emb/202404082662361.html

相关推荐
上海云盾商务经理杨杨2 小时前
2026游戏盾深度解析:从被动防御到智能作战,构建DDoS免疫堡垒
网络·游戏·ddos
强子感冒了2 小时前
Java网络编程学习笔记,从网络编程三要素到TCP/UDP协议
java·网络·学习
上海云盾商务经理杨杨3 小时前
付费网站的攻防战:2026年,如何破解并抵御爬虫攻击
网络·安全
emma羊羊3 小时前
【wordpress-wpdiscuz-rce】
网络·web安全·wordpress
青果全球http3 小时前
静态IP是什么意思?和动态IP有什么区别
网络·网络协议·tcp/ip
Justice link4 小时前
K8S基本配置
运维·docker·容器
观熵4 小时前
SaaS 系统的自动化部署结构设计实战指南:基于 K8s + Helm 的工程落地路径
运维·kubernetes·自动化·saas 架构
chinesegf4 小时前
ubuntu中虚拟环境的简单创建和管理
linux·运维·ubuntu
若涵的理解4 小时前
一文读懂K8S kubectl 命令,运维小白必看!
运维·docker·kubernetes
java_logo4 小时前
2025 年 11 月最新 Docker 镜像源加速列表与使用指南
linux·运维·docker·容器·运维开发·kylin