常见数据库加密方式课题研究

Oracle

加密方式:Oracle 7到Oracle 10gR2,使用DES算法对口令进行加密(口令不区分大小写,任意大小写组合均可登录)
Oracle 11g中新的口令加密算法中区分大小写;且于加入了随机数SALT,两个不同用户的口令即便完全相同,计算得到的SHA1的散列值也不同;不同DB中相同用户相同口令,SHA1散列值也可能不同。
存储位置:从Oracle 7到Oracle 10gR2口令存放在SYS.USER$表中的PASSWORD列中
Oracle 11g版本的加密口令存放在SYS.USER$表中的SPARE4列中,而PASSWORD列中仍保留以前版本加密口令
存储文件:
Linux下的存放位置:
$ORACLE_HOME/dbs/orapw$ORACLE_SID即:ORACLE_HOME/dbs/orapw<sid>
Windows下的存放位置:
$ORACLE_HOME/database/PWD%ORACLE_SID%.ora
如何获取密码:
大多数破解工具的工作方式是得到加密口令后,对每一个可能的口令进行加密计算,比较计算结果而确定是否正确

sql server

加密方式:
MSSQL 2012使用的是AES,而早期的版本使用的是3DES
存储位置:
MSSQL将链接服务器的信息(包含加密的密码)保存在master.sys.syslnklgns表中,加密密码是保存在字段“pwdhash”中的hash
存储文件:
每个实例的pwdhash字段值,注册表中HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\[instancename]\Security\Entropy 中的熵
如何获取密码:
powershell的自动解密脚本Get-MSSQLLinkPasswords.psm1的源码链接(译者提示:该脚本必须在powershell2.0下运行):
https://github.com/NetSPI/Powershell-Modules/blob/master/Get-MSSQLLinkPasswords.psm1
该脚本必须在MSSQL服务器本地运行(DPAPI必须可以访问到local machine key),同时运行该脚本的用户必须有数据库的sysadmin权限(在DAC下)可以访问所有的数据库实例,而且该账户也必须拥有系统管理器权限(用于读取注册表内的熵)。另外,如果启用了UAC,脚本必须以管理员身份运行

mysql

加密方式:
MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密
存储位置:
mysql库user表
存储文件:
c:\mysql\data\mysql\(linux 则一般在/var/lib/mysql/mysql/)目录下有三个user表相关文件user.frm、user.MYD、user.MYI
user.frm //user表样式文件
user.MYD //user表数据文件
user.MYI //user表索引文件
解密方式:
通过phpmyadmin或者数据库连接管理工具查看,到md5破解站破解(*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B  :MySQL323加密)

was

加密方式:
密码被重新编码(encode),编码的方式是XOR(eXclusive OR异或),很明显这种并不是一种强加密的算法,仅仅是一种编码而已,所以准确来说WebSphere为了避免密码被明文记录,只是很简单地“编码”(encode)而不是“加密”(encrypt)。
存储位置:$WAS_Profile_HOME\config\cells\security.xml
存储文件:$WAS_Profile_HOME\config\cells\security.xml
解密方式:也可以更改$WAS_Profile_HOME\config\cells\security.xml这个文件
将false改为是true

mq(webphere mq)

加密方式:明文存储
存储位置:/conf/jetty-realm.properties文件
存储文件:/conf/jetty-realm.properties文件
解密方式:
打开/conf/jetty.xml文件,找到
<bean id=”securityConstraint” class=”org.eclipse.jetty.http.security.Constraint”>
<property name=”name” value=”BASIC” />
<property name=”roles” value=”admin” />
<property name=”authenticate” value=”false” />
</bean>
将property name为authenticate的属性value=”false” 改为”true”,
控制台的登录用户名密码保存在/conf/jetty-realm.properties文件中

Ihs

加密方式;IHS6下的ikeyman最高支持1024位密钥,而目前所有证书都要求2048位密钥
存储位置:证书位置自定义,名为..sth的文件中

点赞