作者ccbruce (今、そこに いる僕)
看板AntiVirus
標題[閒聊] 從系統軟體開發的角度來看防毒
時間Sun Dec 26 02:35:01 2010
先自我介紹一下。我本身是在筆電的系統廠的高工。主要業務就是寫客戶要求的Win32下執
行的應用程式,如果各位手中有Toshiba或Dell的筆電,那很可能你就有用到我寫的程式
(只要你那電腦是我們公司代工的話)。我們寫的程式千奇百怪,範圍涵蓋真實模式及保
護模式(驅動程式跟一般應用程式)。功能則是從修改CMOS到與EC和BIOS打交道都有,高
階點的如DirectX、DirectShow或網路程式也都寫過。
那麼,根據這些經驗跟以前在學校學到的計算機相關理論,我是如何防毒呢?我並不是那
麼強調非得要灌防毒軟體不可,甚至有的時候防毒軟體會對我們的工作造成影響。而且我
也對防毒軟體帶來的效能瓶頸感到厭惡。我一直認為,有正確的觀念比灌了什麼防毒軟體
都來得重要,只要遵守良好的紀律,自然能與有害軟體絕緣(我在這裡用的是有害軟體,
Malware這個字眼,它涵蓋了病毒,Virus、蠕蟲,Worm與木馬,Troj/Backdoor這三個概
念)。對不遵守紀律的人來說,防毒軟體只是一張門神的像而已。事實上,有害軟體更像
是吸血鬼,吸血鬼不受到邀請的話,是進不了人家家門的。
1、不安裝無法信任的軟體
「不安裝來路不明或盜版軟體」這句話就好像「在路上看到可疑的包裹要送派出所」這
樣的騙小孩子的話一樣令人發噱。事實上不是所有來路不明的軟體都不值得信賴,而是
不要信任沒經過確實檢驗的軟體。在大多時候我都會這樣做:使用VMWare、VirtualBox
或Virtual PC來建立一個沙箱(Sandbox)、把想要測試的軟體放進去看看,萬一它有奇
怪的行為或是會傳輸任何敏感資料的行為的話,那就別在自己的工作機上使用。這種測
試不是只有一次,也可以是永久的,例如中國的程式,我就不會在工作機上灌。如QQ、
PPS,這時候我就非常推薦VirtualBox了,它有個無縫模式,可以把VM裡的應用程式的畫
面投影到桌面上來用,非常的人性化。另外,在安裝程式時,一定千萬要記得看EULA(
End User License Agreement,終端使用者授權合約)通常一個正式的程式都會把它要
做些什麼事寫在EULA裡頭,尤其是大公司更會這樣做。之前有個很有名的事件,日本有
個傢伙把H-Game的ISM竄改,將ISM的Loader換成自己寫的,安裝時會先要求使用者打自
己的資料,再掃描硬碟所有資料,接著抓下桌面,把這些資訊傳到網路上給人家看。要
砍掉還要給那傢伙錢。有一位校長就中標了,硬碟裡有疑似兒童色情的東西。台灣也有
不少鄉民中標,我有稍微抓下來跑跑看,發現它的EULA就有寫,因為這東西在上法院時
有用的,所以注意一下比較好。
2、有敏感行為的執行檔要注意它有沒有數位簽章
先定義一下何謂敏感行為。根據UAC的建議文件,凡是會Hook鍵盤滑鼠(熱鍵程式)、
查詢或操作系統的資訊(如WMI)、與其它程式互動(如移動視窗)、增刪改查
Registry和使用者目錄的程式都算。這些東西在執行前請先右鍵看它的數位簽章,如果
沒有或怪怪的,就小心點。附帶一提,UAC在處理這些東西雖然很煩,但是也真的是有
不少幫助,尤其是在需要Elevation(提升權限)的程式上,它處理得相當好。現在我
們系統廠發的程式,由於萬惡的WHQL(真的是萬惡,送一次要好幾百塊美金),基本上
都很能信賴。(有跑過DTM就知)
3、防火牆雖不是萬能,但不開就萬萬不能
比起Linux的IPFilter,微軟的防火牆不是那麼好用,功能也不多。但是開著確實可以保
平安。若是對預設防火牆不信任,也可以依賴其它牌子的。只是對我來說,預設的就已
足夠。附帶一提,在WinXP SP2以前有個漏洞,網路子系統會因為一個RPC整個癱瘓,連
防火牆一起倒霉的窘境已經在WinVista/7上補起來了。
4、定期換密碼,沒事注意一下行程跟埠的使用情形
換密碼的好處大家都知道,就不講了。但是行程的檢查是有撇步的,檢查的好是可以及
早避掉一些窘境。大家都知道按CTRL-SHIFT-ESC或taskmgr.exe可看到行程,但是要如何
分辨是好是壞呢?首先記得列出所有帳號的所有行程,一個一個看。先排序說明,沒說
明或說明看起來很蟞腳的,就按右鍵找出它的位置,位置很怪的(如C:\xxx)砍、名字
很怪的(如scvhost.exe,正常是svchost.exe)砍,沒簽章的砍,沒發佈公司的砍。有
些東西是掛SYSTEM帳號的服務或是由svchost.exe所載入(通常是DLL)砍不掉,就進安
全模式砍。對於一些尚未病入膏肓的機器來說,這招還蠻好用的。有時候有些程式會透
過DLL Injection(DLL注入)的手段來「隱身」,讓taskmgr看不到,這時候就記得用
tasklist.exe(它是Console程式)來看,因為DLL Injection對DOS子系統無效。基本上
Windows下的所有功能都有相對應的Console程式,我們所用的都是Windows Shell的一部
份而已。它們大部份都有對應的兄弟,就像一面鏡子一樣。接著,是埠的使用情況。會
看埠的使用情況的話,就可以掌握電腦的門戶了。打這個指令即可:
netstat -ano |find /I "listening"
結果就會是這樣:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2852
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 748
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 2852
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:3260 0.0.0.0:0 LISTENING 2136
TCP 0.0.0.0:3261 0.0.0.0:0 LISTENING 2136
TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:48023 0.0.0.0:0 LISTENING 2852
TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING 460
TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING 876
TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING 940
TCP 0.0.0.0:49156 0.0.0.0:0 LISTENING 512
TCP 0.0.0.0:49157 0.0.0.0:0 LISTENING 496
TCP 192.168.1.11:139 0.0.0.0:0 LISTENING 4
TCP 192.168.56.1:139 0.0.0.0:0 LISTENING 4
TCP [::]:135 [::]:0 LISTENING 748
TCP [::]:445 [::]:0 LISTENING 4
TCP [::]:5357 [::]:0 LISTENING 4
TCP [::]:49152 [::]:0 LISTENING 460
TCP [::]:49153 [::]:0 LISTENING 876
TCP [::]:49154 [::]:0 LISTENING 940
TCP [::]:49156 [::]:0 LISTENING 512
TCP [::]:49157 [::]:0 LISTENING 496
通常少於1024的port都是正規伺服器,要是自己明明沒開卻出現了,那就找出PID跟這
列表一致的行程把它砍了。大於1024的更是要注意,比如說聽3260和3261的傢伙,它的
PID是2136,於是我就用taskmgr找出它來,發現它是svchost.exe,代表它是個服務,
再列出命令列,發現是imgsvc這個服務,原來它是WIA服務,是正常的。注意有一種Port
一般程式不會去碰,叫做精英埠(Elite port)號碼是31337,有看到有程式在用這Port
就先砍再說,不過現在這規矩也不準了就是。
5、大陸網站能不上就別上
嗯,因為真的很危險。不管是政治上還是網路上。根據自己的經驗,中國網站十有八九
都會跑怪Script或是Flash,Flash是很危險的東西,也操機器。所以先捨IE,改用FF,
接著禁止中國網站跑Script及Flash就會比較安全。
6、定期更新,記得顯示副檔名
這個就不用再講了。
以上是我的作法,有什麼問題再來討論吧~
--
裸になって
何が悪い?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.57.76
※ 編輯: ccbruce 來自: 122.116.57.76 (12/26 02:37)
1F:推 uziel:看 process 與監視網路 port 可以用 Process Explorer 與 12/26 09:25
2F:→ uziel:TcpView 這兩個軟體,資訊較詳盡 12/26 09:26
3F:推 falconer:推一下!很實用的資訊!只是有時候是知易行難啊! 12/26 09:56
4F:→ falconer:特別是家裡有正在學電腦的老人家... 12/26 09:58
5F:推 miamodo:推. 正常軟件的訊息搜集行為難防. 12/26 10:11
6F:推 fantasyj:推,但通常一般只看對外上傳是否有異常,很難注意每個程序 12/26 12:45
7F:推 adcdle1988:推,很實用的資訊 12/26 14:09
8F:→ y3k:很久以前我也是有這種"我習慣好我最強"的想法 但是看多之後覺 12/26 14:16
9F:→ y3k:得方便也是值得考量的一件事情 對一般不重視的人還是推防毒好 12/26 14:18
10F:→ y3k:隨便一間公司找一個跑腿小弟和工程師 兩者的習慣就差很多 而且 12/26 14:19
11F:→ y3k:對錯實在難講 12/26 14:20
12F:推 asadfish:防毒我覺得還是必要,單純防止自己“無意識習慣不好” 12/26 22:23
13F:→ asadfish:因為有時候精神狀況不好,真的會造成奇怪的行為… 12/26 22:23
14F:推 fish0112:推~ 12/27 10:53
15F:推 srx080578:很強大 推 12/27 16:31
16F:推 dooraemoon:推 可惜我對資安的了解還太淺 所以還是要用防毒XD 12/27 18:21
17F:推 Wengboyu:靠北…全部大於1024 囧 12/27 21:01
18F:推 doom3:Xuetr在對岸好像很紅 這邊好像沒人用過 12/27 23:46
19F:→ doom3:就一個工具可以做你寫的一堆事 12/27 23:47
20F:→ Wengboyu:但說穿了你還是裝了個不知道誰做的軟體 而你相信它.. 12/28 12:52
21F:噓 xvid:這種文章很像email到處散播的垃圾信 12/28 23:34
22F:推 balanceCIH:對樓上而言,這是垃圾信 那到時候中毒時 不要哭著來找 12/29 02:47
23F:→ balanceCIH:救兵 12/29 02:47
24F:→ xvid:不好意思 我沒中過毒 不用當高工 這些概念也早就有了 12/29 14:36
25F:→ xvid:只覺得前兩段只是在毫洨 你慢慢哭 12/29 14:38
26F:推 cress0128:我不知道xvid在噓啥= = 12/30 16:41
27F:推 junorn:其實就很簡單的能力到哪防護就做到哪就這樣而已沒很複雜啦 12/30 18:00
28F:推 linhomeyeu:請問文中哪裡有提到一定要當高工才有這些觀念? 12/31 11:32
29F:→ linhomeyeu:xvid哪隻眼睛看到的? 12/31 11:33
30F:→ linhomeyeu:你不需要看可以不用推文 你推成這樣只是顯示你品德而已 12/31 11:33
31F:→ linhomeyeu:文中提醒他人防毒觀念的好意被你說成這樣 也是無奈 12/31 11:34
32F:推 crow0801:很多用VISTA/7的人都愛把UAC關掉或直接administrator登入 12/31 23:34
33F:→ crow0801:這樣根本是把微軟對於系統安全的機制給閹掉 12/31 23:35
34F:→ knight00931:某樓就是沒教養,到一堆版嘴砲 02/13 13:53
35F:推 davidbright:請問要怎麼只禁止中國網站跑script跟flash呢? 03/28 10:09