在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

代碼保護之道——混淆的藝術

5RJg_mcuworld ? 來源:lq ? 2018-12-13 11:11 ? 次閱讀

本文內容來自祁麟在 QCon 分享的主題《代碼保護之道——混淆的藝術》,主要涉及黑產現狀、通用防御架構、攻擊流程和混淆理論。黑產現狀、盈利手段

黑產的現狀及常用的盈利手段是什么?這里給出三個數字:第一個數字是 150 萬,這是 2017 年網絡安全生態峰會上評估出的黑產從業人員的人數。跟這個人數相比,目前業界頂尖公司中安全從業人員最多不過千余人,與黑產對比可謂鳳毛麟角。第二個數字是千億,這是網絡安全生態峰會上評估的黑產年產值。根據 2017 年的騰訊阿里兩家巨頭的財報,兩家公司凈利潤總和接近千億元,黑產的年產值基本可以與這兩家巨頭公司并駕齊驅。第三個是 20%,這是根據我們之前經驗評估的營銷活動的資損率。舉例來說比如要做一個新注冊的拉新活動,投了 100 萬去吸引用戶,最后會發現至少有 20 萬會進入到黑產的口袋里。

簡單列舉兩個黑產的盈利場景。第一種是撞庫,就是把其他平臺泄露的一些用戶名和密碼,不停地拿到另外一些平臺上去試,如果登錄成功之后首先會竊取賬號內的資產信息,之后會使用竊取的賬號去做一些薅羊毛等相關的事情。第二種是垃圾注冊,黑產要盈利必須要有海量的帳號,黑產會注冊成千上萬個小號來為后續的活動進行準備,這是萬惡之源。但是實際上批量賬號注冊是成本非常高的事情,需要海量的手機號碼、手機設備等等。工欲善其事必先利其器,黑產也深知這個道理。為了以最小的成本獲取最大的收益,外掛應運而生。外掛具有批量化、虛擬化、自動化的能力,可以最大程度來滿足黑產的需求。

為了抵御黑產,各家公司都會有自己專門的風控團隊,使用各種各樣的技術手段去進行對抗。這里介紹一個比較通用的架構(參見圖 1)。首先客戶端會把采集到的數據加密后 (包括安全簽名等) 通過業務 API 接口請求傳安全網關,網關這里會有一些實時的策略引擎來進行風控,包括但不限于 IP 策略、環境設備、帳號屬性、行為序列以及一些 AI 機器學習模型等等。風控結果會發送到后端的二次驗證系統,如果發現前端的請求是非法的,就直接阻斷請求或者彈出驗證碼等等。如果沒有問題,就會真正交給業務系統,然后由業務系統來做一些相關的處理。同時,各家也會有對應的離線策略引擎,它會通過旁路數據進行無監督聚類甚或有監督的機器學習等等,生成更多的模型,輔助后端的風控。

圖 1

接下來重點介紹客戶端保護相關的工作。整個風控系統是一個非常龐大的鏈路,僅就客戶端而言也是一個非常復雜的體系,這里包括具體采集什么樣的風控數據、如何保證采集數據的安全性和對抗的實時性等等。在移動時代,PC 時代的 WEB 的業務幾乎全部都落地到了客戶端,如果客戶端的風控沒有做好,無異于門戶大開,直接給黑產提供了攻擊的入口。這里介紹了基于客戶端進行風控的例子,我們可以看到攻擊曲線完全降低到了冰點,實際上這里并沒有使用多么復雜的機器學習方法,而僅僅是基于客戶端本身的混淆邏輯來實現了業務保護達到的結果。

防御方法論

第一點是天下武功唯快不破。攻防的本質實際上是成本和收益的對抗。良好的代碼混淆會大大提高破解所需的時間和門檻,只要保證核心代碼的更新速度快于攻擊者破解的速度,就可以實現很好的保護效果。

第二點是重劍無峰,大巧不工。攻防的核心是基于可信數據的對抗,誰對系統的底層理解得更加深入,誰就在整個攻防里面掌握了主動權。同樣,良好的代碼混淆可以保證你的數據采集邏輯不被攻擊者所知悉,這可以大大提高后端風控數據的準確性和安全性。

第三點是藏葉于林。安全是業務的天然屬性,業務是安全的最佳載體。只有結合了業務的安全才是真正的安全,孤立的安全是很容易被攻擊者攻破的。將業務代碼和安全代碼放在一起進行混淆,攻擊者要破解的話,不但要摸清安全邏輯,還要了解清楚整個業務邏輯。同時,業務上的風吹草動也會為安全起到非常好的預警作用。

黑客攻擊流程

在介紹完防御方法論之后,具體介紹代碼混淆之前,介紹下黑客的攻擊流程(參見圖 2)。

圖 2

攻擊的第一步是尋找入口,一般有兩種方式:靜態分析和動態分析。靜態分析就是首先查看.so、.elf 等文件,查看其導出表。如果找不到,就看字符串表,在字符串里找信息,找到之后也可以定位到對應的位置。如果字符串表再沒有,就看導入表,因為導入表里面可能會引入 MD5 等一些簽名算法的值,如果導入表也沒有,就得看代碼邏輯了。舉例來說,AES 算法有一個 S 盒,可以直接在源碼中找 S 盒的特征,然后就知道這是 AES 算法,這是一個很好的線索,可以順著該線索進而去摸清整體的邏輯。如果這些方法都行不通,還有符號執行等技術可以用來輔助分析。

動態分析首先可以利用常用的 trace 工具,如 ltrace、strace 等來分析函數的調用流,對整體流程大致有了一個了解之后需要定位到關鍵函數的入口,定位到關鍵入口之后需要結合動態調試技術,通過 GDB、LLDB 等工具利用單步調試等一些調試方法去獲取信息。除此之外還有一個利器是 Hook,結合 Hook 技術將關鍵參數信息打印出來。同時,一些應用會采用有些客戶端保護技術,如反調試、反 Hook 等。這里需要再反過來結合靜態分析手段去定位安全保護的入口和代碼。如果關鍵函數入口很難定位的話,可以定位程序入口進行分析,從程序入口機型調試來定位關鍵信息。總之,攻擊流程就是結合上面所說的思路,利用一些安全工具或腳本來進行綜合分析,最終完成對整個應用程序的逆向破解。

常用混淆理論解析

接下來介紹一些常用的混淆理論,包括有哪些常用的混淆方法,混淆的方式和其對應的效果。現代代碼混淆很多是以 Collberg 理論為基礎的,將代碼混淆分成布局混淆、數據混淆、控制流混淆和預防混淆四大類,如圖 3 所示。

圖 3

下文將繼續介紹每種混淆的作用原理。

布局混淆有兩個核心點:標識符重命名和刪除信息。所謂標識符重命名,舉例來說,就是把有意義的函數名改成無意義的函數名,隱藏函數名所傳達的信息。雖然它沒有本質上起到什么效果,因為邏輯沒有變,但是,這減少了信息量,可以提高攻擊者分析的門檻。第二個是刪除信息,它包括一些調試信息、日志信息以及格式化信息等等。

標識符重命名有幾種方式,第一種是標識符交換,把從 B 庫里面提取的符號信息,用在 A 庫里面的函數名,比如,把一個加密函數叫做解密函數。第二種是哈希命名,直接把函數變成哈希后的結果。第三個是混淆字典,這是指自己生成的一堆混淆信息,比如將 0、O 放在一起,還有 1、L 放在一起,結合起來進行函數命名,會讓攻擊者比較難以閱讀。

第二類是數據混淆,是針對應用程序里面的常量進行混淆,比如字符串、整型或符點數等。混淆方法包括編碼變換、變量升級、拆分、數據變成函數、合并標量變量等。圖 4 是數據混淆的一些例子。

圖 4

控制流混淆是一種最核心的混淆方式,包括不透明謂詞、執行混淆、聚合變換等。其中,不透明謂詞是控制流混淆的核心。舉例來說,有一個函數,它可能執行到 if 分支,也有可能執行到 else 分支。但是,我們可以通過某種變換讓它一定走到 if 分支,而不走 else 分支。執行混淆包括虛假代碼塊、控制流扁平化、指令替換、控制流切割、VMProtect、代碼并行化等。

第四類是預防混淆,顧名思義就是知道要逆向這個程序必須使用某個軟件,我們可以針對這個軟件做一些事情,比如針對反編譯器插入花指令去破壞掉反編譯器等等。

最后,介紹下基于 LLVM 編譯器所實現的整體保護方案,因為 LLVM 的 logo 是一條龍,因此對于 LLVM 的攻堅稱之為與龍共舞,我們在 LLVM 的基礎上實現了深度開發。LLVM 框架的整體架構如圖 5 所示,分為前端、IR 和后端,整體與標準編譯原理流程完全相同。前端主要有預編譯、詞法分析、語法分析等流程最后生成中間向量 IR,IR 層可以進行各種各樣的優化。這里所說的代碼混淆主要是在 IR 層機型實現的。IR 除了可以進行代碼混淆之外,本身也是可以解釋執行和基于 JIT 執行的。同時,也可以通過 inline 匯編等方式在 IR 中插入一系列的花指令。后端包括指令選擇、有向無環圖、指令調度、MachineIR 等,最終通過鏈接生成后端各種各樣的架構文件。LLVM 對安全是非常有幫助的,首先可以在前端 AST 解析這里做一些安全檢查,IR 可以做跨平臺的代碼混淆器,甚至可以在后端實現一套自己的指令集,結合自實現的編譯器和解釋器完成一個比較健壯的虛擬機保護方案。

圖 5

本文所講的混淆主要是針對 IR 層實現的。它有一個好處,基本支持前端所有的語言,同時,混淆代碼也基本支持后端所有的平臺,實現一次代碼就可以對幾乎所有平臺后端進行保護。同時,它是一個基于編譯時的方案,所以具有很高的穩定性。LLVM IR 是基于寄存器的 SSA 格式的強類型指令集,它本身是為代碼優化而設計的。LLVM 的應用非常廣泛,包括安全漏洞分析、安全保護、任意函數插樁、任意代碼替換、自動化測試、自動化分析等,很多自動化測試工具、安全工具等基本上都可以利用該框架來進行實現。LLVM Pass 主要對 IR 來進行操作,其結構如圖 6 所示。

圖 6

實現的代碼保護方案中,控制流扁平化、虛假控制流和指令替換,都借鑒了 Obfuscator-LLVM 項目。O-LLLVM 是基于編譯器的代碼保護方案的鼻祖,它提供了很好的思路供后續的開發者參考,但是它所開放的功能是及其有限的,并且部分實現方案存在一些弱點和 bug。因此,我們在其基礎上進行了深度的定制和開發,結合混淆理論實現了更強的代碼保護技術。

分享中詳細闡述了字符串混淆、導入表隱藏、反調試、反篡改等基于 IR 實現的代碼保護的原理和思路。

圖 7

上圖是實現的一些代碼保護效果的例子。通過函數控制流圖可以看到整體的控制流已經非常復雜了,很多攻擊者到這里已經望而卻步了。除此之外,結合控制流分割、花指令等技術會直接破壞了反編譯器的反編譯效果等等。

綜上所述,結合 LLVM 框架可以實現高強度的代碼混淆與保護,進而助力風控系統,有效提升整體業務安全的強度。

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

    關注

    30

    文章

    4823

    瀏覽量

    68935
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49247
  • 機器學習
    +關注

    關注

    66

    文章

    8438

    瀏覽量

    132969

原文標題:別動我的代碼!聊聊那些代碼保護的藝術

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    松下投影機在墨爾本RISING藝術節引領沉浸之旅

    若您欲探尋墨爾本國際藝術節或白夜藝術節的最新動態,答案盡在RISING——墨爾本新興的頂尖當代藝術與音樂節。RISING不僅繼承了白夜藝術節中那些壯觀的投影
    的頭像 發表于 01-18 09:32 ?163次閱讀

    基于ESP開發板的變色龍藝術相框

    打造,變色龍圖案可以根據每天的天氣情況進行變化,燈帶的顏色和顯示速度都可以通過代碼進行修改,配合唯美的變色龍圖案,堪稱科技與藝術的完美結合! 背景故事 Makestreme一直對變色龍和它們令人驚嘆
    的頭像 發表于 12-30 11:22 ?264次閱讀
    基于ESP開發板的變色龍<b class='flag-5'>藝術</b>相框

    Java代碼之美,從遵循樣式規范開始

    至關重要。本文將帶你探索Java代碼的美學,揭示那些能夠讓你的代碼既美觀又高效的樣式規范。無論是初出茅廬的新手還是經驗豐富的老手,都能從中獲得靈感,提升編碼的藝術。 一、為什么要代碼
    的頭像 發表于 11-27 11:42 ?261次閱讀
    Java<b class='flag-5'>代碼</b>之美,從遵循樣式規范開始

    HarmonyOS Next元服務大學之道動卡互動

    各位大佬,純血鴻蒙HarmonyOS NEX手機、平板,應用市場搜索“大學之道動卡”即可體驗,打開留言即可發表你的文學觀點,謝謝互動。 您也可以通過以下方式,打開“大學之道動卡”互動。
    發表于 11-26 10:18

    MSP代碼保護功能

    電子發燒友網站提供《MSP代碼保護功能.pdf》資料免費下載
    發表于 09-21 09:14 ?0次下載
    MSP<b class='flag-5'>代碼</b><b class='flag-5'>保護</b>功能

    代碼整潔之道-大師眼中的整潔代碼是什么樣

    模糊,帶著這個問題,本人讀完了世界軟件開發大師馬丁的《代碼整潔之道》這本書,來了解下大師眼中的整潔代碼畫像是什么樣的,相信能給你帶來不一樣的理解和感悟。 關于整潔代碼,沒有明確的定義,
    的頭像 發表于 09-09 16:30 ?392次閱讀
    <b class='flag-5'>代碼</b>整潔<b class='flag-5'>之道</b>-大師眼中的整潔<b class='flag-5'>代碼</b>是什么樣

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反編譯代碼的質量和可讀性可能會受到原始編譯代碼
    的頭像 發表于 09-02 11:00 ?799次閱讀

    分享IP地址混淆知識

    由于IPv4 地址資源的枯竭促使 IPv6 技術的廣泛應用,從而形成了 IPv4 和 IPv6 并存的局面。這就逐漸出現了 IP 地址混淆導致的網絡問題。
    的頭像 發表于 07-31 16:54 ?331次閱讀

    淺談PUF技術如何保護知識產權

    。 利用芯片物理特征的高熵特性,PUF可生成高強度的安全密鑰。結合程序加密、代碼混淆和完整性保護等手段,PUF可以對核心程序和代碼邏輯進行保護
    發表于 07-24 09:43

    軟件設計哲學:新“代碼整潔之道

    工作三年以來一直對寫出設計優雅且可讀性較好的代碼抱有執念,最初接觸到的關于代碼整潔和軟件設計的書是《代碼整潔之道》,這本書大概在我入職半年時讀完,并在很長的一段時間內將其中談到的“每個
    的頭像 發表于 07-22 12:18 ?276次閱讀
    軟件設計哲學:新“<b class='flag-5'>代碼</b>整潔<b class='flag-5'>之道</b>”

    TCL推出第三代藝術電視A300系列

    7月17日,TCL隆重推出了其第三代藝術電視A300系列,該系列以融合前沿科技與藝術創作為核心亮點,特別引入了Ai繪畫大模型技術,用戶僅需簡單設定三個關鍵詞,系統便能在短短3秒內自動生成一幅個性化的藝術畫作,展現了科技與
    的頭像 發表于 07-18 16:36 ?613次閱讀

    EMC與EMI濾波器:在電子設備中的平衡之道

    深圳比創達EMC|EMC與EMI濾波器:在電子設備中的平衡之道
    的頭像 發表于 06-26 11:21 ?527次閱讀
    EMC與EMI濾波器:在電子設備中的平衡<b class='flag-5'>之道</b>

    AIGC是什么?對藝術設計學、視覺傳達設計、數字媒體藝術等專業的影響

    的方方面面。AIGC通過利用先進的算法和模型,能夠自動生成各種形式的內容,如圖像、文本、音頻和視頻等,極大地豐富了內容的創作和呈現方式。對于藝術設計學、視覺傳達設計、數字媒體藝術等專業而言,AIGC的崛起無疑帶來了深遠的影響。 AIGC是什么 AIGC是人工智能技術與內容
    的頭像 發表于 06-24 13:40 ?1036次閱讀

    esp32c3怎樣保護flash中的代碼不被拷貝?

    想知道這個c3怎樣保護flash中的代碼不被拷貝。這個內置flash中的代碼有沒有可能被拷貝出來,如果可以拷貝,應該怎樣保護。 另一個問題 esp32c3的gpio是否是容忍5v。
    發表于 06-19 06:32

    EMI電磁干擾:EMI電磁干擾的識別與解決之道

    深圳比創達EMC|EMI電磁干擾:EMI電磁干擾的識別與解決之道
    的頭像 發表于 04-25 11:17 ?929次閱讀
    EMI電磁干擾:EMI電磁干擾的識別與解決<b class='flag-5'>之道</b>
    主站蜘蛛池模板: 91po狼人社在线观看 | 美女视频永久黄网站在线观看 | 国产视频久 | www视频在线观看天堂 | 国产女在线| 天堂视频在线 | 国产美女亚洲精品久久久久久 | 天天干天天射天天爽 | 亚洲va中文va欧美va爽爽 | 国产激情电影综合在线看 | 日韩欧美在线第一页 | 五月天婷婷亚洲 | 久久精品久久久 | 有一婷婷色| 豆国产97在线 | 欧洲 | 欧美人与牲动交xxxx | 色橹橹 | 亚洲精品中文字幕乱码三区一二 | 手机看片欧美日韩 | bt天堂资源在线种子 | 日本黄色免费在线观看 | xxxx日本在线播放免费不卡 | 种子在线搜索 | 亚洲成a人片在线观看88 | 国色天香精品亚洲精品 | 国产综合精品久久久久成人影 | 五月激情久久 | 欧美一级在线全免费 | 美女很黄很黄是免费的·无遮挡网站 | 亚洲一区二区三区免费在线观看 | 色资源在线观看 | 老头天天吃我奶躁我的动图 | 啪啪啦资源站永久 | 男人在线资源 | 欧美一卡2卡三卡四卡五卡 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 欧美一区二区三区大片 | 91免费网站在线看入口黄 | 老师我好爽再深一点好大 | 欧美深深色噜噜狠狠yyy | 亚洲色图 第一页 | 久久久午夜视频 |