首页
论坛
课程
招聘
[讨论]不好意思,发重复了,请管理员帮忙删除,谢谢!
2011-4-13 16:54 2531

[讨论]不好意思,发重复了,请管理员帮忙删除,谢谢!

2011-4-13 16:54
2531
据《rootkits: subvering the windows kernel》一书,有两种方法使用row socket进行远程通信。在R3层使用系统API,如socket(AF_INET, SOCK_RAW, IPPROTO_IP),可以创建row socket。 在R0可以直接使用NDIS接口,进行raw socket通信。这两种通信方式,tcpview之类的工具都没有办法检测出来。
在R3层创建的raw socket由于持有句柄,所以可以通过NtQuerySystemInformation把其句柄信息查找出来(procexp里就实现了),也可以通过内核里的一些其他句柄遍历方法查找出其句柄。但是这样能够得到的关于raw socket的信息只有句柄名称和进程ID,非常不全面。
由于工作需要查找出这两种raw socket, 遍搜网络两天,看了很多资料,都没有找到非常好的方案。极度郁闷。TCP,UDP的信息可以分别从\device\tcp, \device\udp查出来,那么raw socket的信息可不可以从\device\rawip查出来呢?没有找到任何这方面的资料。 \device\ip与\device\rawip的区别又是什么,按理说,raw socket是直接操纵数据包的,应该是绕过TDI的,为啥还要有个\device\rawip呢? 我的理解是R3层的raw socket使用了IP协议,所以需要TDI。看了reactos的相关代码,没有看出头绪来。 tdifw里有使用filter监控rawip的行为,可以发查处raw socket的相关信息,但是这块没有深入研究,不到最后不想考虑通过挂钩反查的方案。
对于直接走NDIS的通信,目前没有找到任何检测的方案 悲剧啊
求这里的大牛过来给点意见, 不胜感激。

[招生]科锐逆向工程师培训46期预科班将于 2023年02月09日 正式开班

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回