菜鳥修煉開始

   2008年第1期 夜楓《內核方法實現進程保護》就已經介紹了ring3下修改SSDT表中的NativeAPI 技術,只不過實現的是進程保護,hook了不一樣的API函數而已,一樣也是修改SSDT表的操做。  冰刃(IceSword)軟件,是否能對抗hook ZwSetInformationFile? 嘗試PK,果然不出所料,在冰刃面前,Hook ZwSetInformationFile技術毫無做用。windows

 戰鬥一: ZwSetInformationFile 是什麼東西?服務器

            查DDK : ZwSetInformationFile  routine changes various kinds of information about a file object.函數

    FileBasicInformation:   Change the information that is supplied in a FILE_BASIC_INFORMATION struct.      工具

typedef struct FILE_BASIC_INFORMATION {
      LARGE_INTEGER  CreationTime;
      LARGE_INTEGER  LastAccessTime;
      LARGE_INTEGER  LastWriteTime;
      LARGE_INTEGER  ChangeTime;
      ULONG  FileAttributes;
} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
學習

  修改文件的這些屬性,說白了就是修改文件的MFT部分。在文件層作的,在底層的話,就是修改MFT扇區中的數據。優化

   還能夠修改好多,只有在用到的時候,再去查。操作系統

    ZwSetInformationFile  changees information about a file .If you set FileInformationClass to FileDispositionInformation,you can subsequently pass FileHandle to ZwClose but not to any other  ZwXXXFile routine.Beacuase FileDispositionInformation causes the file to be marked for deletion,it is a  programing error to attempt any subsequent operation  on the handle other than closing it ..net

    If you set FileInformationClass to FileEndOfFileInformation,and the EndOfFile member FILE_END_OF_FILE_INFORMATION specifies an offset beyond the current end-of-file mark, ZwSetInformationFile extends the file and pads extension with zeros.orm

        FileDispositionInformation:  sets the DeleteFile member of a FILE_DISPOSITION_INFORMATION to TRUE. so the File can be deleted when ZwClose is  called to release the last open handle to the file object. The caller must have opened the file with the delete flag set in the DesiredAccess paramter. server

       FileEndofFileInformation:  Change the current  end-of-file information,supplied in a FILE_END_OF_FILE_INFORMATION structure. The operation can either truncate or extend the file .The caller must have opened the file with the FILE_WRITE_DATA flag in the DesiredAccess parameter.

    DDK中的內容暫時告一段落。

    戰鬥二:初與冰刀(iceSword)

        IceSword 使用了大量新穎的內核技術,使得後門無所躲藏,使用者要有操做系統的知識。能夠產看木馬後門,這些系統級後門愈來愈強,通常均可以垂手可得的隱藏進程、端口、註冊表、文件信息,通常的工具根本沒法發現這些「幕後黑手」。

        下載了冰刃後,並一睹它的芳容:

 當打開進程的時候,能夠看到全部的進程,隱藏的進程都以紅色顯示出來。端口也相似。

 當用冰刃打開SSDT的時候,發現:

 

   8059946E正好是SSDT的基地址,對其反彙編和用冰刃看到的函數同樣。

  

  在冰刃中還發現了其它的win32 API: NtClose 、 NTCreateFile 、NTSetInformation 、NTWriteFile 、ZwSetInformationFile、等對應API。

   戰鬥三: 基地址反彙編後的函數爲:NtAcceptConnectPort. 這個例程到底什麼呢?

           function   is used in LPC communication by server  process for  establish connection with client. 進程間通訊(IPC)是在多任務操做系統或者聯網的計算機之間運行的程序和進程所用的通訊技術。有兩種類型的進程間通訊。本地過程調用(LPC)和遠程過程調用(RPC)。處於未知的緣由,微軟沒有公開LPC的接口。微軟爲機器間的客戶機服務器通信提供了一套RPC。 windows NT 優化了RPC,將其轉化爲LPC,只不過客戶機服務器全在同一臺機器上。

    服務器端調用NtCreatePort()函數建立一個端口。它返回一個端口句柄,服務器就使用此句柄調用NtListenPort()函數來等待和接受請求。任何客戶端均可以經過此端口發送鏈接請求,並獲得一個用於通信的端口句柄。先稍微的接觸一下,知道各個遇見的對手都是什麼樣的。未來用到的時候,再作深究。

       戰鬥四:inline Hook?

     

    

    勝敗乃兵家常事,大俠請從新來過! inline hook   就像我玩仙劍的時候,出現的菜鳥迎戰的第一個boss. 下一節,主要分析,真對inline hook 進行攻關,感受這種學習和玩遊戲同樣,說不定就打出什麼好的裝備,和經驗值。我就以這樣的心態來學習吧。請勿各位看我帖子的朋友們,不要嘲笑我。

相關文章
相關標籤/搜索