关于pyinstaller与Xbash系列分析(续)

  

<强>前言:
?继《Xbash部分样本分析》一篇博客之后,研究了关于pyinstaller与佩克字节码格式。虽然相关资料比较少,但是不影响去接触新的知识。
?不得不说pyinstaller是Xbash系列恶意软件跨平台执行的罪魁祸首,pyinstaller支持Linux、Windows、苹果macOS等多平台可执行文件转换。意味着病毒可以在多平台上兼容运行。虽然python开发维护病毒难度较小,周期短,对于分析人员来说也是件好事,比如把可执行文件提取成python源码。
?

           pyinstaller   佩克   恶意代码分析               环境搭建及使用   佩克格式解析(部分)   Python恶意代码>

<强大?> <强>一、Pyinstaller:
? ?介绍一下Pyinstaller,如前言所说Pyinstaller将会读取您编写得python脚本,它会自行分析,当然是根据导出得与执行所需要得模块与库。收集这些文件包括活动得解释器,把他们放在一个文件夹中。

  
  

?本节讨论PyInstaller的基本思想。这些想法适用于所有平台。选择和特殊情况下,在使用PyInstaller。
?PyInstaller读取一个Python脚本写的你。分析代码以发现其他模块和库脚本需要为了执行。然后收集所有这些文件的副本,包括活跃的Python解释器!——并将它们与您的脚本在一个文件夹,或选择在一个单一的可执行文件。

     

?上述参考源于pyinstaller手册:https://pyinstaller.readthedocs.io/en/stable/index.html
也就是说当使用pyinstaller得时候,会自动检索我们代码中所需要得库与模块与解释器,将他们打包到一起,根据不同得参数生成可执行得文件。当然我们并不是研究如何实现转换成pe格式与精灵格式得,因为这需要很漫长得过程。
? <强>但是我们需要了解,pyinstaller打包到一个文件夹后,如何执行得?首先pyinstaller会加载myscript.exe,这是核心文件,然后会引导加载程序得活动平台二进制可执行程序。会引导加载程序,加载python环境,方便python解释器在myscript中导入模块和库。
?<>强启动时候会在操作系统对应得文件夹创建一个临时得文件夹名称_MEIxxxxxx,引导加载程序与临时文件夹的上下文中的单文件夹包完全相同。当捆绑代码终止时,引导加载程序将删除临时文件夹,详细得参考请看官方文档。

  

?
<强> ?关于pyinstaller的一些参数,如下所示:
关于pyinstaller与Xbash系列分析(续)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图片一:pyinstaller参数

  
 <代码> 1,- f, onefile创建一个文件捆绑的可执行文件
  2 - w——视窗化,noconsole pe格式窗口程序GUI
  3 - c——控制台,nowindowed pe格式控制台程序
  4————ascii不包含unicode支持
  5 - d——onedir创建包含可执行文件的单文件夹包 
  

?
<强>如和安装pyinstaller呢?很简单,命令如下所示:

  
 <代码>系统Centos
  如果你没有安装皮普,参考如下:
  1、安装epel扩展:yum - y epel-release安装
  2、安装皮普:yum - y python-pip安装
  安装pyinstaller:
  pip安装pyinstaller
  Windows下参考也一样 
  

?
<强>如何使用pyinstaller ?分为以下几大步,如下所示:
?<强> 1,首先你需要编写一个py文件,当然你可以分成多个文件进行代码得编写,除了特殊模块需要告诉pyinstaller位置之外,其余会自定帮你分析模块与库,这里用测试代码如下:
关于pyinstaller与Xbash系列分析(续)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图片二:python测试代码
<强> 2,使用pyinstaller命令进行打包,如下所示:
关于pyinstaller与Xbash系列分析(续)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图片三:pyinstaller打包
<强> 3,查看生成得数据,如下所示:
关于pyinstaller与Xbash系列分析(续)
关于pyinstaller与Xbash系列分析(续)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图片四:dist/xxx
? <强>生成的精灵程序运行正常,而且pyinstaller维护了如上图所示得PYZ格式的数据文件,附加到了可执行文件的末尾,然后最前面是PYZ开头的格式。

关于pyinstaller与Xbash系列分析(续)