Bypass avs with c#

3xploit
3 min readAug 26, 2020

hola hoy solo quiero compartir una idea de omitir avs en el momento que escribi este post usando c# para ejecutar binarios de .net en memoria

primero creamos un entrypoint para cargar nuestro binario de net, en base64 haciendo un reverse al string y un simple remplazo de caracteres, convirtiendo la cadena especificada desde el metodo base64string, posteriormente agregamos un metodo de sleep para Suspender el subproceso actual durante el período de tiempo especificado. despues de nuestro sleep usamos system.reflection para recuperar informacion de nuestro assembly en este caso nuestro payload, generando nuestro metodo invoke para ejecutar el subproceso delegado.. esto estara listo para compilar en un .exe y ejecutar, pero quise adicionar un metodo diferente compilando nuestro codigo en biblioteca de clases

entrypoint
classlibrary

siguiendo con nuestra nota despues de tener la dll lista haremos una conversion a bas64 como se muestra en la imagen

dll base64

ahora que tenemos la dll en base64 pasaremos a codificarla en xor

dll convert xor + password

ahora finalmente necesitamos un launcher que entregue nuestra carga existen muchas posibilidades de lograr esto, en este caso segui usando c# para entregar la carga de manera reflectiva sin tocar disco, alojando la dll en un webserver

launcher

para comprender de manera rapida esta imagen usaremos la clase webclient para recibir los datos de nuesta dll codificada lo cual ayuda en la evasion de los EDR basados en la red y haciendo una falsificacion de los encabezados representando un navegador normal, despues pasamos a crear la instancia y el metodo para invocar nuestro payload en memoria sin tocar el disco .. espero que les haya gustado

scan online results

poc https://github.com/3xploit666/Reflection-DLL.git

https://youtu.be/Y-KRkBtsZOc

--

--

3xploit

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