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后再次进行运行,发现已经成功执行进程表写入。