Malwarebytes安全更新如何導(dǎo)致錯(cuò)誤地識(shí)別惡意軟件
不久前的4月15日,在Malwarebytes論壇上開始出現(xiàn)關(guān)于惡意軟件檢測(cè)問(wèn)題的帖子。似乎突然間它將操作系統(tǒng)的一些部分文件還有它本身當(dāng)做是惡意軟件。
C:WindowsSystem32SessEnv.dll (Trojan.Downloader.ED) -> No action taken. [2c3c895fbbb0b97dfa37ff68d42fc63a]
C:WindowsSystem32upnphost.dll (Trojan.Downloader.ED) -> No action taken. [f1772bbd0a61f343e64b0463e3206898]
C:WindowsSystem32wcncsvc.dll (Trojan.Downloader.ED) -> No action taken. [35339a4ef07b2b0b6dc48dda8a79b749]
C:WindowsSystem32WebClnt.dll (Trojan.Downloader.ED) -> No action taken. [3a2e0adea3c82016c46d4720f21122de]
C:WindowsSystem32WsmSvc.dll (Trojan.Downloader.ED) -> No action taken. [e7815f897dee56e036fbf374e91af60a]
它為何開始檢測(cè)到它自己就是惡意軟件,一個(gè)可以解釋的通的起因是有什么東西出現(xiàn)了極其嚴(yán)重的錯(cuò)誤。
C:Program Files (x86)Malwarebytes’ Anti-Malwarembam.exe (Trojan.Downloader.ED) -> No action taken. [0365915779f2d16560d1a6c139cabf41]
C:Program Files (x86)Malwarebytes’ Anti-Malwarembamscheduler.exe (Trojan.Downloader.ED) -> No action taken. [d29647a1b2b9b18573be363108fb42be]
C:Program Files (x86)Malwarebytes’ Anti-Malwarembamservice.exe (Trojan.Downloader.ED) -> No action taken. [1e4ad612fc6f0a2c3af7ce9941c2ab55]
就像在主題為http://forums.malwarebytes.org/index.php?showtopic=125127 的帖子中所看到的,它開始認(rèn)為一些運(yùn)行的進(jìn)程,注冊(cè)表項(xiàng),還有存儲(chǔ)在硬盤上的文件都是惡意軟件的部分。
但Malwarebytes的開發(fā)人員很快就發(fā)布了解決此問(wèn)題的更新,甚至提供了一個(gè)專門修復(fù)此問(wèn)題的工具。如馬爾辛.克列金斯基在Malwarebytes博客上所發(fā)的帖子,這個(gè)問(wèn)題在幾分鐘內(nèi)就得到了修復(fù) -“在不到8分鐘的時(shí)間里,就可以從我們的服務(wù)器上獲取更新”。
那么是什么方面出了問(wèn)題了?為了能夠弄明白其中的原因,我們必須搞清楚更新系統(tǒng)是如何工作來(lái)找到我們所需的合適的惡意軟件定義文件。一條線索來(lái)自什么時(shí)候添加了錯(cuò)誤簽名,然后什么時(shí)候發(fā)布了修復(fù)的定義文件。從一個(gè)名叫“catscomputer”的用戶所發(fā)的一個(gè)帖子中我發(fā)現(xiàn)好像是一個(gè)升到版本“v2013.04.15.12”的更新,破壞了操作系統(tǒng)。而根據(jù)一個(gè)名叫“莫里斯.納加爾”的Malwarebytes員工在論壇上的所說(shuō),修復(fù)這個(gè)問(wèn)題的`更新是“v2013.04.15.13”。
為了了解Malwarebytes在更新時(shí)做了些什么,我打開Wireshark 進(jìn)行抓包分析(此時(shí)我正在寫這篇博客)。它做的第一件事情是檢查是否程序是最新的版本,然后是看看有沒有什么新聞消息(我是這么認(rèn)為的,但不是完全的確定)。所有有關(guān)更新的請(qǐng)求都發(fā)送到了“data-cdn.mbamupdates.com”。最后它所做的是我們感興趣的部分,更新定義文件。它開始請(qǐng)求最新的定義文件:GET /v1/database/rules/version.chk HTTP/1.1。
當(dāng)時(shí),返回的版本號(hào)是"v2013.06.27.09",這個(gè)版本的數(shù)據(jù)庫(kù)我本地沒有(目的就是確保我自己的是過(guò)期的,從而能夠顯示這個(gè)更新的過(guò)程)。使用這個(gè)新的版本信息,它開始請(qǐng)求這個(gè)定義文件的信息文件,它是一個(gè)yaml格式的文件,描述了定義文件的大小,在下載后進(jìn)行校驗(yàn)的哈希值,以及一些其它的元數(shù)據(jù)。請(qǐng)求如下:
GET /v1/database/rules/data/rules.v2013.06.27.09.ref.yaml HTTP/1.1
隨后,來(lái)自更新服務(wù)器的響應(yīng)如下:
filename: rules.v2013.06.27.09.ref
version:
previous: v2013.06.27.08
current: v2013.06.27.09
date: Thu, 27 Jun 2013 16:32:13 GMT
package:
size: 6616865
md5: cc8b2b2ace236d10eb833d9d3b46e23a
format: legacydb
content:
size: 26780341
md5: 318dd700ef1ac0b26b2eb2cf38d90cd4
format: legacydb
metadata:
size: 323
當(dāng)時(shí),它看起來(lái)像是在做針對(duì)這一天的增量更新,其發(fā)出的請(qǐng)求如下:
GET /v1/database/rules/data/rules.v2013.06.27.08_v2013.06.27.07.ref.inc HTTP/1.1。
我獲得了一個(gè)二進(jìn)制數(shù)據(jù)文件,好像就是其定義文件。我想要補(bǔ)充說(shuō)明的是,正在管理Malwarebytes更新服務(wù)器的某位管理員添加了一些額外的“X前向頭”到了響應(yīng)中:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=7200
Content-MD5: TtzBRPrw2mTl+UYhEYzMvw==
Content-Type: text/plain
Date: Thu, 27 Jun 2013 16:51:37 GMT
ETag: “8b6-4e02516192100"
Expires: Thu, 27 Jun 2013 18:51:37 GMT
Last-Modified: Thu, 27 Jun 2013 16:16:36 GMT
Server: ECAcc (ams/489A)
x-admin: tedivm was here.
X-Cache: HIT
x-shameless-plug: Looking for a dev job? Send your resume to jobs@malwarebytes.org
Content-Length: 2230
Connection: close
我想tedivm是這個(gè)管理員的代號(hào),所以它與“x-shameless-plug”頭能夠很好地吻合。
現(xiàn)在根據(jù)這些已經(jīng)獲得的更新文件,我們知道了它是如何工作的,對(duì)于我們所需要的兩個(gè)版本的定義文件,分別是“v2013.04.15.12”和“v2013.04.15.13”,我們能夠像下面這樣獲取:
GET /v1/database/rules/data/rules.v2013.04.15.12.ref HTTP/1.1
GET /v1/database/rules/data/rules.v2013.04.15.13.ref HTTP/1.1
我們所獲得的兩個(gè)二進(jìn)制數(shù)據(jù)文件,一個(gè)大小是6294406字節(jié),一個(gè)大小是6294350字節(jié),兩者沒有什么大的變化,但的確刪除了某些東西。關(guān)于這些更新文件有一個(gè)問(wèn)題,它們已經(jīng)被加密。我不會(huì)告訴你如何去解密它們,但我在一個(gè)好友的幫助下,通過(guò)使用OllyDbg工具進(jìn)行一些逆向工程分析,最終我們搞清楚了如何解密這些文件。下面是這些解密后的文件的不同之處:
VOFFSET=Trojan.Downloader.ED, 74433, 1, 6,
687474703A2F2F36342E36342E32302E35302F32373753457236372E657865, NS
VOFFSET=Trojan.Downloader.ED, 74485, 1, 14
687474703A2F2F6674702E74636D6C732E6F72672F7172415165562E657865, NS
這里的描述信息“Trojan.Downloader.ED”就是之前在論壇帖子上所述的出現(xiàn)問(wèn)題的描述信息。盡管這些規(guī)則準(zhǔn)確的工作原理,我不能說(shuō)我已經(jīng)100%確信是如何進(jìn)行的,但這已經(jīng)是到目前為止我所理解的東西:
VOFFSET: 某種用于字節(jié)匹配的偏移。無(wú)論是什么在等號(hào)之后的都是描述
74433和74485好像是數(shù)字簽名標(biāo)識(shí)符,
1,6和1.14好像是某種范圍,后面我會(huì)再回過(guò)來(lái)看它們
是與VT上的一種惡意軟件有關(guān)的URI的二進(jìn)制編碼格式
是與polyloader惡意軟件加載程序有關(guān)的URI的二進(jìn)制編碼格式
NS: 沒有關(guān)于這個(gè)是什么的線索
我想在應(yīng)用這些規(guī)則時(shí)出現(xiàn)了偏移錯(cuò)誤或誤解。如果你使用規(guī)則中的范圍作為那些字節(jié)模式匹配中的串分割符的話,那么在第一條規(guī)則中范圍1-6表示“http:”,而另一條規(guī)則中的范圍1-14表示“http://ftp.tc“。我猜開始的時(shí)候"http:"與每個(gè)地方都可以匹配上,可能NS是一個(gè)標(biāo)記,用以指示部分匹配也是可以的,誰(shuí)知道了。
我對(duì)MBAM檢測(cè)為惡意軟件的文件,做了一些檢查,方法是首先執(zhí)行Linux命令"strings -el "打印Unicode字符,然后根據(jù)其輸出的字節(jié)編碼,通過(guò)grep命令查找字符串"http:"。巧合的是,我從論壇上之前所投的帖子中所獲得的所有被誤認(rèn)為是惡意軟件的文件都包含了這些串,因此我想問(wèn)題可能就出在這里。
這是一件很有趣的事情去弄明白加密方法和實(shí)際的定義文件本身。我甚至嘗試將我自己定義的字節(jié)模式放入到自定義的規(guī)則文件中,去看看它是否那樣工作,而結(jié)果是確實(shí)如此。另外,要特別地感謝被我剝奪了睡眠的好友,你在凌晨4點(diǎn)為我制作出了解密工具,你知道自己是誰(shuí)的。
【Malwarebytes安全更新如何導(dǎo)致錯(cuò)誤地識(shí)別惡意軟件】相關(guān)文章:
如何安全地安裝電腦軟件08-11
企業(yè)該怎么做好惡意軟件安全防御08-22
音程如何識(shí)別03-24
如何安全下載軟件08-23
如何更新顯卡驅(qū)動(dòng)11-16
如何更新電腦系統(tǒng)?11-25
如何更新電腦系統(tǒng)09-18
如何識(shí)別電腦病毒08-30
如何做到安全地使用電腦03-08
如何借助題目識(shí)別題材02-28