本發(fā)明涉及信息安全
技術領域:
:,特別是涉及一種linux函數(shù)劫持方法及裝置。
背景技術:
::在linux系統(tǒng)中,如何保證應用程序所操作的文件及網(wǎng)絡訪問的安全性,從而對linux系統(tǒng)的整體安全性進行保障,是信息安全
技術領域:
:的重要課題。目前,linux下常用的操作控制的方法,一般通過對文件和網(wǎng)絡的操作權限進行管理,為文件的操作進行安全保護。傳統(tǒng)的針對linux系統(tǒng)下的文件操作的方法,基本上利用inotify應用來控制文件操作,無法控制其進行文件操作,更無法針對應用程序對linux系統(tǒng)文件操作進行控制。而的針對linux系統(tǒng)下的網(wǎng)絡訪問控制的方法,基本上基于對iptables的二次開發(fā)和包裝,針對所有使用linux系統(tǒng)的程序統(tǒng)一控制網(wǎng)絡訪問,無法針對應用程序對linux系統(tǒng)網(wǎng)絡訪問進行控制。技術實現(xiàn)要素:基于此,有必要針對linux系統(tǒng)無法針對應用程序進行文件操作和網(wǎng)絡訪問控制的問題,提供一種linux函數(shù)劫持方法,包括:接收應用程序的運行命令,并獲取應用程序的標識;加載預設的劫持函數(shù)庫和動態(tài)庫;運行所述應用程序并識別所述應用程序中的操作函數(shù);根據(jù)所述操作函數(shù)和所述應用程序的標識查找所述劫持函數(shù)庫,所述劫持函數(shù)庫包括所述操作函數(shù)、所述應用程序的標識和劫持函數(shù)之間的對應關系,若查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則運行所述劫持函數(shù),并根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù)。在其中一個實施例中,所述方法還包括:若未查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則調(diào)用所述動態(tài)庫中的操作函數(shù)。在其中一個實施例中,所述預設的劫持函數(shù)庫的絕對路徑保存在后臺入口文件中。在其中一個實施例中,所述根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用動態(tài)庫中的操作函數(shù)之后還包括:判斷是否對所述操作函數(shù)進行監(jiān)控。在其中一個實施例中,所述根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù),包括:獲取所述操作函數(shù)中的操作信息;根據(jù)所述操作信息,調(diào)用外部服務程序,并根據(jù)所述外部服務程序的運行結果判斷是否調(diào)用動態(tài)庫中的操作函數(shù)。本發(fā)明所提供的linux函數(shù)劫持方法,能夠在linux系統(tǒng)中通過獲取應用程序的標識,針對不同的應用程序對操作函數(shù)進行劫持,劫持針對所述應用程序的操作函數(shù),并根據(jù)劫持函數(shù)的運行結果判斷是否允許所述應用程序的操作函數(shù)的運行,提高對不同應用程序的操作函數(shù)的控制的靈活性。在其中一個實施例中,本發(fā)明所提供的linux函數(shù)劫持方法,能夠通過外部服務程序對需要進行控制的應用程序和操作函數(shù)進行定義及維護,提供了靈活方便的針對linux系統(tǒng)操作函數(shù)的控制。本發(fā)明還提供一種linux函數(shù)劫持裝置,包括:應用程序接收模塊,用于接收應用程序的運行命令,并獲取應用程序的標識;函數(shù)加載模塊,用于加載預設的劫持函數(shù)庫和動態(tài)庫;函數(shù)識別模塊,用于運行所述應用程序并識別所述應用程序中的操作函數(shù);操作控制模塊,用于根據(jù)所述操作函數(shù)和所述應用程序的標識查找所述劫持函數(shù)庫,所述劫持函數(shù)庫包括所述操作函數(shù)、所述應用程序的標識和劫持函數(shù)之間的對應關系,若查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則運行所述劫持函數(shù),并根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù)。在其中一個實施例中,操作控制模塊,還用于若未查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則調(diào)用所述動態(tài)庫中的操作函數(shù)。在其中一個實施例中,所述預設的劫持函數(shù)庫的絕對路徑保存在后臺入口文件中。在其中一個實施例中,還包括:操作監(jiān)控模塊,用于根據(jù)所述劫持函數(shù)的運行結果判斷調(diào)用動態(tài)庫中的操作函數(shù)時,判斷是否對所述操作函數(shù)進行監(jiān)控。在其中一個實施例中,所述操作控制模塊包括:操作信息獲取單元,用于獲取所述操作函數(shù)中的操作信息;操作控制單元,用于根據(jù)所述操作信息,調(diào)用外部服務程序,并根據(jù)所述外部服務程序的運行結果判斷是否調(diào)用動態(tài)庫中的操作函數(shù)。本發(fā)明所提供的linux函數(shù)劫持裝置,能夠在linux系統(tǒng)中通過獲取應用程序的標識,針對不同的應用程序對操作函數(shù)進行劫持,劫持針對所述應用程序的操作函數(shù),并根據(jù)劫持函數(shù)的運行結果判斷是否允許所述應用程序的操作函數(shù)的運行,提高對不同應用程序的操作函數(shù)的控制的靈活性。在其中一個實施例中,本發(fā)明所提供的linux函數(shù)劫持裝置,能夠通過外部服務程序對需要進行控制的應用程序和操作函數(shù)進行定義及維護,提供了靈活方便的針對linux系統(tǒng)操作函數(shù)的控制。附圖說明圖1為一個實施例中的linux函數(shù)劫持方法的示意圖;圖2為一個實施例中的linux函數(shù)劫持方法中劫持庫的位置示意圖;圖3為另一個實施例中的linux函數(shù)劫持方法的流程圖;圖4為又一個實施例中的linux函數(shù)劫持方法的流程圖;圖5為一個實施例中的linux函數(shù)劫持裝置的結構圖;圖6為另一個實施例中的linux函數(shù)劫持裝置的結構圖;圖7為又一個實施例中的linux函數(shù)劫持裝置的結構圖。具體實施方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。圖1為一個實施例中的linux函數(shù)劫持方法的示意圖,如圖1所示的linux函數(shù)劫持方法包括:步驟s100,接收應用程序的運行命令,并獲取應用程序的標識。具體的,所述應用程序的標識是指用于區(qū)分不同應用程序的記號,或區(qū)分不同應用程序的特征的標記,包括應用程序的程序類別、名稱、版本號中的任意一種。步驟s200,加載預設的劫持函數(shù)庫和動態(tài)庫。具體的,所述預設的劫持函數(shù)庫,所述劫持函數(shù)庫為在操作函數(shù)運行之前,將其劫持后,進行預設的邏輯處理后,并根據(jù)所述預設的邏輯處理決定是否調(diào)用原操作函數(shù)。所述被劫持的操作函數(shù)包括open系列函數(shù),close函數(shù),create系列函數(shù),read函數(shù),write函數(shù),socket操作系列函數(shù)(socket,listen,bind,connect,send,receive等),kill函數(shù)等。系統(tǒng)首先加載所述劫持函數(shù)庫,再加載動態(tài)庫,即常用的c庫。如圖2所示,本實施例所提供的劫持庫,加載后在linux系統(tǒng)中位置。在用戶應用層之下,劫持庫位于動態(tài)庫更加靠近用戶應用層的位置,以表示劫持庫中的劫持函數(shù)優(yōu)先被調(diào)用,如劫持庫中沒有相應的劫持函數(shù),則調(diào)用動態(tài)庫中的函數(shù)。圖2中,劫持庫和動態(tài)庫都連接到linux底層的內(nèi)核部分。不再贅述。步驟s300,運行所述應用程序并識別所述應用程序中的操作函數(shù)。具體的,運行所述應用程序后,對程序中的操作函數(shù)進行識別,當識別到操作函數(shù)時,即進行后續(xù)步驟s400。所述操作函數(shù),包括文件操作函數(shù)和網(wǎng)絡訪問函數(shù)。步驟s400,根據(jù)所述操作函數(shù)和所述應用程序的標識查找所述劫持函數(shù)庫,所述劫持函數(shù)庫包括所述操作函數(shù)、所述應用程序的標識和劫持函數(shù)之間的對應關系,若查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則運行所述劫持函數(shù),并根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù)。具體的,所述劫持函數(shù)庫包括所述操作函數(shù)、所述應用程序的標識和劫持函數(shù)之間的對應關系,所述劫持函數(shù)包括禁止運行所述操作函數(shù)。例如,當設定某個應用程序a的操作函數(shù)open為需要被禁止運行時,所述應用程序a的操作函數(shù)open在所述劫持函數(shù)庫中,對應結果為禁止運行所述應用程序a的操作函數(shù)open。根據(jù)所述操作函數(shù)和所述標識查找所述劫持函數(shù)庫時,當所述操作函數(shù)和所述標識在所述劫持函數(shù)庫中存在與劫持函數(shù)之間的對應關系時,所述應用程序的操作函數(shù)需要被劫持,并根據(jù)劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù)??梢岳斫獾氖?,基于劫持函數(shù)庫,可以將應用程序和操作函數(shù)進行任意組合后,對不同應用程序的各種操作函數(shù)進行管理,禁止特定的應用程序的特定的操作函數(shù)的運行。本實施例所提供的linux函數(shù)劫持方法,能夠在linux系統(tǒng)中通過獲取應用程序的標識,針對不同的應用程序對操作函數(shù)進行劫持,劫持針對所述應用程序的操作函數(shù),并根據(jù)劫持函數(shù)的運行結果判斷是否允許所述應用程序的操作函數(shù)的運行,提高對不同應用程序的操作函數(shù)的控制的靈活性。在其中一個實施例中,當所述操作函數(shù)和所述標識在所述劫持函數(shù)庫中,不存在與劫持函數(shù)之間的對應關系時,即,在所述劫持函數(shù)庫中查找不到時,運行所述動態(tài)庫中的操作函數(shù)。在其中一個實施例中,所述的劫持函數(shù)庫,絕對路徑保存在后臺入口文件中,即,保存在/etc/ld.so.preload文件中。本實施例所提供的linux函數(shù)劫持方法,將所述的劫持函數(shù)庫保存在后臺入口文件中,可以保證所述劫持函數(shù)庫先于動態(tài)庫添加,進一步提高針對不同應用程序的操作函數(shù)管理的效率。圖3為另一個實施例中的linux函數(shù)劫持方法的流程圖,如圖3所示的linux函數(shù)劫持方法,包括:步驟s410,根據(jù)所述操作函數(shù)和所述標識查找所述劫持函數(shù)庫,判斷是否查找到,若是,接步驟s420,若否,跳至步驟s430。具體的,若劫持庫中不存在所述操作函數(shù)和所述標識,相當于所述應用程序的所述操作函數(shù)不需要被劫持,直接調(diào)用所述動態(tài)庫中的操作函數(shù)即可。步驟s420,根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù),若是,跳至步驟s450,若否,跳至步驟s440。具體的,如所述操作函數(shù)的劫持庫的運行結果為禁止運行所述操作函數(shù),則不再調(diào)用動態(tài)庫中的操作函數(shù)。步驟s430,調(diào)用所述動態(tài)庫中的操作函數(shù)。步驟s440,輸出所述劫持函數(shù)的運行結果。具體的,輸出所述劫持函數(shù)的運行結果,包括輸出禁止運行所述操作函數(shù)等提示信息。步驟s450,判斷是否對所述操作函數(shù)進行監(jiān)控,若是,接步驟s460,如否,跳至步驟s430。具體的,當劫持函數(shù)的運行結果為調(diào)用動態(tài)庫中的操作函數(shù)時,進一步的判斷是否需要對所述操作函數(shù)進行監(jiān)控,所述監(jiān)控包括記錄操作日志等。步驟s460,調(diào)用所述動態(tài)庫中的操作函數(shù),并對所述操作函數(shù)進行監(jiān)控。本實施例所提供的linux函數(shù)劫持方法,能夠在linux系統(tǒng)中利用劫持函數(shù)庫針對不同應用程序的操作函數(shù)進行管理,并進一步對需要調(diào)用動態(tài)庫的被劫持的操作函數(shù)進行監(jiān)控,提高linux系統(tǒng)對應用程序的操作函數(shù)管理的靈活度。在其中一個實施例中,所述操作函數(shù),包括文件操作函數(shù)和網(wǎng)絡訪問函數(shù)。本實施例所提供的linux函數(shù)劫持方法,能夠在linux系統(tǒng)中利用劫持函數(shù)庫針對不同應用程序的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)進行管理,并進一步對需要調(diào)用動態(tài)庫的被劫持的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)進行監(jiān)控,提高linux系統(tǒng)中不同應用程序的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)的管理的靈活度。圖4為又一個實施例中的linux函數(shù)劫持方法的流程圖,如圖4所示的linux函數(shù)劫持方法,包括:步驟s410,獲取所述操作函數(shù)中的操作信息。具體的,如所述操作函數(shù)為文件操作函數(shù),則獲取所述文件操作函數(shù)中的文件信息,包括文件名、文件類型、文件保存地址等。如所述操作函數(shù)為網(wǎng)絡訪問函數(shù),則獲取所述網(wǎng)絡訪問函數(shù)中的網(wǎng)絡信息,包括網(wǎng)絡源ip地址,網(wǎng)絡目的ip地址,網(wǎng)絡端口等信息。步驟s420’,根據(jù)所述操作信息,調(diào)用外部服務程序,并根據(jù)所述外部服務程序的運行結果判斷是否調(diào)用動態(tài)庫中的操作函數(shù)。具體的,所述外部服務程序,包括針對文件操作函數(shù)的外部服務程序和針對網(wǎng)絡訪問函數(shù)的外部服務程序。其中,所述網(wǎng)絡訪問函數(shù)的外部服務程序包括預設的控制網(wǎng)絡庫。所述預設的控制網(wǎng)絡庫,可以為白名單性質的控制網(wǎng)絡庫,也可以為黑名單性質的控制網(wǎng)絡庫,可根據(jù)實際需要選用即可。通過所述的控制網(wǎng)絡庫,可以實現(xiàn)針對特定的應用程序和特定的訪問網(wǎng)絡的不同組合情況,分別進行控制,如針對應用程序a進行網(wǎng)絡訪問時,控制其訪問網(wǎng)絡1和網(wǎng)絡2,但不控制其訪問網(wǎng)絡3和網(wǎng)絡4。進一步的,所述網(wǎng)絡訪問函數(shù)的外部服務程序還包括預設的監(jiān)控網(wǎng)絡庫,用于對所述網(wǎng)絡訪問函數(shù)所訪問的網(wǎng)絡進行監(jiān)控。所述文件操作函數(shù)的外部服務程序包括預設的控制文件庫,所述預設的控制文件庫,可以為白名單性質的控制文件庫,也可以為黑名單性質的控制文件庫,可根據(jù)實際需要選用即可。通過所述的控制文件庫,可以實現(xiàn)針對特定的應用程序和特定的文件操作的不同組合情況,分別進行控制,如針對應用程序a進行文件操作時,控制其操作文件1和文件2,但不控制其操作文件3和文件4。進一步的,所述文件操作函數(shù)的外部服務程序還包括預設的監(jiān)控文件庫,用于對所述文件操作函數(shù)所操作的文件進行監(jiān)控。本實施例所提供的linux函數(shù)劫持方法,能夠在linux系統(tǒng)中利用劫持函數(shù)庫,調(diào)用外部服務程序,針對不同應用程序的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)進行控制,并進一步對需要調(diào)用動態(tài)庫的被劫持的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)進行監(jiān)控,所述外部服務程序為黑白名單性質管理或監(jiān)控程序,能夠提高linux系統(tǒng)中不同應用程序的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)的管理的靈活度。圖5為一個實施例中的linux函數(shù)劫持裝置的結構圖,如圖5所示的linux函數(shù)劫持裝置包括:應用程序接收模塊100,用于接收應用程序的運行命令,并獲取應用程序的標識。函數(shù)加載模塊200,用于加載預設的劫持函數(shù)庫和動態(tài)庫。函數(shù)識別模塊300,用于運行所述應用程序并識別所述應用程序中的操作函數(shù)。操作控制模塊400,用于根據(jù)所述操作函數(shù)和所述標識查找所述劫持函數(shù)庫,若查找到,根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù);若否,調(diào)用所述動態(tài)庫中的操作函數(shù)。本實施例所提供的linux函數(shù)劫持裝置,能夠在linux系統(tǒng)中通過獲取應用程序的標識,針對不同的應用程序對操作函數(shù)進行劫持,劫持針對所述應用程序的操作函數(shù),并根據(jù)劫持函數(shù)的運行結果判斷是否允許所述應用程序的操作函數(shù)的運行,提高對不同應用程序的操作函數(shù)的控制的靈活性。圖6為另一個實施例中的linux函數(shù)劫持裝置的結構圖,如圖6所示的linux函數(shù)劫持裝置包括:應用程序接收模塊100,用于接收應用程序的運行命令,并獲取應用程序的標識。函數(shù)加載模塊200,用于加載預設的劫持函數(shù)庫和動態(tài)庫;用于加載預設的劫持函數(shù)庫,且所述預設的劫持函數(shù)庫的絕對路徑保存在后臺入口文件中。函數(shù)識別模塊300,用于運行所述應用程序并識別所述應用程序中的操作函數(shù)。操作控制模塊400,用于根據(jù)所述操作函數(shù)和所述應用程序的標識查找所述劫持函數(shù)庫,所述劫持函數(shù)庫包括所述操作函數(shù)、所述應用程序的標識和劫持函數(shù)之間的對應關系,若查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則根據(jù)所述劫持函數(shù)的運行結果判斷是否調(diào)用所述動態(tài)庫中的操作函數(shù);還用于若未查找到與所述操作函數(shù)和所述應用程序的標識對應的劫持函數(shù),則調(diào)用所述動態(tài)庫中的操作函數(shù)。操作監(jiān)控模塊500,用于根據(jù)所述劫持函數(shù)的運行結果判斷調(diào)用動態(tài)庫中的操作函數(shù)時,判斷是否對所述操作函數(shù)進行監(jiān)控。本實施例所提供的linux函數(shù)劫持裝置,能夠在linux系統(tǒng)中利用劫持函數(shù)庫針對不同應用程序的操作函數(shù)進行管理,并進一步對需要調(diào)用動態(tài)庫的被劫持的操作函數(shù)進行監(jiān)控,提高linux系統(tǒng)對應用程序的操作函數(shù)管理的靈活度。圖7為又一個實施例中的linux函數(shù)劫持裝置的結構圖,如圖7所示的linux函數(shù)劫持裝置包括:操作信息獲取單元410,用于獲取所述操作函數(shù)中的操作信息;用于獲取所述操作函數(shù)中的操作信息,且所述操作函數(shù),包括文件操作函數(shù)和網(wǎng)絡訪問函數(shù)。操作控制單元420,用于根據(jù)所述操作信息,調(diào)用外部服務程序,并根據(jù)所述外部服務程序的運行結果判斷是否調(diào)用動態(tài)庫中的操作函數(shù)。本實施例所提供的linux函數(shù)劫持裝置,能夠在linux系統(tǒng)中利用劫持函數(shù)庫,調(diào)用外部服務程序,針對不同應用程序的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)進行控制,并進一步對需要調(diào)用動態(tài)庫的被劫持的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)進行監(jiān)控,所述外部服務程序為黑白名單性質管理或監(jiān)控程序,能夠提高linux系統(tǒng)中不同應用程序的文件操作函數(shù)和網(wǎng)絡訪問函數(shù)的管理的靈活度。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。當前第1頁12當前第1頁12