写在前面:
古训是没有错的:授人以鱼,不如授人以渔
其实在IT这个行业更加,有时候解决方案是需要自己去找的,今天之所以写这个文档,是希望能够给看的朋友们一个想法,当你遇到问题的时候,你需要冷静下来想想,怎么解决这个问题,而且你需要有一个思路,当然你可以不懂任务软件或网络或系统的东西,或者说是懂得少一点,但你得有思路,思路很重要。在当你有了思路以后,你不知道写这个程序的时候,你可以去问google、百度等等。
问题点:
都说有问题,才会有需求,有需求才会有解决方案,如果没有某一个需求,也许都没有人能够想到一个好的解决方案。最近桌面组的同事反应公司同事自带U盘中毒造成公司内部中毒情况聚增(当然公司本身有做USB权限管控,但不能够完全屏蔽,有需求的还是需要的,不能因为安全影响公司生产作业),这下麻烦了要是感染公司所有电脑怎么办了?总得有一个解决方法啊。为了将病毒扼杀在摇篮里,公司向Mcafee中国进行咨询关于U盘接入自动扫描的问题,但是结果是否定的(因为Mcafee采用的机制不一样)。这下只有自己想办法解决了。公司又不让安装什么360安全卫士、百度卫士等,怎么解决了?
解决思路:
你得先有一个程序这个程序的功能是当你插入U盘的时候,它会自动去发现你的U盘,然后对你的U盘进行杀毒,这样子就可以减少你公司内部网络中毒的可能性了。下面你就得去找这样子一个程序或者说自己写一个这样子的程序。
解决方案:
在网上找了一个软件,叫做USBDetective,具体作者不是很清楚,在这里感谢作者。
功能说明:
USB自动运行侦探是一个方便和可靠的应用程序,旨在为用户提供保护防止病毒感染监控USB设备和外部驱动器。如果检测到可疑文件,尽快将设备从你的计算机上移除,并立即进行杀毒检疫,并且检查你的电脑安全。
实现原理:
这个工具本身并没有杀毒的功能,只是当你插入U盘的时候,它可以调用你本身系统自带的杀毒软件进行杀毒。
相关设置:
1、右击下面的小图标,选择“option..”
2、在路径中选择杀毒软件主程序的位置,%Drive%为USB的驱动器,这个作者估计已经写死在程序里面了,点击“OK”
功能测试:
可以正常杀毒,OK,搞定!NO、NO、NO,问题出来了,杀毒完成后,因为他调用的是杀毒软件的程序内核,并没有调用GUI,这时候造成scan32.exe长驻在内存中,占用内存很大(比正常情况大很多),最主要的是CPU占用居高不下。
解决方法:
联系Mcafee中国,看看能不能解决这个问题。结果有失望了。真得中了那句话,靠天靠地不如靠自己。
本想通过DOS命令行的方式,去查看一下这个scan32.exe命令有没有什么参数,结果发现查看不到。没有办法去官网查一下看看,我得个去全E文,要搞晕人了,硬着头皮找下去,终于找到了一个参数表其中里面有一条是/autoexit 意思是扫描过后自动退出。于是想测试一下,可是USBDetective这个工具没有地方设置相关参数啊,这不是坑人吗?
凭着以前对于一些应用的设置与相关Linux、DOS命令行的使用习惯,感觉应该是可以做以下尝试的:在驱动器的参数后面加入一个/autoexit
测试成功,可以解决此问题。
当然相关设置也可以在USBDetectCfg.ini文件中设置:
[Option]
IsBoxRunAtWin=0
IsKVWhenInsUSB=1
AntiVirusPath=C:\Program Files\McAfee\VirusScan Enterprise\scan32.exe
AntiVirusParam=%Drive% /autoexit
IsRmUSBAfterKV=0
IsShowBalloonHint=1
经过测试终于可以用了,准备向桌面的同事交差了,问题又出来了?
第一、怎么给到用户,上千用户,而且不是所有的用户都有USB权限,一个一个发给他们不行啊?
第二、经过测试发现,普通域用户没有权限调用USBDetective工具。
解决方法:
第一个问题解决方法:
这个好解决通过域推送给指定的用户,只要写一个批处理搞定。将其设置到GPO的登录里面去。先判断C盘下面有没有这个目录,如果没有复制对应的程序到指定的目录。
@echo off
if not exist "c:\AutoUSBScan1.0" md "c:\AutoUSBScan1.0" && copy \\192.168.0.11\AutoUSBScan1.0\ c:\AutoUSBScan1.0\ /y
Exit
第二个问题解决方法:
加一个power users权限不就搞定了?不行啊,权限太大了,这又得想办法了?
于是想到了以前的一个类似的解决方法,将对应的应用程序转换成服务,并设置为自动启动,不就解决问题了吗?于是又开始了做批处理的过程了,内容如下所示:
@echo off
c:\AutoUSBScan1.0\instsrv.exe AutoUSBScan c:\AutoUSBScan1.0\srvany.exe
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AutoUSBScan\Parameters" /v Application /t REG_SZ /d "c:\AutoUSBScan1.0\USBDetective.exe" /f
net start AutoUSBScan
ping /n 10 127.1 >nul
@echo "您已经成功在%COMPUTERNAME%主机上安装USB扫描工具">>\\192.168.0.13\log\AutoUSBScanlog.txt
Exit
如下图所示:我们在对应的服务里面会看到一个AutoUSBScan的服务
在任务管理器里面可以看到一个USBDetective.exe应用程序,用户是属于SYSTEM的,而且占有的内存很小。
当然不可少的是,您需要将这两个批处理都放于GPO登录里面去,并且运行第二个批处理的时候您需要提升管理员权限,才能够在客户端自动制作对应的服务,并启用对应的服务。为了验证效果,特地将一个破解KEY放到U盘里面播入电脑,果然可以自动扫描并删除病毒了,至此这个问题完美解决了。
写在最后:
当写完这个文档的时候,我发现其实可以不用前面的那个工具,更容易解决这个问题,这里说一下大概的思路。自己写一个判断程序,用于判断是否有U盘插入,当然你得确保这个程序时时在监控你的系统,再做对应的下面的工作。