DecoyMini 技术交流社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1300|回复: 0

[工具] 使用 SCLauncher 对 ShellCode 分析

[复制链接]

15

主题

2

回帖

2

荣誉

Rank: 1

UID
1625
积分
34
精华
0
沃币
3 枚
注册时间
2024-3-8
发表于 2024-6-28 17:52:49 | 显示全部楼层 |阅读模式
本帖最后由 zer0daysec 于 2024-6-28 17:52 编辑

在恶意软件分析、漏洞利用程序开发和逆向工程时,分析和调试 ShellCode 是个基本活。SCLauncher 是用 C 编写的工具,用来辅助分析 ShellCode,工具会将 ShellCode 转变成 PE 文件,目的在于方便调试及减轻分析压力,在本篇文章中,会介绍此工具的使用方法。

可在 https://github.com/jstrosch/sclauncher 处下载 SCLauncher,SCLauncher 也被整合进了 Flare-VM,也可以从这个视频学习:https://youtu.be/93EeH7GI3iE

一、寻找一些 ShellCode


开始时我们需要 ShellCode,有许多地方可获取 ShellCode,本文使用的 ShellCode 来自 Exploit-DB (https://www.exploit-db.com/exploits/49819),作用仅简单的打开计算器程序



Exploit-DB 提供了很多 ShellCode 示例,如果要使用上图给出的 ShellCode,需要将十六进制数组中的字节值转换为二进制值,CyberChef 能够完成此工作,将十六进制数组中的值应用 From Hex 操作转成二进制值



完成上述操作后可将输出保存为文件,这将与 SCLauncher 一起使用。

二、使用 SCLauncher


SCLauncher 非常容易上手,可通过  -h 参数来查看帮助信息



三、将 ShellCode 转成 PE 文件


转成 PE 文件本质上是将 ShellCode 放到 PE 文件中的 .text 部分中去,SCLauncher 还会调整该部分以及文件本身的任何必要大小。条目的地址要么定义为节的开头,要么定义为参数值定义的偏移量。最后,由于 shellcode 通常需要写入其所在的同一内存,因此 .text 部分的权限将是读取、写入和执行。

转成 PE 文件的目的是使用另一个程序来分析 ShellCode。例如使用 IDA Pro 免费版本、Ghidra 或调试器来处理 ShellCode,就像处理常规 PE 文件一样。这不仅可以帮助简化分析,还可以使用其它分析工具。

要转成 PE 文件,唯一需要的参数是 -pe 和 -f。 pe 参数告诉 SCLauncher 从位于通过 -f 参数提供的路径中的文件转成一个 PE 文件。-64 指定 64 位,而 -ep 将入口点调整为此值提供的字节数。



由于此演示的 ShellCode 是 64 位,因此将使用 -64 参数。这将创建一个名为 sc_output_x64.exe 的文件,现在可以分析甚至直接执行该文件,以下显示了使用 IDA Pro free 对其进行反汇编的结果。



四、使用 SCLauncher 进行调试


SCLauncher 的另一个主要功能可辅助调试,因此,还有更多选项可供选择。

参数作用
-bp在入口点位置插入软件断点 (0xCC)
-ep将入口点偏移调度 N 个字节
-pause在 ShellCode 执行之前暂停实用程序的执行 (以附加调试器)

-bp 将在 ShellCode 的入口点插入一个断点,通过实用程序执行此操作可以防止在连接调试器后设置断点,如果只想运行 ShellCode,则需要避免添加任何断点,因为这会导致中断,并且在没有附加调试器的情况下,程序将崩溃。

-ep 调整入口点,表示要调整入口点的字节数。这个调整是基于 ShellCode 的。如果将 -bp 与 -ep 结合使用,ShellCode 将进行调整以在入口点添加断点字节,从而将 shellcode 大小增加 1 个字节。

-pause 在执行 ShellCode 之前暂停 SCLauncher 的执行,这是一种常见模式,因为它允许附加调试器的时间。如果不使用此参数,则需要直接从调试器启动 SCLauncher,而不是从命令行和附加到进程的调试器启动。

五、附加到调试器


要从命令行使用 SCLauncher 并附加调试器,请使用 -pause 选项。如果入口点不是 ShellCode 的开头,也可以使用 -ep,-bp 将在指定处设置断点。请注意,SClauncher 有两个版本:32 位和 64 位。要调试 ShellCode,必须使用与 ShellCode 架构相匹配的版本,SCLauncher 的 64 位版本称为 SCLauncher64。



SClauncher 将提供要附加的进程 ID (PID),附加到调试器后,在调试器中恢复执行,然后返回到此窗口并按 Enter 键。



如果设置了断点,一旦 SCLauncher 的执行恢复,它将被调试器捕获。

六、直接通过调试器进行调试


直接通过调试器进行调试意味着 SCLauncher 和任何必要的参数必须在调试器本身中设置。



请注意,如果你使用 FLARE-VM,则需要指定 SCLauncher 的直接路径,而不是 shim。可能还需要提供 ShellCode 的完整路径。一旦定义了必要的参数,调试就可以开始。



七、结论


SCLauncher 是一个帮助你进行 ShellCode 分析的实用程序,可以在 Github (https://github.com/jstrosch/sclauncher) 以及 FLARE-VM (工具集成进去了) 中找到它。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 1荣誉 +2 金钱 +4 贡献 +1 收起 理由
吉沃运营专员 + 2 + 4 + 1 赞一个!

查看全部评分

Hi, guys, This is My Blog -> https://ma1waresearch.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|DecoyMini 技术交流社区 (吉沃科技) ( 京ICP备2021005070号 )

GMT+8, 2024-11-21 16:46 , Processed in 0.059847 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表