◆王偉兵
新型犯罪偵查中數據庫服務器遠程取證方法的研究
◆王偉兵
(廣東警官學院網絡信息安全系 廣東 510230)
隨著公安機關對新型犯罪持續重點打擊,犯罪嫌疑人紛紛在境外租用服務器搭建非法網站。受制于境外執法權的限制,此類新型犯罪案件的偵查中,調取或扣押服務器后再進行勘驗往往不可行。針對犯罪嫌疑人租用的境外服務器,尤其是數據庫服務器,采用遠程勘驗取證,經實際辦案證實,是一種可行的辦法。遠程勘驗包括破案前的遠程勘驗、破案后的數據庫備份與恢復和數據檢查等環節,而取證系統的設計,則貫穿在新型犯罪案件偵查的全過程中。當然,對數據庫服務器進行遠程勘驗,必須嚴格遵守有關法律規定。
數據庫;遠程勘驗;新型犯罪偵查;電子取證
隨著互聯網產業的高速發展,新型犯罪近年來呈現密集爆發的態勢。以電信網絡詐騙違法犯罪為例,2018年上半年全國公安機關立案電信網絡詐騙案件30多萬起,損失金額接近一百億元。以廣州市為例,2019年所有立案的刑事案件中,涉及網絡的犯罪占比已超過60%。而且隨著網絡深度勘驗到人們的生活以及互聯網技術的進步,目前的新型犯罪,已經進化到高技術、高智能的新階段,犯罪分子往往通過建立網站、開發手機APP等形式進行詐騙、開設網上賭場、侵犯公民個人信息等形式進行違法犯罪活動,并以公司化模式運營為幌子,逃避公安機關的打擊。
眾所周知,對于網絡信息系統而言,最關鍵最重要的模塊可能就是數據庫。對于很多企事業單位而言,最核心的資產或資源可能就是數據,而數據主要是存放在數據庫中。當然,對于新型犯罪團伙而言,最重要的犯罪證據,其也往往存儲在數據庫中。對于這類案件的偵查,無論是前期偵查中掌握案情,還是案件收網后的刑拘與呈捕,都需要對數據庫服務器中的數據進行電子取證。在以往涉及服務器的案件中,可以從IDC(Internet Date Center,互聯網數據中心)處或者犯罪場所扣押服務器后再進行電子取證,但是隨著云計算技術的普及,近年來犯罪分子往往都是從云服務提供商處租用云服務器(例如租用阿里云的ECS,即彈性計算服務)后再搭建數據庫系統,甚至直接租用云數據庫(例如阿里云的RDS,即關系型數據庫服務)。這種情況下,根本無法扣押物理服務器。當然也可以從云服務商調取服務器的鏡像后再針對鏡像進行勘驗取證,但是由于各種原因(服務器磁盤鏡像文件很大、需要調證的案件多需要排隊等等),調證的時間周期往往很長,限于法律規定的刑事案件各階段的辦案期限,這種方法在辦案實踐中往往也不可行。
在上述情況下,對服務器,尤其是數據庫服務器進行遠程取證就成為一種可行的方法。而2016年9月份兩高一部發布的《關于辦理刑事案件收集提取和審查判斷電子數據若干問題的規定》(以下簡稱《刑事電子數據規定》)也為這種遠程取證提供了法律依據。《刑事電子數據規定》第九條明確指出:對于原始存儲介質位于境外或者遠程計算機信息系統上的電子數據,可以通過網絡在線提取,為進一步查明有關情況,必要時,可以對遠程計算機信息系統進行網絡遠程勘驗。《刑事電子數據規定》也明確給出了網絡遠程勘驗的定義:指通過網絡對遠程計算機信息系統實施勘驗,發現、提取與犯罪有關的電子數據,記錄計算機信息系統狀態,判斷案件性質,分析犯罪過程,確定偵查方向和范圍,為偵查破案、刑事訴訟提供線索和證據的偵查活動。根據定義可以看出,對數據庫進行遠程勘驗,既包括案件偵破前對數據庫進行遠程勘驗,也包括破案收網后對數據庫進行電子取證,包括收集、提取電子數據,和對收集與提取的數據進行檢查。
遠程勘驗數據庫是指利用涉案服務器中應用程序的漏洞,無須登錄賬號和密碼,遠程訪問涉案服務器中的數據庫,用于證實犯罪、獲取證據的一種方法。在新型犯罪案件的前期偵查階段,靈活應用該方法,對嫌疑人犯罪事實的認定、案件的定性、甚至受害人信息的獲取,都能起到事半功倍的作用和效果。
對于涉及非法APP類、網絡賭博、網絡色情等類型的案件,犯罪嫌疑人一般都會架設服務器。無論是網站服務器還是API接口服務器,一般情況下里面都會安裝和運行數據庫。經過一段時間的運行,數據庫中必將存儲大量的數據。如果應用程序存在SQL注入漏洞,那么在案件偵查過程中,利用該漏洞,通過遠程勘驗的方法,便可從數據庫中獲取有價值的情報和嫌疑人的犯罪證據。
要勘驗服務器,首先要搞清楚服務器的IP地址、服務器操作系統類型和版本、開放的端口等信息。對于服務器的IP地址,如果是網站,則直接通過ip138.com或者ip.chinaz.com等互聯網查詢工具查詢,或者直接通過ping該網站的域名而獲知;但是如果是APP,則需要通過抓包工具(Fiddler或者Wireshark)來抓取APP運行后請求服務器的數據包即可知道服務器的域名或者IP。而服務器操作系統類型和版本,則可以通過nmap(Linux下的網絡掃描和嗅探工具)進行掃描而獲知。
待準備工作完成后,就要掃描服務器的漏洞了。漏洞分為兩類:系統級的漏洞和應用級的漏洞。對于系統級的漏洞而言,由于服務器上運行的安全防護系統日益完善、服務器管理人員安全意識的提高以及操作系統廠商及時提供安全補丁等因素,越來越難以勘驗。但是對于應用級漏洞,由于Web應用程序開發人員的水平和經驗欠缺,或者開發中的疏忽等因素,總是難以避免。所以應用級漏洞勘驗服務器是偵查人員的首選。而SQL注入漏洞就是一種常見的應用級的漏洞,其本質就是應用開發人員沒有對用戶輸入的內容進行檢查或過濾,而是將其直接拿來用于構造訪問數據庫的SQL語句,從而為勘驗人員留下可乘之機。服務器上的應用程序是否具有SQL注入漏洞,既可以通過網站頁面提交特殊的字符串來完成,也可借助于sqlmap(一款用來檢測與利用SQL注入漏洞的免費開源工具)來完成。無論哪種方法,關鍵是找到注入點。注入點一般是提交服務器的url中的某個參數,但是不一定每個參數都是注入點,這就需要偵查人員反復嘗試,用每個可能的url來測試,最終找到一個注入點,就算是完成該步驟。具體的命令如表1所示。
一旦找到涉案服務器中存在的注入URL和注入點后,便可利用URL和注入點進行勘驗。勘驗的本質其實就是反復把特殊的字符串插入到Web表單的輸入域或頁面請求的查詢字符串中,欺騙服務器反復執行特定的SQL語句,從而獲取有關數據庫的信息,包括數據庫的類型,數據庫的版本,數據庫的名稱、數據庫中含有哪些數據表等信息。這個過程可以通過不同選項的sqlmap命令來實現。具體的命令如表1所示。

表1 利用sqlmap遠程勘驗數據庫的命令
在獲知有關數據庫的信息后,便可結合案情,有選擇性下載數據庫中的數據了。需要注意的是,如果涉案服務器運行時間比較長,數據庫里面存儲的數據比較多時,獲取數據庫中數據這一步就會很耗時。這就需要偵查員根據案情,有所取舍,只需提取對案件偵查有幫助的數據即可,否則,長時間提取數據,會對服務器造成較大壓力,影響服務器的運行,就有可能使嫌疑人有所察覺。
另外,利用sqlmap,不但可以獲取數據庫中的內容,有時候也能快速拿到服務器的Webshell,從而獲取更多服務器的信息,當然這要視SQL注入漏洞的嚴重程度而定。
在案件偵破后,第一時間應該對數據庫里的數據進行提取和收集,最常用的提取方法就是數據庫備份。數據庫備份方法大體上可分為邏輯備份和物理備份兩種,即通常所說的基于文件級的備份和基于數據塊級別的備份。下面以Linux操作系統上的MySQL數據庫為例,說明這兩種備份方法。
邏輯備份是指使用軟件技術從數據庫中導出數據并寫入一個輸出文件,該文件的格式一般與原數據庫的文件格式不同,只是原數據庫中數據內容的一個映像。因此,邏輯備份文件只能用來對數據庫進行邏輯恢復,即數據導入,而不能按數據庫原來的存儲特征進行物理恢復。在MySQL數據庫中,最常用的邏輯備份方法是使用自帶工具mysqldump,具體命令過程如圖1所示。

圖1 使用mysqldump對數據庫進行邏輯備份
圖2中的命令就是對遠程MySQL數據庫服務器上的名稱為tigermachine的數據庫進行全庫備份,命令mysqldump的-l選項表示給所有表加讀鎖,目的是備份數據的時候不允許其他客戶端對其進行操作,以保證備份數據的一致性。備份的結果保存在本地/data/sqlfile目錄下,形成一個sql文件,該文件的內容全部由SQL語句構成,其中數據的備份都是通過批量插入(insert)命令來實現。
物理備份是指將實際組成數據庫的操作系統文件從一處拷貝到另一處的備份過程,通常是從磁盤到磁盤。物理備份又分為冷備份和熱備份。
冷備份是指當數據庫可以暫時處于關閉狀態時,將它在這一穩定時刻的數據相關文件轉移到安全的區域,當數據庫需要恢復時,再從安全區域將備份的數據庫相關文件拷貝回原來的位置。由于是在數據庫不提供服務的關閉狀態,所以稱為冷備份。這種備份方式實現非常簡單,只需安全停止數據庫服務,然后再遠程拷貝整個數據庫服務器的文件到本地即可,而且通用性強,適用于任何數據庫。但是,該方法有很大的局限性,主要是貿然關閉數據庫服務器,可能會對后續的電子取證造成影響。
熱備份是指在數據庫服務不關閉情況下對數據庫的操作系統文件進行物理備份。對于MySQL數據庫,可以使用開源工具Xtrabackup實現熱備份。該工具備份/恢復過程快速、可靠,能夠基于壓縮等功能節約磁盤空間和流量,并自動實現備份檢驗,可靠性非常高。該工具需要先在本機下載安裝,安裝以及備份的過程如圖2所示。
其中,第6步備份數據庫到異地時,需要使用ssh遠程登錄,但是由于ssh遠程登錄不能在命令行中指定密碼,所以需要利用sshpass從命令行方式傳遞密碼,故在第5步需先安裝sshpass。

圖2 數據庫備份過程
邏輯備份和物理備份兩種方法各有優劣:邏輯備份無須停止數據庫服務,也無須在涉案服務器上安裝工具軟件,但是速度比較慢,適用于數據量不太大的情況;而物理備份速度比較快,適用數據量比較大的情況,但是冷備份需要停止數據庫服務,熱備份需要在涉案服務器上安裝工具軟件。實際辦案過程中,可根據實際情況靈活采用。
值得注意的是,在實際辦案過程中,有時候受限于客觀條件的限制,例如現場網絡和硬件太差、數據量太大等因素可能導致備份過程所需時間太長。這時,可以考慮不用備份數據,只需采取證據保護措施(例如修改服務器和數據庫遠程登錄密碼,保證云服務賬戶資金充足等),在保證數據庫的安全的情況下,待撤離現場回到實驗室后,再做數據庫的備份。
無論是對數據庫進行備份,或者是采取保護措施,按照《刑事電子數據規定》要求,都屬于收集、提取電子數據的過程,應當制作筆錄,記錄案由、對象、內容,收集、提取電子數據的時間、地點、方法、過程,并附電子數據清單,注明類別、文件格式、完整性校驗值等,由偵查人員、電子數據持有人(提供人)簽名或者蓋章;電子數據持有人(提供人)無法簽名或者拒絕簽名的,應當在筆錄中注明,由見證人簽名或者蓋章。有條件的,應當對相關活動進行錄像。
無論是在現場還是回到實驗室對數據庫進行備份,都需要對備份的內容進行恢復。對數據庫內容的檢查,都應該是在數據庫重建的本地備份上進行,以免影響原始數據庫及其備份的完整性。例如,在檢查過程中,需要使用一些復雜的SQL語句對數據庫中的數據進行檢索與統計,為了加快速度,可能需要在一些數據庫表上增加或者修改索引,又或者如果需要增加一些存儲過程以方便檢查,這些都會修改數據庫的原始性,應當都在重建的數據庫備份上進行。
根據數據庫備份方法的不同,數據庫恢復的方法也相應不同。下面也以Linux操作系統上的MySQL數據庫為例,詳細說明這兩種恢復方法。
由于邏輯備份生成的結果是sql文件,該文件的內容都是SQL語句,則邏輯恢復其實就是重放這些SQL語句的執行。可使用MySQL自帶的客戶端工具來完成,具體命令執行過程如圖3所示。

圖3 數據庫邏輯恢復
圖4中,首先創建了一個空的數據庫tigermachine,然后使用客戶端命令,將之前備份生成的文件tm.sql恢復到該數據庫中。

圖4 數據庫物理恢復
針對冷備份生成的文件,恢復非常容易,只需要將所有文件拷貝的本地機器上,啟動數據庫服務即可。這里主要通過命令來說明,如何對熱備份生成的文件進行恢復,具體過程如圖4所示。
需注意的是,在執行圖4所示命令之前,需要先停止本地數據庫服務,并刪除數據庫data目錄,待恢復完成后,再啟動數據庫服務。
《刑事電子數據規定》第十六條明確指出,對扣押的原始存儲介質或者提取的電子數據,可以通過恢復、破解、統計、關聯、比對等方式進行檢查。所以,對涉案服務器中的數據備份后,在實驗室本地的計算機中進行恢復(無論是邏輯恢復,還是物理恢復),針對恢復出來的數據庫進行檢查,是符合法律規定的。當然,對恢復過程也應當進行錄像,并制作筆錄。
本文主要針對近年來頻繁發生的新型犯罪案件,從破案前的遠程勘驗、破案后的數據庫備份與恢復,數據檢查、取證系統設計等環節來闡述在新型犯罪案件偵查的全過程中,對數據庫服務器進行遠程勘驗的方法,并對一些問題結合有關法律規定進行了探討。隨著互聯網行業的高速發展,新型犯罪的形態和技術含量會越來越高,針對此類案件的偵查與取證,尤其是對服務器的勘驗,也會越來越復雜。本文僅僅以MySQL數據庫為例,說明了有關的勘驗方法,而筆者在實際辦案中也發現,近年來流行的非關系型數據庫,比如MongoDB和Redis,也頻頻出現在涉案服務器中,對非關系型數據庫服務器的遠程勘驗,將是下一步研究的方向。
[1]劉銘.《刑事電子數據規定》偵查取證維度的分析[J].中國刑警學院學報,2017(02):5-10.
[2]高楊,羅文華.網絡賭博案件中代理所用主機的電子數據取證特征分析[J]. 中國刑警學院學報,2015(02):45-48.
[3]劉浩陽.MS SQL數據庫在線取證研究[J].信息網絡安全,2016(09):26-30.
[4]徐國天.MySQL數據庫檢驗方法研究[J].警察技術,2013(05):35-38.
[5]王新迎.基于網絡色情犯罪論壇數據庫的取證系統研究[J].云南警官學院學報,2008(06):106-109.
[6]張云帆.Oracle數據庫備份與恢復策略[J]. 計算機工程,2009(15):85-87.
[7]李峰,劉曉潔,林翰翮.基于Oracle數據庫的容災系統[J].計算機工程與設計,2011(11):3573-3576.
[8]周文瑾,胡曉勤,李自尊,鄧亮.樹形高效數據庫備份管理模型[J].計算機工程與設計,2012(12):4561-4565.
廣東省普通高校特色創新類項目“新型網絡犯罪偵查過程中軟件逆向技術的研究”(2019KTSCX115)的部分成果