3.蛮力攻击(BruteForce)
蛮力攻击,就像其名字所暗示的,就是不停的撬,直到“锁”打开为止的方法。对于Oracle数据库来说,就是用某种自动执行的进程,通过尝试所有的字母数字组合来破解用户名和密码。
Unix的管理员就可以利用一款名为JohntheRipper的密码破解软件来执行这类的攻击。现在如果你下载某个补丁,你也可以利用这款软件来对Oracle进行蛮力攻击,敲开其密码。不过根据密码的复杂程度不同,这可能是个很费时的过程,如果你想加快这个进程,可以事先准备一张包含所有密码加密的表,这样的表叫做Rainbowtable,你可以为每个用户名准备一张不同的rainbowtable,因为这种密码加密算法把用户名作为助燃剂。在这里就不再深入介绍更多的细节问题了。
Oracle服务器的默认设置是,对某个特定帐户输错密码达十次就会自动锁定该帐户。不过通常“sysassysdba”权限没有这个限制,这可能是因为如果你锁定了管理员,那所有人都将被锁定。这样的设置为我们黑客破解软件(OraBrute)如开辟了一条生路,它们会昼夜不停地敲打你数据库的前门,直到它乖乖打开为止。
防范此类攻击的方法
想要抵御此类攻击,可以使用之前提及的对付预设密码攻击的方法。不过好奇心过重的数据库管理员也可能下载上面提到的工具侵入自己的系统。这说明了你真正的风险来自何方。
4.从后门偷窃数据
在安全领域,这个概念被称为数据向外渗漏(exfiltration),这个词来自军事术语,其反面是向敌人内部渗透(infiltration),意思就是在不被发现的情况下偷偷潜出。对于从目标数据库获取数据的过程,可能就像从一些磁带备份中挑拣数据和还原数据库或者像从一个被毁坏的磁盘重复制一份拷贝一样简单。不过,也有可能涉及到窥探网络传输以获得相关的数据包。
Oracle有一个名为UTL_TCP的程序包,能够使外部连接指向其他服务器。对它稍微改编一下,就可以利用它从数据库发送一套低带宽数据流到远程主机。Oracle也附带了一些有用的程序包来隐藏数据流里的信息,如果你在发动潜入行动的时候担心入侵检测系统会监测到你的不法活动,那么可以充分利用这些功能秘密嵌入,包括DBMS_OBFUSCATION_TOOLKIT和DBMS_CRYPTO。
防范此类攻击的方法
防范此类攻击的最佳办法是安装入侵检测系统,这些系统能够检测网络中流入和流出的数据包。有一些检测系统还提供深入数据包检测,可以确实检查某些SQL,并可以通过设定规则在某种情况下触发报警器。这些工具还能够查找泄密迹象,例如添加的UNION、各种类型的short-circuiting命令、利用“–”注释进行截断等等。
5.监听器
计算机世界最让人觉得了不起的事情就是,不管有多么困难的事,总有办法驯服它。尤其是在安全领域,一些漏洞如此的简单,而这些漏洞的出现仅仅是因为用户(也包括我们现在扮演的角色——黑客)并没有像软件设计者(程序员或软件开发员)本来预想的那样思考和行动。
Oracle监听器的设置是为了能够实现远程管理。那么如果攻击者把监听器的logfile设置为Unix.rhosts文件呢?这样攻击者就可以轻松的对.rhosts文件进行写操作。Unix上的这个文件设置了什么人可以不用密码而使用rsh、rlogin和rcp命令登录。你可以想想将会发生什么事情。
这其实只是围绕Oracle监听器安全问题的冰山一角而已。其他的还有缓冲区溢出等一大堆问题需要注意。事实上Litchfield的《Oracle黑客手册》里花了一整章的内容来讨论这个主题。
防范此类攻击的方法
从预防的角度而言,Oracle已经做出了一定措施来更好的保障系统安全,前提是你能够把它实施到位。首先,为监听器设置一个管理密码。对于担负着管理不断增加的密码重担的管理员而言,这看起来像是多余的,不过在你需求其他途径来保障监听器安全之前,好好地想想上面提到的和没提到的威胁。Oracle也添加了ADMIN_RESTRICTIONS,能够阻止特定的远程控制事件。