Sala: SALA 2 | Hora: 10:40 – 12:10
Descripción: Cualquier persona puede resolver una ecuación del tipo x+y siendo x=2 e y=3 ya que el resultado siempre es 5. En ensamblador, es inmediato ver dicha operación incluso si el compilador lo optimiza… Si fuera algo como (x⊕y) + 2*(x^y) dado que su complejidad sintáctica es diferente pero semánticamente son equivalentes… también da 5 como resultado… pero esto complica las reglas de detección…
¿Y si dijeramos que puede ser cambiado por 2*(~(x^y))+3*(~x&y)+3*(x&~y)-2*(~(x&y)) en código? Podéis comprobar su resultado que es siempre 5… O usad cualquier valor para x e y que os devolverá siempre x+y…
Esto nos permitirá evadir muchas reglas cambiando simplemente algo tan simple como que el octeto de una IP sea una suma, resta, multiplicación, divisón, etc… y usaremos constantes opacas, etc… para intentar hacer un FUD de un código sencillo como abrir una shell reversa.
MATERIAL PARA SEGUIR EL TALLER
L@s participantes al taller, tendrán que descargar los snippets del código empleado para el mismo (en el mismo taller y son 350 MB. por WiFi) siendo todo ello compatible para Windows/GNU Linux/Otros…
Deben tener un compilador para C/C++ y un interprete para Python 3 y la dependencia del Z3-Solver (pip3 install z3-solver)