您当前的位置:首页 > 知乎文章

关于Python病毒样本的分析方法(一)

时间:2022-02-28 10:47:08  知乎原文链接  作者:网盾网络安全培训

前言

近年来,Python语言凭借其入门简单、功能强大和开发效率高等特性逐渐成为最受欢迎的开发语言,与此同时,Python在安全领域的应用也渐趋广泛,开始被用在黑客和渗透测试的各个领域。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

微步在线在威胁监控过程中,多次发现病毒木马或直接使用Python来编写,或使用Python打包的方式进行投递:如在2020年1月的一起针对阿-拉-伯地区的APT攻击事件中,攻击者通过投递携带CVE-2017-0199漏洞的docx文件,释放并运行了Python打包的后门程序;又如2019年11月份,Gaza(中东背景APT组织)也被发现使用了Python封装其木马组件。由此可见,Python在网络攻击事件中的出现日趋频繁,这也为安全分析人员带来新的挑战。

经过分析发现,Python打包的病毒木马主要存在以下3种形式:

1. 以py脚本的形式存在,此种方式最为常见,但也最容易阅读和分析。2. 将pyc文件结构打包到各种可执行文件中,如PyInstaller工具等。3. 通过Cython转换成C语言代码,再编译成可执行文件。其中,以第1种方式最为简单也最为常见,而第2种、第3种方法具有一定分析难度。本文针对第二种方式进行介绍,将介绍常见的Python打包工具的安装和使用方法,同时对典型的Python打包木马病毒进行分析,并讲述相关逆向分析技巧。

常见Python打包工具

1. PyInstaller

简介

PyInstaller 是一个用来将 Python 程序打包成一个独立可执行软件包,支持 Windows、Linux 和 macOS X。该工具是现在非常成熟的一款工具,具有良好的兼容性,支持的Python版本可达到Python3.7。

使用方式

PyInstaller的使用方式非常简单:(1) pip install pyinstaller指令就可进行安装。

(2) pyinstaller.exe -F yourcode.py指令就可进行简单打包。

分析方法

PyInstaller打包的文件分析起来也十分简单,有现成的工具脚本——pyinstxtractor.py可以使用。pyinstxtractor.py的下载地址如下:sourceforge.net/project。用法也很简单,指令pyinstxtractor.py+可执行文件,就可以进行解包。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

2. py2exe

简介

Py2exe这个工具只能在Windows平台使用,Py2exe是一个开源项目,github的地址:github.com/py2exe/py2ex。Py2exe执行Python2和Python3。

使用方式

(1) 下载地址,如下:

  • sourceforge.net/project下载。

(2) 使用方法,如下:

  • python set.py py2exe指令可编译成exe文件

    效果如下图:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

分析方法

(1) 在py2exe打包后的结果文件中,exe和python.dll都是必要组件。有时python.dll可能会被内嵌在exe中。

(2) 可执行文件运行时必然会调用附带的python.dll。

(3) 对python.dll的导出函数PyMarshal_ReadObjectFromString进行hook或者下断点。

(4) 通过PyMarshal_ReadObjectFromString函数可以获取到打包进exe的pyc数据。该函数有两个参数,参数一是pyc数据的起始地址,参数二为数据的长度。

注意:在py2exe中获取的pyc数据内包含多个模块,一定要将多个模块进行拆分再反编译,否则会出错的。

3. bbFreeze

简介

BBFreeze由BrainBot Technologies AG开发。

GitHub的地址:github.com/schmir/bbfre

使用方式

(1) 下载地址,如下:可以通过pip或easy_install直接下载。(2) 使用方法,如下:指令:bbFreeze+py脚本

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

输出结果如图:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

分析方法

BBFreeze和其他工具有所差别,它是通过PyRun_StringFlags函数进行。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

BBFreeze会通过zip模块把随身携带的library.zip进行解压,再通过python的exec来进行执行。其中的library.zip可能会嵌在可执行文件当中。library.zip解压后如图:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

4. cx_Freeze

简介

cx_Freeze也是一种用于将Python脚本打包成可执行文件的一种工具,使用起来和py2exe差不多。GitHub的地址:github.com/marcelotduar

使用方式

(1) 下载地址,如下:

sourceforge.net/project

也可使用pip进行下载。

(2) 使用方法,如下:

指令:cxfreeze+py脚本。

输出文件如同:

class="ztext-empty-paragraph">

分析方法

cx_Freeze打包的文件分析起来更为简单。cx_Freeze会将pyc文件直接以资源的形式放在资源段中。我们可以直接使用压缩工具进行打开:

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门