Bienvenidos al nuevo foro de hackplayers. En caso de encontrarse cualquier tipo de error, contacte con cualquier administrador por mensaje privado.
Recuerda que, para incrementar tu privacidad, tambien puedes acceder al foro usando el dominio forohpysho2t5mjs.onion de la red tor.

Custom-bytecode-analyzer: análisis de JARs mediante reglas personalizadas

editado 18 de enero en Ingeniería inversa (cracking) Administrator Vote Up1Vote Down
Custom-bytecode-analyzer es una herramienta de línea de comandos que recibe un directorio y un archivo JSON como parámetros. Analiza los archivos JAR dentro del directorio (usando el framework ASM) y genera un report dependiendo de las reglas definidas. Un ejemplo del tipo de reglas que acepta sería:
{
    "rules": [{
        "name": "Method invocation by reflection",
        "invocations": [{
            "owner": "java.lang.reflect.Method",
            "method": {
                "name": "invoke"
            }
        }]
    }]
}

El report generado mostraría todas las llamadas de java.lang.reflect.Method. invoke(...) que haya en el directorio a analizar. 

La herramienta puede usarse para encontrar vulnerabilidades en proyectos Java sin importar si se dispone del código fuente (es básicamente para lo que la hice, pero al final decidí subirla a GitHub). Aun sigo desarrollándola para que soporte más reglas.

Espero que os parezca interesante, me encantaría saber vuestra opinión.

Tenéis más detalle en el 'readme' y el código en Github: https://github.com/fergarrui/custom-bytecode-analyzer

Contribución gracias a Fernando García

pd. ¿también has hecho tu propia herramienta y quieres compartirla? Ponemos a tu disposición nuestro repositorio Github y/o también podemos probarla y publicar una entrada. ¡Participa!
En grupo se divide el trabajo y se multiplican los resultados.

Comentarios

  • 4 Comentarios ordenados por Votos Fecha
  • Pinta muy interesante. 
    Mola.
  • Parece interesante. Lo que ando buscando es el clasico sistema de pre/post invoke para la inyeccion, pero si simplemente necesitas hacerte una idea de las llamadas esto es genial
    Ayyy Lmaoooo
  • Buenas, gracias por publicar mi tool! :)

    Aun sigo añadiendole cosillas, ahora he puesto que en el report te aparezca la clase que ha encontrado segun el JSON de busqueda decompilada, para ayudar a descartar o investigar algo de un vistazo rapido sin tener que cargar la libreria y decompilarla o buscar en grepcode. 

    Pabloko dijo:
    Parece interesante. Lo que ando buscando es el clasico sistema de pre/post invoke para la inyeccion, pero si simplemente necesitas hacerte una idea de las llamadas esto es genial
    Se podria hacer, si no existe nada ya, quizas podria hacer una POC, aunque ultimamente no tengo demasiado tiempo. Lo que dices se ejecutaria en runtime y modificaria los parametros de las llamadas a metodos que tu especificas, no?

    Saludos
  • editado 26 de enero Administrator Vote Up0Vote Down
    Si, lo ideal seria poder generar un archivo class y cargarlo con URLClassLoader y mediante reflection, inyectar los metodos pre/post ejecucion del metodo. Poder mediar en los argumentos y resultado seria una herramienta potentisima para trabajar con java. Alguna vez para android he usado el xposed framework y hace justamente eso en el dex de android, es super comodo y permite controlarlo todo.

    lo ideal es que sea un hook global y que se aplique sin mas configuracion que estar en un directorio referente a la clase por ejemplo:

    /var/javahook/System/out.java
    ...
    public void hook_pre_println(Method OriginalMethod, Object[] Arguments, Class Invoker) {
    String text = (String)Arguments[0];
    Object ret = Method.invoke(Invoker, new object[]{text + "was hooked" });
    }
    Generar /var/javahook/System/out.class y que se cargue en todo el entorno java. Como esto es para testear se me ocurre compilar por mi cuenta openjdk para añadir que cargue y intercambie los metodos

    Por cierto, pedazo de herramienta te has currao
    Ayyy Lmaoooo
Accede o Regístrate para comentar.