0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一款漏洞查找器(挖漏洞的有力工具)

jf_Fo0qk3ln 来源:系统安全运维 2023-05-09 09:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

VulFi,即“漏洞发现者”,它是一个IDA Pro插件,可以帮助广大研究人员在二进制文件中查找漏洞。

它的的主要目标是在一个单一视图中给研究人员提供包含了各种函数交叉引用的相关信息。

对于可以使用Hexrays反编译器的情况,该工具还可以尝试排除针对这些函数的调用。

注意事项

在运行VulFi之前,请确保已经了解了你说要测试的代码,然后尝试识别所有的标准函数(例如strcpy和memcpy等),然后确保它们正确命名。

插件是大小写不敏感的,因此MEMCPY、Memcpy和memcpy都是可以识别的。

需要注意的是,搜索函数时需要精确匹配意味着or (或任何其他变体)不会被检测为标准函数,因此在寻找潜在漏洞时不会被考虑。

除此之外,VulFi将尽最大努力来过滤所有明显的误报

请注意,虽然插件与特定架构没有任何联系,但某些处理器不完全支持指定类型,在这种情况下,VulFi 将简单地将所有交叉引用标记潜在危险的标准函数,以便您继续进行手动分析. 在这些情况下,您可以从插件的跟踪功能中受益。

安装

将vulfi.py、vulfi_prototypes.json和vulfi_rules.json文件放在 IDA 插件文件夹 ( cp vulfi* ) 中。

用法

扫描

要启动扫描,请从顶部栏菜单中选择Search>选项。

VulFi这将启动新的扫描,或者它将读取存储在idb/i64文件中的先前结果。每当您保存数据库时,数据都会自动保存。

扫描完成或加载先前的结果后,将显示一个包含以下列的视图

IssueName - 用作可疑问题的标题。
FunctionName - 函数的名称。
FoundIn - 包含可能感兴趣的引用的函数。
地址- 检测到的呼叫的地址。
状态- 审查状态,初始Not Checked分配给每个新项目。其他状态是False Positive和。这些可以使用给定项目上的右键单击菜单进行设置,并且应该反映给定函数调用的手动审查结果。SuspiciousVulnerable
优先级- 尝试将更有趣的呼叫优先于不太有趣的呼叫。可能的值为High和。优先级与文件中的其他规则一起定义。MediumLowvulfi_rules.json
评论- 给定项目的用户定义评论。

idb如果/文件内没有数据i64或用户决定执行新扫描。

该插件将询问它是否应该使用默认包含的规则运行扫描,或者是否应该使用自定义规则文件。

请注意,使用现有数据运行新扫描不会覆盖先前找到的由规则标识的与先前存储结果同名的项目。

因此,再次运行扫描不会删除现有的评论和状态更新。

3bce174c-ee05-11ed-90ce-dac502259ad0.gif

在 VulFi 视图中的右键单击上下文菜单中,您还可以从结果中删除项目或删除所有项目。

请注意,执行此操作后,任何评论或状态更新都将丢失。

调查

每当您想检查检测到的可能存在漏洞的函数的实例时,只需双击所需行中的任意位置,IDA 就会将您带到被识别为可能感兴趣的内存位置。

使用右键单击和选项Set Vulfi Comment,您可以为给定实例输入注释(例如,证明状态)。

添加更多功能

该插件还允许创建自定义规则。这些规则可以在 IDA 接口中定义(适用于单个功能)或作为自定义规则文件提供(适用于旨在涵盖多个功能的规则)。

界面内

当您想要跟踪在分析期间识别的自定义函数时,只需将 IDA 视图切换到该函数,右键单击其主体内的任意位置并选择Add current function to VulFi

3c08b7ee-ee05-11ed-90ce-dac502259ad0.gif

自定义规则集

也可以加载具有多个规则集的自定义文件。要创建具有以下结构的自定义规则文件,您可以在此处使用包含的模板文件。

[    // 规则数组
    {
        "name" : " RULE NAME " , // 规则的名称
        "alt_names" :[
             " function_name_to_look_for "  // 应与此规则中定义的条件匹配的所有函数名称的列表
        ],
        "wrappers" : true ,     // 也寻找上述函数的包装器(注意包装的函数也必须匹配规则)
        "mark_if" :{
             "High" : " True " ,   // If 计算结果为 True,标记为高优先级(参见下面的规则)
            “中”:“假”,//如果计算结果为真,则标记为优先中(参见下面的规则)
            “低”:“假”  //如果计算结果为真,优先标记低(见下面的规则)
        }
    }
]

查找所有对函数的交叉引用malloc并检查其参数是否不是常量以及是否检查函数的返回值的示例规则如下所示:

{
     “名称”:“可能的空指针取消引用”,
     “ alt_names” :[
malloc ”,
         “ _ malloc” ,
         “. malloc
    ],
    “包装器”:假,
     “mark_if”:{
         “高”:“不是 param[0].is_constant() 而不是 function_call.return_value_checked() ”,
         “中”:“假”,
         “低”:“假”
    }
}

规则

可用变量

param[]: 用于访问函数调用的参数(索引从 开始0)
function_call:用于访问函数调用事件
param_count: 保存传递给函数的参数计数

可用功能

参数是否为常数:param[].is_constant()
获取参数的数值:param[].number_value()
获取参数的字符串值:param[].string_value()
调用后参数是否设置为null:param[].set_to_null_after_call()
是否检查函数的返回值:function_call.return_value_checked()

例子

标记对第三个参数大于 5 的函数的所有调用:param[2].number_value() > 5
标记对第二个参数包含“%s”的函数的所有调用:"%s" in param[1].string_value()
标记对第二个参数不是常量的函数的所有调用:not param[1].is_constant()
标记对函数的所有调用,其中根据等于参数数量的值验证返回值:function_call.return_value_checked(param_count)
标记对返回值针对任何值进行验证的函数的所有调用:function_call.return_value_checked()
标记对一个函数的所有调用,其中从第三个开始的参数都不是常量:all(not p.is_constant() for p in param[2:])
标记对任何参数为常量的函数的所有调用:any(p.is_constant() for p in param)
标记对函数的所有调用:True

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    809

    浏览量

    42817
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51113
  • 漏洞
    +关注

    关注

    0

    文章

    205

    浏览量

    15894

原文标题:一款漏洞查找器(挖漏洞的有力工具)

文章出处:【微信号:菜鸟学信安,微信公众号:菜鸟学信安】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Flash强制启动视频漏洞修补工具

    Flash强制启动视频漏洞修补工具 
    发表于 10-15 11:22

    欢迎共同讨论matlab 漏洞

    `matlab 给我们计算带来极大方便。但其本身也存在漏洞,现在我们来讨论下,以便我们这群MATLAB爱好者能在使用MATLAB时,注意这些问题,避免犯错。如果你发现MATLB的其他漏洞
    发表于 04-29 12:01

    AlphaFuzzer漏洞挖掘工具的使用

    AlphaFuzzer是一款多功能的漏洞挖掘工具,到现在为止,该程序以文件格式为主。1.0版本主要包含了:个智能文件格式的漏洞挖掘框架。
    发表于 07-15 06:44

    浅析Linux系统开源漏洞检测工具

    jSQL是一款轻量级安全测试工具,可以检测SQL注入漏洞。它跨平台(Windows, Linux, Mac OS X, Solaris)、开源且免费。
    发表于 07-23 07:21

    我是如何修复Windows系统的系统漏洞

    因而随着时间的推移,旧的系统漏洞会不断消失,新的系统漏洞会不断出现,系统漏洞问题也会长期存在,这就是为什么要及时为系统打补丁的原因。 .使用windowsupdate 步骤01打开
    发表于 12-13 10:01

    怎么设计一款基于渗透性测试的Web漏洞扫描系统?

    Web漏洞扫描原理是什么?怎么设计一款基于渗透性测试的Web漏洞扫描系统?
    发表于 05-10 06:07

    英国发布漏洞披露工具包,以帮助公司实施改进漏洞披露

    英国国家网络安全中心(NCSC)发布了项指南——“漏洞披露工具包”,以帮助公司实施漏洞披露流程或在已建立漏洞披露流程的情况下进行改进。该指
    的头像 发表于 09-16 16:44 2162次阅读
    英国发布<b class='flag-5'>漏洞</b>披露<b class='flag-5'>工具</b>包,以帮助公司实施改进<b class='flag-5'>漏洞</b>披露

    漏洞挖掘工具afrog软件简介

    afrog 是一款性能卓越、快速稳定、PoC 可定制的漏洞扫描(挖洞)工具,PoC 涉及 CVE、CNVD、默认口令、信息泄露、指纹识别、未授权访问、任意文件读取、命令执行等多种漏洞
    的头像 发表于 09-13 09:06 2032次阅读

    【Tools】漏洞扫描工具DongTai

    DongTai是一款交互式应用安全测试(IAST)产品,支持检测OWASP WEB TOP 10漏洞、多请求相关漏洞(包括逻辑漏洞、未授权访问漏洞
    的头像 发表于 11-25 10:35 1190次阅读

    一款支持弱口令爆破的内网资产探测漏洞扫描工具SweetBabyScan

    轻量级内网资产探测漏洞扫描工具:SweetBabyScan,是一款支持弱口令爆破的内网资产探测漏洞扫描工具,集成了Xray与Nuclei的P
    的头像 发表于 12-02 09:23 6830次阅读

    一款支持弱口令爆破的内网资产探测漏洞扫描工具

    甜心宝贝是一款支持弱口令爆破的内网资产探测漏洞扫描工具,集成了Xray与Nuclei的Poc。
    的头像 发表于 12-14 09:48 4831次阅读

    一款图形化高危漏洞利用工具

    图形化高危漏洞利用工具:Apt_t00ls,这款工具集成了各种OA系统的高危漏洞利用、文件落地方式、杀软进程对比、反弹shell生成等功能。
    的头像 发表于 01-13 09:49 2252次阅读

    XSS漏洞扫描工具

    XSpear是一款基于RubyGems的的XSS漏洞扫描。拥有常见的XSS漏洞扫描攻击测试功能。还可进行参数分析。
    的头像 发表于 01-17 09:28 2709次阅读

    市场上可用的十大最佳漏洞扫描工具

    OpenVAS漏洞扫描漏洞分析工具,由于其全面的特性,可以使用它来扫描服务和网络设备。
    的头像 发表于 03-08 09:49 5429次阅读

    常见的漏洞扫描工具

    漏洞扫描工具是现代企业开展渗透测试服务中必不可少的工具,可以帮助渗透测试工程师快速发现被测应用程序、操作系统、计算设备和网络系统中存在的安全风险与
    的头像 发表于 06-28 09:42 3020次阅读
    常见的<b class='flag-5'>漏洞</b>扫描<b class='flag-5'>工具</b>