Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cabir_analysis — 舱室部分分析 | Kitploit
工具/GitHubGitHub/spiralbl0ck/cabir_analysis
嵌入式系统安全静态分析蓝牙安全逆向工程恶意软件分析移动安全二进制分析学习与教育实验室与实践
GitHubspiralbl0ck/cabir_analysis

cabir_analysis

舱室部分分析

11173年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

description: Bluetooth-Worm:SymbOS/Cabir Analysis

Bluetooth-Worm:SymbOS/Cabir Analysis

在你开始阅读之前,我必须先声明:请对你读到的一切持保留态度,因为我绝不是 SymbianOS 开发者,也完全不熟悉 SymbianOS 环境。

但为什么还要分析这么老的东西呢?因为这是进入远程攻击领域最简单的途径,如今这类事情动辄价值百万美元的 nday/0day 🤑🤑🤑。而且我还缺乏做那种攻击的专业能力。

好了,既然这些废话都说完了,我们开始吧。Cabir 是什么鬼?它是一个运行在 Symbian 手机上的蓝牙蠕虫。对于那些想知道 Symbian 手机是什么鬼的人来说,基本上它就是一款运行 ARM 处理器的手机,没什么新鲜的 :) 更简洁的信息(https://en.wikipedia.org/wiki/S60_(software_platform))

我们很幸运,这个恶意软件的源代码在网上可以找到(感谢 vxug)(SymbianOS.Cabir.7z)。我们会把它作为参考,但说实话,去它的。我做这件事的另一个原因是我想要研究 ARM。所以我们会从源码/汇编/模拟器/调试/嗅探的角度来看待它。

好了,第一个问题:我们到底怎么编译这个源代码?

其实这并不复杂……

首先安装 carbide ++(http://www.mediafire.com/file/6z54qrceef73x9s/Carbide_cpp_v2_7_en.exe/file)(来自 https://gist.github.com/artem78/cb2b9650af186844f7b5654964676284)

接下来安装任意 Perl 引擎

接着安装 Nokia PC Suite(https://www.usitility.com/nokia-pc-suite/)

安装 SDK(http://www.mediafire.com/file/9uc7fjb2ynmxlud/s60v3.1_SDK.zip/file )

安装 C/C++ 插件(https://ia800905.us.archive.org/7/items/nokia_sdks_n_dev_tools/s60_open_c_cpp_plug_in_v1_7_en.zip)

然后瞧,环境就准备好了 :)

附注:最好使用 Windows 7,因为在 Windows 10 上很多东西会坏掉,无法正常工作。

真实环境感染

TBD

关于这部分,你需要知道的是,你必须越狱(是的,你没听错,越狱)你的手机。这是怎么做到的呢?

逆向工程分析

好了,那到底怎么编译这些东西呢?问得好。我做的第一件事是运行 caribe\group 文件夹里的 ABLT.BAT,如下所示

接下来,我们要进入 SDK 的安装目录,找到 platform 文件夹(我这里是 S60_3rd_fp1),然后找到 epoc32 文件夹,进入 buid 文件夹,选择 user 文件夹,再进入用户文件夹,然后还有两三个目录,最终你会看到一个类似这样的文件夹

这就是当前路径,应该和你所在的位置大致相似(C:\Symbian\9.2\S60_3rd_FP1\Epoc32\BUILD\Users\pwn\Desktop\CabirSourceCodes\caribe\group)

接下来,我们需要进入 caribe 文件夹(或者你给源代码起的名字),你会找到一个包含不同名称的文件夹,如下所示

这是什么意思呢?基本上,当我们第一次运行 ablt.bat(直到今天我都不太清楚它的作用,不过无所谓)时,我们会得到不同的平台选项,用来构建我们的 pkg 文件,之后我们会生成 sis 文件。在当前这个例子里,我们看到 GCCE 和 WINSCW。如果你默认运行 ablt.bat build 命令,它会为 WINSCW(这是模拟器平台的代号)构建。为了学习如何编译源代码,我们目前使用 GCCE,但如果你选择其他平台,比如 arm 平台以便上传到手机,过程也是一样的。所以基本上就是 ablt build arm_whatever,然后重复这里提到的步骤直到这一步。好了,现在我们进入 GCCE 文件夹

进入 urel 文件夹,里面应该有一个名为 caribe.app 的文件。在那里打开命令行并运行

这是干什么的呢?基本上我们运行了 makesis,它会生成一个 sis 文件,这样我们就能把它安装到手机上。为什么我们要从 caribe 源代码生成 sis 文件呢?因为我们需要指定 caribe.pkg 给 makesis。那为什么还要费那么多周折进入 build 之类的文件夹呢?因为你需要把它指定给 -d 参数,它才能生成 .sis 文件。

好了,这个方法只适用于这篇文章中提到的 SDK v3。显然,在我实验过程中,一位来自 Symbian 专门 Discord 服务器的开发者指出,Cabir 是为 SDK v2 编写的,所以我在这里介绍的内容将毫无用处……这有待解决,等我能联系上他再说……他最近在 Discord 上都不怎么上线……

那么如何逆向一个 .sis 文件呢?

简单来说,.sis 文件其实是一个压缩包。所以……我们用 siscontents 工具来解压,然后把 .app 文件丢进 IDA。

汇编视角

整个过程看起来是这样的

现在进入那个文件夹,接下来两步我们就能得到 app.app 文件。

好了,如果你把它丢进 IDA。

好吧,基本上就是一个 ARM exe。太酷了!下一个!嗯,好的,请继续~~~

文件里有符号,是的!好吧,因为出于某种奇怪的原因,我们用调试符号编译了二进制文件,所以我们运气好!

而且由于我们基本上有源代码,所以逆向工程的过程与源代码分析章节中描述的差不多 :)

嗅探视角

不幸的是,我无法完成这部分,因为我原本计划使用 Fts4bt,我觉得它很不错(https://www.diva-portal.org/smash/get/diva2:24278/FULLTEXT01.pdf)

但似乎这个产品已经停止维护(EOL)。如果你碰巧能完成这部分,请私信我并提交 pull request 来完成这一章。

调试器视角

那么这一部分呢!>>~> 好吧,我的看法是:虽然通过 USB 连接调试器,直接在诺基亚手机上调试代码,对你(读者)和我来说都是很有价值的经验,但目前我要投入的时间和精力太多了(我已经很累了……抱歉,也许下次吧)。另一个原因是这没什么用,因为我们有源代码和一个专门的 Symbian IDE。所以接下来我们要做的是:使用 Carbide++ 的调试器简单调试一两个函数。读者完全可以自己完成,因为代码流程已经在源代码分析章节中解释过了,而且也没有加密或任何反分析手段来增加分析难度。那么……开始吧!

说实话

源代码分析

好了,让我们利用可以访问源代码这一点,把它用到极致。

我们的目录结构如下,组织得相当不错

让我们检查一下 src 文件夹

我们的旅程从 src 文件夹开始,确切地说是 caribe.cpp。但为什么呢?因为尽管组织得不错,有一个很显眼的地方就是存在 caribe.cpp 这个文件。它有什么特别之处吗?没有,但我凭经验猜测,29A(开发这个恶意软件的团队)采用了软件开发者常见的做法:应用的主要逻辑放在 项目名.扩展名 的文件里。好了,那它看起来像什么样呢?就像这样,年轻人。

酷,但这是什么?说实话我也不知道,但让我们猜一猜。仅凭名字,我猜 CApaApplication 是这个应用的主类。如果我们在谷歌上搜索,我们会看到:

好了,接下来呢?让我们继续深挖。我们去看看 CCaribeApplication。但等等,CCaribeApplication 在哪里?在 CaribeApplication.h 里。那又在哪里?在 inc 文件夹里,兄弟,看起来是这样的

好了,它长这样

酷,所以我们看到一个类继承了另一个类,还有一个名为 CreateDocumentL 的 protected 方法。挺酷,但没什么有趣的。好吧,这是我的错,老兄!!

这是什么错误啊!你还自称恶意软件分析师呢 =))) 冷静点,老兄!不过话说回来,我们说这个项目的作者可能表现得像一个普通软件开发者,所以自然而然地,我们应该检查 src 文件夹里的 caribeapplication.cpp。好了,开始吧 :)

好吧,一堆我们看不懂的单词,一堆莫名其妙的东西。让我们来梳理一下……

首先,我们来讨论那个常量(0x10005B91)。它有什么用?它的类型是 TUid,定义如下

好吧,基本上就是一个 ID。但为什么呢?说实话我也不知道,但当你构建一个应用时,你会得到一个 UUID。有趣的是,如果你在网上搜索,你会发现它总是被定义为一个所谓 .sis 应用的一部分,我们稍后会探讨。所以基本上这就是 SymbianOS 应用的经典头文件定义。好了,下一个。我们看到了我们感兴趣的函数:CreateDocumentL。

下载工具