Una pieza de malware de Java probablemente puede realizar la mayoría, si no todas, de la funcionalidad que una pieza de malware de C puede realizar.
Sin embargo, hay algunas características del lenguaje Java que probablemente hacen que los autores de malware se inclinen hacia los gustos de C.
Java Virtual Machine Required
Un programa Java no se puede ejecutar en una computadora a menos que una Java Virtual Machine (JVM) esté instalada en esa computadora. Escribir su malware en Java lo limita automáticamente a cualquier objetivo que no ejecute una JVM.
Esto es diferente de C u otros idiomas que pueden compilarse en un ejecutable nativo que se ejecutará en el sistema de destino sin ningún software adicional.
Sin embargo, esto no descarta por completo a Java como un lenguaje de programación elegido para los que escriben malware, especialmente si planeaban propagarse a través de uno de los muchos Vulnerabilidades del entorno de ejecución de Java
Limitaciones de la máquina virtual Java
Este requisito de JVM también puede hacer que sea mucho más difícil que una aplicación Java maliciosa se oculte. Se basa en la JVM instalada del usuario; todo lo que deben hacer es eliminar eso y detendrán el malware en sus pistas.
La compatibilidad multiplataforma no es tan simple
A estas alturas, puedes estar pensando "Sí, pero ¿no vale la pena hacerlo para que tu malware funcione mágicamente en todas las plataformas?"
Si bien Java es compatible con varias plataformas (siempre que haya una JVM disponible), esto no significa necesariamente lo que crees que significa.
Por ejemplo, una característica común del malware es la capacidad para que se inicie cuando se inicie el sistema operativo. Java no proporciona un método multiplataforma startWhenComputerStarts
. Por lo tanto, esto aún debería implementarse por separado para cada plataforma.
Una gran cantidad de malware utilizará errores o funciones específicos de la plataforma para ocultarse, lanzarse en el inicio y en los datos de usuario de snarf. ¡Así que el autor todavía tendría que hacer este trabajo para cada plataforma!
Además, no olvidemos que el código C se puede compilar en múltiples plataformas diferentes. La ventaja de Java sobre C es que puede compilarse una vez y ejecutarse en cualquier lugar, pero el mismo código C aún puede ejecutarse en diferentes plataformas, solo con 1 paso adicional.
Si lo piensas bien, considerando que el malware a menudo es recogido a través de firmas, tendría más sentido para el autor escribir piezas individuales de malware para cada plataforma. Hacer que la detección sea menos probable.