介绍
Anubis 是安卓恶意软件家族中最知名的恶意软件之一。鉴于它的能力和它过去对用户造成的损害,它现在仍然受到威胁参与者的欢迎。另一方面,它为许多恶意软件开发人员提供了品尝其创建新恶意软件的能力的机会。
有可能找到数以千计的不同的阿努比斯样品生产至今在平台,如*库杜斯和* *Abuse.ch。*基本上,我们可以说,阿努比斯由两个阶段组成。让我们来看看这些阶段,它们做什么。
Anubis的两个阶段
威胁行为者,如果他们计划通过合法的应用程序,如谷歌播放呈现Anubis,他们使用应用程序,我们将调用Dropper在这一点上。Dropper 的任务是从设备开始工作的那一刻起下载并在设备上安装真正的 Anubis 恶意软件。另一方面,在威胁行为者计划通过网站、虚假活动或假礼物传播 Anubis 的情况下,我们可以看到他们直接共享 Anubis 应用程序而无需使用 Dropper。
Droppers
看起来,Droppers试图通过模仿谷歌Play上其他流行的合法应用程序来误导他们的目标。
Droppers应用程序应吸引尽可能少的关注,并尽可能保持沉默,以逃避谷歌播放安全服务。因此,Droppers的能力非常有限。对于威胁参与者来说,以尽可能安全的方式在目标设备上安装 Anubis 已经足够了。那么,Dropper 应用程序如何在设备上安装 Anubis 呢?让我们一起看看这个。
REQUEST_INSTALL_PACKAGES
,日出时出现的第一个红灯,我们开始我们的故事时第一次迎接我们的英雄。
有了这个权限,Android 应用程序可以获得在设备上安装外部应用程序的能力。
因此,Anubis 恶意软件成功安装在设备上。正如我们上面提到的,Droppers模仿谷歌Play上的合法应用程序来隐藏自己并赢得信任。另一方面, 阿努比斯做几乎同样的事情与滴管。它利用目前的大流行进程和这一进程对社会的影响来隐藏自己和获得信任。目前,大流行支持*、COVID-19 支持*、2000 土耳其里拉支持*、大流行支持应用*和官方部委徽记等应用名称被广泛使用。




校验
| App Name | Her Aile’ye 2000 TL Pandemi Devlet Desteği |
| ------------ | ------------------------------------------------------------ |
| MD5 | 9e2ebf224ef23e5d01a88e6bd06d6ad0 |
| SHA-1 | defb1558ddc36fd10050f2cd65617dce7274dc01 |
| SHA-256 | a0eb4e0e7346422d18d3421d1f185fcb2b01ac3080ab3b3bc68d67aab1f4477d |
静态分析
当然,我们需要在静态分析部分查看的第一件事就是申请中请求的权限。AndroidManifest.xml

坦率地说,许多移动恶意软件正在放弃在这一点上,我们可以说,应用程序权限只是这个业务的基石之一。同样,Anubis 让我们有机会猜测它想要如此强大的权力可以做什么,但在我们文章的以下部分,我们将看到 Anubis 实际上是一个恶意软件,包含的比我们想象的要多。如果我们需要举一个例子,我们可以在请求的权限中作一些陈述。由于这种互惠的权限,机器人应用程序可以在设备启动时在后台运行,并确保其在设备上的连续性,在我们所看到的场景中,我们意识到此权限也列在 Anubis 请求列表中。RECEIVE_BOOT_COMPLETED
我们习惯在许多移动恶意软件中看到的功能之一是运行时级加载。当我们继续检查我们的文件时,可能会看到不在活动部分的类被列出。从现在开始,可以肯定的是,Anubis 将做一些事情来加载丢失的类,因为它开始。AndroidManifest.xml

有多种方法访问我们的类,稍后将加载,在我们的报告中,我们将参考类装载机功能挂钩和手动拆包方法。对于我们的静态分析,我们将通过挂钩功能到达稍后将加载的类,但在最后一节中,我们将通过手动拆包达到这些类。dalvik.system.DexClassLoader

yes!我们的 dex 文件,这是想要加载使用功能,就在这里,它包含的类是显示在我们上面提到的丢失的类。DexClassLoader``AndroidManifest.xml

事实上,当我们第一次打开hLc.json*文件时,我们意识到,为了混淆目的添加了几十个不必要的类,但eybisi 的 jadx 叉子允许我们轻松地消除此问题与隐藏的 Enum 类*功能。enum
当我们检查我们加载的 dex 文件及其中的类时,我们面临着在类中加密的许多字符串。parrot.ski.frog.a

字符串解密
查看我们的加密字符串,我们看到它们在被定义为任何变量之前都进入功能。当我们检查此函数和代码流时,我们面临着一个我们熟悉的过程。a(String str)
*RC4+BASE64*

借用我们的解密器功能,我们的加密字符串首先分为两个部分,这些部分的前 12 个字符用作解密键,其余的表达用作芯片文本。

我们的字符串(分为 2 部分)转换为适当的格式后,将发送到我们的*RC4*功能。
这里是我们的*RC4*实施功能

Anubis 使用这些在运行中看到的加密字符串,通过解密它们。现在来吧,让我们看看内容使用脚本,我写的解密所有的字符串在这里,当我们看输出,我们可以达到关于Anubis的能力更详细的信息,我们在这里的每一个解密字符串是非常重要的,但我标记了一些第一个引起我的注意。



当我检查我们解密的字符串时,我意识到其中一些字符串刚刚被定义,不再使用。首先,我认为字符串连接到的变量将是解密结果。但我找不到这种类型的任何功能,然后我遇到了字符串😃DexClassLoader

String str2 = this.a.du; // this.a.du = DexClassLoader
我们检查的样本加载了从 C&C 面板收到的模块,并在运行时间使用并运行它加载的类,我在字符串中遇到。里面有多个未使用的字符串,包括那些与应用程序的包名称*,如电报,Whatsapp,腾讯,尤伯克拉布,维伯,Snapchat,Instagram,推特*。action=getModule&data=``DexClassLoader``com.example.modulebot.mod

由于 C&C 面板不活跃,因此无法检查要在运行时间加载的模块,但在我们拥有的类中可以提及许多有害活动。按顺序提及它们;

Anubis 可以窃取具有辅助功能功能的 2FA 代码。getText()
此外,通过辅助功能特权,Anubis 还可以给自己任何它想要的许可。

在这里,我想指出一些有关功能的事情。由于辅助功能允许,Android 应用程序可以单击屏幕上显示的按钮。performAction(16)


应用程序开始工作后,它做了必要的准备,将设备的基本信息和关键信息,如统计银行*,统计卡*转换为Json格式。

在检查文件时,我们看到了诸如"在文件内容中"之类的权限,但阿努比斯似乎并不想满足于它们。据认为,Anubis,它希望成为设备的短信应用程序,在这一点上的目的是删除传入的消息,以免留下任何证据。AndroidManifest.xml``SEND_SMS``READ_SMS``RECEIVE_SMS

当 Anubis 首次运行时,它使用共享首选项重用其内容中的加密字符串。


如上所示,某些信息保存在*关键值数据*格式中,供以后使用。

Anubis 内容具有许多功能和无休止的循环,因此在不断加载的设备上会造成工作负载。由于此工作量的结果之一是高能耗,Anubis 的开发人员旨在通过许可来克服此问题。REQUEST_IGNORE_BATTERY_OPTIMIZATIONS



该应用程序可以在目标设备上显示具有辅助功能权限的多个惊人功能。例如,它可以关闭 Play Prottec 以避免被抓,并防止任何尝试从设备中删除自己,再次感谢辅助功能。

在我们上面看到的代码块中,它可以从函数和函数中执行 1 和 2 个常数的操作。好吧,如果你问这些1和2对应于什么操作,这里是答案:a()``performGlobalAction



此外,我们需要提到,Anubis的开发者关注重要的细节,如构建SDK版本,并分别实施了低SDK版本的逃生功能。


Anubis 使用此代码块来阻止用户的任何删除尝试,并将用户直接返回到主菜单,从他们😃的地方,它一定很烦人。
例如,让我们检查下面的代码块

ce = com. android. 自动售货: id
/ toolbar_item_play_protect_settings cd = com. android. 自动
售货: id / play_protect_settings cf = com. google. android. gms. 安全. 设置. 验证应用活动
凭借其可访问性,Anubis 可以推断出用户此时在屏幕上执行的内容,并在任何会损害其的情况下直接运行该功能。正如我们可以看到在我们的示例代码块,如果它检测到任何*cE / cD / cF*字符串常数,逃生功能将直接运行。a()``a()
动态分析
在我们的样本中,我们以*2000年TL大流行国家支持每个家庭*的名义,使用土耳其共和国卫生部的标志,发现了该申请。

随着 Anubis 在目标系统上运行,我们看到它首先希望从用户处获得*访问功能*。因为许多简单但有效的能力,恶意软件基本上拥有隐藏在这些权力背后。另一方面,我们在分析开始时看到,Anubis 还使用一种方法将其图标隐藏在应用启动器中,以便在设备开始运行时很难将其从设备中删除。




让我们给予所有权限,并检查Anubis发送到 C&C 的内容。由于我们的 C&C 面板在分析过程中不活跃,Anubis 无法收到 C&C 小组的任何响应。

我们讨论了静态分析初始阶段创建的JSON*文件。我在静态分析中注意到的另一个细节是,Anubis加密了JSON*文件,它准备发送到C&C面板使用Base64*和RC4。*但我认为在这里提到这部分会更准确。让我们看看 Anubis 用于此过程的代码块类型。

当我查看应用程序中使用*RC4*实现的位置时,我注意到它用于其他位置,而不仅仅是硬编码字符串。然后我开始研究这个结构。

您认为如此接近*JSON*数据😃是巧合吗?
正如我们可以看到的功能需要2个字符串(str,str2)。虽然用作加密密钥,但具有*JSON*格式的数据。str2``str

请求加密 RC4 密钥 = CRViysGgKzt6i

YAY !!!
手动拆包
在报告的开头,我们提到我们检查的样本在运行时间加载一个类。我们钩住功能,找到这个加载类。但我们也可以手动操作。通过这种方式,我们将发现在 Android 恶意软件世界中广泛使用的包装工是如何完成此工作的。首先,让我们看看我们的文件。DexClassLoader``AndroidManifest.xml

正如我们所看到的,所有活动,包括被叫到包下,但我们没有包在眼前。这怎么可能?MAIN``parrot``parrot
此包装机在 Android 恶意软件中广泛使用,通过在应用程序标签下使用类加载所有丢失的类。

虽然它似乎充满了类,我们没有,我们实际上有第一类运行和承担拆包任务。
pigeon.theme.earth.IUhUkAkGfQxFbEwMiUtWuIuBrReSmPjPqEiWkAcJiSq

函数上方的函数 2 是此常见包装机😃中使用的拆包函数attachBaseContext(Context context)
此外,在这个常见的包装工类型中,我在上面的图像中标记的变量包含要解密的文件的名称。PPpYrMnQwArZqXpLlNsNj




加密德克斯的名称 = hLc.json

解密以此包装机类型加载的类时,使用RC4。* 所以是时候找到RC4*键了。当我们带着功能去上课时,我们的目标是找到等待我们的RC4*实施。调用256%*是合理的,但它试图用一个在我们检查的样本中保留*256*的变量来隐藏此过程。liftnorth


循环启动前构建的整数阵列*包含我们的解密密键*。for





加载类的 RC4 键 = fCiUMm

GG !!!
结论
Anubis 是一个恶意软件,值得检查在各个方面,真的令人印象深刻,这个应用程序,伤害数以万计的机器人用户与成千上万的样本在世界各地,是一个来源,未来的机器人恶意软件。我希望你喜欢我的帖子, 谢谢你的阅读。如果你有任何问题, 请随时在推特上问我0x1c3n
引用