Durante un pentest, encontré un recurso compartido de red con muchos binarios (.exe) disponibles con derechos RW. El propósito de este recurso compartido es poner a disposición de los usuarios herramientas genéricas. Sin embargo, cualquier usuario autenticado puede editarlos y agregar una carga útil. Quiero proporcionar una demostración para mostrar la viabilidad de esto.
Básicamente, lo que he logrado hasta ahora se reduce a:
1: create a new section in the sections table,
2: add empty bytes at the end of the file, at address and size according to those in the new section definition,
3: put a shellcode at the first byte of the empty section added,
4: change EntryPoint to point to this first byte of the shellcode.
Cuando ejecuto esto, mi carga útil se inicia.
Ahora, me gustaría redirigir el flujo de ejecución al EntryPoint anterior, para ejecutar el programa real. He pensado que un simple jmp
al EntryPoint original sería suficiente. De hecho, mi shellcode se ejecuta, pero bloquea la ejecución del proceso (lo cual es totalmente normal).
He pensado en lanzar mi código de shell en un hilo separado. Necesito que esto llegue a la dirección de funciones como createThread. Realmente no tengo idea de cómo hacer esto.
Además, cuando salgo de mi sesión de meterpreter, el shellcode debería ejecutar la última instrucción jmp
para llegar a la sección .text
original. En su lugar, simplemente termina.
Mi conocimiento sobre ASM y Shellcodeprogramming es un poco bajo: / Realmente agradecería tener algunos consejos sobre el doc. Es posible que haya perdido la realización de esta demostración. Furtivity no será una preocupación ya que la computadora de demostración no tendrá ningún AV. Muchas gracias por ayudar!