錦州市廣廈電腦維修|上門維修電腦|上門做系統|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共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 久久亚洲AV成人出白浆无码国产| 亚洲午夜国产精品无码| 无码狠狠躁久久久久久久| 无码熟妇αⅴ人妻又粗又大| 色综合久久久无码中文字幕波多| 亚洲人成无码网站| 无码国产69精品久久久久孕妇| 久久久久亚洲AV无码专区首| 无码精品蜜桃一区二区三区WW| AV无码久久久久不卡蜜桃| 亚洲自偷自偷偷色无码中文 | 亚洲中文字幕无码爆乳AV| 精品无码久久久久久午夜| 中文无码制服丝袜人妻av| 无码人妻av一区二区三区蜜臀| 亚洲av无码久久忘忧草| 国产AV无码专区亚洲精品| 亚洲av无码乱码在线观看野外 | 精品久久久久久无码专区| 亚洲啪啪AV无码片| 惠民福利中文字幕人妻无码乱精品| 国产精品无码2021在线观看| 亚洲中文字幕无码一去台湾| 精品无码久久久久国产| 免费无遮挡无码永久视频| 久久久久亚洲av无码专区喷水| 无码日韩人妻精品久久蜜桃 | 精品一区二区三区无码免费视频| 中日精品无码一本二本三本| 亚洲综合最新无码专区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲精品无码久久久久AV麻豆| (无码视频)在线观看| 色视频综合无码一区二区三区| 精品久久久久久无码人妻| 亚洲国产精品无码久久青草| 人妻无码aⅴ不卡中文字幕| 国精品无码A区一区二区| 伊人久久精品无码av一区| 十八禁无码免费网站| 亚洲日韩一区二区一无码|