錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
如何編寫高質量的Windows Shellcode

作者: 佚名  日期:2017-05-13 13:13:56   來源: 本站整理

 
概述
當我們在編寫一個Shellcode Payload時,我們總是擁有無限的可能性,尤其是在Windows平臺上。但我們要知道的是,想要編寫高質量的Shellcode其實并非易事,因此我才決定要通過這篇文章跟大家聊一聊我對此的看法。就我個人而言,我比較喜歡用C語言(用Visual Studio編譯源碼)來完成我的工作。因為C語言的源代碼非常優美,而且編譯器可以最大程度地優化源碼,如果你需要的話,也可以通過LLVM實現你自己的代碼混淆器。
為了方便演示,我將以x86 Shellcode作為樣例進行講解。當然了,你想將其用于x64平臺也是可以的。
查找基本的DLL
介紹
當一個Shellcode Payload在Windows平臺中加載之后,第一步就是要定位我們所需要使用到的功能函數。首先,我們要搜索保存了系統功能函數的動態鏈接庫(DLL)。為了實現這個目標,我們將會使用到多種不同的結構體,請大家往下看。
線程環境塊(TEB)
TEB是Windows系統用于描述一個線程所使用到的一種結構。每一個線程都可以通過FS寄存器(x86平臺)以及GS寄存器(x86_64平臺)來訪問自己的TEB。TEB的結構如下:
0:000> dt ntdll!_TEB
    +0x000 NtTib            : _NT_TIB
    +0x01c EnvironmentPointer: Ptr32 Void
    +0x020ClientId         : _CLIENT_ID
    +0x028ActiveRpcHandle  : Ptr32 Void
    +0x02cThreadLocalStoragePointer : Ptr32 Void
    +0x030ProcessEnvironmentBlock : Ptr32 _PEB
    ...
+0xff0 EffectiveContainerId :_GUID
因此,如果你想要訪問進程環境塊(PEB)的話,你只需要使用下面這段代碼即可:
PEB* getPeb() {
    __asm {
        mov eax,fs:[0x30];
    }
}
進程環境塊(PEB)
如果TEB提供的是有關一個線程的信息,那么PEB提供的就是進程本身的信息了。而我們所需要的信息是那些基本的DLL所處的位置。實際上,當Windows在內存中加載一個進程時,至少會映射出兩個DLL:
1. ntdll.dll:它包含有可以進行系統調用(syscall)的功能函數。所有以Nt*為前綴的dll文件都可以調用相應的內核函數(以Zw*開頭)。
2. kernel32.dll:它是一個內核級文件,它可以調用高層的NTDLL函數。比如說,kernel32!CreateFileA可以調用ntdll!NtCreateFileW,而ntdll!NtCreateFileW又可以調用ntoskrnl!ZwCreateFileW。
Windows平臺下,其他的DLL可能已經在內存中加載了,但是為了方便講解,我們可以假設目前內存中只加載了上述兩個DLL。
接下來,讓我們一起看一看下面這個TEB結構:
0:000> dt nt!_PEB
    +0x000InheritedAddressSpace : UChar
    +0x001ReadImageFileExecOptions : UChar
    +0x002BeingDebugged    : UChar
    +0x003BitField         : UChar
    +0x003ImageUsesLargePages : Pos 0, 1 Bit
    +0x003IsProtectedProcess : Pos 1, 1 Bit
    +0x003IsImageDynamicallyRelocated : Pos 2, 1 Bit
    +0x003SkipPatchingUser32Forwarders : Pos 3, 1 Bit
    +0x003IsPackagedProcess : Pos 4, 1 Bit
    +0x003IsAppContainer   : Pos 5, 1 Bit
    +0x003IsProtectedProcessLight : Pos 6, 1 Bit
    +0x003IsLongPathAwareProcess : Pos 7, 1 Bit
    +0x004 Mutant           : Ptr32 Void
    +0x008ImageBaseAddress : Ptr32 Void
    +0x00c Ldr              : Ptr32 _PEB_LDR_DATA
    ...
+0x25c WaitOnAddressHashTable :[128] Ptr32 Void
你可以看到其中有一個PEB.BeingDebugged(第4行),這部分信息是IsDebuggerPresent()所要使用到的信息。但有趣的地方就在于上面的PEB.Ldr(第16行),它所對應的結構如下:
0:000> dt nt!_PEB_LDR_DATA
    +0x000 Length           : Uint4B
    +0x004Initialized      : UChar
    +0x008SsHandle         : Ptr32 Void
    +0x00cInLoadOrderModuleList : _LIST_ENTRY
    +0x014InMemoryOrderModuleList : _LIST_ENTRY
    +0x01cInInitializationOrderModuleList : _LIST_ENTRY
    +0x024EntryInProgress  : Ptr32 Void
    +0x028ShutdownInProgress : UChar
+0x02c ShutdownThreadId : Ptr32Void
我們可以看到,PEB.Ldr->In*OrderModuleList(第5、6、7行)都是鏈表結構(LIST_ENTRY),其中包含內存中所有已經加載的DLL。這三個鏈表指向的是相同的對象,但順序不同。我更愿意使用InLoadOrderModuleList,因為我可以直接把它當作指針(指向_LDR_DATA_TABLE_ENTRY)來使用。比如說,如果你想使用InMemoryOrderModuleList,那么_LDR_DATA_TABLE_ENTRY就直接位于_InMemoryOrderModuleList.Flink-0×10,因為InMemoryOrderModuleList.Flink指向的是下一個InMemoryOrderModuleList。



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 无码人妻AⅤ一区二区三区| 亚洲AV无码一区二区三区性色 | 无码人妻一区二区三区在线视频| 免费无码作爱视频| 亚洲AV无码乱码在线观看代蜜桃| 亚洲?V无码成人精品区日韩| 少妇精品无码一区二区三区| 无码国产激情在线观看| 色综合久久中文字幕无码| 久久久久无码专区亚洲av| 无码中文人妻在线一区| 无码国产精品一区二区免费vr| 国产福利电影一区二区三区久久老子无码午夜伦不 | 无码夜色一区二区三区| 亚洲国产精品无码av| 精品久久久久久无码人妻| 久久久久亚洲精品无码蜜桃| 精品少妇人妻av无码专区| 日本无码一区二区三区白峰美 | 国产v亚洲v天堂无码网站| 亚洲精品无码成人片在线观看| 亚洲精品无码少妇30P| 无码中文字幕乱在线观看| 国产aⅴ激情无码久久| yy111111少妇无码影院| 日韩AV无码精品一二三区| 免费无码又爽又刺激毛片| 亚洲欧洲无码一区二区三区| 麻豆国产精品无码视频| 99热门精品一区二区三区无码 | 国产精品无码素人福利免费| 一本色道久久综合无码人妻 | 无码人妻精品一区二区三区9厂| 97人妻无码一区二区精品免费| 久久久久久人妻无码| 久久精品国产亚洲AV无码偷窥| 日韩人妻无码一区二区三区久久 | 亚洲爆乳AAA无码专区| 亚洲日韩AV无码一区二区三区人| 99国产精品无码| 精品无码专区亚洲|