作者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