最近一台被黑客控制的服务器被发现,上面包含了1.4GB从世界各地被感染计算机窃取来的企业和个人数据,其中包含众多银行帐号信息和5000多个大型金融机构的日志文件。为了更好的防护自己,我们需要了解黑客进行入侵和攻击的手法。安全业著名记者Davey Winder近日发表分析文章,从一个黑客的角度揭示了他们经常使用的技术。
黑客作为英雄的时代已经过去,今天多数黑客的目光都盯在了金钱上,其攻击的主要目标是商业公司的客户数据库。因为这些数据中包含了大量的信用卡信息、个人数据和其它有助于其窃取银行账号的信息。据市场分析机构Gartner表示,大约有75%的安全入侵都是通过软件安全漏洞进行的。鉴于企业越来越多的使用基于Web的应用,这个结果并不令人感到惊讶。
对于黑客来说,获取数据访问权限的最简单方法之一就是发现系统的一个后门,导致该后门的原因可能是不妥当的软件配置,或者编程漏洞,或者未能即时安装已经发布的漏洞补丁。
一、利用整数溢出(integer overflow)
无论是随意的编程,还是懒散的补丁安装,都可以给用户带来整数溢出安全缺陷,而它正是最受黑客喜爱的入侵方法之一。那么什么是整数溢出?它可以给黑客带来什么好处?简单的说,数字溢出是一种软件行为,导致的原因是数字运算的结果超出了系统所能处理的范围。安全专业厂商Coverity的C/C++和Java程序员Sumant Kowshik表示,“当一个数字运算得出了一个系统位宽无法存储的大结果时,该结果会被截取,会得到异常的结果值,这个溢出的值可以被用来实现一个关键的操作,诸如数组索引、内存分配或内存废弃等。”这类行为不仅可以让软件崩溃,而且还可以被黑客利用来访问系统中的特权内存内容。
实际上,所有这些安全缺陷都与数字运算产生不可信赖、用户可修改数值有关,潜在的溢出结果数据被用来作为进行诸如内存分配或缓冲区索引之类的关键操作。Kowshik表示,“通过利用整数溢出来重写任意存储位置,黑客能够以超级用户权限来运行安全关键应用,在现实世界软件中的整数溢出安全缺陷实例中,攻击者可以使用任意代码的地址来覆盖程序需要跳转的地址。”以下整数溢出除了打印错误值之外并不进行任何操作,因此该程序并不会造成破坏:
X = 0;
if (a > MAX_INT /2 && b > MAX_INT / 2)
/* x will *not* be equal to a + b */
x = a + b;
print(“x = %d\n”, x);
但是,有时候一个恶意用户可以借助整数溢出来控制内存分配尺寸,并且让系统执行恶意操作,诸如以下代码:
x = get_some_number_from_a_packet()
/*overflow in computation */
P = malloc(x * sizeof(int));
/* bad problem here */
P[x-1] = 0;
这种方法看似有些麻烦,是许多脚本小子(script-kiddies)们使用的方法,不过,借助于最新的现成恶意软件工具,只需点击几下鼠标就可以实现这种复杂的攻击。
[1] [2] [3] [4] [5] 下一页
二、Web漏洞利用工具集(Web Exploit Toolkits)
Web漏洞利用工具集已经存在了很长时间,目前已经存在了许多不同的工具集,诸如MPack、IcePack、AdPack,当然还有Neosploit。花钱不多即可从网上买到这类工具,购买后一个小时内即可将其激活。购买者所需要做的就是增加一个键盘记录器路径,输入所希望的数据发送目的地,并将其运行在某个服务器上。然后就是发送垃圾信息来引诱攻击目标到陷阱网站上。
正如杀毒软件公司AVG的首席研究官Roger Thompson所言,几乎所有的Web漏洞利用工具集都可以追溯到WebAttacker。“当访问者被引诱到一个WebAttacker网站时,它可以检查其浏览器和操作系统的类型,可以查看是否安装了特定应用程序,然后将它认为最容易被利用的漏洞发送给攻击者。”另外,它还将跟踪你的IP地址,更有趣的是,对于一种漏洞利用方式,它只进行一次尝试。Tompson表示,“其基本指导思想是,如果你是一个真正的用户,它们在利用一个漏洞攻击你时,要么第一次取得成功,要么