0x00 背景
在攻防演练或红队评估项目中,项目成果往往依赖红队队员综合渗透技能和优良的自动化工具。信息收集贯穿整个项目生命周期,如果攻方通过获取互联网侧应用服务器权限,并以此为跳板突破目标单位互联网侧防线,进而对应用服务器数据库进行信息收集的意义非常重大。攻方可从数据库管理程序中获取数据库系统访问IP地址、用户名、口令等敏感信息,对以上信息进行分析,可大大提高渗透效率。
0x01 Navicat 数据库凭据获取
Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,可以管理到MySQL、Oracle、PostgreSQL、SQLite 及 SQL Server等数据库,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
Navicat 凭据存储位置
安装Navicat Premium(版本 11.2.7),创建一个MySQL数据库连接,用户名:root 口令:admin123!@#。同时利用RegFromApp监控navicat.exe进程对注册表的更改,结果如下图所示:
通过对RegFromApp监控结果进行分析可以观察数据库IP地址、端口、数据库用户名和数据库口令等存储信息。Navicat MySQL数据库连接凭据存储位置如下:
# 计算机\HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\Info-01
进而通过Navicat 程序创建不同数据库连接,同时观察注册表变化可得出不同数据库连接用户名口令在注册表中的存储位置,如下表所示:
数据库类型 |
注册表中存储位置 |
MySQL |
[HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\`连接名`] |
PostgreSQL |
[HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\`连接名`] |
Oracle |
[HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\`连接名`] |
SQLite |
[HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\`连接名`] |
SQL Server |
[HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\`连接名`] |
MariaDB |
[HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\`连接名`] |
Navicat 口令加密原理
Navicat 对明文密码进行加密运算时需用到固定加密秘钥(3DC5CA39),假设明文口令是"admin123!@#",首先程序会使用SHA-1散列算法将固定加密秘密进行处理得到:
# 3DC5CA39 -> SHA-1 = 42CEB271A5E458B74AEA93947922354391873340
将其存入数组中,如下所示:
unsigned char Key[20] = { 0x42, 0xCE, 0xB2, 0x71, 0xA5, 0xE4, 0x58, 0xB7,0x4A, 0xEA, 0x93, 0x94, 0x79, 0x22, 0x35, 0x43, 0x91, 0x87, 0x33, 0x40 };
使用0xFF填充一个8字节长的数据块,然后使用Blowfish算法加密以上数据块,得到结果如下:
# 42CEB271A5E458B74AEA939479223543