从羊城杯docCrack学习恶意宏

news2024/9/20 20:31:31

前言

一道涉及恶意宏的逆向题目,不算难。

知识点

关于OLE文件

office文档(如.doc、.ppt、.xls等)其实都是复合文档(OLE),该文件格式全称为OLE复合文档格式,它允许多个数据流和存储在单个文件中,这些数据流和存储可以包含文本、图形、表格、音频、视频、嵌入对象等。包括宏代码信息也是存储在OLE中的。

doc、docx、docm都是word文档的文件格式,doc是普通的OLE文档,而docx和docm是OLE文件格式的同时,本质上都是一个zip压缩包。其中docx和docm的区别在于docx没有嵌入宏功能,这使得 .docx 文件更为安全,避免了宏病毒的威胁。而.docm 文件支持嵌入宏,允许在文档中包含 VBA(Visual Basic for Applications)脚本,用于自动化任务和增强文档功能。这就导致docm文件可能包含潜在的安全风险。此次的题目附件是正是一个docm文件。

恶意宏是使用宏语言编写的恶意程序,存在于字处理文档、电子数据表格、数据库、演示文档等数据文件中,可以在office系列办公软件中运行,利用宏的功能将自己复制到其他数据文件中。宏病毒感染的是数据文件。宏病毒与传统的病毒有很大的不同,它不感染可执行文件,而是潜伏在Microsoft Office文档中,一旦用户打开含有宏的文档,其中的宏就会被执行。宏是使用VBA编写的。

这里我们已经知道最基本的了,docm文件可能嵌入了恶意宏,那如何去分析它呢。

oledump工具

oledump 是一款用于分析 OLE 文件的工具,主要用于提取和分析 Microsoft Office 文档中的OLE结构。oledump 可以列出所有的宏数据流,并允许你查看、提取和分析这些宏代码。可以从GitHub上下载。

常用的一些命令:

  • 列出 OLE 文件中的数据流:
    oledump.py example.doc
    这将列出 OLE 文件 example.doc 中的所有数据流,每个数据流都有一个编号和名称。
  • 查看特定数据流的内容:
    oledump.py example.doc -s 8
    这里的 -s 8 是指定查看编号为 8 的数据流的内容。通常,宏代码会在类似 Macro 或 VBA 命名的数据流中。
  • 提取并保存数据流:
    oledump.py example.doc -s 8 -v > macro_code.vba
    这将提取编号为 8 的数据流,并将其内容保存到 macro_code.vba 文件中。

在使用oledump列出数据流时,如下:

在编号后会有大写的M即表示该数据流包含宏代码或与宏相关的内容。小写m同理,大小写的区别在于大写的是没有经过压缩的宏代码,小写则是经过压缩的,oledump在提取时会自动进行解压。

Microsoft Word也提供了对宏进行编辑的功能,但是就如同本题,你只能在文档内运行,而无法直接进行修改(会被要求输入密码)。

程序分析

文档打开:

弹窗和文字内容表明了该文档具有恶意宏。弹窗要求输入flag,错误接着尝试。

cmd中python oledump.py protected_secret.docm

继续 python oledump.py -s A3 -v protected_secret.docm >> sA3

直接将A3数据流的内容提取出来,用vscode打开(vscode代码好看点)

AutoOpen函数,当文档打开时执行。分析代码,弹出消息框要求用户输入flag,之后将flag异或7,得到一个新的字符串result。

中间是一大堆数据。

到函数底部,这里创建了一个临时文件temp1,并将该文件属性设为隐藏,之后将xpkdb的内容写进该文件,应该就是上面的数据。

接着CreateTextFile创建一个批处理文件 temp.bat。批处理文件就是用了Windows 自带的 certutil 工具来解码文件,生成了一个temp.exe文件并执行,传递的参数是flag异或7得到的字符串result。

之后执行批处理文件捕获输出,输出为good,即成功。

只要可以dump出temp.exe就算解出来了。因为原项目需要密码才能编辑宏,这里选择将AutoOpen函数的内容全部复制出来,随便打开一个word文档。创建一个宏。
视图->宏->查看宏

输入一个宏名,创建。将代码复制进去。

下一个断点(右键->切换)

有一点,需要删除一行代码batFile.WriteLine "del temp.exe",这里意思是执行完批处理文件最后会删除temp.exe。将其删掉就能在C:\Users\Sciurdae\AppData\Roaming\Microsoft\Templates中找到temp.exe了。

加密很简单,全部向右移六位。

解密脚本:

v9 = [
    4288, 4480, 5376, 4352, 5312, 4160, 7936, 5184, 6464, 6528, 5632, 3456, 7424, 5632, 6336, 6528, 6720, 6144, 6272, 7488, 6656, 7296, 7424, 2432, 2432, 2432, 5632, 4416,3456, 7168, 6528, 7488, 6272, 5632, 3520, 6208, 5632, 4736, 6528, 6400, 7488, 3520, 5632, 5184, 3456, 7488, 7296, 3200, 6272, 7424, 2432, 2432, 2432, 7808
]

flag = []
for i in v9:
    flag.append(chr((i>>6)^7))

print(''.join(flag))

在调试时,如果已经运行过,但再次调试却报错:

是因为目录下已经有一个同名文件了。解决方法只需要删除它,或者更改一下名称。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昂科烧录器支持ALLYSTAR华大北斗的GNSS芯片HD8020

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中ALLYSTAR华大北斗的GNSS芯片HD8020已经被昂科的通用烧录平台AP8000所支持。 HD8020是一款能够实现单芯片解决方案,满足位置感知、物流运输等导航定位需求的SOC芯片…

java Abstract Queued Synchronizer

AbstractQueuedSynchronizer(简称 AQS)是 Java 中用于实现锁和同步器的一个基础框架,位于 java.util.concurrent.locks 包中。它提供了一种基于 FIFO(先进先出)队列的机制,帮助构建多线程之间的同步工具&am…

谈一谈MVCC

一 MVCC的定义 MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于数据库管理系统(DBMS)中的并发控制方法,它允许数据库读写操作不加锁地并发执行,从而提高了数据库系统的并发性…

Redis主从和哨兵

目录 开启主从关系(两种) 数据同步原理 全量同步 增量同步 哨兵的作用和原理 服务状态监控 故障转移步骤 开启主从关系(两种) 修改配置文件(永久生效): 在redis.conf中添加一行配置&#…

从PDF到CAD:四大必备转换工具推荐!

无论是建筑设计师还是机械工程师,都面临着将旧图纸或扫描件转换成可编辑CAD文件的任务。这不仅是为了提高工作效率,更是为了适应数字化转型的大趋势。今天,我们就来探索几款高效且用户友好的解决方案! 福昕PDF转换大师&#xff0…

vue3 antdv3 TypeError: date1.isAfter is not a function的解决

1、先上个报错的图: 2、这个一看是因为date报错的问题,这里面用了TimeRangePicker. const TimeRangePicker TimePicker.TimeRangePicker; import dayjs, { Dayjs } from dayjs; let time1 [dayjs(dayjs(new Date()).format(YYYY-MM-DD) record.…

conda换源是什么?

换源对于我们在国内的python使用者来说是非常有必要的,之前讲了pip如何换源。 pip更换为国内镜像源的步骤,为什么要更换镜像源 那现在讲一下conda如何换源。 conda换源(清华源) 有时候,conda虽然和pip共用一个本地…

Stable Diffusion抠图插件爬坑经历,StableDiffusion实操案例(附整合资料)

今天给大家分享使用后期处理插件stable-diffusion-webui-rembg实现抠图功能。 👉AI绘画必备工具👈 温馨提示:篇幅有限,已打包文件夹,获取方式在:文末 👉AI绘画基础速成进阶使用教程&#x1f…

Synchronized、Reetrantlock

一、线程安全问题 多线程操作共享变量,由于该共享变量不是立刻可见的,读写不具备原子性,所以存在线程安全问题 二、售票案例 模拟售票案例,库存有10张票,有3个窗口(3个子线程)分别去卖,直到库存为0&#…

室内导航定位系统在医院的应用与部署

随着医疗技术的飞速发展,医院规模日益扩大,科室布局日趋复杂,患者及家属在寻找目标科室、病房或检查室时常常感到迷茫。为解决这一问题,室内导航定位系统应运而生,并逐渐成为现代医院智慧化建设的重要组成部分。接下来…

vue3 VueUse useElementVisibility 来监听某一个元素或者div是否在当前视口viewport中可见。

1、先上一个图&#xff1a; 2、安装vueuse/core pnpm add vueuse/core 3、新建一个组件&#xff1a; <script setup lang"ts"> import { ref, watch } from "vue"; import { useElementVisibility } from "vueuse/core";const target re…

AI短剧时代来临,用ai生成短剧的工具?AI文字生成短视频工具系统搭建开发,AI前景趋势怎么样?

前言&#xff1a; AI短剧是近期来随着人工智能技术的发展而兴起的一种新型影视内容形式。它利用AI技术&#xff0c;如AIGC&#xff08;生成式人工智能&#xff09;等&#xff0c;进行剧本创作、角色设计、场景构建、特效制作等&#xff0c;从而创作出全新的短剧作品。 一、AI…

Depop被封原因:IP禁令后如何重新创建账户?

Depop 是一个受欢迎的在线市场&#xff0c;帮助用户在全球范围内买卖服装、时尚物品和其他配饰。然而&#xff0c;与其他在线平台一样&#xff0c;Depop 有每个用户必须遵守的准则和规则&#xff0c;以确保市场安全公平。其中一条规则是&#xff0c;您不得拥有多个帐户&#xf…

免费分享:2020年全国道路网(分级)矢量数据

数据详情 全国道路网&#xff08;分级&#xff09;矢量数据 数据属性 数据名称&#xff1a;2020年全国道路网&#xff08;分级&#xff09;矢量数据 道路类型分类&#xff1a;高速、国道、省道、铁路、县道、乡道 道路级别&#xff1a;一级、二级、三级、四级 空间位置&am…

2024 年高教社杯全国大学生数学建模竞赛题目-B 题 生产过程中的决策问题

某企业生产某种畅销的电子产品&#xff0c;需要分别购买两种零配件&#xff08;零配件 1 和零配件 2&#xff09;&#xff0c; 在企业将两个零配件装配成成品。在装配的成品中&#xff0c;只要其中一个零配件不合格&#xff0c;则成品一 定不合格&#xff1b;如果两个零配件均合…

代码随想录 刷题记录-28 图论 (5)最短路径

一、dijkstra&#xff08;朴素版&#xff09;精讲 47. 参加科学大会 思路 本题就是求最短路&#xff0c;最短路是图论中的经典问题即&#xff1a;给出一个有向图&#xff0c;一个起点&#xff0c;一个终点&#xff0c;问起点到终点的最短路径。 接下来讲解最短路算法中的 d…

校园失物招领系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;发布人管理&#xff0c;物品类别管理&#xff0c;失物招领管理&#xff0c;寻物启事管理&#xff0c;认领认证管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页…

基于yolov8的西红柿缺陷检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿缺陷检测系统是一个利用深度学习技术的创新项目&#xff0c;旨在通过自动化和智能化的方式提高西红柿缺陷检测的准确性和效率。该系统利用YOLOv8目标检测算法&#xff0c;该算法以其高效性和准确性在目标检测领域表现出色。YOLOv8不仅继承了YO…

OpenSCAD 基础教程

OpenSCAD 基础教程 文章目录 OpenSCAD 基础教程1. 引言2. 安装与设置3. OpenSCAD 基本概念与语法3.1 基础形状3.2 变换操作3.4 布尔运算3.4 控制流3.5 特殊功能 4. 实践案例&#xff1a;创建一个简单的机械部件5. 高级技巧6. 导出与3D打印7. 常见问题与解决方案8. 结语 1. 引言…

langchain 《斗破苍穹》智谱 RAG 问题搜索

目录 代码 项目介绍 模型对比实验 分块方法对比 检索方法对比 结果 10条问题 15条问题 局限性 代码 https://github.com/5zjk5/prompt-engineering/tree/master 项目介绍 《斗破苍穹》小说 RAG 问答&#xff0c;爬虫爬取整部小说章节&#xff0c;并分别保存到不同的…