歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux操作系統下的高級隱藏技術詳解(3)

Linux操作系統下的高級隱藏技術詳解(3)

日期:2017/2/25 10:36:46   编辑:Linux教程

Linux操作系統下的高級隱藏技術詳解(3)

 2.技術分析

  2.1 隱藏文件

  Linux系統中用來查詢文件信息的系統調用是sys_getdents,這一點可以通過strace來觀察到,例如strace ls 將列出命令ls用到的系統調用,從中可以發現ls是通過sys_getedents來執行操作的。當查詢文件或者目錄的相關信息時,Linux系統用 sys_getedents來執行相應的查詢操作,並把得到的信息傳遞給用戶空間運行的程序,所以如果修改該系統調用,去掉結果中與某些特定文件的相關信息,那麼所有利用該系統調用的程序將看不見該文件,從而達到了隱藏的目的。首先介紹一下原來的系統調用,其原型為:

  int sys_getdents(unsigned int fd, struct dirent *dirp,unsigned int count)

  其中fd為指向目錄文件的文件描述符,該函數根據fd所指向的目錄文件讀取相應dirent結構,並放入dirp中,其中count為dirp中返回的數據量,正確時該函數返回值為填充到dirp的字節數。下圖是修改後的系統調用hacked_getdents執行流程。

  hacked_getdents函數實際上就是先調用原來的系統調用,然後從得到的dirent結構中去除與特定文件名相關的文件信息,從而應用程序從該系統調用返回後將看不到該文件的存在。

  應該注意的是,一些較新的版本中是通過sys_getdents64來查詢文件信息的,但其實現原理與sys_getdents基本相同,所以在這些版本中仍然可以用與上面類似的方法來修改該系統調用,隱藏文件。

Copyright © Linux教程網 All Rights Reserved