<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

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

    VSole2022-08-13 07:18:45

    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或用戶決定執行新掃描。

    該插件將詢問它是否應該使用默認包含的規則運行掃描,或者是否應該使用自定義規則文件。

    請注意,使用現有數據運行新掃描不會覆蓋先前找到的由規則標識的與先前存儲結果同名的項目。

    因此,再次運行掃描不會刪除現有的評論和狀態更新。

    在 VulFi 視圖中的右鍵單擊上下文菜單中,您還可以從結果中刪除項目或刪除所有項目。

    請注意,執行此操作后,任何評論或狀態更新都將丟失。

    調查

    每當您想檢查檢測到的可能存在漏洞的函數的實例時,只需雙擊所需行中的任意位置,IDA 就會將您帶到被識別為可能感興趣的內存位置。

    使用右鍵單擊和選項Set Vulfi Comment,您可以為給定實例輸入注釋(例如,證明狀態)。

    添加更多功能

    該插件還允許創建自定義規則。這些規則可以在 IDA 接口中定義(適用于單個功能)或作為自定義規則文件提供(適用于旨在涵蓋多個功能的規則)。

    界面內

    當您想要跟蹤在分析期間識別的自定義函數時,只需將 IDA 視圖切換到該函數,右鍵單擊其主體內的任意位置并選擇Add current function to VulFi

    自定義規則集

    也可以加載具有多個規則集的自定義文件。要創建具有以下結構的自定義規則文件,您可以在此處使用包含的模板文件。

    [    // 規則數組
        {
            "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
    
    函數調用param
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    VulFi,即“漏洞發現者”,它是一個IDA Pro插件,可以幫助廣大研究人員在二進制文件中查找漏洞。它的的主要目標是在一個單一視圖中給研究人員提供包含了各種函數交叉引用的相關信息。需要注意的是,搜索函數時需要精確匹配。這意味著or 不會被檢測為標準函數,因此在尋找潛在漏洞時不會被考慮。除此之外,VulFi將盡最大努力來過濾所有明顯的誤報。
    概述在windows系統上,涉及到內核對象的功能函數,都需要從應用層權限轉換到內核層權限,然后再執行想要的內核函數,最終將函數結果返回給應用層。本文就是用OpenProcess函數來觀察函數從應用層到內核層的整體調用流程。OpenProcess函數,根據指定的進程ID,返回進程句柄。NTSTATUS Status; //保存函數執行狀態。OBJECT_ATTRIBUTES Obja; //待打開對象的對象屬性。HANDLE Handle; //存儲打開的句柄。CLIENT_ID ClientId; //進程、線程ID. dwDesiredAccess, //預打開進程并獲取對應的權限。ObjectNamePresent = ARGUMENT_PRESENT ; //判斷對象名稱是否為空
    反射式DLL注入實現
    2022-05-13 15:59:21
    反射式dll注入與常規dll注入類似,而不同的地方在于反射式dll注入技術自己實現了一個reflective loader()函數來代替LoadLibaryA()函數去加載dll,示意圖如下圖所示。藍色的線表示與用常規dll注入相同的步驟,紅框中的是reflective loader()函數行為,也是下面重點描述的地方。
    本篇針對該JS中的字符串混淆進行還原。字符串是如何混淆的解密方式想要對字符串反混淆就要先分析該樣本是如何對字符串進行混淆的。而處于全局作用域的_0x1f1a68實際上也是對另一個函數的調用。
    前置知識分析Transformer接口及其實現類。transform()傳入對象,進行反射調用。構造調用鏈調用鏈構造原則:找調用關系要找不同名的方法,如果找到同名,再通過find usages得到的還是一樣的結果。找到InvokerTransformer類中的transform(),右鍵,點 Find Usages,找函數調用關系,最好找不同名的方法,調用了transform()。因為transform()調用transform()不能換到別的方法里,沒有意義。如果有一個類的readObject()調用了get(),那我們就可能找到了調用鏈。最終選擇TransformedMap這個類,因為TransformedMap類中有好幾處都調用了transform()。
    在所有函數調用發生時,向棧幀內壓入一個額外的隨機 DWORD,隨機數標注為“SecurityCookie”。在函數返回之前,系統將執行一個額外的安全驗證操作,被稱做 Security check。
    天王級視頻監控產品某華認證繞過漏洞CVE-2021-330*復現與分析。
    漏洞說明`Rocket.Chat`是一個開源的完全可定制的通信平臺,由`Javascript`開發,適用于具有高標準數據保護的組織。2021年3月19日,某高危漏洞在`HackerOne`被披露,并于2021年4月14日被官方修復,根據CVE信息,該漏洞可以實現特定條件遠程命令執行。
    因為程序肯定是病毒,我就不上傳殺毒網去查殺了。正常我們在分析一個未知惡意程序的時候,流程都是要先上傳殺毒網看看。 用PEID進行查殼,顯示未加殼,程序采用Delphi語言開發。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类