一種進程監控的方法和裝置的制造方法
【技術領域】
[0001]本申請涉及信息安全技術領域,特別是涉及一種進程監控的方法和一種進程監控的裝置。
【背景技術】
[0002]隨著通信技術的快速發展,手機等移動終端已經非常普及,并且移動終端提供的功能也越來越多。例如,用戶不僅可以通過移動終端打電話、發短信,還可以自由地安裝各種應用程序,從而實現在移動終端上進行工作、觀看視頻、購物、支付等活動。目前,用戶在移動終端上安裝幾十甚至上百個應用程序已是非常普遍的情況,因此,這些應用程序是否安全對用戶而言也越來越重要。
[0003]目前,使用安卓Android操作系統的移動終端,應用程序一般都是通過JAVA進程創建JAVA子進程進行運行。一些應用程序,出于實現應用程序固有功能需要之外的目的,特別是商業目的,隨意申請系統權限,獲取用戶隱私數據、執行網絡訪問、保持設備活動、發送短信行為等。輕則可能導致用戶隱私數據泄露,或者占用系統資源,重則可能通過惡意扣費、植入廣告、消耗資費、欺詐誘騙等,使用戶遭受損失。因此,為了保證移動終端的安全性,Android操作系統會對JAVA子進程進行監控,其做法是:將主動防御模塊預先注入Zygote(孵化器)進程,然后JAVA進程向Zygote進程申請創建子進程,從而使Zygote進程分裂出子進程,由于主動防御模塊預先已經注入到Zygote進程中,因此Zygote進程分裂出的子進程中自然也包含主動防御模塊,可以實現對子進程的監控。
[0004]但是,現有方法只對JAVA子進程有效,對于通過Native進程或者其他進程運行的應用程序,現有的方法因為無法注入到Native進程或者其他進程中去,因而也就不能對其進行監控,此外,JA VA進程也可能創建Native子進程,利用現有的方法同樣無法實現對Nati ve子進程的監控。
【發明內容】
[0005]鑒于上述問題,提出了本申請以便提供一種克服上述問題或者至少部分地解決上述問題的一種進程監控的方法和相應的一種進程監控的裝置。
[0006]依據本申請的一個方面,提供了一種進程監控的方法,包括:
[0007]當監控到父進程創建子進程時,攔截所述父進程對執行文件的調用命令;
[0008]根據所述調用命令,創建注入器;
[0009]采用所述注入器,創建子進程,所述子進程具有相應的Hook監控模塊;
[0010]采用所述Hook監控模塊對所述子進程進行監控。
[0011]可選地,在所述當監控到父進程創建子進程時,攔截所述父進程對執行文件的調用命令的步驟后,還包括:
[0012]獲取所述子進程對應的路徑參數,以及,注入器對應的路徑參數。
[0013]可選地,所述根據所述調用命令,創建注入器的步驟包括:
[0014]判斷所述父進程是否是通過切換用戶SU提權方式創建子進程;
[0015]若是,則采用所述切換用戶SU提權創建所述注入器;
[0016]若否,則將所述子進程替換為所述注入器,從而創建所述注入器。
[0017]可選地,所述采用所述切換用戶SU提權創建所述注入器的步驟包括:
[0018]在切換用戶SU提權的指令中,加入-C參數,采用所述切換用戶SU提權創建所述注入器。
[0019 ]可選地,所述將所述子進程替換為所述注入器,從而創建所述注入器的步驟包括:
[0020]將所述調用命令中子進程對應的路徑參數替換為注入器對應的路徑參數,從而創建所述注入器。
[0021 ]可選地,所述采用所述注入器,創建子進程的步驟包括:
[0022]采用所述注入器,創建所述子進程的鏡像;
[0023]根據所述子進程對應的路徑參數,調用所述子進程對應的組件;
[0024]將所述子進程對應的組件以及預設的Hook監控模塊注入所述子進程的鏡像;
[0025]命令所述子進程加載S分享屬性。
[0026]可選地,所述采用所述Hook監控模塊對所述子進程進行監控的步驟包括:
[0027]命令所述Hook監控模塊通過所述S分享屬性對所述子進程進行監控;
[0028]當通過所述Hook監控模塊監控到所述子進程創建進程時,將所述子進程作為父進程,繼續為新創建的進程注入所述Hook監控模塊。
[0029]可選地,所述父進程包括JAVA進程,和/或,Nati ve進程;所述子進程包括JAVA進程,和/或,Native進程。
[0030]根據本申請的另一方面,提供了一種進程監控的裝置,包括:
[0031 ]攔截模塊,用于在監控到父進程創建子進程時,攔截所述父進程對執行文件的調用命令;
[0032]創建模塊,用于根據所述調用命令,創建注入器;
[0033]注入模塊,用于采用所述注入器,創建子進程,所述子進程具有相應的Hook監控模塊;
[0034]監控模塊,用于采用所述Hook監控模塊對所述子進程進行監控。
[0035]可選地,還包括:
[0036]獲取模塊,用于獲取所述子進程對應的路徑參數,以及,注入器對應的路徑參數。
[0037]可選地,所述創建模塊包括:
[0038]判斷子模塊,用于判斷所述父進程是否是通過切換用戶SU提權方式創建子進程;
[0039]第一創建子模塊,用于在父進程是通過切換用戶SU提權方式創建子進程時,采用所述切換用戶SU提權創建所述注入器;
[0040]第二創建子模塊,用于在父進程不是通過切換用戶SU提權方式創建子進程時,將所述子進程替換為所述注入器,從而創建所述注入器。
[0041 ]可選地,所述第一創建子模塊包括:
[0042]第一創建單元,用于在切換用戶SU提權的指令中,加入-C參數,采用所述切換用戶SU提權創建所述注入器。
[0043]可選地,所述第二創建子模塊包括:
[0044]第二創建單元,用于將所述調用命令中子進程對應的路徑參數替換為注入器對應的路徑參數,從而創建所述注入器。
[0045]可選地,所述注入模塊包括:
[0046]鏡像創建子模塊,用于采用所述注入器,創建所述子進程的鏡像;
[0047]組件調用子模塊,用于根據所述子進程對應的路徑參數,調用所述子進程對應的組件;
[0048]第一注入子模塊,用于將所述子進程對應的組件以及預設的Hook監控模塊注入所述子進程的鏡像;
[0049]S屬性加載子模塊,用于命令所述子進程加載S分享屬性。
[0050]可選地,所述監控模塊包括:
[0051]第一監控子模塊,用于命令所述Hook監控模塊通過所述S分享屬性對所述子進程進行監控;
[0052]第二注入子模塊,用于在通過所述Hook監控模塊監控到所述子進程創建進程時,將所述子進程作為父進程,繼續為新創建的進程注入所述Hook監控模塊。
[0053]可選地,所述父進程包括JAVA進程,和/或,Nati ve進程;所述子進程包括JAVA進程,和/或,Native進程。
[0054]根據本申請的一種進程監控的方法和裝置可以在監控到父進程通過Fork函數創建子進程時,通過攔截父進程對Execve函數的調用命令,將所述調用命令中子進程對應的路徑參數替換為注入器對應的路徑參數,以創建出注入器,然后在通過所述注入器創建子進程時,注入預設的Hook監控模塊,使得Hook監控模塊能夠對新創建的子進程進行監控,從而解決了目前安卓操作系統中只能對JAVA進程創建的JAVA子進程進行監控的問題,從而可以實現對任一進程創建的各種類型子進程行為的監控,有助于及時發現惡意進程,提高系統的安全性。
[0055]上述說明僅是本申請技術方案的概述,為了能夠更清楚了解本申請的技術手段,而可依照說明書的內容予以實施,并且為了讓本申請的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本申請的【具體實施方式】。
【附圖說明】
[0056]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本申請的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0057]圖1示出了根據本申請一個實施例的一種進程監控的方法步驟流程圖;
[00