在此聲明:本博客僅供學習參考,任何產生相關違法犯罪行為與本人無關。
另外如果有師傅有好的思路和想法,可以和我一起溝通交流。
最近在一直嘗試做Powershell木馬的免殺,免殺的Payload一直是Coblatstrike生成的。
就想着自己嘗試使用Python編寫木馬,考慮到自己之前有網絡編程經驗,也懂一點多線程多進程。
所以考慮自己從零開始編寫基於Socket的木馬。
整體思路與實現功能初步如下,將分為5個篇幅來構建實現其功能。
其中有些問題譬如編碼解碼上傳的問題在每次博客后我會進行總結。
本次博客主要先講解如何將生成的Python代碼轉化為EXE程序,另外實現注冊表寫入功能。
轉化為EXE程序
Python中提供相關庫Pyinstaller,在Pycharm中直接下載,轉換至終端即可使用。
基本使用參數含義如下:
參數 | 含義 |
---|---|
-F | 產生單個可執行文件 |
-D | 產生一個目錄,作為可執行程序 |
-w | 程序運行時不產生命令行窗口 |
-i | 選擇生成EXE的圖標,不選擇則默認 |
例:產生隱藏執行Python命令的文件:
pyinstaller -F -w -i C:\\a.icon main.py
生成結果一般如上。
寫入注冊表開機自動執行
首先我們要知道注冊表的基本知識:
HEKY_CLASSES_ROOT:管理文件文件系統,根據在Windows中安裝的應用擴展名,該根鍵指明其文件類型,相應打開文件夾要調用的程序等信息。
HKEY_CURRENT_USR:管理系統當前的用戶信息,在這個根據鍵中保存了本地計算機中存放的當前登陸用戶的用戶信息,包括用戶登錄名與暫存密碼,在用戶登陸Win98的時候,其信息從HKEY_USERS象印的相中拷貝到HEY_CURRENT_USER中
HKEY_LOCAL_MACHINE:管理當前系統硬件配置,在這個根鍵中保存了計算機的硬件配置數據,此根鍵下的子關鍵字包括在SYSTEM.DAT中,用來提供所需信息【提權中用的比較多】
HKEY_USERS:管理系統的用戶信息,在這個根鍵中存放在本地計算機口令的用戶表示和密碼列表,且每個用戶的預配置信息都存儲在HKEY_USERS的根鍵中,HKEY_USERS是遠程計算機訪問中的根鍵之一
HKEY_CURRENT_CONFIG:管理當前用戶的系統配置,在這個根鍵中保存着定義當前用戶桌面配置等其他與用戶有關的信息。
其中與開機自動執行相關的注冊表位置在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
在編輯注冊表前我們需要了解其相關結構:
在添加應用程序至注冊表前,我們需要解決兩個問題:
1.寫入注冊表的位置
2.注冊表寫入后的名稱,類型,與文件所處位置。
在這里我將文件所處位置設為C:\System32\Temp臨時文件目錄下的程序, 因為將來會使用到自解壓格式自動設定。
因此這里的數據可以是C:\Windows\Temp\XMind.exe.寫入注冊表的位置已在上文提及不再贅述。
Python處理注冊表相關的庫為winreg.下面為具體使用方法:
import winreg #設置數據位置 strings=r'C:\Windows\Temp\XMind.exe' #設置注冊表寫入位置,其中0和Winreg.KEY_ALL_ACCESS為默認 key=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,winreg.KEY_ALL_ACCESS) #創建新注冊表值的名稱 newkey=winreg.CreateKey(key,"MicrosoftUpdate") #設置新的注冊表 winreg.SetValueEx(key,"MicrosoftUpdate",0,winreg.REG_SZ,strings) #寫入后關閉 winreg.CloseKey(key)
執行后結果如下
刪除注冊表寫入的數據,重新生成EXE后再次進行運行,發現已經成功執行進程表寫入。