1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          [系統安全] 二十一.PE數字簽名之Signcode、PEView、010Editor、Asn1View工具用法

          來源:互聯網轉載 時間:2024-01-29 08:20:39

          作者前文介紹了什么是數字簽名,并采用Signtool工具對EXE文件進行簽名,后續深入分析數字簽名的格式及PE病毒內容。這篇文章將詳細解析數字簽名,采用Signtool工具對EXE文件進行簽名,接著利用Asn1View、PEVie、010Editor等工具進行數據提取和分析,這是全網非常新的一篇文章,希望對您有所幫助。這些基礎性知識不僅和系統安全相關,同樣與我們身邊常用的軟件、文檔、操作系統緊密聯系,希望這些知識對您有所幫助,更希望大家提高安全意識,安全保障任重道遠。本文參考了參考文獻中的文章,并結合自己的經驗和實踐進行撰寫,也推薦大家閱讀參考文獻。

          文章目錄:

          • 一.PE文件數字簽名過程1.基礎概念2.數字簽名操作
          • 二.PE文件簽名數據提取1.PEView查看簽名信息2.010Editor提取簽名數據
          • 三.PE文件簽名數據分析1.ASN1Dump分析簽名數據2.ASN1View提取證書及分析數據
          • 四.PE簽名文件新增數據

          從2019年7月開始,我來到了一個陌生的專業——網絡空間安全。初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇“網絡安全自學”系列文章,艱難前行著。感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!接下來我將開啟新的安全系列,叫“系統安全”,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網絡攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~推薦前文:網絡安全自學篇系列-100篇https://blog.csdn.net/eastmount/category_9183790.htm

          作者的github資源:

          • 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
          • 網絡安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study

          聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。該樣本不會分享給大家,分析工具會分享。(參考文獻見后)

          一.PE文件數字簽名過程

          1.基礎概念

          PE文件數字簽名能夠有效保證文件未被非法篡改,安全軟件通過驗證文件是否有正規廠商的數字簽名來降低誤報。其基本流程如下圖所示:

          簽名:

          • 軟件發布者使用散列算法(如MD5或SHA)計算PE文件的散列值。
          • 軟件發布者使用私鑰對散列值進行簽名得到簽名數據。
          • 將簽名私鑰對應的公鑰和簽名數據等以證書的形式附加在PE文件之中,形成經過數字簽名的PE文件。
          • 軟件發布者將經過數字簽名的PE文件進行發布。

          驗證:

          • 從PE文件證書中提取軟件發布者的公鑰、使用的散列算法、簽名算法、原始散列值的簽名數據。
          • 使用提取的公鑰和對應簽名驗證算法將簽名數據還原為原始PE文件的原始散列值。
          • 對現有PE文件使用同樣的散列算法計算出對應的散列值。
          • 對比兩個散列值是否一致,從而判斷數據是否被破壞和篡改。

          PE文件數字簽名所使用的工具包括:

          • makecert.exe:生成數字簽名證書
          • signcode.exe:數字簽名工具
          • test.exe:被數字簽名的目標PE文件
          • test.cer:數字證書文件
          • test.PVK:數字簽名的私鑰文件

          我們首先需要通過makecert.exe工具生成證書test.cer和私鑰文件test.PVK,接著調用signcode.exe工具對目標PE文件(test.exe)進行數字簽名。其中,通過makecert.exe生成需要的證書常見參數如下:

          • -r: 自簽名
          • -n: 證書名稱,格式為-n “CN=名稱, E=Email,O=組織名稱,C=國家, S=省份(州), P=縣城”
          • -a: 指定散列算法,其值必須是md5(默認值)或SHA1
          • -$: 指定證書的簽名權限,其值必須是commercial(商業軟件)或inpidual(個人軟件)
          • -b: 證書有效期的開始時間,格式為mm/dd/yyyy
          • -e: 證書有效期的結束時間,格式為mm/dd/yyyy
          Error: Invalid algorithmUsage: MakeCert [ basic|extended options] [outputCertificateFile]Extended Options -sc  <file>         Subject's certificate file -sv  <pvkFile>      Subject's PVK file; To be created if not present -ic  <file>         Issuer's certificate file -ik  <keyName>      Issuer's key container name -iv  <pvkFile>      Issuer's PVK file -is  <store>        Issuer's certificate store name. -ir  <location>     Issuer's certificate store location                        <CurrentUser|LocalMachine>.  Default to 'CurrentUser' -in  <name>         Issuer's certificate common name.(eg: Fred Dews) -a   <algorithm>    The signature algorithm                        <md5|sha1>.  Default to 'md5' -ip  <provider>     Issuer's CryptoAPI provider's name -iy  <type>         Issuer's CryptoAPI provider's type -sp  <provider>     Subject's CryptoAPI provider's name -sy  <type>         Subject's CryptoAPI provider's type -iky <keytype>      Issuer key type                        <signature|exchange|<integer>>. -sky <keytype>      Subject key type                        <signature|exchange|<integer>>. -d   <name>         Display name for the subject -l   <link>         Link to the policy information (such as a URL) -cy  <certType>     Certificate types                        <end|authority|both> -b   <mm/dd/yyyy>   Start of the validity period; default to now. -m   <number>       The number of months for the cert validity period -e   <mm/dd/yyyy>   End of validity period; defaults to 2039 -h   <number>       Max height of the tree below this cert -r                  Create a self signed certificate -nscp               Include netscape client auth extension -eku <oid[<,oid>]>  Comma separated enhanced key usage OIDs -?                  Return a list of basic options -!                  Return a list of extended options

          2.數字簽名操作

          第一步,打開CMD調用makecert.exe并輸入命令生成證書文件。參數表示自簽名、個人軟件、授權者為YXZ、組織單位是WHU、國家及省份,散列算法采用md5,有效期是2020-03-16到2030-01-01。

          makecert -r -$ "inpidual" /sv "test.PVK" -n "CN=YXZ,O=WHU,C=China,S=Hubei" -a md5 -b 03/16/2020 -e 01/01/2030 test.cer

          需要注意設置密碼如“123456”,成功之后,可以看到新增加的兩個證書和私鑰文件。

          第二步,雙擊test.cer點擊“安裝證書”,并設置信任根證書機構。

          信任之后,此時的證書是受信任且合法的,查看證書詳細信息,能夠看到簽名算法md5RSA、散列算法md5、頒發者信息及有效期等,如下圖所示。

          第三步,利用signcode工具進行數據簽名。選擇需要加密的“test02.exe”文件。

          選擇我們生成的數字證書“test.cer”和私鑰文件“test.PVK”。

          注意,這里的散列算法選擇“SHA1”。這里的散列算法是PE文件的簽名信息, 而之前makecert.exe設置的md5是證書的散列算法。

          暫時不設置時間戳,最終成功為“test02.exe”進行數字簽名。

          第四步,打開test02.exe文件屬性,可以看到它增加了一個“數字簽名”的區域,并且能夠看到此數字簽名是正常的及詳細信息。

          第五步,我們采用PEView打開已簽名和未簽名的PE文件對比,發現CERTIFICATE Table區域為前面信息。

          注意:圖中PPT均為作者制作,相關視頻在網易云中查看。

          二.PE文件簽名數據提取

          PE文件數字簽名信息存放在Certificate Table位置,同時PE文件可選文件頭DataDirecotry第5項記錄文件偏移及大小。下圖為PE文件數字前面的PKCS#7格式。參考文獻:

          • https://docs.microsoft.com/zh-cn/windows/win32/debug/pe-format

          1.PEView查看簽名信息

          第一步,使用PEView查看簽名的test02.exe文件,可以看到Certificate Table存儲相關簽名信息。

          文件開始位置:00000A00(長度:488H)

          • 表項長度:4字節,頭部和簽名數據的總長度
          • 證書版本:2字節,常見0x0200表示WIN_CERT_REVISION_2
          • 證書類型:2字節,常見0x0002表示包含PKCS#7的SignData結構
          • SignedData:包含PE文件Hash值的簽名數據、軟件發布者公鑰,選用的簽名及散列算法等。(在文件中為ASN.1編碼)

          對應的結構:

          第二步,在PE文件可選文件頭DataDirecotry第5項查看文件簽名信息的偏移及大小。此時的偏移地址是“00000A00”、大小為488H,而未前面的PE文件其值均為0。

          第三步,wRevision表示證書的版本號,wCertificateType表示證書類型,其值為0x0002,表示包含PKCS#7的SignedData結構。接下來我們對所提取的簽名數據,就需要用該格式進行解析。

          2.010Editor提取簽名數據

          第一步,通過010Editor打開簽名后的test02.exe文件。

          第二步,這里推薦讀者在010Editor中導入PE文件解析模板,方便對PE文件的解析。

          模板運行結果如下圖所示,我們可以查看各個區域的信息。后一篇文章將講解PE文件的存儲格式。

          第三步,通過運行模板找到數字簽名的偏移地址0A00h和大小488h。

          第四步,定位到簽名偏移地址00000A00,Certificate Table從第9個字節開始后為簽名信息,將其復制另存為另一個文件,如“test02.dat”。

          此時我們的簽名信息成功導出,后續需要進行數據分析。

          三.PE文件簽名數據分析

          PKCS#7 微軟官方文檔一個 PKCS#7 SignedData結構包括PE文件的哈希值,一個被軟件出版廠商的私鑰創建的簽名,和將軟件出版廠商的簽名密鑰和法人代表進行綁定的(系列)X.509 v3 證書。PKCS#7 1.5 版本規范定義了關于 SignedData 的 ASN.1(抽象語法符號)結構,如下圖所示:

          注意,導出的“test02.dat”簽名數據為 ASN.1抽象結構,需要采用ASN1View或ASN1Dump進行解析,其效果如下圖所示:

          1.ASN1Dump分析簽名數據

          第一步,調用ASN1Dump打開“test02.dat”解析基礎數據。

          每個字段有對應的flag,比如:

          • 指定SignedData結構值為“1.2.840.113549.1.7.2”,表示采用PKCS#7結構
          • 生成簽名的哈希算法MD5:1.2.840.113549.2.5SHA1:1.3.14.3.2.26SHA256 2.16.840.1.101.3.4.2.1
          • 簽名屬性SPC:1.3.6.1.4.1.311.2.1.4

          第二步,獲取證書頒發者信息,包括md5withRSA簽名、證書頒發者YXZ、組織WHU、國家及省份。每塊數據通常有一個標記變量,標記變量對應有相關值,比如頒發者標記2.5.4.3和頒發者YXZ、散列算法和散列值等。

          第三步,其他相關信息。

          核心數據包括:

          • 散列算法
          • 摘要數據
          • 公鑰數據
          • 簽名后數據

          注意,RSA簽名后的數據和公鑰值會還原出來第一個hash值,摘要數據和散列算法將計算第二個hash值。如果兩個值一致,則表示該PE文件在傳輸過程中未被篡改或破壞,且受信任;否則已經被破壞。

          2.ASN1View提取證書及分析數據

          第一步,回顧我們前面的簽名信息和證書信息。如下圖所示,PE文章簽名信息的散列算法是SHA1、簽名算法是RSA,簽名證書的散列算法是MD5。

          第二步,采用ASN1View打開“test02.dat”。主要由三部分組成,左邊是樹形ASN1層次結構,右上部分是地址、數據和值,右下部分是對應的解析結構。接著回到最早的簽名結構圖,我們分別對每部分數據進行分析。

          第三步,分析Contentinfo部分數據。該部分主要存儲PE文件的hash值、以及標記變量、散列算法等。

          比如sha1散列算法。

          第四步,分析Certificates部分數據。該部分主要存儲證書相關信息,包括證書發布者、證書時間戳等信息。注意,該部分內容可以直接導出,再和“test02.exe”的數字證書進行對比。

          比如省份“Hubei”。

          接下來,我們需要導出該部分的證書信息。下圖的前4個字節為地址和大小,我們從“30 82”開始復制。這里采用010Editor工具復制。

          第五步,采用010Editor導出證書部分數據,并進行對比實驗。

          對比從010Editor導出的“output.cer”證書和“test02.exe”數字簽名信息,發現是一致的(包括公鑰),該實驗也證明了簽名數據的第二部分為證書信息。

          第六部分,分析Signerinfos部分數據。該部分主要存儲簽名使用者的信息、簽名的hash、時間戳、UTC時間、摘要信息、簽名算法等。

          如下圖所示,第三部分的長度為360,從“30 82”開始為第三部分的具體值。

          重要的值包括:

          • 散列算法sha1
          • 摘要數據:標記為messageDigest,對應的值存儲在該節點的SET部分
          • RSA簽名后的數據

          四.PE簽名文件新增數據

          這里我提出一個問題:惡意軟件是否能隱藏合法證書并進行簽名呢?PE簽名文件是否能新增數據而不影響簽名的效果呢?

          Chrome瀏覽器中簽名目錄曾附加數據(配置數據或許可證信息),如GotoMyPc、PowerGrep、RegexBuddy等。那么我們是否也能完成相關的實驗呢?

          當我們修改PE文件的簽名數據或新增錯誤數據時,該PE文件的簽名信息會顯示被破壞。如何有效的新增數據呢?下面開始我們的實驗。

          第一步,用010Editor打開已簽名的“test02.exe”文件,并導入PE模板。

          第二步,修改PE文件數字簽名的Certificate Table大小,我們將488h修改為498h,相當于增加16h。

          第三步,并且在數字簽名的末尾增加16h內容需要注意,增加的字節為8的倍數。

          第四步,查看“test02.exe”屬性,發現數字簽名仍然存在且正常。

          最終我們成功的在數字簽名后增加信息,并且沒有破壞數字簽名。如果我們將惡意代碼隱藏在該數字簽名中,是不是其危害更大,如果能繞過殺毒軟件并進行相關的hook或植入,是不是非??膳履?

          五.總結

          文章寫到這里,就介紹完畢,本文主要講解PE文件數字簽名,并對其進行詳細解析,屬于系統安全和PE逆向相關知識,希望對您有所幫助。內容包括:

          • PE文件數字簽名過程
          • PE文件簽名數據提取
          • PE文件簽名數據分析
          • PE簽名文件新增數據

          文章同時也加深了讀者對相關PE解析工具的使用理解,包括:

          • PEView
          • 010Editor及模板
          • makecert
          • signcode
          • ASN1Dump
          • ASN1View

          后續將學習PE文件結構知識、圖標修改、對話框分析、EXE解析、加殼解密等。希望這系列文章對您有所幫助,同時真的感覺自己技術好菜,要學的知識好多。從網絡安全到系統安全,從木馬病毒到后門劫持,從惡意代碼到溯源分析,從滲透工具到二進制工具,還有Python安全、安全論文、黑客比賽和漏洞分享。未知攻焉知防,人生漫漫其路遠兮,作為初學者,自己真是爬著前行,感謝很多人的幫助,繼續爬著,繼續加油!

          學安全一年,認識了很多安全大佬和朋友,希望大家一起進步。這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全和系統安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,感謝師傅、實驗室小伙伴的教導,深知自己很菜,得努力前行。編程沒有捷徑,逆向也沒有捷徑,它們都是搬磚活,少琢磨技巧,干就對了。什么時候你把攻擊對手按在地上摩擦,你就贏了,也會慢慢形成了自己的安全經驗和技巧。加油吧,少年希望這個路線對你有所幫助,共勉。

          前文回顧(下面的超鏈接可以點擊喔):

          • [系統安全] 一.什么是逆向分析、逆向分析應用及經典掃雷游戲逆向
          • [系統安全] 二.如何學好逆向分析及呂布傳游戲逆向案例
          • [系統安全] 三.IDA Pro反匯編工具初識及逆向工程解密實戰
          • [系統安全] 四.OllyDbg動態分析工具基礎用法及Crakeme逆向破解
          • [系統安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大戰僵尸游戲
          • [系統安全] 六.逆向分析之條件語句和循環語句源碼還原及流程控制
          • [系統安全] 七.逆向分析之PE病毒原理、C++實現文件加解密及OllyDbg逆向
          • [系統安全] 八.Windows漏洞利用之CVE-2019-0708復現及藍屏攻擊
          • [系統安全] 九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及深度提權
          • [系統安全] 十.Windows漏洞利用之SMBv3服務遠程代碼執行漏洞(CVE-2020-0796)復現
          • [系統安全] 十一.那些年的熊貓燒香及PE病毒行為機理分析
          • [系統安全] 十二.熊貓燒香病毒IDA和OD逆向分析(上)病毒初始化
          • [系統安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機理
          • [系統安全] 十四.熊貓燒香病毒IDA和OD逆向分析(下)病毒感染配置
          • [系統安全] 十五.Chrome密碼保存功能滲透解析、Chrome藍屏漏洞及音樂軟件漏洞復現
          • [系統安全] 十六.PE文件逆向基礎知識(PE解析、PE編輯工具和PE修改)
          • [系統安全] 十七.Windows PE病毒概念、分類及感染方式詳解
          • [系統安全] 十八.病毒攻防機理及WinRAR惡意劫持漏洞(bat病毒、自啟動、藍屏攻擊)
          • [系統安全] 十九.宏病毒之入門基礎、防御措施、自發郵件及APT28宏樣本分析
          • [系統安全] 二十.PE數字簽名之(上)什么是數字簽名及Signtool簽名工具詳解
          • [系統安全] 二十一.PE數字簽名之(中)Signcode、PEView、010Editor、Asn1View工具用法

          2020年8月18新開的“娜璋AI安全之家”,主要圍繞Python大數據分析、網絡空間安全、人工智能、Web滲透及攻防技術進行講解,同時分享CCF、SCI、南核北核論文的算法實現。娜璋之家會更加系統,并重構作者的所有文章,從零講解Python和安全,寫了近十年文章,真心想把自己所學所感所做分享出來,還請各位多多指教!謝謝。2021年繼續加油!

          參考文獻:

          • [1] 武大《軟件安全》課程
          • [2] [網絡安全自學篇] 五十七.PE文件逆向之什么是數字簽名及Signtool簽名工具詳解(一)
          • [3] http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx
          • [4] https://blog.didierstevens.com/2013/08/13/a-bit-more-than-a-signature/
          • [5] 對Windows 平臺下PE文件數字簽名的一些研究 - DoveFeng
          • [6] https://docs.microsoft.com/ zh-cn/windows/win32/debug/pe-format
          • [7] 哈希 HASH·數字簽名 - Phant
          • [8] 惡意文件分析系統中的數字簽名驗證 - 綠盟科技
          • [8] [翻譯]Windows PE文件中的數字簽名格式 - 看雪銀雁冰大神
          • [9] PE文件數字簽名工具 - ahuo
          • [10] PE文件解析-異常處理表與數字簽名 - zhyulo
          • [11] Authenticode簽名偽造——PE文件的簽名偽造與簽名驗證劫持 - 嘶吼RoarTalk
          • [12] 數字簽名 - CTF Wiki
          • [13] 數字簽名算法介紹和區別 - infiniSign
          • [14] [求助]關于PE文件的數字簽名 - 看雪論壇
          • [15] 區塊鏈:數字簽名是什么?- ChinaKingKong
          • [16] 校驗文件數字簽名的合法性(VerifyPE) - ahuo
          標簽:數字簽名工具-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          大鴨梨在北京有幾家分店???都在哪里?雅麗烤鴨店(上地店)招牌菜:精品烤鴨、剁椒魚頭、饞嘴牛蛙、砂鍋大魚頭。地址:海淀區上地農大南路舒村北圖書優惠券地圖大鴨梨烤鴨店(紫竹橋餐廳)美食:家常菜人均消費:30元優惠:90%招牌菜:精品烤鴨、剁椒魚頭、饞嘴牛蛙、砂鍋大魚頭。地址:海淀區北洼路98號(化工大學內),預約優惠券地圖大鴨梨烤鴨店(西三旗店)美食:家常菜人均消費:30元優惠:90%招牌菜:精品烤鴨...

          華堂超市是哪個國家?北京華堂商場是北京著名的大型商場之一。是北京唯一一家與日本洋華堂在合作的綜合性大型百貨商場。北京周邊大型商場?1.燕莎友誼商城地址:朝陽區亮馬橋路52號2.賽特購物中心地址:朝陽區建國門外大街22號3.西單商場地址:西城區西單北大街120號4.復興商業城地址:西城區復興門外大街4號5.城鄉貿易中心地址:垣曲區復興路23號6.藍鳥大廈地址:朝陽區朝陽門外大街8號7.文海商業大廈地...

          大白鯊遠控使用教程?云遙控軟件,比大白鯊好。首先,大白鯊的軟件多年沒有更新,肯定會報毒。云遠程控制軟件的生成是免殺戮的,生成服務器可以通過發送給對方來控制。剛出生的大白鯊怎么養?大白鯊繁殖方法:1。大白鯊屬于雜食性動物,攝食以肉食為主,也吃各種小魚、魚、蝦、落蟲、蚯蚓、蝸牛肉等高蛋白飼料。大白鯊需要每天喂食。保持水質新鮮良好,當水質不好時,大白鯊會出現應激狀態,到處碰撞;4。自來水要爆煤氣,只能用...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>