首页
社区
课程
招聘
win7 ie8中dns调用hook不到recvfrom的问题
发表于: 2013-11-26 10:42 7215

win7 ie8中dns调用hook不到recvfrom的问题

2013-11-26 10:42
7215
详情如下,为了研究ie的dns请求过程,  在win7中hook ie8的sendto和recvfrom等相关函数, 可以成功的hook到sendto,但是无法hook到recvfrom函数, 于是我又写了一个spi, 加载后断点可以进入wspsendto中但是无法进入wsprecvfrom中.

难道ie中的dns请求不是使用recvfrom来接收udp报文的吗, 想不明白, 希望大神指导一下, 谢谢~

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 1453
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也想知道答案 帮你顶一下
2013-11-26 10:45
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在HOOK的同时,也打开网卡监听 , 看是不是有udp 的包进来 。

另外, 你看看你sendto 里面的内容。是真的DNS查询报文吗?

在同局域网的另一台机器上打开看看能收到这个包不。
2013-11-26 10:50
0
雪    币: 12
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
抓包了之后看到udp报文确实回来了, sendto里面也是向8.8.8.8的53的dns报文的. 网络请求是成功的, 页面可以打开,就是hook和断点都进入不了recvfrom的相关函数..
2013-11-26 10:55
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你在sendto 的位置反编译。 看看周围有没有调用 recvfrom 的地方?

一般的代码模型下。 这两者是靠在一起的。
2013-11-26 11:01
0
雪    币: 12
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
调试的时候发现调用了一堆dnsapi.dll里面的函数, 没有找到recvfrom, 应该是没有运行到吧
2013-11-26 11:13
0
雪    币: 12
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
刚才看了个帖子说dns调用是个rcp的过程, 没明白, 有人能解释下吗,
2013-11-26 11:14
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
所谓RCP那个是远程过程调用
也就是类似进程外COM

IE进程通过某种方式(比如管道,LPC PORT等等)向DNS服务进程发送DNS解析请求,DNS服务进程再通过socket向DNS服务器查询域名所属IP,然后DNS服务进程再以同样方式将查询结果返回给发起DNS查询操作的进程

整个过程中,IE进程并不需要发送或者接收任何DNS的UDP包

你当然挂不到
2013-11-26 12:16
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
RPC才是远程过程调用 。。。 remote procedure call... 而且楼主上面也说了。 抓包是有dup包的。
2013-11-26 13:05
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
所以你hook到的sendto 的内容与你抓到的内容一样吗?
2013-11-26 13:07
0
雪    币: 12
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
是的, 现在在跟rpcstringbindingcompose 这个函数, 希望能有所收获
2013-11-26 13:12
0
雪    币: 12
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
如果这样的话,为什么断点可以进入sendto呢, 不解..
2013-11-26 13:28
0
雪    币: 183
活跃值: (1058)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
正解。可以抓包看下 是哪个进程发的请求。
2013-11-26 15:18
0
雪    币: 451
活跃值: (117)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
ntdll!NtDeviceIoControlFile 可以吧
2013-11-26 21:18
0
雪    币: 12
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
问题解决了, ie解析dns报文使用的getaddrinfo, 这个api先使用sendto发送了dns报文, 然后调用了select, 之后调用了wsaioctl来读取数据, 读取数据赚到了自定义的回调函数中, 使用的是完成端口模式, 多以没有调用recvfrom.

谢谢大家的帮助
2013-11-27 14:54
0
游客
登录 | 注册 方可回帖
返回
//