吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

二進制SCA指紋提取黑科技: go語言逆向技術

IT科技蘇辭 ? 來源:IT科技蘇辭 ? 作者:IT科技蘇辭 ? 2022-10-13 22:20 ? 次閱讀

二進制SCA指紋提取黑科技: go語言逆向技術

華為云DevCloud軟件開發平臺在2022華為伙伴暨開發者大會重磅推出了4大新能力,其中的二進制成分分析安全檢測能力,能夠實現對開源軟件漏洞的全面排查、快速精準定位問題、并迅速響應修復;本文將對什么是二進制SCA檢測服務以及該服務的優勢進行解讀。

什么是二進制SCA檢測

SCA(Software Composition Analysis)軟件成分分析,指通過對軟件源碼、二進制軟件包等的靜態分析,挖掘其所存在的開源合規、已知漏洞等安全合規風險,是一種業界常見的安全測試手段(目前華為云提供二進制SCA檢測服務,源碼SCA檢測服務后續正式發布)。

二進制SCA檢測服務,檢測對象為二進制軟件包/固件,直接從二進制文件中提取常量字符串、部分類名稱、函數名稱等特征信息,再運用匹配算法進行相似度計算,根據相似度門限來檢測出引用的開源軟件名稱和版本號。

二進制SCA檢測對比源碼SCA檢測的優勢

無需依賴源碼,操作方便

用戶只需上傳二進制軟件包/固件,服務會采用靜態檢測技術,不用構建運行環境,不用運行程序即可快速分析二進制軟件包/固件中存在的安全風險問題,并輸出一份專業的分析報告。

poYBAGNIHqaAXlLnAAD_pOIaJ3E452.png

圖:二進制成分分析-檢測處理流程

二進制SCA指紋提取黑科技:Go語言逆向技術之---恢復函數名稱算法

在對程序做安全審計、漏洞檢測時,通常都需要對程序做逆向分析,我們在沒有符號表的情況下,提出了一種恢復函數名稱的算法,方便對Go語言二進制文件進行逆向分析,提升分析效率。

Go語言是最近幾年發展非常火的一種語言,它具備和C/C++一樣的運行速度快的優點,同時又具備開發效率高,支持包管理機制高階語言特點。其編譯出來的二進制文件格式和C/C++一樣運行在Linux平臺下是elf格式,運行在windows平臺下是pe格式,但同時在二進制文件的內部細節上Go語言有自己特有的屬性,二進制逆向人員可以利用Go語言這些特有屬性來實現對二進制文件進行更精準的逆向分析。

特性1:利用go語言中特有的節信息來判斷elf/pe文件的源代碼語言類型,是go語言還是C、c++語言。

通過判斷二進制文件中是否存在“.noptrdata”、“.gopclntab”、“.data.rel.ro.gopclntab”確定源代碼,如果存在上述節名稱,則源代碼為Go語言。

poYBAGNIHqaAIagFAAJbL3-JMcI632.png

特性2:在沒有符號表的情況下如何恢復函數名稱

我們知道在C/C++編譯出來的二進制文件中,如果沒有符號表信息是沒法看到函數名稱的,在IDA工具中只能看到地址信息。

pYYBAGNIHqaADP1_AAHNY017fkQ727.png

Go語言怎么來恢復函數名稱呢,可以通過從.data.rel.ro節來恢復函數名,具體查找定位算法如下:

poYBAGNIHqaARTzDAABmQbGPRGw432.png



方法1:解析頭信息可以獲取magic, quantum, ptr_size, func_tab_count數據,當magic為’xfbxffxffxff’時,entry_size = 2 * ptr_size為entry結構體大小,func_tab_count為entry結構體數量;解析entry結構獲取到名稱信息結構數據位置偏移(需要注意64位和32位Go程序 func_info_offset位置相反),讀取名稱信息結構體數據,再從中獲取到名稱字符串位置偏移(name_offset),根據此偏移定位到函數名稱字符串起始位置偏移,從該位置解析得到函數名稱。

方法2:另外1.16版本Go語言結構有些新變化,magic變為’xfaxffxffxff’,解析頭信息獲取func_tab_cnt, file_cnt, func_name_off, cu_off, filetab_off, pctab_off, func_tab_off數據,其中func_tab_off為entry數據起始位置,解析entry結構獲取code_off, func_info_offset數據,后續解析過程與magic=’xfbxffxffxff’一致。通過上述兩個方法可以恢復函數真實名稱,從而方便對Go語言二進制文件的逆向分析,提升分析效率。

DevCloud軟件開發平臺基于二進制成分分析技術,可以為開發者提供以下能力支持:

支持多種類型安裝包:支持windows、linux、IoT固件包、安卓部署包等常見軟件包的安全檢測。

檢測全面:支持針對開源軟件的許可證、漏洞、信息泄露、安全配置等3大項、25小類的安全問題檢測。

開源軟件覆蓋全面:覆蓋100+漏洞源、百萬級開源組件版本,開源問題全覆蓋。

保障迅速:小時級漏洞更新,提升漏洞發現速度,降低安全風險。

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 二進制
    +關注

    關注

    2

    文章

    796

    瀏覽量

    41757
  • SCA
    SCA
    +關注

    關注

    1

    文章

    36

    瀏覽量

    12010
  • go語言
    +關注

    關注

    1

    文章

    158

    瀏覽量

    9089
收藏 人收藏

    評論

    相關推薦

    偏移二進制二進制補碼如何和實際數據對應,如何轉換?

    偏移二進制二進制補碼如何和實際數據對應,如何轉換,請哪位高手解惑
    發表于 01-16 06:01

    bcd編碼的應用 bcd與二進制的區別

    BCD(Binary-Coded Decimal)編碼是一種二進制編碼形式,用于表示十進制數字。它將每個十進制數字(0-9)直接編碼為一個四位二進制數。BCD編碼的主要優點是易于閱讀和
    的頭像 發表于 12-20 17:11 ?1006次閱讀

    hex格式和二進制的區別

    HEX格式和二進制在多個方面存在顯著的區別。以下是對這兩者的對比: 一、定義與表示方式 HEX格式 : HEX,全稱為Intel HEX,是一種用于存儲和傳輸數據到嵌入式系統(如單片機)的文件格式
    的頭像 發表于 11-18 15:24 ?733次閱讀

    在線二進制編碼器:數據轉換的快捷通道

    在數字時代,數據的快速轉換與處理至關重要。二進制編碼,作為計算機內部數據表示的基礎,將信息轉化為0和1的序列,為數字世界構建了溝通的橋梁。然而,對于非專業用戶來說,手動進行二進制編碼既繁瑣又易出錯
    的頭像 發表于 11-15 09:01 ?1055次閱讀

    base64字符串轉換為二進制文件

    一些編程知識。以下是將Base64字符串轉換為二進制文件的一般步驟,以及一個簡單的Python示例代碼。 步驟: 獲取Base64字符串 :首先,你需要有一個Base64編碼的字符串。 解碼Base64字符串 :使用編程語言提供的庫函數將Base64字符串解碼為
    的頭像 發表于 11-10 10:55 ?1640次閱讀

    ASCII碼和二進制的轉換關系

    。ASCII碼使用7位二進制數來表示128個不同的字符,包括大小寫英文字母、數字0-9以及一些控制字符和標點符號。后來,ASCII碼被擴展到了8位,即ASCII-8BIT,可以表示256個不同的字符。 二進制
    的頭像 發表于 11-10 09:50 ?1889次閱讀

    二進制編碼器在自動化領域的作用

    二進制編碼器是一種將二進制信號轉換為數字信號的電子設備,廣泛應用于自動化領域。 一、二進制編碼器的工作原理 二進制編碼器是一種將二進制信號轉
    的頭像 發表于 11-06 09:53 ?462次閱讀

    二進制編碼器在機器人中的應用

    隨著科技的不斷進步,機器人技術已經成為現代工業、服務業乃至家庭生活中不可或缺的一部分。機器人的智能化程度不斷提高,這在很大程度上依賴于其傳感器系統。二進制編碼器作為一種傳感器,能夠將物理量轉換
    的頭像 發表于 11-06 09:48 ?524次閱讀

    二進制編碼器的種類及特點

    二進制編碼器是一種電子電路,用于將二進制信號轉換為其他格式,如十進制、格雷碼等。以下是一些常見的二進制編碼器種類及其特點: 優先編碼器(Priority Encoder) : 特點 :
    的頭像 發表于 11-06 09:47 ?670次閱讀

    二進制編碼器應用場景 二進制編碼器與模擬編碼器比較

    編碼器是將信息從一種形式或格式轉換為另一種形式的設備。在數字和模擬系統中,編碼器扮演著至關重要的角色。二進制編碼器和模擬編碼器是兩種常見的編碼器類型,它們在不同的應用場景中有著各自的優勢和局
    的頭像 發表于 11-06 09:45 ?589次閱讀

    二進制編碼器工作原理 如何選擇二進制編碼器

    二進制編碼器是一種數字電路,它將輸入的二進制代碼轉換為對應的輸出信號。在數字系統中,編碼器用于將數據從一種形式轉換為另一種形式,以便于處理和傳輸。 二進制編碼器工作原理 輸入與輸出關系 :
    的頭像 發表于 11-06 09:44 ?1154次閱讀

    二進制補碼及與原碼的互相轉換方法

    大沙把一些基礎的知識說清楚,本文介紹二進制補碼及與原碼的轉換方法。 先說原碼,原碼?是一種計算機中對數字的二進制定點表示方法。在原碼表示法中,數值前面增加了一位符號位,最高位為符號位,0表示正數,1
    的頭像 發表于 09-19 22:25 ?654次閱讀

    二進制處理中的一些技巧

    二進制和十進制的處理中,有時候一些小技巧是很有用的。 1、把十進制數轉換成二進制數 (1)在MATLAB中有一個函數dec2bin,可以把正整數轉換為2
    的頭像 發表于 07-05 11:51 ?629次閱讀

    二進制串行計數器工作原理是什么?

    在數字電路設計中,計數器是一種非常關鍵的組件,用于測量時間、計數事件或跟蹤狀態變化等。其中,二進制串行計數器作為一種常用的計數器類型,在多種應用場景中都發揮著重要作用。本文將對二進制串行計數器
    的頭像 發表于 05-28 15:52 ?964次閱讀

    如何實現二進制和BCD碼數據的相互轉變?

    如何實現二進制和BCD碼數據的相互轉變? 二進制碼是將十進制數字表示為二進制數和十進制數的一種表示方法。在計算機系統中,
    的頭像 發表于 02-18 14:51 ?3866次閱讀
    百家乐赌博凯时娱乐| 百家乐官网三珠连跳打法| 赌场百家乐代理| 百家乐官网稳定打法| 百家乐算牌方| 澳门百家乐官网娱乐城开户| 自贡百家乐赌| 百家乐官网棋牌游| 蜀都棋牌下载| 百家乐的必赢方法| 大发888最新网站| 金界百家乐官网的玩法技巧和规则| 足球比分直播| 太阳城百家乐下载网址| 百家乐官网趋势图怎么看| 免费百家乐计划| 百家乐官网什么方法容易赢| 青河县| 百家乐平点| 网页百家乐官网的玩法技巧和规则| 网上棋牌赌博| 破解百家乐视频游戏密码| 真人百家乐官网送钱| 尼木县| 太阳城官方网| 百家乐视频中国象棋| 百家乐官网送1000| 金赞娱乐城| 迷你百家乐的玩法技巧和规则| 百家乐送彩金网络| 百家乐官网出牌规| 余江县| 大发888游戏客户端| 如何玩百家乐扑克| 免佣百家乐官网规则| 佛坪县| 大发888游戏平台hana| 金盾百家乐网址| 澳门百家乐官网群代理| 百家乐官网园棋牌| 网上投注|