数据库是“按照数据结构来组织、存储和管理数据的仓库”。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。而MySQL作为一款安全、跨平台、高效的数据库系统,能与PHP、Java等主流编程语言紧密结合。目前MySQL被广泛地应用在Internet上的中小型网站中,因此在应急响应中学会如何对MySQL数据库进行排查具有非常重要的意义。
一、MySQL日志
MySQL的日志主要包含:错误日志、查询日志、慢查询日志、事务日志、中继日志、二进制日志。在MySQL的日志中保存着各种操作的记录,因此在应急响应时有必要对数据库日志进行分析,从而进一步的还原攻击场景以及追溯攻击源。
二、MySQL入侵痕迹排查
1爆破攻击排查
通过查询日志可以查看到用户尝试连接数据库的信息,倘若存在短时间内出现大量尝试连接数据库的日志信息来判断数据库是否遭受爆破攻击。
2Webshell写入排查
接下来我们来介绍通过数据库获取Webshell常用的两种方式:
(1)日志写入:攻击者通过修改数据库查询日志的存储路径达到获取Webshell目的。
首先判断查询日志的存储路径配置的函数“general_log_file”的值指向来是否被修改。
再通过分析查询日志中是否存在攻击者的攻击信息。
因此可以通过分析查询日志的存储路径配置以及日志的内容来判断是否被攻击。
(2)函数写入:攻击者通过数据库的文件操作函数“intooutfile”或“intodumpfile”达到获取Webshell目的。
首先判断“secure_file_priv”函数的值来判断是否具备读写文件权限,当value值为空时即不对读写文件进行限制。
再通过分析查询日志中是否存在攻击者的攻击信息。
因此可以通过分析查询日志中文件操作函数的使用情况来判断是否被攻击。
3UDF提权排查
UDF是MySQL的一个拓展接口,UDF(Userdefinedfunction)可翻译为用户自定义函数,是用来拓展MySQL的技术手段。用户通过自定义函数可以实现在MySQL中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,利用MySQL的自定义函数功能将MySQL账号转换为SYSTEM权限。
我们可以通过对数据库排查来判断攻击者是否有进行提权操作行为,具体操作如下。
(1)首先排查是否存在恶意的.dll或.so文件。
(2)再者通过SQL语句查看是否存在创建的自定义函数。
(3)最后分析查询日志文件中是否有使用创建的自定义函数的记录。
除上述应急响应MySQL数据库排查外,如需了解更加全面的数据库安全事件排查方法以及更多的网络安全技术,敬请