初,我只是要幫忙看看網路問題而已,真的!

公司有個部門幾天前換了IP,就開始陸續有人回報某幾程式不能跑或一些奇奇怪怪的狀況。原本推測應該是改IP、網域信任之類的問題,卻一直無法找出直接關聯的證據。最後網管將問題縮小具體化為,有一支放在File Server上的程式,某一樓層的可用、另一樓層的人只要一開啟,我的電腦及一些日常操作就會變得極慢,例如: 用檔案總管下按F5 Refresh時,系統就Hang了,但若點一下其他的開著的程式(什麼都好,例如: Notepad,用Developer的角度詮釋就是讓檔案總管Lost Focus)。由於前晚網管人員忙到十點都無法解決,今早我就接到指令去幫忙看看。

由於剛換過IP,有問題的程式又會去讀取網路分享的檔案,一開始我也朝網路方式偵辦,但由一路蒐集的線索,很快的就把網路問題給排除了。理由是,1) Net Use等測試OK,而且只有在跑過問題程式後,才會發生Hang的情形,只要Logout再Logon Hang的狀況就消失 2) 在放問題程式的目錄下,有另一個免費軟體,用來查郵遞區號,跟問題程式一樣是用Delphi寫的。

莫非Delphi程式都會這樣,請RD寫了一個Hello World Delphi小程式測試,卻是正常的,看來並非Delphi的問題。難道是病毒?? 一時要不到問題程式的原始檔案比對,我設法找到了郵遞區號的1.12版程式,發現它也可以正常跑,會Hang的郵遞區號程式則1.14版。很好,比對了一下兩個程式的二進位碼,發現一開頭就有很大的差異,1.12版有This program cannot be run in DOS mode的Win EXE檔特徵,1.14版則沒有。對EXE檔結構雖沒深入研究,但也看出些不對勁,我心想,小改版應該不會變動這麼多才對,莫非用不同版本的Delphi或不同的方法去Build的? 但實在找不到1.14版來比較。回頭再問了一下問題程式是否有原始檔案可以比對,還是沒下文,我想算了(這是我犯的第一個錯誤),把檔案帶回去研究看看好了。

檔案Copy到我的機器上後,心想,這些檔案歷經市場上兩大品牌防毒軟體的檢驗,應該有毒的機率很低(這是第二個錯誤),仗著我的機器有裝防毒及Windows Defender,先執行了1.12版ZipCode程式OK,再試1.14(這是第三個錯誤),並不會Hang住,但速度略慢,但開始有些怪事發生了,桌面(Explorer.exe)忽然結束又重新啟動,然後在事件檢視器中出現Windows Defender發現疑似木馬行為(mssbupx.dll有可疑活動及Windows Socket 2.0 Non-IFS Service Provider Support Environment服務啟用又用的System Event)。

最後發生了一件事,證實了我的疑慮:
我中毒了! 我中毒了! 我中毒了! 我中毒了! 我中毒了! 我中毒了! 我中毒了! 我中毒了! 我中毒了~~~
在執行1.14版時,UltraEdit通知我1.12版的檔案被更改了! Reload之後驚覺cannot be run in DOS mode的訊息不見了,取而代之的是"PE" NT Signature的程式碼段。



心涼了半截! 此時我得蒐集事證,確認是病毒後通報網管人員做緊急處置。
我使用File Monitor側錄,在Windows目錄下找到了一個只有5K的WinVer.exe檔做誘餌,果然蒐集到足以起訴它的呈堂證供。


這是段犯罪實錄呀! Explorer.exe在檔案後方加了30K的資料,並在EXE檔第64 Byte起插入768 Bytes(這就是cannot be run in DOS mode消失的原因)。接修改檔案長度及把最後更新時間切回修改前的樣子。有了這個,我可以確定Explorer已被病毒附身了。[關於這個病毒的研究心得,我寫在前一篇Blog中了]

通報了網管組的主管,並將被感染的WinVer送交給他們轉送防毒公司。公司開始封鎖疫區,採行一些緊急措施,防止傷害擴大,而無辜的IP更換作業也終於卸下了揹負多日的黑鍋。

防毒公司的反應讓我有些失望,心想連我都可以抓到明確事證,確認是病毒,至少是具有感染性的程式。兩家公司的第一時間反應,似乎就只是用自家的防毒軟體掃一掃,沒查出有已知的病毒,就給了回覆。說什麼經掃瞄後未發現病毒(廢話,掃得到還要通報你們嗎?),但判斷該程式有可能具有惡意程式,建議不要使用。咳... 所有送交給他們的程式應該都可以套用這個回覆吧??  再協調爭取的結果,有簽六小時緊急處理時限的公司拒絕承認這是病毒,真是高招,只要在做出解毒劑前二小時再承認就永遠不會違約,好個射箭再畫靶!
另一家未合作的公司則給了二個小時內交付解毒程式的承諾(當時便很懷疑,二小時會不會太短? 後來證實,這比像業務搶案子時的豪氣干雲)。結果是,合約廠商在48小時後總算出了具有偵測能力的病毒碼更新,競爭廠商則仍然沒消沒息。不禁要小小埋怨,連我都能精準抓出感染過程,一家防毒公司想必精通組合語言的高手如雲,又有標本可供研究,我原本預期的解藥製程應在12小時內,居然花了兩三天還沒能100%除根,實在太讓人失望了!!

筆都丟完了。好,平心靜氣,我們還是要來檢討這次的處置過程。對自己研判問題、推理原因及善用工具的表現,並在一天內提出足夠的事證,讓網管人員能及早針對病毒做因應,我給自己80分的高分。但從另一角度來看,我卻犯下了幾個愚蠢的淊天大錯:
1) 當懷疑檔案被感染時,我沒有堅持要到原始檔做比對;郵遞區號程式有版本的差異,讓目已鄉愿地找了藉口,坐視在第一時間咬定是病毒的機會溜走。錯失了時效,還導致後來惹毒上身。
2) 在懷疑檔案有毒的狀況下,我選擇相信防毒軟體,而忽略自己的直覺。Remember what Fox Mulder said, "Trust NO ONE!"
3) 我居然笨到用自己的本機去跑嫌疑的檔案,這種危險的事,叫VM出來當替死鬼就得了。
總結下來,這堂病毒震撼教育,我只給自己49分的難看分數,但由這場戰爭中,我有了全新的體認,下次,我一定會做得更好!!


Comments

# by Aspect Solution

Henry Lee vs Jeffrey Lee<BR/>您現在可以算是貴公司的神探李昌鈺了。真的是很棒的一篇文章。

# by Anonymous

這隻病毒很怪, 我用 VM 都跑不起來, 花了很多時間要分析卻分析不出東西...<BR/><BR/>後來找了台實機... 就可以了. 乖乖..

Post a comment