Execute Shellcode Fiber Bypass Defender

3xploit
4 min readAug 25, 2022

--

FIBER

Cuando se ejecuta una aplicación, se le asigna un proceso en la memoria. Este proceso puede tener varios subprocesos. Los subprocesos permiten que la aplicación ejecute varias tareas al mismo tiempo. Los subprocesos están controlados por el programador del sistema operativo.

Una fibra es esencialmente un hilo liviano, la principal diferencia es que utiliza multitarea cooperativa, en lugar de preventiva. Una fibra continuará hasta que ceda, en lugar de estar controlada por el programador del sistema operativo. Las fibras son invisibles para el planificador de Kernel, ya que se implementan en modo de usuario en Kernel32.dll.

Syntax

Esto no es nada nuevo pero quiero compartiles una implementacion con mi toque especial la cual he diseñado con c# y powershell,nim para generar un bypass al windows defender sin mas vamos a la practica.

  1. Paso

debemos tener nuestra carga preparada en esta ocasion construi una simple shell reverse usando el lenguaje Nim

2. Paso

compilamos nuestra shell y procedemos a extraer su shellcode gracias a Donut

creditos Wolver

shellocode

despues de generar nuestra shellcode alojado en loader.bin crearemos un pequeño proyecto para realizar una conversion la cual nos ayudara a codificar el shellcode para no emberlo crudo

Pe To Bitconverter

3 Paso

Loader

crearemos un script en powershell para cargar y ejecutar nuestro shellcode

  • Importamos Kernel32.dll atravez de Pinvoke

para este caso haremos uso de

  • VirtualAlloc
  • CreateFiber
  • SwitchToFiber
  • ConvertThreadToFiber

ya tenesmos la estructura de las apis almacenadas en una variable ahora procedemos a cargarlas

creamos la variable $code para almacenar el resultado del converter (shellcode)

agregamos la funcion para retornar el string en matriz de Bytes

Creamos una variable de tipo Byte la cual almacenara nuestro shellcode descifrado

  • Asignamos memoria ejecutable
  • MEM_COMMIT 0x00001000
  • PAGE_EXECUTE_READWRITE (0x40)
  • - MEM_RESERVE (0x3000)
  • copiamos el shellcode a la memoria
  • Convertimos el hilo en una fibra

Las fibras solo se pueden crear a partir de otras fibras, por lo que nuestro hilo existente deberá convertirse en una fibra:

  • creamos una fibra

Una fibra, a diferencia de un subproceso, no comienza la ejecución hasta que se selecciona manualmente mediante la función SwitchToFiber. La fibra continuará funcionando hasta que salga o hasta que llame a SwitchToFiber para ejecutar una nueva fibra.

  • Ejecutar fibra

Tips

Codifique las importaciones del api

Conexion Remota Exitosa

proyecto

https://github.com/3xploit666/FiberShellcode

--

--

3xploit

Ethical Hacker | Pentester Cloud | Red Team | Offensive Developer | Adversary Simulation | Golang Developer