MS SQL Server/MySQL/Oracle日志提取和安全分析
一、MS SQL Server日志分析:
1.MS SQL Server数据库简介:
Microsoft SQL Server,是微软推出的关系型数据库解决方案(Relational Database Management System:RDBMS),使用方便,可伸缩性好,且与相关软件集成程度高等优点,因而被广泛使用。
Microsoft SQL Server的特点:图形化操作、管理,上手容易,维护效率高,是最受欢迎的商业数据库之一,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
MS SQL Server默认启用日志记录功能,但是仅限失败的登录,因此,我们应修改记录为"失败和成功的登录",如图:
这样,可对用户的登录行为进行审核。
2.MS SQL Server数据库常见漏洞分析:
Microsoft SQL Server经典的漏洞类型: sp_replwritetovarbin远程堆溢出漏洞(CVE-2008-5416)、Lyris ListManager MSDE SA弱密码漏洞(CVE-2005-4145)。
Microsoft SQL Server 影响范围比较广的漏洞类型有:缓冲区溢出漏洞、弱密码、权限提升、拒绝服务、SQL注入等几种。
xp_cmdshell,可让人们以OS命令行解释器的方式执行指定的命令字符串并以文本行方式返回任何输出,是一个功能非常强大的扩展存贮过程,但后来此指令可以被用来提权,因此默认为关闭。
3.MS SQL Server的日志分析:
<1>.可通过SQL Server Profiler,查找和发现 SQL执行的效率和语句问题;
<2>.可结合Web Application Firewall (WAF)日志,通过查看日志文件的大小,分析日志具体内容,综合判断DBMS是否遭遇SQL(sqlmap工具)注入漏洞的攻击;
<3>.可借助第三方的工具(ApexSQL)来审计和分析MS SQLServer的日志.
二、MySQL日志分析:
1.MySQL数据库简介:
MySQL,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品中小型关系型数据库管理系统,RDBMS,使用标准化SQL查询语言;
MySQL数据库的特点:体积小,速度快,总体部署成本低,性能优越,搭配php、perl、apache、tomcat,形成极佳的开发和集成环境,因此,世界著名,是目前世界上使用最为广泛的数据库之一;
2.MySQL数据库常见漏洞分析:
MySQL SQL Injection、UDF/MOF提权,ROOT身份权限Bypass、Webshell Getshell、LPK劫持、远程代码执行RCE等漏洞。
3.MySQL日志分析:
<1>.查看log配置信息指令:show variables like '%general%',日志文件一般存储格式为"主机名.log";
<2>在日志分析中,特别需要注意一些敏感的操作行为,比如:删表、备库,读写文件(load_file、into outfile等相关读写执行函数)等,例如以下关键词需要注意:drop table、drop function、lock tables、unlock tables、
load_file() 、into outfile、into dumpfile......
例如:WebShell攻击:利用into outfile()函数写入一句话木马,拿webshell:
1' union select 1,"<?php @eval($_POST['cmd']);?>" into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\dvwa2019\\ana.php'#
<3>.mysql读、写文件的配置:SHOW GLOBAL VARIABLES LIKE '%secure%' (当secure_file_priv值没有具体值时,表示不对mysqld的导入和导出做限制)。
三、Oracle日志分析:
1.Oracle数据库简介:
Oracle DBMS是一款是甲骨文公司的一款关系型数据库管理系统,市场占有率高,在数据库领域有极其重要的地位,是世界上流行的关系数据库管理系统;
Oracle DBMS数据库是世界上第一个支持SQL语言的关系型数据库;
Oracle DBMS提供了丰富的包、存储过程,具有支持Java运行和创建Librarry等开发功能,拥有丰富的系统表,几乎所有的信息都存储在系统表;
Oracle广泛应用于金融、邮电、电力、民航等数据吞吐量大,网络结构复杂的重要企业和机构;
常用版本:9i、10g、11g、12c、18c。
2.Oracle数据库常见的漏洞分析:
在安全性方面,尽管Oracle制定了完善的安全策略,提供了详尽的安全机制,但是随着Oracle RDBMS新版本的不断发布,新的问题依然层出不穷,例如:弱密码问题,SID被猜解,SQL注入,权限配置不当、拒绝服务攻击等安
全问题。
3.Oracle数据库日志分析:
<1>.Oracle审计(Audit)和日志记录,可记录用户对数据库所做的操作,默认情况下,使用管理员权限连接实例(instance),开启及关闭数据库是会强制进行审计的,无论是否打开数据库的审计功能(其它的基础的操作则没有
进行审计。),Oracle会将审计和Trace跟踪结果(是否开启审计记录的功能),存放到OS文件里,默认位置在:$ORACLE_BASE/admin/$ORACLE_SID/adump/ 或存储在数据库表里(存储在system表空间中的SYS.AUD$表中,可通过
视图dba_audit_trail查看),可使用"show parameter audit"命令查看相关设置。
<2>."show parameter audit_trail"指令(日志审计的设置)相关介绍:
audit_trail的设置值:
NONE:不开启;
DB:开启审计功能(Oracle11g后默认开启,All audit records stored in the database audit trial (AUD$));
OS:审计记录写入一个操作系统文件(AUDIT_FILE_DEST);
TRUE:与参数DB一样;
DB_EXTENDED:审计结果放在数据库表中,并额外记录SQL_BIND和SQL_TEXT(具体执行语句);
FALSE:不开启审计功能;
xml:启用审计功能,审计信息写入xml格式的操作系统文件中。
<3>.Oracle的其他审计类型:
语句审计(Statement Auditing):对特定的SQL语句进行审计记录,不指定具体对象;
权限审计(Privilege Auditing):对特定的系统权限使用情况进行审计记录;
对象审计(Object Auditing):对特定的模式对象上执行的特定语句进行审计记录;
网络审计(Network Auditing):对网络协议错误与网络层内部错误进行审计记录。
此外,根据用户是否成功执行,可以分为:
对执行成功的语句进行审计;
对不成功的语句进行审计;
无论成功与否都进行审计。
根据对同一个语句审计次数不同,可以分为会话审计和存取审计。
会话审计:对某个用户或所有用户,同一语句,只审计一次,形成一条审计记录;
存取审计:对某个用户或所有用户,同一语句,每执行一次就审计一次,形成多条审计记录。
四、第三方数据库审核记录:
数据库审计(DBAudit)可实时记录网络上数据库活动,对数据库操作细粒度审计,合规性管理,对数据库遭受到的风险行为、漏洞攻击行为进行告警,对攻击行为进行阻断。
通过对用户访问数据库行为,记录、分析、汇报,事后生成合规报告,事故追踪,溯源,加强内外部数据库网络行为记录,提高数据安全。