java防止上传恶意文件_从补丁分析到在野利用:揭秘CVE20201464 Windows文件签名验证绕过漏洞疑云...
背景
2020年8月12日,微軟發布了8月份的漏洞風險通告。通告中一個顯示已被公開披露和在野利用的漏洞進入了我們的視野。該漏洞編號為CVE-2020-1464,其被描述為Windows驗證文件數字簽名時存在一個欺騙漏洞,攻擊者若成功利用此漏洞可以繞過Windows數字簽名安全驗證并加載執行未正確簽名的惡意文件。而在真實攻擊情形中,攻擊者利用該漏洞可能會繞過防止加載未正確簽名文件的安全軟件(如殺毒軟件等)。
紅雨滴團隊研究人員在經過補丁對比分析后發現,該漏洞疑似為VirusTotal在2019年1月公開的針對.MSI(Windows Installer文件)文件數字簽名驗證繞過的攻擊利用技術[2]。而在文章發布近一年半后,微軟終于修復了該問題。我們在VirusTotal上也發現了數十個利用該漏洞的在野樣本,隨后奇安信威脅情報中心也第一時間在安全社區[1]公開了該漏洞的相關信息。
https://twitter.com/RedDrip7/status/1294225309336707072
漏洞原理
紅雨滴團隊研究人員通過補丁對比分析后發現,該漏洞原理為Windows在驗證.MSI文件的數字簽名時未對MSI文件的附加數據(復合二進制文件以外的數據)進行校驗,這樣在擁有合法數字簽名的MSI文件尾部增加其它數據后,該文件也能通過Windows的簽名驗證:顯示數字簽名正常。
而如果在擁有合法數字簽名的MSI文件尾部附加比如一個惡意的.jar(JAVA可執行文件)文件后,再將該文件重命名為.jar后綴。由于JAVA運行時環境對.jar文件的寬松解析特性,此時雙擊執行該文件將會執行文件末尾附加的惡意.jar文件,從而可能繞過安全軟件的檢測進而分發惡意軟件。當然如果有其它類型文件也擁有這種寬松解析特性,那也可以用于利用該漏洞進行類似攻擊。
補丁分析及修復原理
我們通過分析8月份Windows 7和Windows 10的補丁文件后發現,被修復的msisip.dll文件可能是CVE-2020-1464漏洞所在的文件。
使用BinDiff對比補丁前后的msisip.dll,發現補丁后的msisip.dll!MsiSIPVerifyIndirectData函數內新增了兩個判斷邏輯(NeedFileSizeVerification和VerifyFileSize)。
NeedFileSizeVerification函數為一個檢測開關,決定是否調用VerifyFileSize對MSI文件進行檢查。如果在指定的注冊表鍵下存在指定的值,則關閉此開關,默認為開啟狀態。
VerifyFileSize函數會對MSI文件進行具體的檢查。該函數會初始化CFBFileFormatCheck類,并調用其中的VerifyFileSize成員函數。
CFBFileFormatCheck::VerifyFileSize函數首先調用該類的另一成員函數GetDiscFileSize檢測該文件大小是否非零,然后調用GetCFBFileSize成員函數做進一步的檢查。
CFBFileFormatCheck::GetCFBFileSize函數中會解析MSI的頭部,并判斷MSI中核心的頭部字段是否有效。
通過奇安信威脅情報中心研究人員的分析,補丁增加的函數主要檢測了以下的字段:
NumFatSects不能為0
NumFatSects不能為-5、-4、-3、-2、-1
FirstDIFATSectorLocation不能為0
NumberOfDIFATSectors不能為-5、-4、-3、-2、-1
MajorVer必須為4
SectorShift必須為12
MiniSecShift必須為6
DIFAT中的有效扇區數量必須小于或等于NumFatSects
MSI文件的大小必須是(2^SectorShift)的整數倍
MSI文件的大小必須大于2*(2^SectorShift)
DIFAT有效扇區中對應的最大SID值必須等于(MSI_FileSize/(2^SectorShift)-2)
歸根結底,補丁的作用是為了防止在MSI文件末尾附加數據,如果附加了其它的數據,則當前的MSI簽名驗證將無法正確驗證通過。
在野利用分析
我們通過奇安信大數據分析平臺查找到一例疑似最早在VirusTotal上出現的利用該漏洞的在野樣本:
https://www.virustotal.com/gui/file/0f4238c3b41b99fd94f264b0df5b0400906a7e20af82107476dca4723aeb66bf/detection
該樣本初始上傳時也僅有6家殺軟能夠查殺:
上述樣本在未打2020.08月補丁前,是具有欺騙效果的。右鍵查看選項卡中的數字簽名,可看到其擁有微軟官方的數字簽名,且數字簽名正常。
不僅如此,使用低版本的SigCheck也會有簽名欺騙的效果。2019年的一篇通告中指出微軟和VirusTotal達成合作,對SigCheck2.70及以后的版本加入了對MSI篡改的檢測,所以使用SigCheck2.70之前的版本將不會對這類漏洞利用樣本有任何提示。
使用SigCheck2.70之后的版本對利用該漏洞的MSI文件進行簽名檢測,會提示文件大小無效。
在打上2020.08月的補丁后,右鍵查看選項卡中的數字簽名將提示無效。
POC構造
利用該漏洞的樣本極容易構造,只需要找到一個有正確數字簽名的.MSI文件(比如擁有微軟數字簽名的文件),然后將惡意的JAR文件附加到MSI文件末尾,并將文件后綴修改為.jar。此時的JAR文件將擁有微軟的正常簽名,但是一旦雙擊該文件,惡意的JAR將會執行。
公開披露
其實,早在2019年01月,VirusTotal便在其的一篇技術分析報告中(https://blog.virustotal.com/2019/01/distribution-of-malicious-jar-appended.html)詳細描述了MSI簽名欺騙漏洞。報告中明確指出微軟當時并沒有修復該漏洞的打算。但是現在微軟突然修復了此漏洞,即使此漏洞不是所謂的CVE-2020-1464,也足以讓人匪夷所思了。
也許這也是微軟在CVE-2020-1464的安全通告中描述該漏洞為已公開披露的原因吧。
IOCs
VirusTotal上利用該漏洞分發惡意程序的文件MD5
0cbd9fedd37dc083765344678eb1afa2
1e6b3a2d8a5ceeaa007a45b3909bcc79
7518b1c88fd6a4477d2e65925eab9a24
43b074d8b331a66e1696eecf6c79e6f9
db0d40c9576f491f26e485233e4d1b80
bc4156817ce79bb4310c1469a6cca247
355bc242cce2044bdf9ba7478a58ea08
efa71fc71b9335e6b634b86b0dd7a41c
03dcba3432021b00ee282efcb52af2d1
3e16acf1d60041f18a2506a82a4d0476
b01fb4466de75ff9c1d3013282d32f41
9012770b1838b6ed23ac7a44dcfef171
96929921fafb080c2a914420c6854932
b7b7b6ffd677bd506ca070b330be69cc
65a137d42ab4a2e88af0c517dea6550f
f9fd811b038a75c8023e9dce36e9ecc8
5f58de5832ae9f469eb52c89b86cf455
fec9c5147054a2c45436a484be7539ec
4feb40630168235000b8549ea5dec8b8
a4a64df68cf763c840552dd9d1c9b302
10db29d53d0862fdc14fb75f5977efe6
1c809ccea3274496793140eb11de0bcb
42444b12fd202fc0d234a35d00c9f567
c6353085aed4f2c07d5b1e9226f390d7
f5b66ded098b9036022a520c51f95446
76a26b83e203b4c279b5913fa7ae5e7e
372e36765f5a6b21919cddf46f871dbf
d9a89aaa631673357d4e2af5e584513b
a91e3c41de82c201ce0351d5b595c378
5c4c1ed91cd32ff49e1ca7086d594217
5c3548fe4f439dd017d3c84b82285c3c
5d9b0569a3b9563af27a838af7a18d21
1d941c4dee6f9770acc3cc59e5983f86
f8bfa1f0ed2de5c7fccbef1687024d56
84c04a9757b164bdcd544370647ff3b7
0126910bb1a81205b579b0bad9fe1071
f49f5381335ac2de02ddbb21ecce5317
8a8c6e2b6f5cd7d3a940fec0a8b42637
d19dcae454266045083a6e66c256c782
94220f1326e2fce70abebafcd44dde66
參考鏈接
[1]. https://twitter.com/RedDrip7/status/1294225309336707072
[2]. https://blog.virustotal.com/2019/01/distribution-of-malicious-jar-appended.html
總結
以上是生活随笔為你收集整理的java防止上传恶意文件_从补丁分析到在野利用:揭秘CVE20201464 Windows文件签名验证绕过漏洞疑云...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot中接口实例化_Ang
- 下一篇: java 安卓视频播放器_java -