Web 服务器安全检查
本文包含一个安全检查脚本,并介绍了如何保护Windows和Linux Web服务器免受黑客攻击。
不安全的Web服务器
本文致力于一个非常重要的话题:Web服务器的安全性。
- 如果您是服务器管理员,您可以在此找到有关如何保护服务器安全的技巧。
- 如果您的网站托管在公共Web托管上,您可以进行安全检查。
- 如果您正在编程Web应用程序,您可以在此找到有关安全编程的技巧。
本文涵盖3个主要主题
- 如何清除共享环境(托管)中恶意用户的威胁
- 如何有效防御恶意软件
- 如何学习安全Web编程并击败黑客
安全检查结果令人震惊
一方面,有黑客试图从外部入侵服务器。
但另一方面,服务器管理员几乎总是忽略一个非常重要的话题
如果域托管服务器上的用户通过FTP上传恶意脚本来操纵其他用户的网站甚至服务器配置本身,该怎么办?
上面,您可以下载一个PHP脚本和一个等效的ASP脚本,您可以在Web服务器上运行它们来检查安全性。
这两个脚本都做同样的事情:它们列出目录并显示文本文件的内容。
此外,您可以尝试执行Shell命令。请继续阅读以获取更多详细信息……
PHP脚本在PHP 4和PHP 5上运行,并在Windows和Linux上进行了测试。
ASP脚本的功能稍少,因为ASP脚本语言非常原始。
如果配置正确的服务器,当您尝试在自己的主目录之外执行此操作时,应显示“访问被拒绝”错误。
但是我尝试了在一些公共Web托管服务器上运行这些脚本,其结果令人震惊
在Windows服务器上,我能够读取和写入C:\Windows和C:\Program Files。
在Linux服务器上,我可以执行任何Shell命令,并读取和写入几乎整个硬盘。
脚本输出可能如下所示

在两台服务器上,我都可以访问其他用户的主页,甚至管理站点,正如您上面所见。
我无需任何FTP密码即可完全访问这些文件夹。
如果在行中看到“RW”,则表示脚本对该文件具有读写权限。
您想在这样不安全的托管上托管您的私有数据库吗?
即使恶意人员没有损坏其他用户的文件:仅仅能够读取文件就是一种风险。
读取其他用户文件的威胁
通常的做法是将数据库访问密码未加密地存储在config.php或config.asp文件中。
即使恶意用户只有读取权限访问您的Joomla、Typo3、Drupal、Mambo、Wordpress或CRM安装的源代码文件,他也将获得访问数据库的密码。这样,他就可以读取数据库并找到管理员密码,从而完全控制您的网站。

或者,恶意用户可能会在Temp文件夹中搜索会话文件,这些会话文件将所有会话变量未加密地存储在磁盘上。
会话文件可能如下所示

您可以看到:您绝不应该在会话中存储密码!(您也不应该以明文形式将其传输到服务器。)
不安全配置的服务器的威胁
在您的服务器上运行此脚本,如果您发现漏洞,请立即通过此文章的链接写信给管理员,其中我解释了一些使服务器更安全的方法!
如果服务器配置正确,脚本将既无法访问其他用户的站点,也无法写入系统目录。
如何检查安全性
- 脚本首先显示您的主目录。尝试通过链接
[..]
导航到父目录。这应该是不可行的
opendir(nfs/c24/h15/mnt/67909/domains): 无法打开目录:Permission denied - 脚本显示的所有驱动器都是可访问的
只要系统目录不授予写入权限,并且只要敏感内容的子目录无法读取,这都是可以接受的。但您也可以配置服务器,使其不出现任何脚本输出。
- 如果您可以列出目录的内容,则表示您对该目录具有读取权限。尽管如此,在Linux上,如果您访问的文件是链接(标记为“?”)到受限目录,您可能无法访问其中一些文件。
- 如果您可以查看文件内容,则表示您对该文件具有读取权限。
- 如果您可以从硬盘上传文件到当前目录,则表示您具有写入权限。系统目录不允许这样做
move_uploaded_file(/usr/bin/test.gif): 无法打开流:Read-only file system
不要忘记稍后删除您上传的所有测试文件! - 最后,检查您是否可以执行Shell命令。例如,在安全服务器上,不应允许
DIR C:\
或ls /home
。
您将对结果感到惊讶!
如何保护Apache上的PHP
运行phpinfo()
并检查open_basedir
行。使用此设置,您可以定义所有用户的基本目录。设置此值后,他们将无法再打开此根文件夹或其子文件夹(例如C:\Windows)之外的文件。

如果您有上述目录结构并将www_root
定义为基本目录,那么用户web_214
也将能够读取和写入用户web_215
的文件。但这正是我们想阻止的!那么我们能做什么呢?不幸的是,PHP.ini中没有设置可以阻止一个用户访问另一个用户的数据。如果有一个PHP.ini设置定义了所有用户的根文件夹,并且在此根文件夹的直接子文件夹不能被运行在其相邻文件夹之一中的脚本访问,那该多好。遗憾的是,这样的设置不存在。
但是,如果PHP在Apache上运行,有一个不方便的方法。
在phpinfo()
中,您会找到两列:“Master Value”是在PHP.ini中定义的;“Local Value”是实际起作用的值。
通常,“Master Value”可以通过函数ini_set()
在脚本中覆盖。但这不适用于open_basedir
,因为它是一个关键的安全值,只能由管理员设置。
在Apache配置文件httpd.conf中,您可以为open_basedir
指定一个每目录的“Local Value”

在Linux上,您可以用冒号分隔多个目录;在Windows上,用分号分隔。
在上面的示例中,web_214站点的访问被限制在其主目录/web_214/,此外,它还可以访问/usr/bin/。
对于Windows,httpd.conf可能如下所示(注意斜杠和反斜杠的混合使用!)
<Directory "C:/Program Files/Xampp/htdocs/web_214">
php_admin_value open_basedir "C:\Program Files\Xampp\htdocs\web_214;D:\Temp"
</Directory>
设置此项后,再次尝试安全检查脚本!现在,当您打开基于目录之外的文件时,您将看到一个错误
open_basedir restriction in effect. File(C:\Program Files\Xampp\htdocs\web_218) is not within the allowed path(s)
这有效,但缺点是对于未来添加的每个新用户,您都必须重新配置httpd.conf
并重新启动Apache!
如果您有一个添加新用户的脚本,您可以自动执行此操作。
不可能在.htaccess
文件中定义任何php_ADMIN_value
。这将是致命的:用户可以通过FTP上传的文件修改自己的basedir权限!
重要提示
请注意,basedir限制不适用于shell_exec()
命令!
您仍然可以执行shell_exec("DIR C:\\")
原因是basedir限制是PHP设置,仅适用于本地PHP命令,如fopen()
,但Shell命令由操作系统执行。
其他PHP安全设置
disable_functions
使用此PHP.ini设置,您应该禁用可能危险的函数。
但是请仔细思考您在做什么!禁用函数意味着某些脚本将停止工作!
有些函数非常危险,通常不需要用于脚本。其他函数对于某些目的可能是必不可少的。
所以不要仅仅禁用所有可能!最终!危险的函数。您最终会得到一个残缺不全的服务器!
请考虑此设置
disable_functions = exec, shell_exec, system, passthru, popen, proc_open, pcntl_exec
safe_mode
不要相信safe_mode = On
会很有帮助!它禁用了一些有用的函数,并且不能解决上述安全问题。所以不要浪费时间去考虑它!将其关闭!Safe Mode 在 PHP 5.3.0 中已弃用,并在 PHP 6.0.0 中被移除。
如何保护IIS
IIS使用一个Windows帐户IUSR_SERVERNAME来定义Web应用程序的权限。
您可以限制该帐户的NTFS权限,使其只能访问Web根目录。
但问题将与上面为Apache描述的相同:站点A将完全访问站点B的文件 - 但这正是我们想阻止的!
解决方案 1
您可以做一个简单的技巧:重命名目录!
现在,您从所有文件夹中删除IUSR_SERVERNAME
的NTFS权限,使其没有任何权限。
然后,您为所有子文件夹授予权限,但不为domains文件夹授予权限。
为什么?
现在,理论上petshop.uk
站点可以访问pizzarunner.com
的文件,因为它与其他站点具有相同的权限。
但由于它既不知道其他文件夹名称,也没有权限枚举domains的子文件夹。它没有机会操纵另一个站点的文件。
解决方案 2
更复杂的方法是使用应用程序池来隔离站点(IIS 6.0)。每个池必须在自己的Windows用户帐户下运行。
优点是
- 可以为每个池定义单独的NTFS权限。
- Web应用程序是隔离的,因此如果一个网站崩溃,其他网站仍可运行。
- 可以配置一个池以允许最大CPU使用量。
- 如果一个池发生内存泄漏,它不会影响其他池,因为每个池都有自己的资源。
设置匿名登录帐户:(网站设置)
设置应用程序池帐户:(应用程序池设置)
开始之前,您必须确保HTTP服务在工作进程隔离模式下运行(默认),否则池将不可用。
对于每个网站,您必须
- 创建一个新网站
- 创建一个新池并将网站分配给该池!
- 创建两个新的Windows用户帐户(例如,对于petshop.uk站点,分别为
POOL_PETSHOP
和LOGON_PETSHOP
) - 设置“密码永不过期”
- 将两个用户的NTFS权限限制为www主目录
- 将池用户帐户添加到组
IIS_WPG
(工作进程组),该组授予它所需的权限,例如启动应用程序池。但不要修改IIS_WPG
组本身的权限! - 将登录用户帐户添加到Guest组。
- 根据上述屏幕截图配置设置。
缺点
显然,应用程序池的缺点是每次添加新网站时,您都必须重复所有这些步骤,这非常麻烦。
如果您的服务器只需要PHP,最简单的解决方案是关闭IIS并安装Apache。
否则,您可能需要编写一个VBS脚本或C#应用程序来自动化这个复杂的过程。
以下是一些通过VBS脚本简化管理的技巧
- 创建一个新网站
IIsWeb.vbs /create D:\InetPub "Petshop" /b 80
- 在网站内创建一个虚拟目录
IIsVdir.vbs /create "Petshop"/OnlinePay D:\InetPub\Petshop\OnlinePay
- 设置文件夹权限
Cacls.exe D:\InetPub\Petshop\ /E /G LOGON_PETSHOP:F
- Web应用程序运行在MetaPath下,如“W3SVC/553851221/Root/AppName”。魔法数字是从网站名称计算的(微软喜欢复杂!)
注册一个Web应用程序以在.NET Framework 2下运行%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\Aspnet_Regiis.exe -sn MetaPath
- 将Web应用程序分配给池
Const POOLED_PROCESS = 2 Dim IIsWebVDirObj Set IIsWebVDirObj = GetObject("IIS:///" & sMetaPath) IIsWebVDirObj.AppCreate3 POOLED_PROCESS, "PoolName", true IIsWebVDirObj.SetInfo
如果您想编写一个(EXE)应用程序来调用外部脚本,如IIsWeb.vbs,请下载我的CaptureConsole.DLL,它允许从C++、C#、Visual Basic、Delphi、Java等编写的应用程序调用任何脚本或控制台程序,并获取控制台应用程序或脚本打印的输出stdout
和stderr
。
CGI、ColdFusion、Java、COM……
显然,仅保护您的服务器免受PHP和ASP中编写的恶意脚本的侵害是不够的。这些只是例子。
不要认为当您在此处下载的PHP和ASP脚本成功限制在主目录时,工作就完成了!
通过CreateObject("RegisteredName")
,ASP脚本可以加载服务器上安装的任何COM对象。其中一些可能很危险,或者可能存在安全漏洞。最好完全禁用ASP支持。谁需要这个原始时代的丑陋原始脚本语言?
如果您编写与我的脚本类似的脚本,例如用于Java或ColdFusion,请通过电子邮件将其发送给我!如果它是干净编写的代码(请不要发送意大利面条式代码),我将在CodeProject上与我的脚本一起发布它。
天真程序员的威胁
Web开发人员可能犯许多错误,导致网站不安全。
例如,如果您编写一个博客并允许用户上传图片,如果代码是由初学者编写的,这可能是一个严重的漏洞。此外,程序员在登录页面、“忘记密码”页面等处可能会犯几个错误。
有关此重要主题的更多信息,请参阅本文末尾!
重要的一点是,公共托管上一个不安全的网站是对整个服务器的威胁!
安装开源项目(例如PHP-Nuke)也可能存在风险,因为过去曾发现过几个安全漏洞。
特洛伊木马、后门和僵尸网络的威胁
互联网充满了不安全的服务器。
犯罪团伙利用这些服务器作为命令与控制服务器(C&C服务器)来控制他们的僵尸网络。
僵尸网络
一个僵尸网络是一个由机器人组成的网络。(类似于P2P)
一个僵尸网络服务器组可能包含20到20,000个被破解的机器。
这些网络中的机器人(robots)是运行在普通人PC上的特洛伊木马/后门。
这些受感染的计算机被称为“僵尸”。
一个机器人可能用于发送垃圾邮件、窃取电子邮件地址或银行和信用卡帐户,或执行拒绝服务(DOS)攻击。
僵尸网络由一个僵尸网络主控者控制,此人向其所有僵尸发送加密命令,例如:“DOS攻击IP地址X.Y.Z”,或者他发送一个垃圾邮件模板供其僵尸大规模发送。通过一个特殊命令,僵尸网络主控者甚至可以指示所有僵尸更新到新软件版本或交付新服务器列表。运行在普通受感染PC上的僵尸会将窃取的密码、银行帐户、TAN号或电子邮件地址发送到C&C服务器,僵尸网络主控者从中收集。
一些事实
听起来像科幻小说或偏执狂?
为了表明我不是在说些无关紧要的事情,这里有一些事实
荷兰警方发现了一个拥有140万个节点的僵尸网络。
据估计,多达四分之一的互联网个人计算机可能是一个僵尸网络的一部分。
Kraken僵尸网络已发展到超过40万个机器人,每天发送90亿条垃圾邮件。
Kraken僵尸网络几乎无法被传统防病毒软件检测到。
90%的垃圾邮件来自僵尸网络。
银行欺诈
通过内置键盘记录器的特洛伊木马,或直接读取浏览器内容,或通过表单注入,网络罪犯会窃取您用于登录银行帐户的密码。机器人将窃取的数据发送到其C&C服务器。网络罪犯(例如在乌克兰)然后将您的银行帐户中的钱转移到所谓的“Dropper”帐户。这是一个接收金钱,然后将其交给其“老板”(控制僵尸网络的人)的人,并且Dropper获得被盗资金的一定百分比的报酬。警方之后可能会抓获“Dropper”,但不知道谁在组织这项“业务”。如果汇款到一个腐败的国家,警方甚至可能参与这项“业务”。这是一场黑手党!所以您永远不会拿回被盗的钱。
阅读更多:McColo - 幕后黑手是谁?
Koobface攻击Facebook
Koobface机器人会自行安装到Internet Explorer中,并解析Facebook和MySpace网站的内容,然后将其收集的数据传输到其C&C服务器。当用户登录Facebook时,该蠕虫会使用当前Cookie捕获会话,并在不需要凭据的情况下连接到Facebook。该蠕虫读取用户的Facebook个人资料和好友列表,然后将其发送到其C&C服务器。然后,蠕虫从其C&C服务器接收一条消息,并将其在后台不可见地发送给Facebook联系人。Facebook要求验证码图像进行解析,Koobface将其发送到其C&C服务器。服务器可以在几秒钟内解析这些验证码图像。(如何做到这一点可以在这里阅读。)然后,蠕虫向联系人发送类似内容:“看这个视频!http://geocities.com/....”。当其他人访问该URL(一个钓鱼网站)时,该页面会显示需要安装新版Flash播放器才能观看视频。但是下载的文件“flash_update.exe”已被感染,并将在其他人的计算机上安装Koobface,并将其转换为僵尸。
Kraken注册域名
Kraken/Bobax机器人通过在dyndns.org、dynserv.com、yi.org等平台上注册的子域连接到其C&C服务器。动态构建的主机名后跟一个由英文字节组成的随机资源名称和一个扩展名,如asp、php、shtm、pl、cgi。机器人以随机的mime类型向其C&C服务器发送加密数据。Kraken不断注册新的子域。这种随机性使得阻止其服务器流量变得不可能。
Rustock通过Hotmail发送垃圾邮件
Rustock机器人注入WinLogon.exe并连接到Hotmail发送垃圾邮件。它从其C&C服务器接收命令,例如:“等待15分钟,然后下载垃圾邮件模板,在本地计算机上收集电子邮件地址,并启动60个线程发送垃圾邮件”。Rustock安装了一个Rootkit驱动程序,使其能够在系统上隐形运行。
理解Rustock rootkit驱动程序就像解谜一样。代码像洋葱一样被打包在许多层中。第一个解码器使用大量虚假指令、不起作用的代码块、从一个地方到另一个地方的随机跳转来解包代码——一个巨大的迷宫,用于混淆和隐藏真正的恶意代码。意大利面条式代码包含多个陷阱来崩溃调试器。每一层都会分配一个缓冲区,并将下一层解密到其中 - 就像解开俄罗斯套娃一样。
爱情机器人
这些机器人在约会网站上运行,同时与多人聊天。它们智能地分析答案,以便聊天对象不会注意到他们正在与机器人调情。它们可以切换到浪漫情人或性瘾者。目的是邀请受害者进入另一个网页,在那里例如一个脚本试图通过Active-X安全漏洞安装恶意软件。
结论
这些只是其中的一些例子。还有其他机器人攻击PayPal、Twitter、MySpace,或下载并安装恐吓软件……
正如您清楚看到的:今天的恶意软件具有不同于2002年的维度,当时人们拥有临时且缓慢的调制解调器连接,并且由脚本小子编写的蠕虫通过电子邮件附件传播。如今,基础设施允许有组织的犯罪分子通过他们由!非常熟练!的程序员编写的机器人来赚钱。20世纪90年代的第一代病毒是为了破坏计算机。新一代的机器人旨在在后台隐形地控制!
一个不安全的服务器不仅对它托管的用户构成威胁
您看到了让服务器安全是多么重要。
如果您的服务器被转换为命令与控制服务器,它将对整个互联网构成风险,并帮助网络罪犯进行他们的肮脏业务。
也许您的服务器已经是僵尸网络的一部分,谁知道……?
您能发誓它没有被感染吗?
您还信任病毒扫描程序吗?
Linux
如果您认为您的Linux服务器不会发生这种情况:您错了!许多C&C服务器是用PHP编写的。
随着Linux在越来越多的服务器上使用,感染的风险正在增加,不容忽视。
例如,Linux特洛伊木马OSX/Hovdy-A被设计用于打开防火墙。
完全没有bug和安全漏洞的操作系统根本不存在。Apache也有缺陷。
即使没有安全漏洞,如果使用了弱密码,Linux服务器也可能被攻破。
或者,如果shell_exec
命令在公共托管上未被禁用,任何用户都可以滥用它。
最后但并非最不重要的一点是:如果用户安装了像PHP Nuke这样的错误软件,这可能是黑客的入口。
许多僵尸网络的核心是Linux IRC服务器。即使Linux服务器 - 本身未被感染 - 仅被僵尸网络用于提供恶意软件供下载以感染Windows计算机,它也支持网络犯罪。
在我用我的脚本测试过的所有Linux服务器上,我都比应有的获得了更多的硬盘访问权限 - 即使是在知名的、拥有大量用户的托管公司。
许多Linux管理员认为自己是不可战胜的。这种态度本身就很危险(而且傲慢)!
管理员应始终遵循原则:信任是好的,控制更好。
安全补丁
始终为服务器打上最新的安全补丁是必不可少的。
一个很好的例子是蠕虫Conficker(Downadup),它在2009年1月至5月期间感染了全球1000万台计算机 - 其中许多是服务器。它利用RPC服务中的安全漏洞,通过网络自动安装。
但有趣的是:微软在此之前很早就发布了安全补丁KB958644:早在2008年10月。
这个蠕虫怎么可能感染这么多计算机?
显然是因为这些计算机的大多数没有打补丁!
病毒扫描程序
在服务器上安装病毒扫描程序很重要。
但是您永远不应依赖病毒扫描程序!
2009年3月,我的一个朋友的电脑感染了Conficker蠕虫,它非常智能。我尝试了五个不同的知名病毒扫描程序来删除它。扫描数小时后,它们都告诉我计算机是!干净的!第六个找到了蠕虫,但无法删除它。最后,微软的恶意软件删除工具删除了受感染的DLL。
这清楚地表明您不能依赖病毒扫描程序。
如果您有一个可疑文件,您可以将其上传到VirusTotal。
此免费服务的优势在于,它同时使用约30个病毒扫描程序扫描您的文件

此屏幕截图中的Autorun蠕虫已相当古老,因此几乎所有扫描程序都能检测到它。
但是,如果恶意软件非常新,您会注意到有许多扫描程序无法检测到它。
原因是病毒扫描程序使用签名(指纹),这些签名必须由杀毒公司的工作人员生成,这可能需要几周时间。但是新恶意软件的产生速度要快得多。

另一件事是,机器人可以远程更新到新版本。因此,当杀毒软件开始识别恶意软件时,僵尸网络主控者已经发布了一个新版本并更新了他所有的机器人!杀毒行业总是落后一步。这就是为什么像Kraken这样的僵尸网络几乎无法被传统防病毒软件检测到的原因。
此外,一些蠕虫成功禁用了防病毒软件。
许多机器人使用Rootkits来隐藏在操作系统中。
或者(像Conficker)它们通过打开受感染的DLL而不共享读取权限(FILE_SHARE_READ
)给其他进程来阻止它。因此,病毒扫描程序无法读取和分析文件内容。
还有一些网络罪犯会每隔几分钟重新编译和重新打包他们的恶意软件,并发布新的变种到野外,使得杀毒公司几乎不可能生成能够检测到所有这些数百个恶意软件版本的指纹。
这个问题非常类似于艾滋病病毒,它会不断改变其表面结构,从而欺骗免疫系统,免疫系统会寻找特定的表面蛋白。艾滋病病毒几乎无法被免疫系统检测到。
基于签名的病毒扫描程序的非常有吸引力的替代方案是ThreatExpert。
您可以将可疑文件上传到ThreatExpert在线提交。
他们将立即执行您的文件并分析恶意软件执行的所有操作。
在运行文件几分钟后,他们会发布结果,并向您发送一封包含指向您个人报告链接的电子邮件。
您将看到
- 文件创建的注册表项;
- 它操纵了哪些系统文件;
- 它修改了哪些系统设置;
- 它连接了哪些C&C服务器;
- 它下载并安装了哪些其他文件。
这是文件“My little baby.mp3.exe”的报告的片段,该文件是通过Windows Messenger接收的。
在网吧,一个特洛伊木马自动向该受感染计算机上聊天的人的所有Messenger联系人发送一条文本消息:“你好,听这首歌!我很喜欢。”以及扩展名为*.MP3.EXE的文件。
通常,恶意软件在您的PC上存在的时间不会很长。它可能会下载其他可执行文件,启动它们然后退出,如上面的示例所示。
也许您找到的文件已不再活跃。也许它只是一个“Dropper”,它已经下载了5个其他可执行文件,如特洛伊木马、键盘记录器、蠕虫、浏览器插件和垃圾邮件机器人。
因此,如果您发现一个可疑文件,请在尝试清理它以防止进一步感染时,将您的计算机与互联网断开!
注意
不要指望在任务管理器中看到恶意软件!
2003年的第一个蠕虫非常原始。但今天的恶意软件更智能,它会将DLL注入系统进程,或者安装隐藏恶意文件的rootkit驱动程序。
如果您在任务管理器中看不到任何可疑内容,这并不意味着您的计算机未被感染!
注意
此示例还表明,网吧、大学或图书馆等公共计算机存在高风险。其中大部分都已感染,如果您输入任何密码,很可能您的密码将被记录并滥用。切勿在公共计算机或朋友的计算机上进行网上银行!
如果您厌倦了每天下载兆字节的病毒扫描程序更新,但它们甚至都无法很好地保护您,您会问自己
难道没有什么可以实时阻止恶意软件执行恶意操作,例如安装驱动程序或挂钩到其他程序吗?
答案是:是的。有!
安装ThreatFire,它是您病毒扫描程序的智能补充,并且免费供个人使用!
ThreatFire检测恶意行为,例如捕获击键或窃取数据,而不是像普通防病毒软件那样仅查找已知威胁。它可以防止间谍软件、广告软件、键盘记录器、病毒、蠕虫、特洛伊木马、rootkit、缓冲区溢出和其他恶意软件。

当以下情况发生时,会出现其他消息
- 程序尝试直接访问原始磁盘扇区。
- 程序尝试将数据注入另一个程序。
- 程序尝试将线程注入另一个程序。
- 程序尝试安装网络接口。
- 程序尝试监视另一个进程。
- 程序尝试修改Internet Explorer的起始页。
- 程序尝试将自身复制到计算机上的不同位置。
- 程序尝试修改用户权限。
- 程序尝试关闭防病毒软件。
- 程序尝试从控制面板中删除某个功能。
- 程序尝试从任务管理器中隐藏进程。
- 程序尝试截取屏幕或窗口快照。
- 程序尝试更改防火墙的异常列表。
- 程序尝试修改hosts文件。
- 程序尝试创建Autorun条目。
- 程序尝试安装键盘记录器。
- 程序尝试在PIF或CMD文件中伪装自己。
- .......等等等等.......
让我们问问微软为什么这种保护不内置于Windows中!
从一开始我们就知道微软提供的只是伪安全,例如Internet Explorer中数千个令人困惑的“安全”设置,或者Vista中荒谬的用户帐户控制(UAC),它会在您想调整Windows时钟时弹出,但在恶意程序安装rootkit驱动程序时却保持沉默。
“野外”存在如此多恶意软件的唯一原因是因为Windows一旦双击EXE文件,就会授予进程无限权限。由于您不知道下载的程序是“好”还是“坏”,而且也无法信任防病毒软件,您唯一的选择就是执行它 - 好运。这就像赌博。
一个智能的操作系统应该提供在一个沙箱中执行可疑应用程序,在那里它不会造成任何伤害。但我们永远不会看到微软集成这样的功能:Windows 8不会,Windows 13也不会。
即使像Conficker这样的蠕虫通过网络安全漏洞自动且不可见地在后台安装自身,而无需双击任何EXE文件,ThreatFire也能提供很好的未来感染防护。
ThreatFire是一种非常好的未来感染防护。但是,如果您的计算机已经被感染,该怎么办?
如果您阅读了上面的文章,您会明白在受感染的Windows上安装和运行的病毒扫描程序帮助不大,因为
- 特洛伊木马通过其C&C服务器的更新速度比杀毒行业检测它们的速度更快。杀毒公司需要几天时间才能将所有新恶意软件的指纹添加到其数据库中。当您的杀毒软件正在下载另一个更新时,您的特洛伊木马已经下载了一个新版本,该版本尚未被检测到。因此,特洛伊木马始终更快,并保持未被检测到。
今天的僵尸网络特洛伊木马的工作方式与艾滋病病毒完全相同:虽然免疫系统需要相当长的时间才能产生足够的抗体,但在此期间,艾滋病病毒已经改变了免疫系统需要检测和消除它的表面蛋白。 - 一些特洛伊木马使用Rootkit来隐藏自身,并非所有杀毒软件都能检测到它们。
- 一些特洛伊木马打开受感染的文件,而不向其他进程提供共享权限,因此病毒扫描程序无法分析该文件,除非杀死持有该文件打开的进程。但恶意DLL可能已加载到系统进程中,例如“Services.exe”或“Smss.exe”,这些进程不容易被杀死。因此,当特洛伊木马将DLL注入系统进程并打开其文件时,大多数杀毒软件无法扫描该文件。
- 一些特洛伊木马会简单地杀死或禁用它们发现运行的所有杀毒软件。
由于所有这些问题,您会明白,一台已经受感染的计算机无法通过运行在该计算机上的杀毒程序来清理。
那么,如何对计算机进行消毒?
- 完全断开受感染计算机与互联网的连接,至少一周。断开网络电缆并禁用所有网络适配器!(LAN + WLAN)!这是整个过程中最重要的一步!您必须阻止特洛伊木马从互联网下载新版本。
- 至少一周后,您的硬盘上将有一个特洛伊木马,它可能已经被添加到杀毒软件的指纹数据库中。
- 现在,用F-Secure Rescue CD启动受感染的计算机。此免费CD包含一个带有杀毒软件的Linux。
- 当Linux启动后,CD会告诉您它要连接到F-Secure服务器。现在,!在此之前!连接网络电缆。
- F-Secure Rescue CD现在将下载最新的病毒定义数据库。这需要大约10分钟。
- 然后您可以扫描所有硬盘 - 并且不要忘记也扫描您的USB闪存驱动器!当此CD扫描您的硬盘时,不会有rootkit处于活动状态,也不会有任何文件被任何进程打开。此Linux可以查看您所有的文件 - 它们真实的样子 - 而无需任何隐藏技术或访问拒绝。
- 要关闭安全漏洞并避免再次感染,请至少安装所有被标记为关键的Windows更新。
- 由于许多特洛伊木马通过USB闪存驱动器传播,因此禁用Autorun功能以避免仅仅插入USB闪存驱动器就会再次感染计算机,这一点非常重要
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoDriveTypeAutoRun"=dword:000000FF
Nessus是一个漏洞扫描器。它通过网络远程扫描一台或多台计算机
- 它执行端口扫描并在打开的端口上尝试各种漏洞利用
- 它搜索配置错误(例如,开放邮件中继、数据库)
- 它检查缺失的安全补丁
- 它搜索在端口上侦听的特洛伊木马和后门
- 它尝试引发缓冲区溢出
- 它搜索默认密码和空白密码
- 它尝试通过发送损坏的数据包进行DOS攻击
- 它可以远程检测已安装的杀毒软件的版本
- 它可以检查不当的网络分段
- 扫描程序可以安排每天晚上扫描公司网络
- 以及更多更多……
Nessus使用一个250 MB的数据库和30,000个NASL测试脚本,其中包括针对aix、apache、backdoors、centos、debian、dns、fedora、firefox、firewalls、freedb、ftp、gentoo、iis、itunes、macosx、mandriva、mandrake、mysql、netware、openssh、oracle、p2p、php、realplayer、redhat、rpc、safari、samba、services、skype、slackware、smtp、solaris、suse、trendmicro、ubuntu、vmware、webspere、windows、xerox等等的独立测试……
对于它找到的每个安全漏洞,它都会打印非常详细的信息。

注意
一些Nessus的测试可能会导致易受攻击的服务或操作系统崩溃!
请参阅演示视频 | 下载Nessus安装程序 | 请求激活密钥(非专业用途,免费)。
您能否编写安全的Web应用程序?
您是用PHP、ASP、ASPX、Java、Perl、CGI、CFM……编程网站吗?
如果您从未花时间学习黑客如何攻击网站,您的代码将是天真的。一个天真的代码不会假设有恶意用户连接到该站点。作为一个天真的程序员,您甚至在梦中也无法想象黑客将以多大的智慧和创造力攻击您,他们会投入多少时间以及使用何种强大的工具来入侵您的网站!
重要提示
即使您已经编程网站多年,但从未学会如何击败黑客,您也绝对无法编写安全的代码!
如果您无法回答以下问题,您的代码将充满漏洞
- 如何对发布的数据进行清理?
- 将Cookie存储在客户端计算机上的风险是什么?
- 黑客在登录页面上尝试哪些攻击?
- 对于“忘记密码”的恢复,应避免哪些机制?
- 在一个编程糟糕的“更改密码”页面上可能出现哪些威胁?
- 什么是XSS?
- 黑客如何尝试绕过基于角色的权限?
- 存储数据到隐藏输入字段时需要注意什么?
- 什么是“SQL注入”,如何防御?
- 什么是“二阶SQL注入”?
- 什么是“XPath注入”?
- “Header注入”用于什么?
- 什么是“IFrame注入”?
- 什么是“路径遍历”漏洞?
- 黑客如何通过使用网络嗅探器获得访问权限?
- 电子邮件表单如何被滥用以发送垃圾邮件?
- 为什么缺少强密码策略是对整个网站的风险?
- 什么是会话固定攻击?
- 使用Ajax时什么很重要?
- 什么是整数漏洞?
- 黑客如何产生缓冲区溢出?
- 如何避免通过网络发送明文密码?
- 关于Web服务器的缓存需要做出哪些考虑?
- “重放”是什么意思,如何防御?
- 如何保护敏感文件不被黑客下载?
- 在用户可以上传文件的页面上需要克服哪些风险?
- 异常应如何处理并显示给用户?
- 日志文件中应写入什么,不应写入什么?
- 黑客将使用哪些工具攻击您的网站?

您可以在“黑客手册”(740页)中找到这些问题的答案以及更多内容。这本书由经验丰富的作者撰写,他们分析了许多网站的安全风险。他们经常在网上银行网站上发现严重漏洞。
OWASP
如果您因任何原因无法购买这本书,您可以在OWASP网站上找到非常相似的免费信息。该项目致力于程序员提高安全性。
您可以在那里下载A Guide to Building Secure Web Applications,一本290页的PDF。

但这还不是全部:除了大量信息外,您还可以下载OWASP Live-CD,这是一个启动Linux的CD,其中已安装了许多黑客工具(其中许多是Firefox插件)。CD上的一个应用程序是“Web Goat”。这是一个用Java编写的不安全Web服务器,也可以单独下载。它附带一本手册,教您如何破解Web Goat。在几个课程中,您将学会使用不同的黑客工具并攻破Web Goat。
有了这些知识,您就可以开始编写安全的Web应用程序了……