WFP 原理

(WIN7 32位开发驱动:  X86的纯净版的KEY: HTXFV-FH8YX-VCY69-JJGBK-7R6XP)
数据流处理: (入站和出站都是一样)
1. 一个包进入到了协议栈
2. 协议栈找到并发现一个shim(垫片),应该就是很多的sublayer注册的地方。
3. 该shim(垫片)调用该特定的sublayer层注册的Classfication分类进行处理。
4. 在分类处理期间,过滤器开始工作,进行条件匹配,如果条件匹配上,那么就开始调用对应的callout
5. 如果过滤器的结果是匹配的,调用对应的callout的处理函数,classfyFn()
6. 垫片执行最终的过滤决定(permit还是deny)

WFP的架构图:
Basic architecture of the Windows Filtering Platform diagram

TCP流量包分析: (PC基本上的场景都是客户端,所以只是针对客户端进行分析)
1. TCP链接建立
  • bind: FWPM_LAYER_ALE_BIND_REDIRECT_V4 (Windows 7 / Windows Server 2008 R2 only)
  • bind: FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4
  • connect: FWPM_LAYER_ALE_CONNECT_REDIRECT_V4 (Windows 7 / Windows Server 2008 R2 only)  ---链接重定向
  • connect: FWPM_LAYER_ALE_AUTH_CONNECT_V4         ----链接授权,允不允许连接
  • SYN: FWPM_LAYER_OUTBOUND_TRANSPORT_V4        ----发送SYN
  • SYN: FWPM_LAYER_OUTBOUND_IPPACKET_V4             ---IP层的SYN
  • SYN-ACK: FWPM_LAYER_INBOUND_IPPACKET_V4        
  • SYN-ACK: FWPM_LAYER_INBOUND_TRANSPORT_V4
  • FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4                 ----链接建立
  • ACK: FWPM_LAYER_OUTBOUND_TRANSPORT_V4
  • ACK: FWPM_LAYER_OUTBOUND_IPPACKET_V4
2. TCP的数据流的传输

Client (sender)

  • send
  • data: FWPM_LAYER_STREAM_V4 ---数据层
  • TCP segments: FWPM_LAYER_OUTBOUND_TRANSPORT_V4
  • IP datagrams: FWPM_LAYER_OUTBOUND_IPPACKET_V4

WFP开发之路:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/network/windows-filtering-platform-callout-drivers2
大致就是: 先学习WFP架构,学习windows架构和驱动,选择windows的驱动模式(用户还是内核),驱动编译,github的驱动示例,开发,编译,测试,调试,创建驱动包,给包签名然后发布等等.

WFP简介:
  • Callout驱动的目的,可以进行深度检查,可以决定哪些数据阻止,哪些允许,哪些可以传递到下一个过滤器,或者病毒厂商,可以匹配病毒特征。
  • 可以进行包的修改和重新注入到网络的包头。NAT地址转换,就是修改头进行转换。(DDProxy就可以直接修改UDP头)
  • 可以进行流量内容修改,可以删除或者替换特定的单词。
  • 流量日志,用于网络监控产品。
WFP中的Callout:
diagram illustrating the basic architecture of the windows filtering platform

Callout驱动提供额外的过滤函数,通过注册一个或者多个callout在一个filterEngine中实现。


参考:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/network/windows-filtering-platform-callout-drivers2
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363977(v=vs.85).aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值