能力值:
( LV8,RANK:130 )
|
-
-
2 楼
和LZ一样同求方法或思路。
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
菜鸟路过 不知道有啥好的方法,都是去网上找别人是怎么分析的
|
能力值:
( LV13,RANK:220 )
|
-
-
4 楼
回溯调试不是难点 ,你要想确定是文件的哪个字段触发的漏洞 首先要对这个格式了解,或者运气好一下子就能直接从内存buffer中对应到文件中的内容。
漏洞分析也是分好几个层次的
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
回溯调试不是难点 ,你要想确定是文件的哪个字段触发的漏洞 首先要对这个格式了解,或者运气好一下子就能直接从内存buffer中对应到文件中的内容。
漏洞分析也是分好几个层次的
instruder牛,要是运气不好呢?。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
楼主能拿到漏洞资料,牛人啊
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
职位所在,混口饭吃呗,不是牛人,呵呵
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
动态污点跟踪,可以完美解决这个问题
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
又翻出来这个帖子了。
漏洞成因分析完毕,可是引起异常的参数好像凭空蹦出来的一样,pdf文件解析来解析去都没发现有什么联系
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我现在正在做的就是这么个东西,通过Pin的动态污点跟踪,检测系统调用,思路如下:
1、首先监测到NtCreateFile调用,从中提取出欲打开的文件名,如果是待测试的文件(而不是什么窗体之类的),则在调用结束后记录下得到的文件句柄;
2、向下监测到NtReadFile调用,与保存的文件句柄进行对比,如果相同,则确定是对该文件进行读操作。提取出参数列表中的信息,可以得到buffer地址与读入的长度;
3、与2同步地,监测NtSetInformationFile调用,与保存的文件句柄进行对比,如果相同,则确定是对该文件进行文件指针移动的操作。从中可以提取出当前将文件指针移动到磁盘文件的偏移量多少的地方。如果没有移动,则文件指针在文件当前位置,后续的NtReadFile就是从这里开始继续读文件。
通过2和3的配合,就可以确定内存当中的那些位置是文件中的哪些tag字段了,后续对这些位置进行类似于内存读写断点的处理就可以了。
希望这个解答对lz有帮助,希望继续一起探讨~
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
ls说的这个东西,应该是个。。。呃。。。进程内存空间查看器,并将内存数据与文件对应起来。
如果能做出来,将是一个对于文件类漏洞攻击的非常好的分析工具。
这种工具一定是依赖动态调试的,我猜测更类似于一个OllyDBG的插件形式存在。
期待您做出成果,造福我等安全研究人员与hackers。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
Mark,谢谢楼主和楼上各位!
动态追踪分析的资料很少,bitblaze,pin debugger基本没有看到有人谈起,
楼主现在有在用污点追踪来分析吗?
时隔一年,相信有了更多的感悟,希望可以继续留下宝贵的经验
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
楼主现在依然不会用动态污点来分析,不过楼主手动追踪数据源比跑动态污点效率更高。
楼主已经不纠结文件格式漏洞了,现在纠结于逆向闭源的js引擎。
|
能力值:
( LV17,RANK:1820 )
|
-
-
14 楼
把你的污点追踪分析工具直接开源吧,或者单独发给我学习也行^_^
|
能力值:
( LV17,RANK:1820 )
|
-
-
15 楼
下面以前在分析漏洞时用到的一些方法,之前论坛也有人问过,顺手帖下:
(a)污点追踪分析:标记文件内容为污点,再使用ida 污点分析的相关插件来分析寄存器对应的文件内容,结合010editor文件格式分析脚本来定位文件结构。
(b)执行指令比对:记录正常文件与异常文件的执行指令(od、immdbg都有trace功能),然后再作代码diff,比对代码的差异性,再根据文件内容的差异性整体分析。
(c)条件消息断点:在一些可能导致漏洞的变量都设置条件消息断点,在log中记录他的值,不少变量都会被循环操作的,根据变量记录的结果,找到其中的规律来定位文件结构。
(d)假设法:有时分析漏洞真的是靠猜的,假设对应某个文件结构,再调试分析去证实。
(e)开源软件符号表加载:比如分析libpng漏洞,优先找个使用libpng且开源并提供有符号的软件,比如Firefox,分析libpng时直接使用firefox符号表去调试firefox就很容易定位结构,libpng函数也直接识别,或者你也可以直接编译libpng制作符号表。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
17 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
现在倒是做出了一个动态污点跟踪的系统,效率还可以。九月份开完个会之后希望在版上放出来,大家有兴趣的可以帮忙测试一下
|
能力值:
( LV12,RANK:200 )
|
-
-
19 楼
期待ing
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
期待+1。我最近也在看动态污点分析方面的东西,十分不解的是,如何能够对污点数据进行标记并检测流向?关于理论看得十分熟悉,但是实际不知道该如何操作。目前刚用pin插装获得一些列指令对内存的读取地址。求赐教。
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
污点跟踪的重点就是污点数据流传播逻辑。核心就是对指令集所有指令的数据处理和传送进行解析,包括显式操作数和隐式操作数。
所以,一般两套方案:很多比较成熟的系统引入中间语言,就是构造一个小的原子操作集合,将指令集的所有指令翻译为这些中间语言操作的序列,并对这几种操作来做污点数据流传播判定。另一套方案就是直接对所有指令进行语义解析,编写对应的模拟代码。中间语言对有些指令的翻译可能存在错误。我的系统采用了第二套,对x86指令集进行了逐条处理,包括xmm。缺点就是代码量太大了,写了一年多。
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
我现在想实现一个功能:输入数据后,检测这组数据流过指定路径。现在的思路是,用pin对基本块进行插装,,然后写一个count++功能的函数。对数据进行污点标记,然后如果发现流过指定位置就执行count++这个函数,检查结果就知道是不是流过了。
目前遇到的技术难点就是,污点标记和跟踪这块,找了很多资料都只是大概介绍污点的原理,没有具体的例程,不知道如何开始。能否有简单例程赐教?
|
|
|