NDIS HOOK开发简单日志

Frida Hook Windows NDIS用户态API伪造MAC地址实战 MAC地址是网络设备的唯一物理标识,其修改行为在操作系统中受严格管控;Windows通过NDIS网络驱动接口规范,在内核与用户态之间构建了多层校验机制。绕过注册表或UI层的简单修改极易被NDIS中间层驱动识别为异常操作,触发安全告警。Frida凭借用户态动态注入与函数级Hook能力,可精准劫持ndis.dll导出函数(如NdisOpenAdapter),在驱动加载前篡改内存中的NDIS_OPEN_PARAMETERS结构体,实现合法、隐蔽、无需重启的MAC伪装。该技术广泛应用于红队渗透、802.1X准入绕过 阅读详情

今天调试了下uay backdoor, 其实基于ndis hook的想法的rootkit,2003年的时候我已经想过,一直没有动手了,看来实战第一. 呵呵,当然波兰的女hacker的rootkit 似乎也是这个思路,没有公布一点源码,这里我们应该感谢uay; 他在源代码里面也提到是采用了gjp的ndis hook技术---fake protocol,其实就是注册一个假协议获取协议连,从而递归来hook所有的协议驱动的一些收发函数, 关键是2000下和xp,2003的ndis_open_block的结构是不同的,gjp的代码是相当完全,不过没有太多说明,他当然是知道的. 另外是最近公开的部分kernel socket代码,就是核心层自己发包构建协议的意思.

uay的后门完全是在xp下使用xp ddk开发的,所以部分函数直接build无法通过,首先我们可以看到了函数RtlGetVersion函数,在2000的ntddk中可以查阅到此函数,但是已经声明只能在xp以上的系统中使用,我们应该替换这个为

BOOLEAN
  PsGetVersion(
  PULONG  MajorVersion  OPTIONAL,
  PULONG  MinorVersion  OPTIONAL,
  PULONG  BuildNumber  OPTIONAL,
  PUNICODE_STRING  CSDVersion  OPTIONAL
  );

   适用系统是nt/2000了, 为了满足多平台这里的框架代码可能要进行调整,好,暂时修改下,build后可以发现error C4013: 'NdisGetPoolFromPacket' undefined这个错误信息,查阅ndisgetpoolfrompacket可以看到此函数只适用与xp以上系统,retrieve the handle to the packet pool from which the packet was allocated,这时候要看看 ndis_packet结构定义了,你会发现_NDIS_PACKET_PRIVATE这个东西,呵呵,所以问题就好办了,

再连续解决这几个问题后,一切ok,下面调试,我们看看系统的_NDIS50_PROTOCOL_CHARACTERISTICS

呵呵,看看2000下的

Local var @ 0xf57cccf8 Type _NDIS50_PROTOCOL_CHARACTERISTICS
   +0x000 MajorNdisVersion : 0xfd ''
   +0x001 MinorNdisVersion : 0x15 ''
   +0x002 Filler           : 0x8043
   +0x004 Reserved         : 1
   +0x004 Flags            : 1
   +0x008 OpenAdapterCompleteHandler : 0x8113c020     +ffffffff8113c020
   +0x00c CloseAdapterCompleteHandler : 0xf57ccdcc     +fffffffff57ccdcc
   +0x010 SendCompleteHandler : 0x00000246     +246
   +0x010 WanSendCompleteHandler : 0x00000246     +246
   +0x014 TransferDataCompleteHandler : 0x80404043     nt!KiUnlockDispatcherDatabase+0
   +0x014 WanTransferDataCompleteHandler : 0x80404043     nt!KiUnlockDispatcherDatabase+0
   +0x018 ResetCompleteHandler : 0xf57ccd44     +fffffffff57ccd44
   +0x01c RequestCompleteHandler : 0xf57ccd9a     +fffffffff57ccd9a
   +0x020 ReceiveHandler   : (null)
   +0x020 WanReceiveHandler : (null)
   +0x024 ReceiveCompleteHandler : (null)
   +0x028 StatusHandler    : 0x8042f09f     nt!KeInsertQueue+0
   +0x02c StatusCompleteHandler : 0xf537420a     ndishook!DriverEntry+0
   +0x030 Name             : _UNICODE_STRING "瓿???"
   +0x038 ReceivePacketHandler : 0x80419079     nt!ExQueueWorkItem+0
   +0x03c BindAdapterHandler : 0x00000001     +1
   +0x040 UnbindAdapterHandler : 0x80421fda     nt!IoQueueWorkItem+0
   +0x044 PnPEventHandler  : 0x81119be8     +ffffffff81119be8
   +0x048 UnloadHandler    : 0x00000001     +1
   +0x04c ReservedHandlers : [4] 0xf57ccd64
   +0x05c CoSendCompleteHandler : 0x00000001     +1
   +0x060 CoStatusHandler  : (null)
   +0x064 CoReceivePacketHandler : 0xf57ccd9a     +fffffffff57ccd9a
   +0x068 CoAfRegisterNotifyHandler : 0x00000020     +20

netsh抓包原理与实战:绕过NDIS盲区的Windows内核级流量采集 网络抓包本质是获取数据链路层到传输层的原始字节流,其能力边界由底层捕获机制决定。Wireshark依赖NDIS中间层驱动,易受网卡Offload、杀软Hook及802.1X/EAPOL帧过滤影响;而netsh基于ETW(Event Tracing for Windows)内核事件追踪,直接订阅Microsoft-Windows-NDIS等Provider,在更早路径捕获NdisReceiveNetBufferList事件,保留完整Ethernet帧头、EAPOL Type=0x888e及TCP校验和卸载前状 阅读详情

相关推荐

S7-PLCSIM Advanced V3.0虚拟网口启动失败(错误-30)的NDIS驱动兼容性修复方案

虚拟网卡是工业自动化仿真中实现PLC离线调试与数字孪生的关键基础设施,其底层依赖Windows NDIS网络驱动接口规范。当S7-PLCSIM Advanced V3.0因NDIS资源竞争(如NDIS_STATUS_RESOURCES)报错-30时,本质是WinPcap等旧版Filter驱动与SIMATIC Virtual Network Adapter在绑定顺序、Miniport抢占和协议栈初始化阶段发生冲突。该问题不源于授权缺失,而根植于驱动加载优先级与硬件ID绑定策略失配。通过调整LowerFilte

weixin_29163857的博客 54

NDIS的NDIS_PROTOCOL_BLOCK和NDIS_OPEN_BLOCK的介绍

转载自:http://blog.sina.com.cn/s/blog_4de78d5901000bfd.html   本人简单的介绍一种更有效的基于NDIS包拦截技术。 大家都知道,NDIS协议驱动程序是通过填写一张NDIS_PROTOCOL_CHARACTERISTICS的表,并调用NDIS API 函数NdisRegisterProtocol进行注册。现在我们来关注一下NDIS_P

chenyujing1234的专栏 3537

微信消息防撤回技术原理与实战:从Hook到数据备份的完整指南

在即时通讯软件中,消息撤回功能为用户提供了纠错便利,但其背后的客户端-服务器交互机制与本地数据处理逻辑,构成了现代软件工程中典型的数据同步与状态管理案例。理解这一机制,需要从网络协议分析、本地数据存储和进程间通信等基础技术切入。通过Hook技术拦截关键函数调用,或监控网络流量过滤特定指令,可以在不破坏原有通信流程的前提下,实现消息的本地留存。这种技术实践不仅有助于深入理解客户端安全与逆向工程原理,更在数据备份、通信审计等场景中具有实用价值。本文聚焦于微信平台,详细剖析了防撤回的三大实现路径——本地数据Hoo

weixin_34302561的博客 307

SOCKS5

SOCKS5发展及现状: 网络发展到今天,SOCKS5也历经了几次大的修改。 现在SOCKS5通过特殊方法,可以实现以下功能: 1.局部指定进程使用SOCKS5访问网络。 2.全局访问网络。也就是让电脑上所有流量都走SOCKS5. 3.网络加速功能,就是玩国外的一些游戏的时候,网络卡,可以使用SOCKS5加速。 4.可以让每个进程不同IP,即在电脑上多开游戏或者多开模拟器,或者其它进程等,可以让每个进程不同外网IP来访问网络。 最初象我们,08年研究的时候,那个时间用HOOK API,也就是HOOK CON

QQ1289671197的博客 1505

API HOOK拦截指定进程网络数据包:原理、实现与避坑指南

网络数据包分析是安全研究与客户端调试的常见需求,传统抓包工具面对TLS加密和全机流量混杂时往往力不从心。API HOOK通过在目标进程内改写send/recv等系统API入口,在加密发生前直接截获应用层数据,天然具备进程级隔离能力,能精准还原指定进程的网络收发行为。本文从技术选型对比切入,解析NDIS、WFP、LSP与API HOOK的适用边界,并基于MinHook库演示DLL注入、钩子安装、日志采集等完整工程流程。同时针对注入崩溃、WSASend漏钩、TLS密文误判等高频问题给出排查实践,适合安全分析、恶

weixin_29327977的博客 322

API Hook拦截指定进程网络数据包:原理、实现与避坑指南

在Windows网络程序调试中,进程间通信与协议联调往往面临黑盒困境:Wireshark只能看到线缆上的密文,无法定位具体进程和调用上下文。API HOOK通过DLL注入将钩子植入目标进程地址空间,在Winsock的send/recv等函数入口拦截数据,直接读取应用层明文缓冲区,从而精确记录指定进程的收发内容。这种用户态方案无需内核驱动,特别适用于排查客户端后台发包、TLS封装前的协议分析及异步I/O场景的字节流追踪。围绕send/recv、WSASend/WSARecv等关键函数,结合Detours事务机

weixin_29313423的博客 325

Windows8核心态网络过滤研究

Windows 8是微软公司推出的最新的客户端操作系统,内部名称Windows NT 80。相对于Windows NT 5.x,其网络结构变化非常大,原有的TDI,NDIS系统挂接方法不再适用。在Windows8系统中,微软引入了两种新的网络过滤系统,WFP和NDISfilter。WFP (Windows Filtering Platform)其包含从用户态到核心态的一系列应用层,根据需...

weixin_30355437的博客 456

NDIS中间层 NDIS6过滤驱动开发笔记

详细 通俗的介绍NDIS中间层驱动 过滤驱动开发过程中遇到的问题入解决办法

NDIS HOOK实现方法

转载探索NDIS HOOK新的实现方法(1) NDIS HOOK是专业级防火墙使用的一种拦截技术,NDIS HOOK的重点是如何获得特定协议对应NDIS_PROTOCOL_BLOCK指针,获得了该指针,接下来就可以替换该协议所注册的收发函数,而达到拦截网络数据的目的。 获 得NDIS_PROTOCOL_BLOCK指针的方法一般是用NdisRegisterProtocol注...

weixin_30417487的博客 248

NDIS的实现程序NDIS的实现程序

NDIS的实现程序NDIS的实现程序NDIS的实现程序

基于Ndis Hook钩子技术开发的网络防火墙源代码

基于Ndis Hook技术开发的网络防火墙源代码

NDIS HOOK开发简单日志(3)-ndis版本

如果多平台网络驱动的时候,不可避免有些核心的结构是不同的,比方编译出现以下错误BindAdapterHandler : is not a member of _NDIS30_PROTOCOL_CHARACTERISTICS明显我的结构应该是_NDIS50_PROTOCOL_CHARACTERISTICS,但是vc编译的时候无法识别(我喜欢quicksys的框架,新版0.3.0支

2187

CYUSB3065配置CMOS

按照OG02B10的时序电路,在通过SCCB配置CMOS之前,需要三个电源上电,Xshutdown高电平和配置时钟电路。找到手册的第6章SCCB(跟IIC很像),可以看到SCCB的地址与SID引脚有关,这个需要到硬件原理图上确认下。这是Cypress的一个支持MIPI和UVC的模块,有例程支持OV5640,现在要替换替换成OG02B10。寄存器参数需要找到厂家的FAE,由他们提供,OG02B10的资料已经上传。(2)参考得宏的电路,时钟由主控提供,目前程序未实现。这里有两个重要参数需要搞定,摄像头的。

qq_40773212的博客 2948

ndis hook开发日志(2)-获取网卡信息

搞了半天,唉,还是读注册表获取网卡信息比较好,还有一个方式我也贴下面,关键是我还没弄明白下面是我的代码:PUNICODE_STRING uAdapName = Adapter->MyOpenBlock->RootDeviceName; PWCHAR p = RVATOVA(uAdapName->Buffer,

2576

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论

矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...

Tina的博客 4409

OPC UA 协议详解

OPC UA(统一架构)是新一代工业自动化标准通信协议,替代传统OPC Classic,具有跨平台、高安全性、标准化等优势。基于TCP协议,支持全平台部署,采用面向对象架构组织数据,提供实时读写、事件订阅、历史数据访问等功能。作为工业4.0核心协议,适用于智能制造、数字孪生等场景,能实现多品牌设备统一接入。相比Modbus和MQTT,OPC UA协议更规范安全但复杂度较高,是大型工业集群互联的主流选择。

eastyuxiao的专栏 731

ndis hook开发日志(2)-获取网卡信息 - Kevins的天空 http://rootsec.tk - 优快云Blog

导读: 搞了半天,唉,还是读注册表获取网卡信息比较好,还有一个方式我也贴下面,关键是我还没弄明白下面是我的代码:PUNICODE_STRING uAdapName = Adapter->MyOpenBlock->RootDeviceName; PWCHAR p = RVATOVA(uAdapName->Buf

xu的blog 1170

Catia二次开发QueryInterface的操蛋问题

探索了很久,尝试录制宏,打开部件属性窗口,然后随意设置一些属性(必须改变一些东西才能录制成功,否则不会录制到任何东西),再看录制的结果,发现原来CATIAAnalyze是从Product那里来的。例如获得一个部件的体积,找到相关接口CATIAAnalyze,但是这个部件的CATIAAnalyze的对象不知道如何获取。总结一下,写Catia二开代码,就像漂亮国那款《莫里秀》 又名《爸爸死哪了》的综艺节目,大部分时间都是在找爸爸!Catia二开很痛苦,明明已经找到接口类,但是却不知道怎么获得这个接口类的对象。

gergul的专栏 748

JiYuTrainer深度解析:破解极域电子教室控制的技术艺术

在数字化的教学环境中,极域电子教室作为广泛使用的教学管理软件,通过StudentMain.exe进程对学生端电脑实施全面控制。这种控制机制虽然便于教学管理,但也限制了学生的自主学习空间。JiYuTrainer应运而生,这款开源工具巧妙破解了极域电子教室的控制限制,让学生能够在观看教师演示的同时,自由操作自己的电脑。 ## 核心功能:重新定义机房学习体验 JiYuTrainer的核心价值在于其多

gitblog_01047的博客 144

STM32U575 ADC+DMA+UART数据采集实战:CubeMX配置避坑与代码实现

在嵌入式开发中,ADC采集与DMA传输是提升系统实时性的关键技术。通过DMA将ADC数据直接搬运到内存,可大幅降低CPU占用,实现高效连续采样。结合UART的DMA发送,能进一步解放CPU,适用于工业采集、信号监测等场景。本文以STM32U575为例,详解CubeMX中ADC、DMA、UART的配置要点,包括时钟树、DMAMUX映射、循环模式等,并给出代码实现与常见问题排查,帮助开发者快速构建稳定的数据采集链路。

weixin_29194255的博客 172

Python 爬取新浪财经 7x24(1): 下载数据

前言 最近在做一个需要很多财经数据的项目。于是想到可不可以通过爬虫来解决(尝试白嫖)。 提供财经数据的网站有很多个,其中比较靠谱和更新比较及时的应该是新浪7x24 live数据。 http://finance.sina.com.cn/7x24/?tag=0 这个问题有一定的难度,因为这个网页是动态加载的。每一次只会加载部分数据,而只有拉到底部才可以加载新的数据。 于是乎,我们要做的事情是: 下载数据 保存到数据库 本篇介绍如何下载数据。 代码 闲言少叙书归正文,代码的实现如下: import reque

ZJ_11701的博客 2905

用C#开发网络防火墙技术分析

用C#开发网络防火墙技术分析作者:不详  N-Byte网络守望者是一款单机版网络安全工具,简言之,就是一个用.NET开发的个人版防火墙。在N-Byte网络守望者1.0版的开发中,使用了NDIS Hook Driver技术来实现网络封包过滤功能,这使N-Byte网络守望者能够在网络层过滤网络封包,从而实现强大的功能。   由于软件的主程序是用C#写的,C#中没有提供具有类似DeviceI

shinerpipul的专栏 906

OpenClaw 保姆级 window部署

OpenClaw 保姆级 window部署 养龙虾

cs821984831的博客 298

JiYuTrainer终极指南:高效破解极域电子教室控制限制

JiYuTrainer是一款专业的极域电子教室破解工具,专注于解除学生端电脑控制限制,实现全屏广播窗口化功能,让用户在机房环境中重获操作自主权。这款软件采用多模块架构设计,通过驱动注入和API Hook技术,在不影响正常教学广播的前提下,为用户提供完整的极域电子教室破解方案。 ## 极域电子教室控制机制解析与破解需求 极域电子教室作为广泛使用的教学管理软件,通过StudentMain.exe进

gitblog_00563的博客 439

基于Matlab的磁力计校准(附源码)

磁力计沿传感器的 X、Y 和 Z 轴检测磁场强度。精确的磁场测量对于传感器融合以及确定航向和方向至关重要。为了用于航向和方向计算,需要校准典型的低成本MEMS磁力计,以补偿环境噪声和制造缺陷。一、理想磁力计理想的三轴磁力计沿正交 X、Y 和 Z 轴测量磁场强度。在没有任何磁干扰的情况下,磁力计读数测量地球磁场。如果在传感器通过所有可能的方向旋转时进行磁力计测量,则测量值应位于球体上。球体的半径是磁场强度。要生成磁场样本,请使用对象。出于这些目的,可以安全地假设每个方向的角速度和加速度为零。

珞瑜的博客 4520

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: IE最新发现的漏洞-MSIE (mshtml.dll) OBJECT tag vulnerability
下一篇: snort策略配置分析
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值