作者前文介紹了什么是數字簽名,并采用Signtool工具對EXE文件進行簽名,后續深入分析數字簽名的格式及PE病毒內容。這篇文章將詳細解析數字簽名,采用Signtool工具對EXE文件進行簽名,接著利用Asn1View、PEVie、010Editor等工具進行數據提取和分析,這是全網非常新的一篇文章,希望對您有所幫助。這些基礎性知識不僅和系統安全相關,同樣與我們身邊常用的軟件、文檔、操作系統緊密聯系,希望這些知識對您有所幫助,更希望大家提高安全意識,安全保障任重道遠。本文參考了參考文獻中的文章,并結合自己的經驗和實踐進行撰寫,也推薦大家閱讀參考文獻。
文章目錄:
從2019年7月開始,我來到了一個陌生的專業——網絡空間安全。初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇“網絡安全自學”系列文章,艱難前行著。感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!接下來我將開啟新的安全系列,叫“系統安全”,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網絡攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~推薦前文:網絡安全自學篇系列-100篇https://blog.csdn.net/eastmount/category_9183790.htm
作者的github資源:
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。該樣本不會分享給大家,分析工具會分享。(參考文獻見后)
PE文件數字簽名能夠有效保證文件未被非法篡改,安全軟件通過驗證文件是否有正規廠商的數字簽名來降低誤報。其基本流程如下圖所示:
簽名:
驗證:
PE文件數字簽名所使用的工具包括:
我們首先需要通過makecert.exe工具生成證書test.cer和私鑰文件test.PVK,接著調用signcode.exe工具對目標PE文件(test.exe)進行數字簽名。其中,通過makecert.exe生成需要的證書常見參數如下:
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
第一步,打開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文件數字簽名信息存放在Certificate Table位置,同時PE文件可選文件頭DataDirecotry第5項記錄文件偏移及大小。下圖為PE文件數字前面的PKCS#7格式。參考文獻:
第一步,使用PEView查看簽名的test02.exe文件,可以看到Certificate Table存儲相關簽名信息。
文件開始位置:00000A00(長度:488H)
對應的結構:
第二步,在PE文件可選文件頭DataDirecotry第5項查看文件簽名信息的偏移及大小。此時的偏移地址是“00000A00”、大小為488H,而未前面的PE文件其值均為0。
第三步,wRevision表示證書的版本號,wCertificateType表示證書類型,其值為0x0002,表示包含PKCS#7的SignedData結構。接下來我們對所提取的簽名數據,就需要用該格式進行解析。
第一步,通過010Editor打開簽名后的test02.exe文件。
第二步,這里推薦讀者在010Editor中導入PE文件解析模板,方便對PE文件的解析。
模板運行結果如下圖所示,我們可以查看各個區域的信息。后一篇文章將講解PE文件的存儲格式。
第三步,通過運行模板找到數字簽名的偏移地址0A00h和大小488h。
第四步,定位到簽名偏移地址00000A00,Certificate Table從第9個字節開始后為簽名信息,將其復制另存為另一個文件,如“test02.dat”。
此時我們的簽名信息成功導出,后續需要進行數據分析。
PKCS#7 微軟官方文檔一個 PKCS#7 SignedData結構包括PE文件的哈希值,一個被軟件出版廠商的私鑰創建的簽名,和將軟件出版廠商的簽名密鑰和法人代表進行綁定的(系列)X.509 v3 證書。PKCS#7 1.5 版本規范定義了關于 SignedData 的 ASN.1(抽象語法符號)結構,如下圖所示:
注意,導出的“test02.dat”簽名數據為 ASN.1抽象結構,需要采用ASN1View或ASN1Dump進行解析,其效果如下圖所示:
第一步,調用ASN1Dump打開“test02.dat”解析基礎數據。
每個字段有對應的flag,比如:
第二步,獲取證書頒發者信息,包括md5withRSA簽名、證書頒發者YXZ、組織WHU、國家及省份。每塊數據通常有一個標記變量,標記變量對應有相關值,比如頒發者標記2.5.4.3和頒發者YXZ、散列算法和散列值等。
第三步,其他相關信息。
核心數據包括:
注意,RSA簽名后的數據和公鑰值會還原出來第一個hash值,摘要數據和散列算法將計算第二個hash值。如果兩個值一致,則表示該PE文件在傳輸過程中未被篡改或破壞,且受信任;否則已經被破壞。
第一步,回顧我們前面的簽名信息和證書信息。如下圖所示,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”開始為第三部分的具體值。
重要的值包括:
這里我提出一個問題:惡意軟件是否能隱藏合法證書并進行簽名呢?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文件結構知識、圖標修改、對話框分析、EXE解析、加殼解密等。希望這系列文章對您有所幫助,同時真的感覺自己技術好菜,要學的知識好多。從網絡安全到系統安全,從木馬病毒到后門劫持,從惡意代碼到溯源分析,從滲透工具到二進制工具,還有Python安全、安全論文、黑客比賽和漏洞分享。未知攻焉知防,人生漫漫其路遠兮,作為初學者,自己真是爬著前行,感謝很多人的幫助,繼續爬著,繼續加油!
學安全一年,認識了很多安全大佬和朋友,希望大家一起進步。這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全和系統安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,感謝師傅、實驗室小伙伴的教導,深知自己很菜,得努力前行。編程沒有捷徑,逆向也沒有捷徑,它們都是搬磚活,少琢磨技巧,干就對了。什么時候你把攻擊對手按在地上摩擦,你就贏了,也會慢慢形成了自己的安全經驗和技巧。加油吧,少年希望這個路線對你有所幫助,共勉。
前文回顧(下面的超鏈接可以點擊喔):
2020年8月18新開的“娜璋AI安全之家”,主要圍繞Python大數據分析、網絡空間安全、人工智能、Web滲透及攻防技術進行講解,同時分享CCF、SCI、南核北核論文的算法實現。娜璋之家會更加系統,并重構作者的所有文章,從零講解Python和安全,寫了近十年文章,真心想把自己所學所感所做分享出來,還請各位多多指教!謝謝。2021年繼續加油!
參考文獻:
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
大鴨梨在北京有幾家分店???都在哪里?雅麗烤鴨店(上地店)招牌菜:精品烤鴨、剁椒魚頭、饞嘴牛蛙、砂鍋大魚頭。地址:海淀區上地農大南路舒村北圖書優惠券地圖大鴨梨烤鴨店(紫竹橋餐廳)美食:家常菜人均消費:30元優惠:90%招牌菜:精品烤鴨、剁椒魚頭、饞嘴牛蛙、砂鍋大魚頭。地址:海淀區北洼路98號(化工大學內),預約優惠券地圖大鴨梨烤鴨店(西三旗店)美食:家常菜人均消費:30元優惠:90%招牌菜:精品烤鴨...
華堂超市是哪個國家?北京華堂商場是北京著名的大型商場之一。是北京唯一一家與日本洋華堂在合作的綜合性大型百貨商場。北京周邊大型商場?1.燕莎友誼商城地址:朝陽區亮馬橋路52號2.賽特購物中心地址:朝陽區建國門外大街22號3.西單商場地址:西城區西單北大街120號4.復興商業城地址:西城區復興門外大街4號5.城鄉貿易中心地址:垣曲區復興路23號6.藍鳥大廈地址:朝陽區朝陽門外大街8號7.文海商業大廈地...
大白鯊遠控使用教程?云遙控軟件,比大白鯊好。首先,大白鯊的軟件多年沒有更新,肯定會報毒。云遠程控制軟件的生成是免殺戮的,生成服務器可以通過發送給對方來控制。剛出生的大白鯊怎么養?大白鯊繁殖方法:1。大白鯊屬于雜食性動物,攝食以肉食為主,也吃各種小魚、魚、蝦、落蟲、蚯蚓、蝸牛肉等高蛋白飼料。大白鯊需要每天喂食。保持水質新鮮良好,當水質不好時,大白鯊會出現應激狀態,到處碰撞;4。自來水要爆煤氣,只能用...