¿Cómo determinar qué hace una aplicación y si contiene malware?

¿Cómo podemos saber en iOS y OS X qué hace realmente una aplicación?

En OS X, siempre puede hacer lo siguiente: haga clic derecho en un .app y "mostrar paquete". Contents -> MacOSy haga doble clic en el archivo Unix ejecutable. La terminal se abre y de alguna manera te dice lo que hace la aplicación.

No sé si te has enterado, pero parece que alguien modificó el compilador de Xcode para agregar malware a las aplicaciones. Este compilador modificado es, como dicen los medios, ampliamente difundido en China, por lo que muchas aplicaciones se ven afectadas. Así también como dice el medio una empresa ha detectado unas 400 apps que parecen estar infectadas.

Mi pregunta ahora es, ¿cómo puedes saber qué hace una aplicación en iOS? Cómo determinar si contiene malware o algo más dañino.

¿Y hay otra forma de saber qué hacen las aplicaciones en OS X que no sea iniciar el archivo Unix ejecutable ubicado en el paquete de la aplicación?

Si la pregunta es; ¿Puedes detectar o bloquear si una aplicación está enviando tu información a un servicio/servidor/hacker inapropiado...? Puedes verificar todas tus conexiones salientes de Mac con obdev.at/products/littlesnitch/index.html
¿Qué quieres decir con 'Terminal se abre y de alguna manera te dice lo que hace la aplicación'? Cuando hago eso, solo obtengo un resultado aleatorio de la aplicación. No necesariamente lo que "hace" o propósito.
Al portar programas con wine a OS X, me dice qué .dlls faltan o, a veces, a qué marcos está accediendo.
Básicamente, ha preguntado cómo reemplazar toda la industria antivirus con varios clics del mouse. no puedes Y no, ejecutar un ejecutable en Terminal no te dice qué hace la aplicación.

Respuestas (3)

Respuesta corta: no puedes saber

Una respuesta un poco más larga: simplemente ejecutar y usar la aplicación no le mostrará lo que podría estar sucediendo detrás de escena. Para profundizar en eso, deberá ejecutar la aplicación en un entorno de depuración para analizar datos y procesar flujos, realizar un seguimiento de los subprocesos creados, monitorear cualquier comunicación de red iniciada por la aplicación, etc., etc. Como esto es bastante engorroso y requiere muchas habilidades y experiencia, por lo general todo se reduce a la confianza al final.

Entonces, ¿eso es algo que puedes hacer con una aplicación compilada? ¿Cargarlo en Xcode y rastrear entrada/salida? ¿Pensó que la depuración es solo para código no compilado?
Siempre está en código compilado, simplemente se sincroniza con la fuente para que el desarrollador entienda más fácilmente lo que está pasando.

Realmente no puedes determinar qué hace una aplicación sin tratar de averiguar qué hace su código de bytes. Desde una perspectiva de red, puede ver todo el tráfico que entra y sale de su máquina con algo como LittleSnitch.

No estoy seguro de comprobar si hay malware en otras aplicaciones, pero Apple ha enviado un correo electrónico con información sobre cómo comprobar si tu versión de Xcode contiene malware. Recomiendan que siempre lo descargues de la Mac App Store o de su sitio web para desarrolladores. Si debe instalarlo desde otro lugar (unidad USB), siga estos pasos.

Para verificar la identidad de su copia de Xcode, ejecute el siguiente comando en la Terminal en un sistema con Gatekeeper habilitado:

spctl --assess --verbose /Applications/Xcode.app

donde /Aplicaciones/ es el directorio donde está instalado Xcode. Esta herramienta realiza las mismas comprobaciones que utiliza Gatekeeper para validar las firmas de código de las aplicaciones. La herramienta puede tardar varios minutos en completar la evaluación de Xcode.

La herramienta debería devolver el siguiente resultado para una versión de Xcode descargada de Mac App Store:

/Applications/Xcode.app: accepted source=Mac App Store

y para una versión descargada del sitio web de desarrolladores de Apple, el resultado debería ser

/Applications/Xcode.app: accepted source=Apple

o

/Applications/Xcode.app: accepted source=Apple System

Cualquier resultado que no sea "aceptado" o cualquier fuente que no sea "Mac App Store", "Sistema Apple" o "Apple" indica que la firma de la aplicación no es válida para Xcode. Debe descargar una copia limpia de Xcode y volver a compilar sus aplicaciones antes de enviarlas para su revisión.

En iOS

El problema con Xcode Ghost es la comunicación con otro servidor. Por lo tanto, sería posible reconocer esta conexión si configura un proxy como el que se le pregunta en esta pregunta aquí y usa Wireshark para ver las conexiones. Para la conexión HTTP también Charles debería funcionar. También puede ver en Xcode en el Administrador de dispositivos el registro de consola, que es muy similar a la salida de terminal de la aplicación Mac. Pero los desarrolladores pueden ocultar información, no tienen que imprimir todos los procedimientos en la terminal/consola.

en OS X

Hay algunas formas más de detectar el tráfico TCP/IP, manualmente a través de WireShare o usar algunas aplicaciones como ( LitteSnitch , HandsOff , PrivateEye ). HandsOff es la única aplicación que también rastrea la lectura/escritura de archivos y muchas otras cosas.

Conclusión

Debe confiar en los desarrolladores y también esperar que usen el Xcode original de Apple. No tenemos suficientes herramientas (automatizadas) para realizar un seguimiento de cada función de una aplicación.

@ user3439894 ¿Hay alguna razón para escribir "desarrollador" con mayúscula?