1. 程式人生 > 其它 >Python從零開始編寫控制程式(一)

Python從零開始編寫控制程式(一)

Python之從零開始編寫控制程式(一)

在此宣告:本部落格僅供學習參考,任何產生相關違法犯罪行為與本人無關。

另外如果有師傅有好的思路和想法,可以和我一起溝通交流。

最近在一直嘗試做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後再次進行執行,發現已經成功執行程序表寫入。