首页
社区
课程
招聘
[求助]RPC编程
发表于: 2008-12-2 13:40 8192

[求助]RPC编程

2008-12-2 13:40
8192
我看到有些exploit里对rpc的调用是直接用pipe发送stub数据实现的,我想知道stub的结构怎么得到的?应该每个函数对应的stub结构不一样,不会有文档具体说明的阿?难道是跟踪系统根据idl生成的stub得到的?

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 5167
活跃值: (4037)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
2
构造stub data就是看IDL,没别的好办法。你可以用idl生成c,发包、抓包,直接看stub data。
那些用pipe发送的exploit只不过是想脱离idl,或者他们最初stub data的来源就是抓win32 api发出去的包。
2008-12-3 09:40
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用ruby,python写的脚本只能构造stub data,不能用idl,那些写rpc的框架的大牛应该把stub data的结构都得到了,但是为什么我google不到呢?
不懂怎么抓包看,还是老老实实的用idl了。
2008-12-3 11:43
0
雪    币: 5167
活跃值: (4037)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
4
你说的"那些写rpc的框架的大牛",他们就是通过IDL得到格式的啊,你指望他们通过什么手段得到呢,这个IDL到数据流的转换是规范的,所谓序列化、反序列化就是这个过程。你Google不到是因为没有这种必要写这种文档,手头有IDL就有一切。我想我知道你问题出在哪了,你用wireshark抓点系统发送出去的RPC的报文看看,至少把整数、字符串的常用序列化模式摸清了,就不会再问这个问题了。

你提ruby、python,想必是在照抄metasploit和core impacket的东西吧。他们可不就是从IDL得到stub data格式的。
2008-12-3 13:23
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
http://msdn.microsoft.com/en-us/library/cc213372.aspx
http://www.hsc.fr/ressources/articles/win_net_srv/index.html

MSRPC.rar
上传的附件:
2008-12-3 14:08
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
6
stub里主要是函数的参数信息,了解了其格式之后,可以根据函数参数写出stub里的内容。
metasploit 他发的那个DCE RPC请求包wireshark不能解析出函数的参数信息,也许是格式不够规范,白细胞发的那个MS08-067 POC所构造的包wireshark能完全解析。

scz像传说中的一样热心,你的主页好久不能上老。
2008-12-3 14:13
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
顺便说一声,VMWare中的RPC有问题
用VMWare来做试验肯定失败……
(我用正常RPC程序试了N次)
2008-12-3 14:30
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=better;544761]http://msdn.microsoft.com/en-us/library/cc213372.aspx
http://www.hsc.fr/ressources/articles/win_net_srv/index.html

MSRPC.rar[/QUOTE]

太谢谢啦!!!!

我在看白细胞的那个代码,就是不明白stub的数据和idl参数怎么对应的才问的,只能靠猜,现在总算明白溢出是在RtlInitUnicodeStringEx函数里了。

谢谢楼上两位!!!
2008-12-3 15:40
0
雪    币: 5167
活跃值: (4037)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
9
你这里提到的wireshark未能解析完全的原因是HDM的框架目前默认anti-ids/ips,他的bind报文你与那些能被wireshark解析成功NetPathCanonicalize()时出现的bind报文对比一下即可看出多了一批接口ID,目前的wireshark没有处理这种干挠,后续解码时会认为前面bind失败。除了HDM的exploit,其他人的代码几乎都没有默认进行anti-ids/ips,wireshark能认出来。主页是因为dfbb师兄的托管主机不能继续用了,所以挪了,给你留了消息,谢谢关注。
2008-12-4 11:55
0
雪    币: 5167
活跃值: (4037)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
10
你讲这个的完整上下文是啥啊?

我们调试时基本都是在VMware中啊。
2008-12-4 11:58
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
11
谢谢scz解答了我一直没弄明白的问题。
已收到消息,原来挪地方了。
2008-12-4 14:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
用wireshark (ethereal的正式名称)截下包就可以看到了,包的内容都分析的很好的。

最开始都会用C++写成客户端调用RPC的,为了减小程序体积,就把调用过程收发的数据包截下来,直接用脚本语言发。

我的VMWARE仿佛没出现问题,呵呵。
to:
顺便说一声,VMWare中的RPC有问题
用VMWare来做试验肯定失败……
(我用正常RPC程序试了N次)
2008-12-30 16:12
0
游客
登录 | 注册 方可回帖
返回
//