找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 1413|回复: 11

《WIN64驱动教程》补充[22]:内核级网络通信

  [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2014-9-24 23:51:48 | 显示全部楼层 |阅读模式
作者:Tesla.Angela

WINDOWS下进行网络通信无非就是使用WS2_32.DLL里的那一套函数,只不过在用户态下进行网络通信很容易被各种防火墙和HIPS拦截。而且各种ARK工具能轻易看出进程打开的端口,如果一个进程总是通过一个不知名的端口连接到一个或几个固定的IP,非常容易引起怀疑。我们的选择有两条路:1.通过HOOK来隐藏端口;2.直接把网络通信模板移至内核。今天我要讲的是方案2。在内核里进行网络连接,ARK看到的通信进程是SYSTEM,HIPS和防火墙一般也不会阻止SYSTEM进程的网络通信。

WINDOWS网络通信的模型目前有两种,一直是TDI,一种是WSK。前者从WIN2000就开始有了,但到了VISTA出现之后,微软说要废除它。第二种是VISTA之后出现的新模型,也是微软现在大力推荐使用的。考虑到NT5的用户数量大,而且TDI到现在(WIN8.1)还能使用。所以今天讲的是基于TDI的网络通信。

WINDOWS的网络通信模型很复杂,我第一次看的时候看的头晕脑胀的,但用简单的流程图来说就是:SOCKET_API -> NtDeviceIoControlFile -> AFD.SYS -> TDI.SYS -> TCPIP.SYS -> NDIS.SYS -> 网卡小端口驱动 -> HAL.DLL(直接IO)。当然,这个流程图是大大简化的,经过的驱动远远不止这么几个。如果要了解详情,推荐看《WINDOWS INTERNALS》。今天我讲的内核层网络通信,可以理解为直接发IRP给TDI.SYS进行网络通信。

使用方法:先打开EXE,然后用任意工具加载SYS,EXE就会接收到从驱动里传来的字符串FUCK。同时DEBUGVIEW会输出从EXE传入的字符串TEST。注意事项:运行EXE的机器和加载SYS的机器可以不是同一台,只需要把SYS的连接目标(127.0.0.1)改为EXE所在机器的IP即可。换句话说:EXE是服务端,SYS是客户端。最后声明:源码来自CheatEngine,有修改。
游客,如果您要查看本帖隐藏内容请回复

0

主题

15

回帖

0

精华

铜牌会员

积分
96
发表于 2014-9-24 23:59:51 | 显示全部楼层
好厉害,.

0

主题

18

回帖

0

精华

铂金会员

积分
2252
发表于 2014-9-25 13:41:49 | 显示全部楼层
{:soso_e103:}  rootkit上会用到,高级货

3

主题

28

回帖

0

精华

铜牌会员

积分
203
发表于 2014-10-16 13:00:30 | 显示全部楼层
高级货

2

主题

35

回帖

0

精华

铜牌会员

积分
173
发表于 2024-1-1 20:25:41 | 显示全部楼层
终于能看到这篇了

0

主题

37

回帖

0

精华

铜牌会员

积分
61
发表于 2024-1-3 19:07:51 | 显示全部楼层
学习了

0

主题

47

回帖

0

精华

贵宾会员

积分
89
发表于 2024-1-27 00:15:06 | 显示全部楼层
2024补充学习

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2024-1-27 08:33:31 | 显示全部楼层
我来学习

1

主题

118

回帖

0

精华

金牌会员

积分
856
发表于 2024-3-28 16:56:56 | 显示全部楼层
感谢楼主,学习学习。

0

主题

45

回帖

0

精华

铜牌会员

积分
53
发表于 2024-3-29 13:46:28 | 显示全部楼层
感谢分享

0

主题

27

回帖

0

精华

铜牌会员

积分
169
发表于 2024-6-17 11:52:27 | 显示全部楼层
看看内核调用网络通信的原理

0

主题

92

回帖

0

精华

铜牌会员

积分
111
发表于 2025-1-26 11:09:02 | 显示全部楼层
好好学习
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表