一个好的侦探,了解交易的犯罪头脑,技术和工具。为了保护您的数据库并防止它成为犯罪现场,了解攻击,数据盗窃和掩盖技术的常见方法至关重要。嫌疑人阵容可以来自外面的黑客,从信任员工,承包商和合作伙伴的行列中来自。一些威胁很容易防止或包含;虽然其他人更难以捉摸。幸运的是,可以随时使用保护数据库所需的许多安全机制和工具。
本文介绍了犯罪分子使用的已知攻击,方法和工具,以及用于分解数据库的新兴利用类别,建立控制,妥协系统,窃取数据,并掩盖轨道。我们还将介绍保护数据库以防止这些攻击方法的最佳实践。
将数据库服务器作为目标
考虑到数据库中储存的丰富信息及其在公开市场上的价值,数据库成为犯罪分子的首要目标也就不足为奇了。许多存储库中包含的个人、身份、贸易和军事数据可以卖到高价。同时,就业不稳定、并购等也会导致内部数据被盗。此外,数据可能会意外泄露,虽然这些行为不是犯罪,但它们可能导致严重的数据泄露。
可以说,数据库服务器为攻击者提供了完美的犯罪机会,它结合了动机(信息的转售价值)、手段(容易获得的工具)和机会(通过厚实的客户端应用程序、松散的内部网络控制和编写不良的应用程序直接访问服务器)。
五步程序
在尝试实施有效的数据库安全之前,了解导致违约的流程至关重要。这些过程可以分为五个基本步骤:
1.行业工具
2.首次访问
3.滥用特权
4.特权海拔
5.覆盖轨道
1.行业工具
攻击者攻击数据库服务器的第一步是获得正确的工具。这些内容非常容易获得,甚至对于内部用户也是如此。保安人员通常会通过以下假设来低估内部威胁:
*内部用户并非拥有黑客工具的“黑客”,他们本身也不具备制造“黑客工具”的能力。
*内部工作站的安全政策将拒绝终端用户安装软件。
虽然这两个假设可能都是正确的,但它们与最终用户获得数据库攻击工具的能力无关。事实证明,大多数类型的攻击(SQL相关)都可以通过标准的数据库客户端软件执行,比如数据库供应商提供的默认软件(例如Query Analyzer、SQL Plus等)。这个软件通常是企业中任何工作站基本安装的一部分。
此外,几乎可以在典型办公软件的工具中找到数据库攻击所需的所有功能Microsoft Excel。可以使用诸如记事本,WordPad或Telnet客户端的简单文本编辑器构建其他类型的攻击(例如网络协议相关攻击)。最后,在许多组织中,用户通过他们的家庭计算机远程访问内部网络,其中不存在软件安装限制。
2.首次访问
与数据库服务器进行初始接触需要两个元素。攻击者需要对数据库服务器的网络访问和一组有效的访问凭据(即用户名和密码)。考虑到大多数企业内部网络的安全性不高,通过网络访问数据库服务器通常是一件很容易的事情。即使在网络中存在一些内部访问限制,许多工作站仍被允许与数据库服务器通信,这是由于向用户提供了胖客户机应用程序。这些应用程序包含客户端上的所有应用程序逻辑,并直接与数据库服务器通信,而不是通过中间应用程序服务器。
某些类型的基础设施攻击利用数据库供应商特有的漏洞,这些漏洞只需要初始访问就可以关闭服务器或执行任意代码。但是,对于大多数攻击,攻击者必须提供一组有效的访问凭据。这些凭证可以通过各种方法获得,假设给犯罪者的不是正确的。以下是行凶者用于获取访问凭据的一些方法。
蛮力和穷举搜索
这种方法需要猜测大量可能的用户/密码组合,直到其中一个组合成功。虽然在理论上,这种方法是无效的,因为搜索空间很大,但在实践中,有一些技术可以用来减少寻找有效组合所需的猜测次数。
有许多技术(通常与数据库服务器中的小漏洞有关)允许攻击者找到有效的帐户名,然后搜索相应的密码。寻找用户帐户很容易,特别是当他们在组织中以系统的方式分配时,例如john。史密斯或JohnDoe。
有许多优化可以应用于密码的“猜测”。这些优化依赖于所谓的“密码规则”,这是一个与人们选择密码相关联的社交观测的编译。例如,帐户“John”可能有密码JohnJohn,Nohj,John1234等。在大型用户库中,密码规则大大减少了帐户/密码匹配所需的猜测次数。
默认帐户和密码
许多数据库服务器和部署在其上的应用程序都与配置了默认密码的默认帐户绑定在一起。除非管理员在安装时更改了所有默认设置,否则这些帐户为不请自来的客人提供了一个方便的访问点。此外,糟糕的安装和配置可能允许用户匿名访问数据库。即使授予匿名用户的访问权限是最小的,攻击者也可能使用这种破解来获得访问权限。
胖客户机应用程序
安装在工作站上的胖客户端应用程序直接与数据库服务器通信。为了让应用程序与数据库服务器通信,它必须拥有一组有效凭据。凭证要么由终端用户在运行软件时提供,要么通常嵌入到应用程序代码或本地配置文件中。在这两种情况下,使用文本编辑器的攻击者都可以很容易地获得这组凭据。
社会工程
该术语用于描述一组技术,包括电子邮件和电话,其中一个攻击者欺骗个人披露个人凭据。已知采用社会工程技术的肇事者欺骗管理员以新增的凭据为他们提供。(编者的说明 - 见社会工程:八种常见策略.)
3.滥用特权
大量的数据库攻击都是通过这个步骤进行的。当攻击者建立到数据库服务器的初始连接时,他们被授予一组访问特权。根据这些凭证的性质,它们可能允许访问足够的敏感信息或功能。如果凭据集是从胖客户机应用程序中获取的,则加害者可以绕过应用程序代码施加的访问限制,而不受数据库访问控制机制的约束。
实际上,服务器上有许多控制机制不存在。一个示例是对可以使用单个数据库查询检索的记录量缺乏限制。另一个是可以用于提取记录的标准缺乏限制。
典型的攻击场景包括使用常见Office软件中的工具,例如Microsoft Excel。这些工具可用于从数据库检索大量信息,这些信息可以存储在工作站本地,然后导出到可拆卸的介质。
其他犯罪场景涉及使用本机数据库客户端软件,使未经授权的(或不受控制的)更改为存储在数据库上的信息。
使用传统的访问控制机制很难检测特权滥用,因为在这些情况下,作恶者在不合法的情况下使用合法命令。例如,拥有合法特权的犯罪者通过在正常工作时间之外进行犯罪、使用不同的客户端机器或使用非法通道(即客户端应用程序)来避免被发现。
4.特权海拔
如果犯罪者无法通过使用初始联系人授予的基本特权来完成犯罪,他将获得机会,以获得行政特权。数据库中此级别的权限将允许犯罪者在数据库服务器中存储的任何信息几乎无限制地访问,并且更糟糕的是服务器本身的总控制。
有许多技术可以将管理特权授予非特权用户。最臭名昭著(但最难利用)的是缓冲区溢出攻击的使用。服务器软件不是为处理长时间用户输入而设计的。如果天真地使用,缓冲区溢出漏洞可以被利用来快速关闭服务器。但是,如果攻击者仔细计划了这种利用,他/她将被允许使用管理权限执行任意代码。缓冲区溢出漏洞存在于内置存储过程、SQL语句甚至内置函数中。前两种类型可以使用内部访问控制机制来缓解,而第三种类型需要数据库服务器中不存在的访问控制语义。
攻击者使用的第二种特权提升技术是通过存储过程进行SQL注入攻击。存储过程的编写方式是使用它们的参数构造SQL语句,然后使用过程所有者的权限执行这些SQL语句。因此,只允许执行存储过程的犯罪者实际上可以执行具有管理权限的任何SQL语句(假设在大多数情况下,存储过程的所有者是管理用户,将一些减少的功能暴露给特权较低的用户)。
第三种类型的特权提升攻击利用了SQL解析漏洞,例如甲骨文2007年(见http://www.red-database-security.com/advisory/oracle_view_vulnerability.html)。此漏洞允许攻击者创建一个特殊的数据库视图,该视图在数据库表上提供未经授权的INSERT、UPDATE或DELETE功能。所有这些特权提升技术都可以使用基本的数据库客户端工具,例如微软办公软件套件或默认数据库客户端安装。
较新且较小的已知,但令人难以置信的聪明攻击技术利用了数据库网络通信协议实现中固有的漏洞。这些专有协议用于客户端 - 服务器通信,并包括一系列安全漏洞,攻击者可以利用来获取对服务器的控制。为此,犯罪者可以使用简单的文本编辑器,但有些需要一个标准的telnet客户端,其他人需要更复杂的网络控制工具。数据库服务器内没有内部机制,以主动地保护这种类型的攻击。
5.覆盖轨道
聪明的小偷知道如何攻击而不被发现。这也适用于数据库罪犯,他们有几种方法来掩盖他们的踪迹。在许多情况下,犯罪者甚至不需要担心,因为内部审计机制由于性能和磁盘空间的考虑很少被激活。在讨论的许多攻击方法中,窃贼的行为不会触发警报。激活审计跟踪功能的服务器通常被设置为跟踪不成功执行导致的异常情况。但是,前面讨论的大多数技术都不会调用这些条件,而是会成功执行SQL语句。
让我们假设我们在数据库服务器上有一个正确配置的审计机制。犯罪者的第一步将在完成成功的特权高程攻击后进行,这将是关闭日志。在大多数部署中,具有管理权限的犯罪分子也可以篡改现有的审计跟踪,删除了特权高程之前的攻击步骤的任何迹象。