欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

剖析Geost:针对俄罗斯银行的安卓木马

来源:本站整理 作者:佚名 时间:2020-03-18 TAG: 我要投稿

清理后的RC4算法代码片段:

RC4密钥:

RC4是一种流密码,其内部状态随着每个解密的符号而变化。如果需要解密多个加密的字符串,通常必须要以与加密时相同的顺序来进行解密。幸运的是,我们所分析的样本并非如此。由于RC4加密算法始终复制状态数组S[],因此代码编写者简化了RC4算法,没有保留解密之间的内部状态。
RC4加密始终复制状态数组S[]:

之后,开始搜索通用代码库,找到了Android.support.v4库和ReflectASM Java Reflection库。
带有加密字符串的代码:

在解密以及符号去混淆后,包含字符串的代码:

至此,我们已经可以读懂第一阶段的代码:它使用反射代码隐藏了几个特定的类和方法。基本上,第一阶段使用相同的RC4算法和密钥解密第二阶段的文件。
反射方法调用示例:

前面提到的“.cache”文件被重命名为.localsinfotimestamp1494987116,并在解密后保存为ydxwlab.jar,从中加载并启动.dex文件。
解密并保存第二阶段:

代码作者在其中插入了一个错误的标志HttpURLConnection以及其URL,该URL似乎已经连接到命令和控制(C&C)服务器。但是,这个HTTP链接将永远不会执行。
错误标志:

第一阶段会从第二阶段的开始部分加载一个类,研究人员将其命名为“MaliciousClass”。
启动第二阶段:

第二阶段
通过查看classes.dex,我们可以看到在第二阶段中再次使用了混淆和加密的方法。但是这一次,符号名称部分被替换为长度为1-2个字符的字符串,而不再是之前使用的6-12个字符。此外,还修改了字符串加密算法,使之与上一阶段使用的算法不同。这里还使用了不同的工具。此外,针对每个类别,分别修改了解密算法的参数。
由于goto命令会跳入if块,因此所有Java反编译器在反编译解密算法时都会出现问题,只有Jeb反编译器可以很好地处理这一结构。
解密算法的Smali代码:

Java解密算法代码:

每个类的解密方法都包含不同的参数顺序和不同的常量,这使得编写Python解密脚本变得更加困难。这意味着,解密脚本必须从Smali代码中检测算法设置并进行自我调整,或者必须在解密每个类之前手动在脚本中设置参数。
加密字符串的示例:

字符串解密后,就可以检测到所使用的库,其中包括:
· AES加密引擎
· Base64编码
· 模拟环境检测器
· 文件下载服务
· IExtendedNetworkService
· USSD API库
· Zip4jUtil
初始化阶段
从第一阶段开始调用的MaliciousClass将作为实例化类的信封,研究人员将其命名为“Context”。
Context类:

Context类首先启动EmulatorDetector服务,随后启动AdminService和LPService这两个服务,然后启动主应用程序Intent。
主初始化例程:

模拟环境检测器
模拟环境检测器会检测恶意软件是否正在模拟环境中运行。该样本可以检测到Nox、Andy、Geny、Bluestacks和Qemu Android模拟器的存在。
追踪模拟环境:

上一页  [1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载