數(shù)據(jù)庫取證
眾所周知,數(shù)據(jù)庫是信息系統(tǒng)中不可或缺的部分,隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)庫已經(jīng)成為犯罪分子的目標,大量數(shù)據(jù)庫被用于存放網(wǎng)絡(luò)盜竊和網(wǎng)絡(luò)詐騙中產(chǎn)生的數(shù)據(jù);將數(shù)據(jù)庫的數(shù)據(jù)提取出來,成為了打擊犯罪的重要手段之一。
MySQL數(shù)據(jù)庫
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。從目前的數(shù)據(jù)庫市場占有率來看,Oracle、MySQL、SQL Server三大數(shù)據(jù)庫產(chǎn)品***,呈三足鼎立局面。而隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,MySQL因其開源免費易用等優(yōu)勢,市場占有率不斷攀升,成為互聯(lián)網(wǎng)公司***的數(shù)據(jù)庫。而在不少的犯罪案件中我們也常??吹組ySQL數(shù)據(jù)庫的身影。
今天,小編就要跟大家分享的是一種MySQL數(shù)據(jù)庫數(shù)據(jù)提取的方法。
案例背景
某案件需要對已扣押的本地服務(wù)器中MySQL數(shù)據(jù)庫存進行取證,辦案人員急需獲取鏡像中MySQL數(shù)據(jù)庫的數(shù)據(jù)記錄,但是卻無法找到MySQL數(shù)據(jù)庫的登錄密碼。
◆需求:獲取鏡像中MySQL數(shù)據(jù)庫的記錄
◆難題:如何對有訪問密碼的MySQL數(shù)據(jù)庫進行取證?
◆檢材:服務(wù)器鏡像文件一份
案例思路分析
因為沒有數(shù)據(jù)庫登錄密碼,無法獲取數(shù)據(jù)庫數(shù)據(jù)。為了保證數(shù)據(jù)庫數(shù)據(jù)的完整性,并且能夠通過SQL語句方便快捷查詢到用戶所需的數(shù)據(jù),我們需模擬出與嫌疑人相同的數(shù)據(jù)庫環(huán)境。針對上述案例,我們可以通過附加mysql數(shù)據(jù)庫并修改密碼的方法來獲取數(shù)據(jù)庫數(shù)據(jù),具體操作思路和步驟如下:
◆提取案例服務(wù)器中數(shù)據(jù)庫文件;
◆將提取的數(shù)據(jù)庫文件附加到新的電腦;
◆附加完成后重置MySQL的密碼;
◆登錄MySQL查看導(dǎo)出數(shù)據(jù)庫記錄。
從上述案件中得知,已經(jīng)獲取案件相關(guān)服務(wù)器鏡像,因此只需附加mysql數(shù)據(jù)庫并重置登錄密碼即可提取數(shù)據(jù)庫數(shù)據(jù)。下面將詳細講述這兩個步驟的具體操作方法。
具體操作步驟
附加MySQL數(shù)據(jù)庫
1)在目標電腦上安裝與嫌疑人使用的數(shù)據(jù)庫相同版本的數(shù)據(jù)庫,mysql安裝過程本文檔不詳細介紹,網(wǎng)上很多mysql的安裝教程;
2)MySQL安裝完畢后,斷開MySQL服務(wù)。‘C:ProgramDataMySQLMySQL Server 5.7Data’文件夾為MySQL數(shù)據(jù)庫的數(shù)據(jù)目錄,將需要附加的數(shù)據(jù)庫數(shù)據(jù)文件復(fù)制拷貝到該文件夾中;
3)重新啟動MySQL,若能正常啟動,即附加成功。
PS:附加數(shù)據(jù)庫的注意事項
1)如何快速確定鏡像中MySQL的存放路徑?
mysql數(shù)據(jù)庫都具有ibdata1這個關(guān)鍵文件,可以通過檢索這個文件快速定位到mysql數(shù)據(jù)文件的存放路徑;
2)如何確定嫌疑人使用的MySQL數(shù)據(jù)庫具體版本號?
安裝在目標電腦上的MySQL版本號需要和鏡像中的MySQL數(shù)據(jù)庫版本相同, 確定mysql數(shù)據(jù)庫版本的方法:使用winhex打開任意一個提取到mysql數(shù)據(jù)庫中的.frm文件,如圖所示:
3)重啟MySQL報錯怎么解決?
在將數(shù)據(jù)文件復(fù)制完畢后,重啟數(shù)據(jù)庫時如若報錯,可在任務(wù)管理器中將mysqld.exe進程結(jié)束后把復(fù)制過來的日志文件刪除或剪切到其他位置,再次啟動MySQL服務(wù),此時MySQL服務(wù)可正常啟動,附加成功。如圖所示:
2.重置MySQL數(shù)據(jù)庫登錄密碼
附加MySQL數(shù)據(jù)庫后,需要登錄密碼才能訪問數(shù)據(jù)庫數(shù)據(jù),因為沒有登錄密碼,因此需要重置MySQL數(shù)據(jù)庫的登錄密碼到達訪問提取數(shù)據(jù)庫記錄數(shù)據(jù)的目的,具體步驟如下:
1)修改MySQL數(shù)據(jù)庫的C:ProgramDataMySQLMySQL Server 5.7中的my.ini配置文件,然后將修改好的my.ini復(fù)制到C:Program FilesMySQLMySQL Server 5.7中;如圖所示將配置文件中的basedir修改為MySQL數(shù)據(jù)庫應(yīng)用程序所在路徑,datadir修改為MySQL數(shù)據(jù)庫數(shù)據(jù)文件存放路徑:
2)在cmd命令行中切換至C:Program FilesMySQLMySQL Server 5.7in路徑,關(guān)閉mysql服務(wù)執(zhí)行命令mysqld --skip-grant-tables,該命令的作用是跳過用戶驗證。注意在執(zhí)行了該命令后此cmd命令行無法繼續(xù)操作了,需要重新打開一個cmd命令行切換到bin路徑下;
3)在新打開的cmd命令行,直接輸入mysql,不需要帶任何登錄參數(shù)直接回車就可以登陸上數(shù)據(jù)庫;
4)輸入show database;可以看到所有數(shù)據(jù)庫說明成功登錄;
5)其中mysql庫就是保存用戶名的地方。輸入use mysql;選擇mysql數(shù)據(jù)庫;
6)更改root密碼;MySQL版本高于5.7.1輸入update user set authentication_string=password("123456") where user="root";
7)刷新數(shù)據(jù)庫mysql> flush privileges;之后退出MySQL: mysql>quit;此時MySQL密碼已經(jīng)重置成功;
PS:重置MySQL密碼的注意事項
1)針對‘重置MySQL步驟6’中更改root密碼,如若MySQL版本低于5.7,需輸入update user set password=password("123456") where user="root";
2)在重置密碼后重新啟動MySQL服務(wù),若MySQL服務(wù)無法啟動;造成該錯誤的原因是日志文件發(fā)生錯誤,采用之前同樣的解決方法:在任務(wù)管理中將mysqld.exe進程結(jié)束后把日志文件刪除或者剪切到其他路徑。
3.啟動MySQL服務(wù)
1)重置MySQL的登錄密碼,啟動MySQL服務(wù),此時可以使用Navicat for MySQL管理器輸入賬號與修改后的密碼后即可連接到MySQL數(shù)據(jù)庫,訪問數(shù)據(jù)并提取相關(guān)記錄。
2)打開數(shù)據(jù)表,查看數(shù)據(jù)。
注意事項
在采用上述方法對MySQL數(shù)據(jù)庫進行取證時也要注意以下幾點:
1、確保從服務(wù)器中獲取到的數(shù)據(jù)庫的完整性,不然會導(dǎo)致附加失??;
2、確保搭建環(huán)境附加數(shù)據(jù)庫的電腦具有足夠的空間,不然會因為空間不足導(dǎo)致附加失??;
3、確保搭建環(huán)境中MySQL數(shù)據(jù)庫版本與服務(wù)器中的MySQL數(shù)據(jù)庫版本完全一致;
4、以上操作涉及到很多專業(yè)技能方面的,如有必要可找尋專業(yè)的公司協(xié)助完成。