




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于二進制日志分析的MySQL數(shù)據(jù)庫取證研究摘要MySQL數(shù)據(jù)庫的運用越來越廣泛,因而其的取證工作也變得越來越重要。在公安工作中,電信詐騙以及其它需要數(shù)據(jù)庫取證的案件,存在著數(shù)據(jù)庫中數(shù)據(jù)丟失或是被故意刪除的現(xiàn)象,因此首先要進行數(shù)據(jù)庫的數(shù)據(jù)恢復,再進行數(shù)據(jù)庫取證。涉案數(shù)據(jù)庫中蘊含了大量證據(jù),而數(shù)據(jù)庫具有記錄對其采取何種操作的日志,因此,對數(shù)據(jù)庫日志的提取是數(shù)據(jù)庫取證中最關鍵的一步。本文研究并分析了MySQL的日志,MySQL日志中記錄了用戶對數(shù)據(jù)庫數(shù)據(jù)的更改操作,通過確定事件的偏移值范圍,并進一步核實偏移范圍,可以實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的恢復。實驗結果表明:通過利用二進制日志恢復數(shù)據(jù),實現(xiàn)基于事件的偏移值(log_pos)的MySQL數(shù)據(jù)庫恢復,能夠很好的保證數(shù)據(jù)的完整性。通過研究分析MySQL日志,可以對數(shù)據(jù)庫的關鍵數(shù)據(jù)進行恢復,進而完成取證,最后根據(jù)這些證據(jù)來確定犯罪過程、犯罪動機。關鍵字:數(shù)據(jù)庫;日志;數(shù)據(jù)恢復;偏移量;偏移范圍目錄1引言 11.2國內(nèi)外研究現(xiàn)狀 11.2研究目的和意義 22MySQL日志 32.1錯誤日志 32.2慢查詢?nèi)罩?42.3通用查詢?nèi)罩?62.4二進制日志 82.5mysqlbinlog工具 112.6本章小結 123基于二進制日志分析的MySQL數(shù)據(jù)庫取證 133.1二進制日志詳細解析 133.2實驗測試 163.3本章小結 194結語 20參考文獻 21
1引言隨著計算機技術的飛速發(fā)展,信息已成為當今社會各種社會的核心資源。通過對這些信息資源的進一步開發(fā)利用,人們可有效較低相應活動的成本,各種社會資源得到最大限度節(jié)約和合理運用。而這其中起到基礎和核心作用的就是數(shù)據(jù)庫。數(shù)據(jù)庫,簡單地說就是數(shù)據(jù)的倉庫,即數(shù)據(jù)存放的地方。在現(xiàn)實世界中,存在許多數(shù)據(jù)庫的例子,如手機通信錄是一個關于聯(lián)系人信息的小型數(shù)據(jù)庫,圖書館則是一個各類館存圖書的大型數(shù)據(jù)庫。小型數(shù)據(jù)庫尚可用手工管理,而大型數(shù)據(jù)庫必須由計算機輔助管理。隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)庫系統(tǒng)在多個領域廣泛應用,數(shù)據(jù)量也急劇增長。數(shù)據(jù)庫中存放著用戶的大量信息,這些信息中可能含有用戶的隱私,所以數(shù)據(jù)庫系統(tǒng)保護變得日益重要。同樣這使得數(shù)據(jù)庫面臨著越來越多的威脅,經(jīng)常有關于用戶資料被泄露的事件發(fā)生,一些企業(yè)的數(shù)據(jù)庫被攻擊,使得對于數(shù)據(jù)庫系統(tǒng)取證的研究變得越來越迫切和重要。MySQL數(shù)據(jù)庫是一種關系型數(shù)據(jù)庫管理系統(tǒng),運用最常用的數(shù)據(jù)庫管理語言—SQL進行數(shù)據(jù)庫管理。MySQL是開放源代碼的,因此任何人都可以在經(jīng)過許可的前提下下載并依據(jù)需要對其進行修改。MySQL日志中記錄了用戶對數(shù)據(jù)庫數(shù)據(jù)的更改操作,通過研究分析MySQL日志功能,可以對數(shù)據(jù)庫的關鍵數(shù)據(jù)進行取證。1.2國內(nèi)外研究現(xiàn)狀譚森在《基于日志分析的MySQL數(shù)據(jù)庫取證算法研究》[2],編程實現(xiàn)了基于日志分析的MySQL數(shù)據(jù)庫日志文件,研究出能夠自動查找MySQL數(shù)據(jù)庫日志文件,可以對MySQL數(shù)據(jù)庫進行取證的系統(tǒng),解決了MySQL數(shù)據(jù)庫的非法修改取證問題。宋蕾和張培晶在《數(shù)據(jù)庫系統(tǒng)取證研究》中[1],對目前較為主流的數(shù)據(jù)庫SQLServer和Oracle進行了相應討論。文章對數(shù)據(jù)庫的存儲結構、數(shù)據(jù)庫電子證據(jù)收集范圍和次序、數(shù)據(jù)庫系統(tǒng)相關電子證據(jù)收集。最后得出不同數(shù)據(jù)庫系統(tǒng)的存儲結構和工作原理存在一定的差異,需要工作人員依據(jù)被調(diào)查數(shù)據(jù)庫系統(tǒng)的具體情況進行針對性的數(shù)據(jù)庫取證。在《Generalizingdatabaseforensics》中[3],介紹了對以前建議的數(shù)據(jù)庫篡改法分析方法的改進,引入了基于頁面的分區(qū)以及基于屬性的分區(qū)及其關聯(lián)的損壞圖,比較了所有法證分析算法的結構,并討論了與法證分析有關的各種設計選擇,介紹了新引入的算法的取證成本,比較了其取證成本,結果是這些算法的泛化和數(shù)據(jù)庫取證分析過程的總體特征,從而為所有現(xiàn)有的取證分析算法提供DBMS總體操作中的上下文。在《ResearchonApplicationofDatabaseForensicsTechnology》中[4],在具體數(shù)據(jù)庫產(chǎn)品的基礎上,給出了常見的數(shù)據(jù)庫攻擊行為,分析了數(shù)據(jù)庫中可能的跟蹤,并總結了證據(jù)收集的范圍和常用的分析方法。1.2研究目的和意義數(shù)據(jù)庫中的數(shù)據(jù)是在案發(fā)現(xiàn)場中至關重要的證據(jù),其中蘊含著大量的犯罪信息。在多數(shù)案發(fā)現(xiàn)場大都存在計算機設施,可以在計算機中的數(shù)據(jù)庫提取出大量的數(shù)據(jù),通過對數(shù)據(jù)的分析,可能判斷出作案人的作案動機,進而印證證人、被害人的陳述以及犯罪嫌疑人的辯解和供述是否正確和真實有效,進而提高證據(jù)的證明能力。本課題研究了一種基于偏移值的恢復數(shù)據(jù)庫的方法,通過確定偏移值范圍、核實偏移范圍來實現(xiàn)對數(shù)據(jù)庫的恢復。在案發(fā)現(xiàn)場的數(shù)據(jù)庫蘊含了大量的證據(jù),通過對這些證據(jù)進行恢復、分析,可以根據(jù)這些證據(jù)回溯犯罪過程并固定證據(jù)。
2MySQL日志不同數(shù)據(jù)庫的日志文件存在差異[5]。日志文件記錄了在數(shù)據(jù)庫運行的各種操作,因此可以通過日志查看數(shù)據(jù)庫中發(fā)生過的事件。在MySQL數(shù)據(jù)庫中有錯誤日志(ErrorLog)、慢查詢?nèi)罩荆⊿lowQueryLog)、通用查詢?nèi)罩荆℅eneralQueryLog)和二進制日志(BinaryLog),這些日志文件中分別記錄著MySQL數(shù)據(jù)庫在不同方面的日志數(shù)據(jù)。錯誤日志、慢查詢?nèi)罩竞屯ㄓ貌樵內(nèi)罩镜母袷蕉际俏谋靖袷?,可以直接查看,而二進制日志與其它三種不同,二進制日志是用二進制記錄的,不能直接查看。2.1錯誤日志錯誤日志是這四種日志中最常用的一種日志,記錄了MySQL數(shù)據(jù)庫每次啟動和關閉的詳細信息以及運行過程中所有較為嚴重的警告和錯誤信息。如果MySQL數(shù)據(jù)庫發(fā)生故障無法正常啟動時,可以首先查看錯誤日志,從中找到服務器無法正常啟動的原因。錯誤日志的特性在Unix系統(tǒng)和Windows系統(tǒng)中會有不一樣的處理方式。2.1.1Unix系統(tǒng)中的錯誤日志在Unix系統(tǒng)上,如果MySQL數(shù)據(jù)庫通過mysqld程序啟動,錯誤日志是不會開啟的。在錯誤日志沒有開啟的時候,本來是記錄在錯誤日志中的信息會輸出到標準錯誤輸出之中。用戶如果要開啟MySQL數(shù)據(jù)庫中的錯誤日志功能,可以在MySQL數(shù)據(jù)庫的配置文件中配置-log-error參數(shù),也可以通過配置-log-error參數(shù)來確定將錯誤日志寫入控制臺或文件。如果-log-error沒有給出,錯誤日志將被寫入控制臺。如果-log-error命名文件,錯誤日志將被寫入該.err數(shù)據(jù)目錄下的該文件。2.1.2Windows系統(tǒng)中的錯誤日志在Windows系統(tǒng)中錯誤日志一般保存在MySQL數(shù)據(jù)庫指定的data目錄下,默認名稱為host_name.err。其中,host_name表示MySQL服務器的主機名。在MySQL配置文件中,錯誤日志所記錄的信息可以通過log-error和log-warnings來定義。log-error表示是否啟用錯誤日志功能和錯誤日志的存儲位置,log-warnings表示是否將警告信息也記錄到錯誤日志中。執(zhí)行命令:showvariableslike‘log_error’;此命令可以查看錯誤日志文件所在的目錄及文件名信息。從圖1中可以看出錯誤日志文件存放的置.\LAPTOP-NPVE9FHA.err,從log_error的值可以看出這是一個相對文件名,該錯誤日志文件是存放在數(shù)據(jù)目錄下的,它的文件名為LAPTOP-NPVE9FHA.err。圖1錯誤日志信息2.2慢查詢?nèi)罩韭樵內(nèi)罩?,從字面意思來看就是查詢慢的日志,它是用來記錄MySQL中響應時間超過long_query_time參數(shù)設定的時間閾值的SQL語句的日志。在默認情況下,不記錄管理語句,也不記錄不使用索引進行查找的查詢。如果long_query_time的設定值為10,那么意思就是MySQL記錄所有執(zhí)行超過10S以上的SQL語句,但對于運行時間正好等于10S的情況,并不會被記錄下來。一般情況下,慢查詢?nèi)罩镜哪J名稱為host_name-slow.log,host_name表示MySQL服務器的主機名。在默認情況下,慢查詢?nèi)罩疽话闶遣婚_啟的,需要手動設置來開啟,但是并不建議啟動慢查詢?nèi)罩?,因為開啟慢查詢?nèi)罩緯π阅軒硪欢ǖ挠绊憽?.2.1慢查詢?nèi)罩鞠嚓P命令執(zhí)行命令:showvariableslike‘%long_query_time%’;此命令能夠用來查詢慢查詢?nèi)罩鹃撝怠H鐖D2,表示慢查詢?nèi)罩鹃撝禐?0S。圖2慢查詢?nèi)罩拘畔?zhí)行命令:showvariableslike‘slow_query_log%’;此命令可以查看慢查詢?nèi)罩疚募南嚓P信息。由圖3可知,慢查詢是開啟的,其文件名為LAPTOP-NPVE9FHA-slow.log。圖3慢查詢?nèi)罩拘畔?.2.2慢查詢?nèi)罩竟δ苈樵內(nèi)罩居涗浿枰荛L時間才能執(zhí)行完畢的SQL語句。慢查詢能夠幫忙找出通過改寫來完善其執(zhí)行能力的查詢語句。但是,在解讀它的內(nèi)容的時候,還應當考慮到系統(tǒng)的正常工作負載。因為這個執(zhí)行時間是以實際時間來衡量的,而不是以CPU時間來衡量的。如果MySQL數(shù)據(jù)庫的負載在某一時間段里突然暴增,就可能會將許多查詢都誤認為慢查詢,然而它們在數(shù)據(jù)庫正常工作負載下可能是不慢的。2.3通用查詢?nèi)罩就ㄓ貌樵內(nèi)罩臼怯糜谟涗浽贛ySQL上執(zhí)行的所有SQL命令的日志,但是并不記錄返回結果,執(zhí)行的命令和語法無論正確與否都會被記錄下來。在默認情況下MySQL不會開啟通用查詢?nèi)罩?,因為?shù)據(jù)庫自身就占用計算機大量的讀寫空間,開啟后會不斷的進行讀寫操作,這樣將會極大地增加系統(tǒng)的負擔,這對于企業(yè)來說這也是一個很大的負擔。但是如果開啟該功能也可以使數(shù)據(jù)庫管理員非常方便地審計和分析MySQL中可能存在的問題,這樣能夠提高管理員的工作效率,同樣確保了數(shù)據(jù)庫的安全和可靠,保證用戶數(shù)據(jù)的安全。2.3.1通用查詢?nèi)罩镜呐渲?查看通用查詢?nèi)罩臼欠耖_啟及配置信息,執(zhí)行命令:showvariableswherevariable_namelike‘%general_log%’orvariable_name=‘log_output’;此命令可以查看通用查詢?nèi)罩臼欠耖_啟、日志的保存方式及位置。其中通用查詢?nèi)罩镜拇娣盼恢每梢詾閒ile、table和file&table三種。如果是file型,通用查詢?nèi)罩疽晕募男问侥J存放在data目錄下。如果是table型,則將所有SQL記錄轉(zhuǎn)存到MySQL數(shù)據(jù)庫中的通用查詢?nèi)罩颈碇?。如果是file&table型,通用查詢?nèi)罩就瑫r記錄到文件和數(shù)據(jù)庫中。通用查詢?nèi)罩居涗浀絫able中,要比記錄到file中耗費更多的系統(tǒng)資源。一般通用查詢?nèi)罩镜谋砻莋eneral_log,存放在mysql數(shù)據(jù)庫中。通用查詢?nèi)罩镜谋碇饕?個字段組成,分別是event_time、user_host、thread_id、server_id、command_type和argument字段。表1為其每一字段的功能。表1event_time記錄時間user_host記錄連接者IP和主機名thread_id識別每次操作線程號server_id區(qū)分主從command_type記錄操作類型argument字段記錄每次SQL命令2.3.2通用查詢?nèi)罩疚募驗橥ㄓ貌樵內(nèi)罩镜男问酱鎯κ俏谋疚募?,所以可以直接查看通用查詢?nèi)罩局杏涗浀男畔?。?zhí)行命令:showvariableswherevariable_namelike‘%general_log%’;通過此命令可以查看通用查詢?nèi)罩臼欠耖_啟以及通用查詢?nèi)罩疚募娣盼恢?。由圖4可知通用查詢?nèi)罩静⑽撮_啟。圖4通用查詢?nèi)罩拘畔?zhí)行命令來開啟通用查詢?nèi)罩荆簊etglobalgeneral_log=1;由圖5可知通用查詢?nèi)罩疽驯婚_啟。圖5通用查詢?nèi)罩拘畔膱D5中可知通用查詢?nèi)罩镜拇娣盼恢?,找到日志文件打開,圖6即為通用查詢?nèi)罩镜牟糠中畔?。圖6通用查詢?nèi)罩緝?nèi)容圖6中的第1行和第2行是關于數(shù)據(jù)庫的信息:數(shù)據(jù)庫的版本號、mysql的程序所在文件夾的路徑、MySQL數(shù)據(jù)庫監(jiān)聽的端口號。第3行是通用查詢?nèi)罩疚募杏涗浢織l信息的格式:日志時間、客戶端連接的ID、執(zhí)行的命令的類型、執(zhí)行的命令的具體信息。第4行表示記錄了之前查詢通用查詢?nèi)罩臼欠耖_啟的操作。第5行表示有root用戶從本地連接到MySQL數(shù)據(jù)庫。通用查詢?nèi)罩局械男畔⒂卸喾N類型的命令,表2為一些常用命令。表2通用日志命令命令說明Quit客戶端與服務器的連接關閉Query客戶端進行SQL查詢命令Connect客戶端連接到服務器2.4二進制日志MySQL的二進制日志是一個二進制文件,主要用于記錄修改數(shù)據(jù)或有可能引起數(shù)據(jù)變化的SQL語句。二進制日志是MySQL上最重要的日志,記錄了可能使MySQL數(shù)據(jù)庫產(chǎn)生更改的所有操作,并且記錄了語句的發(fā)生時間、執(zhí)行時長、操作數(shù)據(jù)等其它信息,但不包含select和show這類沒有對數(shù)據(jù)進行修改的SQL語句。二進制日志與通用查詢?nèi)罩静煌?,二進制日志不是文本文件格式而是更高效的二進制格式。二進制格式占用的空間比文本格式要更少,但二進制格式不能像文本格式一樣直接查看。通過MySQL數(shù)據(jù)庫自帶的mysqlbinlog工具可以將二進制格式轉(zhuǎn)化成文本格式。MySQL數(shù)據(jù)庫二進制日志中的事件是按照其執(zhí)行順序排列的,即二進制日志中記錄事件的順序是按照事件執(zhí)行結束時的先后順序排列的,并不是到達服務器的先后順序,這對按照復制機制的正確運行有著十分重要的意義。2.4.1二進制日志的配置在默認狀態(tài)下,二進制日志不會開啟,并不像通用查詢?nèi)罩灸菢又С钟肧QL命令直接開啟,但可以通過SQL命令來查看其狀態(tài)和配置信息。執(zhí)行命令:showvariableswherevariable_namelike"%bin%";其中MySQL環(huán)境變量中較為重要的為binlog_format、log_bin和sql_log_bin。表3為其功能。表3binlog_format規(guī)定了二進制的存放方式、STATEMENT以語句的形式記錄,ROW以數(shù)據(jù)修改的形式記錄,MIXED以語句和數(shù)據(jù)修改混合形式記錄log_bin用于二進制日志是否開啟的,ON表示開啟、OFF表示未開啟,默認是OFFsql_log_bin表示是否對二進制日志進行日志記錄,ON表示執(zhí)行記錄,OFF表示不執(zhí)行記錄。圖7和圖8可知,二進制的存放方式是以數(shù)據(jù)修改的形式記錄,二進制日志已經(jīng)開啟,并沒有對二進制日志進行日志記錄。圖7二進制日志信息圖8二進制日志信息2.4.2二進制日志的組成構成二進制日志文件的主要有兩部分,首先為二進制日志索引文件(文件名后綴為.index),二進制日志索引文件用于記錄所有的二進制文件;其次為二進制日志文件(文件名后綴為.00000*),二進制日志文件用于記錄數(shù)據(jù)庫所有的DDL和DML(除了數(shù)據(jù)查詢語句)語句事件。開啟了二進制日志,MySQL數(shù)據(jù)庫會自動生成一個索引文件,就是二進制日志文件的基本名加上一個.index的擴展名。如圖9,LAPTOP-NPVE9FHA-bin.index是二進制日志索引文件,后綴從000007~000015為二進制日志文件。打開LAPTOP-NPVE9FHA-bin.index文件,里面記錄著所有二進制文件。如圖10所示。圖9二進制日志圖10二進制日志2.4.3二進制日志的功能MySQL數(shù)據(jù)庫擁有數(shù)據(jù)備份功能和數(shù)據(jù)恢復功能。其中數(shù)據(jù)恢復功能是最常用也是最重要的一個功能。如果沒開啟二進制日志功能,可能發(fā)生丟失的數(shù)據(jù)無法恢復的現(xiàn)象,如數(shù)據(jù)庫在14:00運行時出現(xiàn)錯誤,是系統(tǒng)崩潰無法恢復,那么從前天凌晨12:00到當天14:00之間所有的數(shù)據(jù)內(nèi)容將無法恢復。如果開啟了二進制日志功能,就可以使用前一天凌晨12:00的數(shù)據(jù)庫備份文件恢復到前一天凌晨12:00之前的數(shù)據(jù)庫狀態(tài),然后使用二進制日志文件恢復到前一天凌晨12:00到當天下午14:00之間的數(shù)據(jù)庫中的數(shù)據(jù)內(nèi)容。2.5mysqlbinlog工具由于二進制日志文件的格式并不是文本文件,因此必須借助工具來進行查看。MySQL數(shù)據(jù)庫自帶的mysqlbinlog工具就可以直接通過解析將二進制格式轉(zhuǎn)化為可直接查看的文本格式。在Data\目錄下,執(zhí)行命令:mysqlbinlogLAPTOP-NPVE9FHA-bin.000018此命令為解析文件名為LAPTOP-NPVE9FHA-bin.000018的二進制日志文件。圖11是使用mysqlbinlog工具解析二進制日志得到的一部分信息。事先創(chuàng)建了名為lunwen、jingcha的數(shù)據(jù)庫。在圖11的倒數(shù)第7行,可以看出二進制日志記錄了之前創(chuàng)建lunwen數(shù)據(jù)庫時的操作。在圖11的信息中,從第2行到第4是每次轉(zhuǎn)化后的文本格式的日志信息的序言;第5行到第9行是回滾的信息,回滾的目的是確保輸出不會偶然被放入到事務中,因為在輸出傳送到客戶端的時候,這個事務已經(jīng)在客戶端上開始了。圖11二進制日志內(nèi)容由圖12,at424是事件開始的字節(jié)位置,也就是這個時間的第一個字節(jié);21032712:02:31是這個事件的時間戳,代表該語句在事件執(zhí)行的服務器上什么時間啟動;serverid1是指事件發(fā)生的服務器的值;end_log_pos545是表示下一個事件的開始位置,也就是當前時間的結束位置+1;CRC320x0f45f7f6是校驗碼,用來檢錯的;Query是事件的類型;thread_id=11表示這個事件在ID為11的線程上執(zhí)行;exec_time=1是在主服務器上執(zhí)行事件所花費的事件;error_code=0表示執(zhí)行時間的結果,0表示沒事錯誤發(fā)生;每當數(shù)據(jù)庫更改的時候,第4行的use語句就會被記錄下來,當出現(xiàn)一個use語句,就是一個新事件的第一行。每個事件的輸出中的第1行是SETTIMESTAMP;最后一行可以看出,還在此數(shù)據(jù)庫中創(chuàng)建了一個名為a的表。圖12二進制日志信息格式被解析后的二進制日志轉(zhuǎn)化成的文本格式文件中最后會以圖13中的信息結束。圖13二進制日志文件結尾信息2.6本章小結日志文件在MySQL數(shù)據(jù)庫中起到了非常重要的作用,通過查看這些日志文件中的信息,可以發(fā)現(xiàn)存在在數(shù)據(jù)庫中的一些問題。本章介紹了MySQL數(shù)據(jù)庫中的四種日志:錯誤日志、慢查詢?nèi)罩尽⑼ㄓ貌樵內(nèi)罩竞投M制日志。這四種日志有不同的用途。(1)錯誤日志可以幫助發(fā)現(xiàn)MySQL數(shù)據(jù)庫發(fā)生故障無法正常啟動的原因。(2)慢查詢?nèi)罩灸軌驇兔φ页鐾ㄟ^改寫來完善其執(zhí)行能力的查詢語句。(3)通用查詢?nèi)罩究梢杂涗浻脩魣?zhí)行的所有SQL命令。(4)二進制日志記錄了MySQL數(shù)據(jù)庫中執(zhí)行的所有可能更改數(shù)據(jù)信息的操作,可以利用二進制日志的這一特點進行數(shù)據(jù)恢復。最后還介紹了mysqlbinlog工具,因為二進制日志并不能像其他三種日志一樣直接查看,因此需要借助這個工具將不可直接查看的二進制格式轉(zhuǎn)化為可直接查看的文本格式。
3基于二進制日志分析的MySQL數(shù)據(jù)庫取證通過分析MySQL數(shù)據(jù)庫的日志功能,本文使用二進制日志對MySQL數(shù)據(jù)庫進行取證,通過利用事件的偏移值,確定事件開始偏移和結束偏移的范圍,來進行數(shù)據(jù)庫恢復。二進制日志詳細解析3.1.1二進制日志結構從第二章中的介紹已經(jīng)知道,二進制日志由兩部分文件構成,包含一個索引文件和若干個二進制日志文件[6]。如圖14,表示二進制日志結構。圖14二進制日志結構3.1.2二進制日志事件總體結構圖15二進制日志事件結構CommonHeader是一個通用頭,包含著事件的基本信息,其中最重要的字段就是事件的類型和事件的大小。 PostHesder是一個提交頭,提交頭與特定事件的類型有關,對于不同的類型,字段存儲的信息不同,但與通用頭一樣,給定的二進制日志文件中,提交頭的大小是相同的。3.1.3CommonHeader結構CommonHeader結構一共有6個部分,如圖16,包括:Timestamp、Event_Type、Server_id、Event_size、log_pos、Flags。圖16CommonHeader結構Timestamp:4字節(jié)無符號整型。表示命令開始執(zhí)行時的時間,精確到秒。Event_Type:1字節(jié)枚舉型。表示事件類型。比如QUERY、LOAD_EVENT等類型。Server_id:4字節(jié)無符號整型。可以查看配置中的服務器ID,表示日志是那個服務器產(chǎn)生的。Event_size:4字節(jié)無符號整型。表示該事件的長度,也就是字節(jié)數(shù)。log_pos:4字節(jié)無符號整型。表示該事件結束的位置,也就是該條日志記錄最后一個字節(jié)的下一個字節(jié)的位置。Flags:2字節(jié)位閥。用來記錄二進制日志文件是否正常關閉等信息。在Event_Type字段還有其他許多事件類型,表3進行了說明。表3事件值事件名稱事件說明2Query_Event查詢事件3Stop_Event在服務器關機時寫入的事件15Format_Description_Event二進制日志文件中的第一個事件,用于指定所使用的格式版本3.1.4FormatDescription類型的PostHeader結構FormatDescription是二進制日志文件的第一個事件,它的結構如圖17。圖17FormatDescription時間結構Binlog-version:表示該二進制日志文件的版本,2字節(jié)無符號數(shù)。Mysql-serverversion:記錄了服務器的版本,50個字節(jié),字符串類型。Creattimestamp:二進制文件創(chuàng)建的事件軸,4字節(jié)無符號數(shù)。Eventheaderlength:表示事件頭的長度也就是Common-Header長度,用1字節(jié)表示。Eventtypeheaderlengths:表示事件類型的多少,一般是多少個事件類型就是多少個字節(jié)。3.1.5Query類型的Poster-Header結構QUERY類型的記錄和前面所說的日志消息的結構是一樣的,不同的是Common-header后面是Post-header,然后是Body的內(nèi)容。Poster-Header結構一共有13個字節(jié),如圖18,包括5個部分,分別為:Thread_id,Exec_time,Db_len,Error_code,_Status_var_len。圖18Poster-Header結構Thread_id:4字節(jié),表示線程ID,可以用來分辨用戶臨時創(chuàng)建的表。Exec_time:4字節(jié),表示該記錄所記錄的信息在數(shù)據(jù)庫中所執(zhí)行的事件。Db_len:1字節(jié),表示該記錄所記錄的信息所在的數(shù)據(jù)庫的名字的長度。Error_code:2字節(jié),表示執(zhí)行命令出現(xiàn)錯誤。Status_var_len:2字節(jié),Status_var字段的長度,該字段在Body結構中。3.2實驗測試通過上文對二進制日志的分析,對MySQL數(shù)據(jù)庫進行取證。實驗使用MySQL8.0軟件在windows10系統(tǒng),內(nèi)存8.00GB,Inter(R)Core(TM)i7-7700HQCPU@2.80GHz的環(huán)境下進行實驗。犯罪現(xiàn)場中數(shù)據(jù)庫的數(shù)據(jù)一般會丟失或遭到惡意刪除,所以實驗通過對數(shù)據(jù)庫的增刪改操作來模擬這一狀況。實驗共分為創(chuàng)建數(shù)據(jù)庫、輸入數(shù)據(jù)、刪除數(shù)據(jù)庫、數(shù)據(jù)庫恢復,最后再進行數(shù)據(jù)庫取證。3.2.1增刪改操作首先創(chuàng)建一個數(shù)據(jù)庫進行增刪改操作[7]。如圖19、20所示。圖19創(chuàng)建數(shù)據(jù)庫圖20增刪改操作由圖19可知創(chuàng)建完名為lunwen的數(shù)據(jù)庫后,數(shù)據(jù)庫的數(shù)量為8;如圖20,刪除數(shù)據(jù)庫lunwen后,數(shù)據(jù)庫的數(shù)量變?yōu)?。3.2.2數(shù)據(jù)庫恢復首先確定偏移值的范圍。執(zhí)行命令:showbinlogeventsin‘LAPTOP-NPVE9FHA-bin.000023’;如圖21所示。圖21確定偏移值通過此命令可以準確的定位偏移點??梢钥吹絼?chuàng)建lunwen數(shù)據(jù)庫時的pos值是233,刪除數(shù)據(jù)庫lunwen時的pos值時是1459。其次要核實偏移范圍,利用前面提到的mysqlbinlog工具,來解析二進制文件。如圖22、23。圖22核實偏移值圖23核實偏移值最終確定起始偏移值應該為233。如果要恢復數(shù)據(jù)庫lunwen,要選擇刪除數(shù)據(jù)庫lunwen前一個事件的pos值,這樣才能完成數(shù)據(jù)庫恢復,所以結束偏移值為1382。最后進行數(shù)據(jù)庫恢復,執(zhí)行:mysqlbinlog--start-position=233--stop-position=1382LAPTOP-NPVE9FHA–bin.000023|mysql-uroot–p,圖24所示。再次登錄MySQL數(shù)據(jù)庫,查看數(shù)據(jù)庫數(shù)量又恢復到8個,而且表a中的數(shù)據(jù)也都恢復了。圖24數(shù)據(jù)庫恢復3.2.3數(shù)據(jù)庫取證通過對日志分析完成對數(shù)據(jù)庫的數(shù)據(jù)恢復后,接下來就可以進行數(shù)據(jù)庫取證??梢酝ㄟ^導出MySQL數(shù)據(jù)庫的方法對數(shù)據(jù)庫進行取證。mysqldump.exe保存在MySQL數(shù)據(jù)庫的bin文件夾下,所以在bin目錄下輸入:mysqldump-uroot-p--databaseslunwen>"C:\ProgramData\MySQL\MySQLServer8.0\Uploads\lunwen.sql"[8],如圖25所示。圖25數(shù)據(jù)庫導出最后在如圖26的路徑下生成lunwen.sql文件,就可以完成對MySQL數(shù)據(jù)庫的取證工作。圖26數(shù)據(jù)庫文件3.3本章小結本章對數(shù)據(jù)庫進行了恢復,通過模擬案發(fā)現(xiàn)場數(shù)據(jù)庫的狀況,對數(shù)據(jù)庫進行增刪改的操作,然后通過確定偏移值的范圍、合適偏移范圍、到數(shù)據(jù)恢復,最后實現(xiàn)了基于日志分析的數(shù)據(jù)庫恢復。再通過mysqldump完成對數(shù)據(jù)庫的取證工作。4結語在21世紀,人們在日常的工作和生活上都已經(jīng)離不開數(shù)據(jù)庫。現(xiàn)在計算機信息化的普及程度越來越高,需要產(chǎn)生的數(shù)據(jù)越來越大,以前可以簡單
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國考本溪市規(guī)劃設計崗位行測模擬題及答案
- 大理地區(qū)兒童重癥肺炎支原體肺炎的臨床特征及治療效果分析
- 2025國考保定市新聞宣傳崗位申論題庫含答案
- 市政管網(wǎng)竣工驗收及交付方案
- 工程安全事故預防措施方案
- XmAb5485-生命科學試劑-MCE
- VVD-442-生命科學試劑-MCE
- 基于模因理論的安徽壽縣傳統(tǒng)民居解析
- 廢水中偶氮染料酸性橙G過渡金屬高級氧化體系的降解機制與效能提升
- 道路交通信號系統(tǒng)優(yōu)化方案
- 商圈市場調(diào)查報告
- 20以內(nèi)加減法口算題(不進位不退位練習)
- 2023中國人工智能系列白皮書:AI+Art
- 2024年10月全國自考《財務管理學》試題及答案
- 《大學生心理健康教育》全套教學課件
- 住宅小區(qū)防雷安全管理制度
- 臺球助教管理培訓
- 2024-2030年中國船舶設計行業(yè)需求態(tài)勢展望及發(fā)展戰(zhàn)略分析報告
- 《非洲民間故事》整本書閱讀 課件 五年級上冊語文(統(tǒng)編版) 五年級上冊語文整本書閱讀 導讀課件+講義+閱讀檢測(統(tǒng)編版)
- DB35-T 1857-2019 茶莊園建設指南
- 山東旅游宣傳有內(nèi)容課件
評論
0/150
提交評論