Linux HOOK机制与Netfilter HOOK

news2024/11/13 15:00:44

一. 什么是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

NetfilterLinux 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:保护你的网络安全icon-default.png?t=N7T8https://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所指定的共享链接库。这种加载方式被称为预装载。icon-default.png?t=N7T8https://www.elecfans.com/emb/202404082662361.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1935759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Calibre:soft check

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 soft check检查在lvs检查中属于必看的类型,往往是因为衬底没有硬连接,接pg stripe造成的 下图是一个soft check的错误报告,重要信息有两个: 1)问题在ntap上,也就是着重检查power pin相关的连…

七款最佳公司电脑屏幕监控软件推荐|2024年屏幕监控软件超全盘点!

在当今企业管理中,电脑屏幕监控软件已成为保障数据安全和提升员工生产力的关键工具。选择一款合适的监控软件,可以帮助管理者有效监督员工的电脑使用行为,防止潜在的安全威胁和不当行为。小编分享七款备受好评的电脑屏幕监控软件,…

揭秘!SmartEDA何以成为新生代国产EDA领军者?

在当下科技日新月异的时代,EDA(电子设计自动化)作为集成电路设计的核心工具,其重要性不言而喻。而在这一领域中,SmartEDA凭借其卓越的性能和创新能力,迅速崭露头角,成为新生代国产EDA的领军者。…

2024可信数据库发展大会|存算分离架构驱动电信数据平台革新

7 月 16 日 - 17 日,由中国通信标准化协会和中国信息通信研究院主办,大数据技术标准推进委员会承办,InfoQ 联合主办的「2024 可信数据库发展大会」(TDBC)在北京召开。 酷克数据解决方案架构师吴昊受邀参与“电信行业数…

PyTorch使用细节

model.eval() :让BatchNorm、Dropout等失效; with torch.no_grad() : 不再缓存activation,节省显存; 这是矩阵乘法: y1 tensor tensor.T y2 tensor.matmul(tensor.T)y3 torch.rand_like(y1) torch.matm…

破解反爬虫策略 /_guard/auto.js(一) 原理

背景 当用代码或者postman访问一个网站的时候&#xff0c;访问他的任何地址都会返回<script src"/_guard/auto.js"></script>&#xff0c;但是从浏览器中访问显示的页面是正常的&#xff0c;这种就是网站做了反爬虫策略。本文就是带大家来破解这种策略&…

USB3200N模拟信号采集卡12位8路500K采样带DIO带计数器

1、概述&#xff1a; USB3200N多功能数据采集卡&#xff0c;LabVIEW无缝连接&#xff0c;提供图形化API函数&#xff0c;提供8通道&#xff08;RSE、NRSE&#xff09;、4通道&#xff08;DIFF&#xff09;模拟量输入&#xff0c;4路可编程数字I/O&#xff0c;1路计数器。 USB3…

C/C++蓝屏整人代码

文章目录 &#x1f4d2;程序效果 &#x1f4d2;具体步骤 1.隐藏任务栏 2.调整cmd窗口大小 3.调整cmd窗口屏幕颜色 4.完整代码 &#x1f4d2;代码详解 &#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&a…

前端实现视频播放添加水印

一、效果如下 二、代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body><style>.container {position: relative;}.base {width: 300px;hei…

VTD学习笔记(一)-启动vtd、基本界面和按钮

写在前面&#xff1a;真快啊&#xff0c;眨眼就毕业上班了&#xff0c;岗位也是做仿真&#xff0c;看来以后就是一直做仿真了&#xff0c;再见了定位~。公司使用的是vtd&#xff0c;看资料是一个很庞大的自动驾驶仿真软件&#xff0c;囊括了车辆动力学到传感器仿真&#xff0c;…

基于Java技术的智慧外贸平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;B/S模式、Java技术、SpringBoot框架 工具&#xff1a;Eclipse、MySQL数据库开发工具 系统展示 首…

【网络工具】Charles 实战(下)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/iAmAo &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会整理一些工作或学习中用到的工具介绍给大家~ &#x1f4d8;Charles 系列文章&#xff1a; 【网络工…

昇思25天学习打卡营第02天|张量Tensor

这节学习的张量&#xff08;Tensor&#xff09;的内容进行总结 &#xff1a; 1、张量的概念&#xff1a;张量是一种多线性函数&#xff0c;可以表示矢量、标量和其他张量之间的线性关系。张量是MindSpore网络运算中的基本数据结构&#xff0c;类似于数组和矩阵。 2、可以通过直…

【同行案例】亚马逊精铺卖家,2年跨境选品思路分享!

店雷达年度商家实战经验分享又来啦&#xff01;希望给各位商友一些选品思路参考。该商家主做亚马逊&#xff0c;2年跨境经验&#xff0c;主营类目艺术品&#xff0c;精铺模式。 一、亚马逊选品思路分享 ☛对于中小卖家&#xff0c;选择月销量300-1000可以较好平衡投入和产出&…

Langchain-Chatchat3.1版本docker部署流程——知识库问答

Langchain——chatchat3.1版本docker部署流程Langchain-Chatchat 1. 项目地址 #项目地址 https://github.com/chatchat-space/Langchain-Chatchat #dockerhub地址 https://hub.docker.com/r/chatimage/chatchat/tags2. docker部署 参考官方文档 #官方文档 https://github.c…

.env.local 配置本地环境变量 用于团队开发

.env.local 用途&#xff1a;.env.local 通常用于存储本地开发环境中的环境变量。这些变量可能包括敏感数据或特定于单个开发者的设置&#xff0c;不应该被提交到版本控制系统中。优先级&#xff1a;在大多数框架中&#xff0c;.env.local 文件中的变量会覆盖其他 .env 文件中…

【Git远程操作】向远程仓库推送 | 拉取远程仓库

目录 1.向远程仓库推送 ​1.1本地仓库的配置 1.2remote-gitcode本地仓库 1.3推送至远程仓库 2.拉取远程仓库 现阶段以下操作仅在master主分支上。 1.向远程仓库推送 工作区☞add☞暂存区☞commit☞本地仓库☞推送push☞远程仓库注意&#xff1a;本地仓库的某个分支 ☞推…

在Ubuntu上安装redis

Ubuntu上安装redis 一、通过下载redis的压缩包安装二、通过apt包管理器安装Redis三、修改redis的配置文件四、控制redis启动 Redis是一种开源的内存数据存储&#xff0c;可以用作数据库、缓存和消息代理等。本文将会介绍两种不同的安装方式&#xff0c;包括通过压缩包安装以及通…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备&#xff0c;专为工业环境下的高速数据传输和远程设备控制而设计&#xff0c;支持多种工业以太网协议&#xff0c;包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…