最近一台被黑客控制的服务器被发现,上面包含了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)们使用的方法,不过,借助于最新的现成恶意软件工具,只需点击几下鼠标就可以实现这种复杂的攻击。 不管是什么机房都要有一个良好的管理制度,没有良好的管理制度机房的安全就会存在很大的风险,对机房的设备的保护只是机房管理制度最基本的一条,其实,对于机房还有更多的内在的管理需要注意。
现在的网络管理越来越困难,他们在机房上网的时候经常进行一些不正规的网络行为,利用机房的电脑和网络进行即时语音聊天的人越来越多,QQ、微信、钉钉已经成了老少必备的大众化软件,他们在机房打开电脑的第一件事就是挂上自己的聊天软件,还有的干脆在上机的 时候利用BT软件或者其它的一些下载工具下载电影,这不仅影响了机房网络的速度,更加影响了机房网络的安全。 一些受黑客入侵的网站在被访问的时候也将木马或者病毒植入了浏览者的电脑。这样,机房的网络时时刻刻都处在崩溃的边缘。
|