Conferencia NEGRO SOMBRERO. Cómo hacer un teléfono espía. Parte 2

Conferencia NEGRO SOMBRERO. Cómo hacer un teléfono espía. Parte 1

Lo siguiente que debemos modificar es el manifiesto. Esto es lo que dice qué servicios están involucrados en la aplicación, qué permisos tienen, etc.

Entonces, comenzaremos con el código en sí, y es con el código del directorio smali. Si observa el árbol de directorios de Angry Birds, verá muchas carpetas que contienen varios componentes, organizados en forma de subdirectorios.



Ni siquiera sé cuál de estas cosas realmente necesito y qué hacen, pero no la necesito. Ahora haré algo técnico de enorme complejidad: copie el directorio droidwhisperer desde aquí, desde el directorio SearchableDictionary, aquí, hasta el subdirectorio com / burstly / example / android del directorio smali. Eso es todo, espero que entiendas cuál es el punto.

Por lo tanto, se insertó una copia de nuestro código donde fue necesario, pero hay algunas cosas más que deben hacerse. Miro nuevamente mi lista de trucos y veo que ahora es necesario hacer cambios en el manifiesto. En primer lugar, cuando tomamos el manifiesto, necesitamos encontrar el nombre de la aplicación; lo resaltaré en rojo, luego lo necesitaremos porque insertamos algo en el código existente.

Por lo tanto, es necesario actualizar el manifiesto para incluir el servicio de espionaje incorporado y sus permisos en la aplicación. Consiste en los siguientes pasos:

- recordando el nombre de la aplicación original para más tarde,
- Definición del servicio Droidwhisperer
- Definición de permisos necesarios para ejecutar Droidwhisperer.



Entonces tomo este manifiesto y lo arrastro a un cuaderno. Lo primero que hago en la aplicación es definir nuestro servicio. Para hacer esto, encuentro la función onCreate en el manifiesto en la acción principal de la aplicación de destino. En el caso de Angry Birds, era com / rovio / ka3d / App. Después de eso, corté la parte del código resaltada en amarillo y la puse inmediatamente después de llamar a involk-super en onCreate.

Por lo tanto, declaramos en el manifiesto que tendremos el servicio Droidwhisperer, que debería comenzar inmediatamente después de que esté disponible. Es por eso que necesitábamos el nombre de la aplicación original com.rovio.ka3d.App, la usamos para ingresar el nuevo nombre de nuestra aplicación com.rovio.ka3d. servicio.Droidwhisperer.

A continuación, copio y pego los permisos para nuestra aplicación espía en el lugar apropiado del manifiesto: estas son las líneas resaltadas en verde.



Después de realizar los cambios, guardamos el manifiesto, que ya incluye los permisos que necesitamos y se define el servicio que debe comenzar cuando se inicia el teléfono, por lo que todo está bien.

Android necesita una cierta cosa que inicia aplicaciones, por lo que la aplicación Angry Birds debe contener un código que inicie mi servicio de espionaje tan pronto como se inicie el juego original. Ahora voy al directorio del juego y encuentro la carpeta ka3d allí, la abro y copio el archivo de la aplicación que contiene en el bloc de notas. Este es el código smali, que es una versión del código ensamblador para Dalvik. Usamos la función onCreate contenida en Android. Utilizo la búsqueda de cuaderno para encontrar la ubicación de esta función. Aquí necesita un poco de conocimiento sobre cómo funciona el sistema operativo Android; por ejemplo, la función onCreate se usa para llamar a superclases, es decir, para crear o reiniciar la actividad de la aplicación. Aquí es donde inserto mi código, que debería iniciar el lanzamiento de un servicio espía. Vuelvo a mi hoja de trucos, copio las líneas necesarias desde allí y la pego aquí.
¿Cómo supe qué código insertar aquí? Lo acabo de copiar de la aplicación original que escribí. Dije que hay una excelente documentación para smali, por lo que no necesita profundizar en todo para hacer esto.



Recientemente, se anunciaron algunos conjuntos de "conexión" que le permiten automatizar la recepción del código necesario. Hace solo unas semanas, se lanzaron estos kits de herramientas para desarrolladores de Android, lo que le permite crear cualquier servicio e implementarlo en una aplicación existente. Todo esto se puede hacer manualmente.

Entonces, tan pronto como se llama a la función onCreate, activa nuestro servicio. No olvide que después de esto necesita guardar el archivo modificado. Entonces, después de llevar a cabo la capacitación técnica adecuada, necesitamos armar nuestra aplicación modificada. Así que vuelvo a Apk_tool y recojo partes del directorio de Angry Birds en el directorio birds.apk. Entonces, reconstruimos la aplicación original, realizándole los cambios necesarios, y colocamos el nuevo ensamblaje en un archivo llamado birds.apk.

Si intenta instalar esta aplicación modificada en su teléfono Android en este momento, él le informará que esta aplicación no está firmada, por lo que debemos firmarla. Para hacer esto, creo un certificado digital autofirmado con la clave pública correspondiente y lo guardo en mi directorio de trabajo de inyección. Este es un archivo llamado claves.



Esto es solo un certificado que yo mismo creo. Ahora volveré y tomaré este comando poderoso y lacónico de mi cuna:

jarsigner -verbose -keystore keys birds.apk alias_name

Para no confundir nada, simplemente lo corté y lo puse en el lugar correcto. Así que voy a firmar el archivo birds.apk con mi propia clave, es bastante simple. Luego doy el comando y firmo todos los componentes de la aplicación con esta clave digital. Ahora puedo colocarlo en la AppStore, en Google Play, en cualquier lugar.

Como ya dije, el teléfono no tiene ninguna interfaz que muestre al usuario que firmó qué. Una vez que la aplicación está firmada, se puede instalar. Nadie puede saber quién firmó esta solicitud, y esto es simplemente genial.

Entonces, la versión modificada de Angry Birds se ve exactamente como el juego original y funciona de la misma manera, excepto que contiene mi código espía. Ahora puede ver en la pantalla las firmas digitales hechas por Kevin McNami de Kindsite.
Otra cosa interesante que te mostraré, regresando un poco. Observamos la aplicación original, está firmada por Rovio Mobile Ltd. Observe la fecha de la firma: este certificado digital es válido hasta el 26 de agosto de 2010, pero la aplicación se instala en el teléfono sin ninguna duda. Por lo tanto, incluso si su certificado digital se ha convertido en basura, todavía le da el derecho de instalar la aplicación, es decir, nadie la revisa. Creo que esta es una de las cosas que es uno de los defectos graves del modelo de seguridad de Android.

El hecho es que no hay una verificación estricta de los certificados digitales utilizados. Este problema puede resolverse exigiendo a quienes desean recibir un certificado digital que se registren. Entonces, volvamos a nuestra presentación. Quiero detenerme en las firmas digitales una vez más.



Todas las solicitudes deben estar firmadas. Cualquier firma anterior sigue siendo válida si es autofirmada. La firma solo se verifica al instalar la aplicación. Es decir, puedo cambiar cualquier archivo .apk ya instalado en el teléfono, y el sistema no reaccionará a esto de ninguna manera. Esta es una vulnerabilidad bastante significativa. Si desea cambiar el archivo .apk en su teléfono, debe tener acceso para cambiar los directorios en los que se almacenan dichos archivos, pero no será difícil obtener los derechos de root para hacer algo con el teléfono.

Lo segundo que me molesta es que no hay una interfaz de usuario que muestre quién firmó la aplicación. Por ejemplo, al instalar la aplicación, debe aparecer una inscripción que haya sido firmada por Kevin McNami de Kindsite. Observo que la firma debe coincidir con una aplicación existente movida o actualizada, por lo que no podría reemplazar la versión existente de Angry Birds si no hubiera cambiado el nombre de mi spyware. Pero tan pronto como hice esto, no surgieron problemas. Los desarrolladores de Android afirman que el certificado no necesita ser firmado por un centro autorizado, y las aplicaciones de Android utilizan principalmente firmas autofirmadas.

Antes de comenzar a responder las preguntas, quiero decir que hay toda una industria de software espía para teléfonos. Están diseñados para monitorear a sus seres queridos o sus hijos, o socios comerciales.



Anteriormente, se usaban para controlar a los cónyuges infieles, pero ahora su propósito ha cambiado. Por ejemplo, puede controlar a sus hijos para garantizar su seguridad, y esto es completamente legal. Pero creo que los teléfonos espías son más adecuados para su uso en el sistema BYOD. Puede darle al módulo espía cualquier funcionalidad e insertarlo en cualquier aplicación, y el usuario no sabrá nada al respecto. Esto es ideal para fines de espionaje industrial, por lo que estos dispositivos amplían el alcance de las amenazas de seguridad en curso.

Por lo tanto, este es un dispositivo de red completamente funcional, y si me conecto a Wi-Fi en el trabajo, puedo instalar un software en este teléfono que buscará vulnerabilidades en las redes. Al mismo tiempo, se actualizará si es necesario y enviará la información robada al sitio web de comando y control. Es decir, un teléfono móvil infectado es una plataforma extendida de amenazas de seguridad constantes con enormes capacidades de ataque. Por ejemplo, alguien simplemente entra al edificio con ese teléfono, escanea las redes y luego los ataca desde adentro. Por supuesto, las personas protegen su conexión a Internet a través de firewalls y firewalls similares, pero este dispositivo se conecta a redes directamente a través del aire, un teléfono espía se conecta a la red en cualquier lugar donde haya un punto de acceso, y ningún firewall ayudará aquí. De hecho, los teléfonos ingresan a la red a través de la puerta trasera. Un teléfono espía es bastante bueno, pero aquí tenemos un troyano de acceso remoto, y creo que es bastante peligroso.

Creo que dije todo de lo que quería hablar, y ahora estoy listo para responder cualquier pregunta.
Entonces, la primera pregunta es si esta aplicación en particular está tratando de ocultar su presencia. La respuesta es no, esto no es así, porque si observa los servicios que se ejecutan en el teléfono, lo verá allí. Creo que podría hacerse un proceso oculto, pero en este caso nuestro "teléfono espía" fue creado solo para demostrar el concepto de amenaza.

¿Puede nuestra aplicación ser detectada por un programa antivirus? No, el antivirus no cuenta este módulo espía, porque no sabe nada al respecto. Sería posible confundir aún más el código y luego insertarlo en la aplicación, y dicho proceso puede automatizarse.
¿Qué se puede oponer a una aplicación de software espía? Puede usar un antivirus que detecte aplicaciones maliciosas conocidas en cualquier caso, pero nos centramos en el tráfico enviado al sitio web de comando y control. Probablemente, sería posible automatizar el proceso de ofuscación de código, pero es muy difícil cambiar el protocolo de comunicación con el servidor de comando y control sobre la marcha, tendrá que cambiar el servidor en sí, cambiar los clientes y todo eso. Por lo tanto, recomendamos combinar ambos métodos de protección: antivirus contra aplicaciones maliciosas conocidas y monitorear el tráfico de red enviado por el dispositivo espía al sitio web de comando y control.



Contestaré la pregunta de qué significa el requisito de la coincidencia de las firmas digitales al mover o actualizar la aplicación. Si es la primera vez que instala la aplicación en su teléfono, no tendrá ningún problema. Pero si el teléfono ya tiene la aplicación original y desea reemplazarla con una nueva copia con una firma digital diferente, o una aplicación modificada con el mismo nombre, no tendrá éxito, porque el teléfono podrá comparar la firma original en la aplicación con su versión y nota modificadas que no coinciden En este caso, eludí la protección simplemente reemplazando el nombre de la aplicación original con un nombre diferente.

El servidor de comando y control puede interactuar con todas las funciones de Android y usar su API. Puede obtener acceso root de forma remota, cargar archivos en su teléfono y, en general, disponer de él a su discreción, ya que Android ofrece amplias oportunidades para el acceso abierto a su teléfono a través de la red. Creo que la misma funcionalidad también está disponible en la plataforma iOS, solo los desarrolladores de este sistema operativo se toman más en serio la verificación de la seguridad de las nuevas aplicaciones. Por ejemplo, debe obtener un certificado de ellos que certifique a su persona como desarrollador de aplicaciones, y la aplicación en sí se verificará antes de que llegue a su App Store, mientras que Google verificará la aplicación después de que se publique en Play Market.

No conozco los detalles de la tienda de aplicaciones Google Play, pero creo que si el desarrollador tiene una mala reputación o la aplicación se ve comprometida, no aparecerá en la tienda. Sin embargo, hay muchas otras tiendas de aplicaciones móviles en línea donde un atacante podría alojar una aplicación maliciosa. Este es un tipo de ataque de phishing cuando forzamos a un usuario a descargar esta aplicación desde cualquier lugar deslizando enlaces a ella.
El hecho es que todas las funciones en nuestra aplicación de spyware se ven como de costumbre, no hay nada ilegal que esta aplicación intente hacer. Cuando se instala, requiere que se le otorguen los mismos permisos que las aplicaciones legales. Otra cosa es cómo se utilizarán estas funciones más adelante. Por supuesto, si alguien informa que droidwhisperer es un virus, cualquier antivirus instalado en el teléfono no permitirá la instalación de una aplicación que lo contenga.

Como dije antes, el spyware se puede descargar de sitios de terceros. En este caso, el ataque de phishing es que le indicarán instrucciones detalladas de instalación y le ofrecerán descargar este juego de forma gratuita, ya que es un juego genial y no necesita pagarlo descargando el original en la tienda de Google. Por lo general, el usuario es seducido por tal oferta.

Observo que no nos propusimos penetrar en redes protegidas por cifrado, sino que simplemente nos conectamos a cualquier red disponible. Gracias por su atencion!



Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendándolo a sus amigos, un descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta enero de forma gratuita al pagar por un período de seis meses, puede ordenar aquí .

Dell R730xd 2 veces más barato? ¡Solo tenemos 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los Estados Unidos! Lea sobre Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/es434054/


All Articles