首页
社区
课程
招聘
[原创]NDIS中间层透明加密系统设计文档
发表于: 2014-2-7 15:08 7952

[原创]NDIS中间层透明加密系统设计文档

2014-2-7 15:08
7952

N久以前的一个项目了,今天整理文档的时候发现。回想当初做的该项目,虽然不新颖,也折腾了挺久,关于附件是NDIS透明加密的设计的文档。但是是作为xp的驱动实现的,如今xp也即将渐渐消失,发此贴纪念一下,也希望能给正在学习此内容的同学一些帮助


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 5
支持
分享
最新回复 (15)
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主博览群书,厚积薄发是我的榜样!
2014-2-7 15:23
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
这东西这么搞太复杂了

只需要在中间层截获需要加解密的包,然后把包内容传到应用层:
1、对于发送出去的包,应用层对整个以太网包直接加密后,以socket方式发送到网络对端;网络对端收到数据包后,直接解密得到原始以太网包,然后还是通过中间层驱动,直接向本机转发这个以太网包就够了。
2、中间层收进来的数据包,可以不管。。。。只需要监听指定端口发来的数据(上述步骤1来的socket数据),然后解密,解密后通过中间层驱动提交到协议栈(这一步实际在步骤1说了)

总结一句就是,加解密以及规则什么的,这些都在应用层做,不要搞到内核去了。
2014-2-7 15:44
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
干脆连截取数据包都放在r3
r0负责堵漏就好……
2014-2-7 17:47
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
不是所有的数据包你都在r3抓的到到的

楼主这个东西实际上就是个自定义协议的vpn,就这点而言,中间层是不合适的
2014-2-7 18:28
0
雪    币: 182
活跃值: (178)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
额……我当时的想法是对局域网所有传输的数据包进行加密,保证内网安全,也就是说不是做成端到端的软件,所以才考虑用中间层截获数据包的,因为中间层可以获取到几乎所有数据包然后在用户不知不觉中加密,做到透明……
2014-2-7 18:52
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
即使如此,按我那个方式,一样可以做到,
具体来说,你这么做,实际上那些要被加解密的数据是只可能在内网流通的,你所有机器都同时监听同一个udp端口,收到后做解密然后转发到本机协议栈,发出去的做加密,然后直接发到目的机器的那个udp端口……一样的效果

关于目的机器的确定,ip包来说,直接ip就是了……非ip包,因为你的目的是防止数据外流,而非ip包是不可能外流的,只可能在局域网……所以就可以不管
2014-2-7 19:26
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
抓不到的不准往外发
2014-2-7 20:40
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
但是你这个设计逻辑似乎有可能被绕过吧……

顺便说句……我以前还有个设想……用虚拟网卡驱动做做物理隔离,不用网线,不过实现太复杂了
2014-2-7 20:42
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
为什么被绕过……再者,所谓虚拟网卡实现那东西,这正是我上面没说完的……中间层虽然也能有一样的效果,不过用端口驱动实现虚拟网卡才是最合适的

还是那句话,这东西本质上就是个自定义协议的vpn
2014-2-7 21:05
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
嗯,是的……
2014-2-7 23:00
0
雪    币: 182
活跃值: (178)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
12
道理是对,但“应用层对整个以太网包直接加密后,以socket方式发送到网络对端” 意思是我的数据还要实现经过应用层程序处理?那我想对QQ数据也加密呢?
2014-2-8 00:03
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
这个本来就是要求通信的两端都必须有你的程序的……比如按照即使按照楼主之前的思路,还是q来说,他如果直接把q发出去的数据加密了……腾讯那边服务器不是一样不认识这些加密数据……这个和vpn是一样的情况……你用vpn,还不是一样是客户端和服务器端分别做了加解密的
2014-2-8 08:04
0
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
多谢楼主分享,学习下
2014-2-8 10:45
0
雪    币: 182
活跃值: (178)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
15
好吧,用到Q就涉及到外网了,我之前就每主机装驱动,局域网各种数据FTP telnet 飞秋都可以加密。如果应用层的话,怎对FTP telnet 飞秋加密?
2014-2-8 11:09
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
有区别么。。。。

直接在发出数据时,整个以太网包传到应用层,加密后以udp的socket发到目的ip,目的ip收到后,解密得到原始以太网包,然后通过驱动转发到本机协议栈。。。。
2014-2-8 11:55
0
游客
登录 | 注册 方可回帖
返回
//