SlideShare a Scribd company logo
1 of 7
RPC 漏洞的通用分析方法
Friddy 文
一.工具准备
1.IDA Pro Advanced 5.2(强大的静态逆向工具)
2.HexRays(强大的可以将汇编代码转换为高质量的 C 代码的 IDA 插件)
3.mIDA(极好的抽象 RPC 接口的 IDA 插件)
二.找到溢出点
1.补丁比较。
(1)保留没有更新的文件到文件夹 Old
(2)打补丁,将更新后的文件放到文件夹 New
(3)使用“Darun Grim”等类似的补丁比较工具进行比较,找到微软偷偷修改的地方
2.圈 day 类型
(1)FUZZ,估计忙活一年能 FUZZ 到两、三个已经是祖辈上烧了高香了。
(2) 静 态 分 析 , 通 过 IDA 找 常 见 容 易 溢 出 的 函 数 , 比 如
strcpy、lstrcpy、strcat、wcscpy、wcscat、sprintf 等等。汇编上,可以注意 rep movsd,,比如 ms08-
066 导致提权的 AFD.sys 就是使用了 rep movsd
(3)留意平时使用软件时的报错,可能就是溢出了。
三.朔源
1.下面 Friddy 就拿 ms08067 来举例子,不对之处请指正,见笑了。比如通过补丁比较工具分
析 netapi32.dll 找到了 sub_5FDDA180 子程序被微软修改了。
在 Functions 标签里面找到 sub_5FDDA180 双击进去
点击 sub_5FDDA180,右击选择 Chart of xrefs to,找到是被哪个函数调用了
可以看到
是 NetpwPathCanonicalize 调用了 sub_5FDDA180 这个子函数。下面看看
NetpwPathCanonicalize 这个函数:
在 IDA 的导出函数表中可以找到 NetpwPathCanonicalize:
下面的问题就是找到通过谁可以去调用 NetpwPathCanonicalize 了。查询《Windows network
services internals》一文,搜索 PathCanonicalize 关键字,可以查到以下信息:
######################################################################
The srvsvc interface is used to manage the lanmanserver service.
Interface Operation number Operation name
4b324fc8-1670-01d3-1278-5a47bf6ee188 v3.0: srvsvc //Coment by Friddy
0x00 NetrCharDevEnum
0x01 NetrCharDevGetInfo
0x02 NetrCharDevControl
0x03 NetrCharDevQEnum
…………
0x1e NetprPathType
0x1f NetprPathCanonicalize//这个就是我们想要找的调用的地方了
0x20 NetprPathCompare
……………….
0x24 NetrShareEnumSticky
######################################################################
原来我们要找的接口在 srvsvc.dll 中的 opcode 为 0x1f 的地方。
下面还是用 IDA 去逆向 srvsvc.dll
下面我们就来使用 mIDA 了,呼出 mIDA 的快捷键是 Ctrl+7,找到 opcode 为 0x1f 的地方
Opcode 为 0x1f 处的函数名为:sub_74FFDAE2。双击这个函数,
可以看到:
OK!调用 NetpwPathCanonicalize 的地方已经找到了。双击 call NetpwPathCanonicalize,可
以看到:
再双击 jmp ds:__imp_NetpwPathCanonicalize 可以看到:
果真在这里加载了 NETAPI32.DLL 中的 NetpwPathCannonicalize,说明我们找对了。
在 mIDA 的窗口中,选择 Opcode 为 0x1f 处的函数,右键选择 Decompile
可以得到接口的定义为:
######################################################################
[
uuid(4b324fc8-1670-01d3-1278-5a47bf6ee188),
version(3.0)
]
interface mIDA_interface
{
/* opcode: 0x1F, address: 0x74FFDAE2 */
long sub_74FFDAE2 (
[in][unique][string] wchar_t * arg_1,
[in][string] wchar_t * arg_2,
[out][size_is(arg_4)] char * arg_3,
[in][range(0,64000)] long arg_4,
[in][string] wchar_t * arg_5,
[in, out] long * arg_6,
[in] long arg_7
);
}
######################################################################
到此,朔源已经完成。
四.溢出
还是接着之前说的通过比较得到的溢出点,在 netapi32.dll 的 sub_5FDDA180 处右击选
择”Chart of xref from”,可以看到:
这里使用了 wcscpy 和 wcscat,溢出………………….
由于是讲解 RPC 漏洞的通用分析方法,不再对 ms08067 漏洞进入深入的分析。想对它进行
具体分析,可以使用 HexRays 将 sub_5FDDA180 和 sub_5FDDA26B 处逆向成 C 的代码,看
了不容易犯糊涂。
五.总结
RPC 相关的漏洞,由于介绍较少,使得对初学者无从下手,对这方面感兴趣的,可以加
Friddy 的 QQ568623 联系,也可以发邮件到:qianyang@ssyeah.com 一同探讨相关问题和提
出意见。
最后,在 2009 新年里,祝大家 0day 多多!
四.溢出
还是接着之前说的通过比较得到的溢出点,在 netapi32.dll 的 sub_5FDDA180 处右击选
择”Chart of xref from”,可以看到:
这里使用了 wcscpy 和 wcscat,溢出………………….
由于是讲解 RPC 漏洞的通用分析方法,不再对 ms08067 漏洞进入深入的分析。想对它进行
具体分析,可以使用 HexRays 将 sub_5FDDA180 和 sub_5FDDA26B 处逆向成 C 的代码,看
了不容易犯糊涂。
五.总结
RPC 相关的漏洞,由于介绍较少,使得对初学者无从下手,对这方面感兴趣的,可以加
Friddy 的 QQ568623 联系,也可以发邮件到:qianyang@ssyeah.com 一同探讨相关问题和提
出意见。
最后,在 2009 新年里,祝大家 0day 多多!

More Related Content

Similar to Rpc调试通用

恶性代码和分析方案
恶性代码和分析方案恶性代码和分析方案
恶性代码和分析方案Youngjun Chang
 
Voldemort Intro Tangfl
Voldemort Intro TangflVoldemort Intro Tangfl
Voldemort Intro Tangflfulin tang
 
Android -汇博
Android -汇博Android -汇博
Android -汇博dlqingxi
 
深入理解Andorid重难点
深入理解Andorid重难点深入理解Andorid重难点
深入理解Andorid重难点Bin Shao
 
Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案cao jincheng
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理Kay Yan
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理airsex
 
HDFS與MapReduce架構研討
HDFS與MapReduce架構研討HDFS與MapReduce架構研討
HDFS與MapReduce架構研討Billy Yang
 
Practical malware analysis part1 总结
Practical malware analysis part1 总结Practical malware analysis part1 总结
Practical malware analysis part1 总结Huang Toby
 
分布式索引构建
分布式索引构建分布式索引构建
分布式索引构建智杰 付
 
Mobile app security
Mobile app securityMobile app security
Mobile app securitydrewz lin
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
数据访问层开发实践
数据访问层开发实践数据访问层开发实践
数据访问层开发实践xcq
 

Similar to Rpc调试通用 (17)

恶性代码和分析方案
恶性代码和分析方案恶性代码和分析方案
恶性代码和分析方案
 
Voldemort Intro Tangfl
Voldemort Intro TangflVoldemort Intro Tangfl
Voldemort Intro Tangfl
 
Android -汇博
Android -汇博Android -汇博
Android -汇博
 
深入理解Andorid重难点
深入理解Andorid重难点深入理解Andorid重难点
深入理解Andorid重难点
 
Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案Heartbeat+my sql+drbd构建高可用mysql方案
Heartbeat+my sql+drbd构建高可用mysql方案
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
 
HDFS與MapReduce架構研討
HDFS與MapReduce架構研討HDFS與MapReduce架構研討
HDFS與MapReduce架構研討
 
Practical malware analysis part1 总结
Practical malware analysis part1 总结Practical malware analysis part1 总结
Practical malware analysis part1 总结
 
gnutool
gnutoolgnutool
gnutool
 
Gnu
GnuGnu
Gnu
 
分布式索引构建
分布式索引构建分布式索引构建
分布式索引构建
 
Mobile app security
Mobile app securityMobile app security
Mobile app security
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
数据访问层开发实践
数据访问层开发实践数据访问层开发实践
数据访问层开发实践
 
Jni文档
Jni文档Jni文档
Jni文档
 
建置Python開發環境
建置Python開發環境建置Python開發環境
建置Python開發環境
 

More from geeksec80

Sipoc diagram (1)
Sipoc diagram (1)Sipoc diagram (1)
Sipoc diagram (1)geeksec80
 
Sipoc diagram (1)
Sipoc diagram (1)Sipoc diagram (1)
Sipoc diagram (1)geeksec80
 
Sipoc diagram
Sipoc diagramSipoc diagram
Sipoc diagramgeeksec80
 
Python arsenal for re (1)
Python arsenal for re (1)Python arsenal for re (1)
Python arsenal for re (1)geeksec80
 
Python arsenal for re
Python arsenal for rePython arsenal for re
Python arsenal for regeeksec80
 
02 banking trojans-thomassiebert
02 banking trojans-thomassiebert02 banking trojans-thomassiebert
02 banking trojans-thomassiebertgeeksec80
 
44 con slides (1)
44 con slides (1)44 con slides (1)
44 con slides (1)geeksec80
 
44 con slides
44 con slides44 con slides
44 con slidesgeeksec80
 
Bh us 11_tsai_pan_weapons_targeted_attack_wp
Bh us 11_tsai_pan_weapons_targeted_attack_wpBh us 11_tsai_pan_weapons_targeted_attack_wp
Bh us 11_tsai_pan_weapons_targeted_attack_wpgeeksec80
 
Taking browsers fuzzing new
Taking browsers fuzzing newTaking browsers fuzzing new
Taking browsers fuzzing newgeeksec80
 
529 owasp top 10 2013 - rc1[1]
529 owasp top 10   2013 - rc1[1]529 owasp top 10   2013 - rc1[1]
529 owasp top 10 2013 - rc1[1]geeksec80
 
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_levelDeep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_levelgeeksec80
 
2012 04-16-ultrasurf-analysis (2)
2012 04-16-ultrasurf-analysis (2)2012 04-16-ultrasurf-analysis (2)
2012 04-16-ultrasurf-analysis (2)geeksec80
 
12058 woot13-kholia
12058 woot13-kholia12058 woot13-kholia
12058 woot13-kholiageeksec80
 
Https interception proxies
Https interception proxiesHttps interception proxies
Https interception proxiesgeeksec80
 
Introduction to ida python
Introduction to ida pythonIntroduction to ida python
Introduction to ida pythongeeksec80
 
Automated antlr tree walker
Automated antlr tree walkerAutomated antlr tree walker
Automated antlr tree walkergeeksec80
 

More from geeksec80 (19)

Sipoc diagram (1)
Sipoc diagram (1)Sipoc diagram (1)
Sipoc diagram (1)
 
Sipoc diagram (1)
Sipoc diagram (1)Sipoc diagram (1)
Sipoc diagram (1)
 
Sipoc diagram
Sipoc diagramSipoc diagram
Sipoc diagram
 
Python arsenal for re (1)
Python arsenal for re (1)Python arsenal for re (1)
Python arsenal for re (1)
 
Python arsenal for re
Python arsenal for rePython arsenal for re
Python arsenal for re
 
02 banking trojans-thomassiebert
02 banking trojans-thomassiebert02 banking trojans-thomassiebert
02 banking trojans-thomassiebert
 
44 con slides (1)
44 con slides (1)44 con slides (1)
44 con slides (1)
 
44 con slides
44 con slides44 con slides
44 con slides
 
Fuzz nt
Fuzz ntFuzz nt
Fuzz nt
 
Bh us 11_tsai_pan_weapons_targeted_attack_wp
Bh us 11_tsai_pan_weapons_targeted_attack_wpBh us 11_tsai_pan_weapons_targeted_attack_wp
Bh us 11_tsai_pan_weapons_targeted_attack_wp
 
Taking browsers fuzzing new
Taking browsers fuzzing newTaking browsers fuzzing new
Taking browsers fuzzing new
 
529 owasp top 10 2013 - rc1[1]
529 owasp top 10   2013 - rc1[1]529 owasp top 10   2013 - rc1[1]
529 owasp top 10 2013 - rc1[1]
 
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_levelDeep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
 
2012 04-16-ultrasurf-analysis (2)
2012 04-16-ultrasurf-analysis (2)2012 04-16-ultrasurf-analysis (2)
2012 04-16-ultrasurf-analysis (2)
 
12058 woot13-kholia
12058 woot13-kholia12058 woot13-kholia
12058 woot13-kholia
 
Https interception proxies
Https interception proxiesHttps interception proxies
Https interception proxies
 
Taint scope
Taint scopeTaint scope
Taint scope
 
Introduction to ida python
Introduction to ida pythonIntroduction to ida python
Introduction to ida python
 
Automated antlr tree walker
Automated antlr tree walkerAutomated antlr tree walker
Automated antlr tree walker
 

Rpc调试通用

  • 1. RPC 漏洞的通用分析方法 Friddy 文 一.工具准备 1.IDA Pro Advanced 5.2(强大的静态逆向工具) 2.HexRays(强大的可以将汇编代码转换为高质量的 C 代码的 IDA 插件) 3.mIDA(极好的抽象 RPC 接口的 IDA 插件) 二.找到溢出点 1.补丁比较。 (1)保留没有更新的文件到文件夹 Old (2)打补丁,将更新后的文件放到文件夹 New (3)使用“Darun Grim”等类似的补丁比较工具进行比较,找到微软偷偷修改的地方 2.圈 day 类型 (1)FUZZ,估计忙活一年能 FUZZ 到两、三个已经是祖辈上烧了高香了。 (2) 静 态 分 析 , 通 过 IDA 找 常 见 容 易 溢 出 的 函 数 , 比 如 strcpy、lstrcpy、strcat、wcscpy、wcscat、sprintf 等等。汇编上,可以注意 rep movsd,,比如 ms08- 066 导致提权的 AFD.sys 就是使用了 rep movsd (3)留意平时使用软件时的报错,可能就是溢出了。 三.朔源 1.下面 Friddy 就拿 ms08067 来举例子,不对之处请指正,见笑了。比如通过补丁比较工具分 析 netapi32.dll 找到了 sub_5FDDA180 子程序被微软修改了。 在 Functions 标签里面找到 sub_5FDDA180 双击进去
  • 2. 点击 sub_5FDDA180,右击选择 Chart of xrefs to,找到是被哪个函数调用了 可以看到 是 NetpwPathCanonicalize 调用了 sub_5FDDA180 这个子函数。下面看看 NetpwPathCanonicalize 这个函数:
  • 3. 在 IDA 的导出函数表中可以找到 NetpwPathCanonicalize: 下面的问题就是找到通过谁可以去调用 NetpwPathCanonicalize 了。查询《Windows network services internals》一文,搜索 PathCanonicalize 关键字,可以查到以下信息: ###################################################################### The srvsvc interface is used to manage the lanmanserver service. Interface Operation number Operation name 4b324fc8-1670-01d3-1278-5a47bf6ee188 v3.0: srvsvc //Coment by Friddy 0x00 NetrCharDevEnum 0x01 NetrCharDevGetInfo 0x02 NetrCharDevControl 0x03 NetrCharDevQEnum ………… 0x1e NetprPathType 0x1f NetprPathCanonicalize//这个就是我们想要找的调用的地方了 0x20 NetprPathCompare ………………. 0x24 NetrShareEnumSticky ###################################################################### 原来我们要找的接口在 srvsvc.dll 中的 opcode 为 0x1f 的地方。 下面还是用 IDA 去逆向 srvsvc.dll 下面我们就来使用 mIDA 了,呼出 mIDA 的快捷键是 Ctrl+7,找到 opcode 为 0x1f 的地方
  • 4. Opcode 为 0x1f 处的函数名为:sub_74FFDAE2。双击这个函数, 可以看到: OK!调用 NetpwPathCanonicalize 的地方已经找到了。双击 call NetpwPathCanonicalize,可 以看到:
  • 5. 再双击 jmp ds:__imp_NetpwPathCanonicalize 可以看到: 果真在这里加载了 NETAPI32.DLL 中的 NetpwPathCannonicalize,说明我们找对了。 在 mIDA 的窗口中,选择 Opcode 为 0x1f 处的函数,右键选择 Decompile 可以得到接口的定义为: ###################################################################### [ uuid(4b324fc8-1670-01d3-1278-5a47bf6ee188), version(3.0) ] interface mIDA_interface { /* opcode: 0x1F, address: 0x74FFDAE2 */ long sub_74FFDAE2 ( [in][unique][string] wchar_t * arg_1, [in][string] wchar_t * arg_2, [out][size_is(arg_4)] char * arg_3, [in][range(0,64000)] long arg_4, [in][string] wchar_t * arg_5, [in, out] long * arg_6, [in] long arg_7 ); } ###################################################################### 到此,朔源已经完成。
  • 6. 四.溢出 还是接着之前说的通过比较得到的溢出点,在 netapi32.dll 的 sub_5FDDA180 处右击选 择”Chart of xref from”,可以看到: 这里使用了 wcscpy 和 wcscat,溢出…………………. 由于是讲解 RPC 漏洞的通用分析方法,不再对 ms08067 漏洞进入深入的分析。想对它进行 具体分析,可以使用 HexRays 将 sub_5FDDA180 和 sub_5FDDA26B 处逆向成 C 的代码,看 了不容易犯糊涂。 五.总结 RPC 相关的漏洞,由于介绍较少,使得对初学者无从下手,对这方面感兴趣的,可以加 Friddy 的 QQ568623 联系,也可以发邮件到:qianyang@ssyeah.com 一同探讨相关问题和提 出意见。 最后,在 2009 新年里,祝大家 0day 多多!
  • 7. 四.溢出 还是接着之前说的通过比较得到的溢出点,在 netapi32.dll 的 sub_5FDDA180 处右击选 择”Chart of xref from”,可以看到: 这里使用了 wcscpy 和 wcscat,溢出…………………. 由于是讲解 RPC 漏洞的通用分析方法,不再对 ms08067 漏洞进入深入的分析。想对它进行 具体分析,可以使用 HexRays 将 sub_5FDDA180 和 sub_5FDDA26B 处逆向成 C 的代码,看 了不容易犯糊涂。 五.总结 RPC 相关的漏洞,由于介绍较少,使得对初学者无从下手,对这方面感兴趣的,可以加 Friddy 的 QQ568623 联系,也可以发邮件到:qianyang@ssyeah.com 一同探讨相关问题和提 出意见。 最后,在 2009 新年里,祝大家 0day 多多!