Hola amigos, un dia estaba programando en ASM (aun estoy empezando), y se me ocurrio la idea de programar un downloader y dejarlo FUD, pero ahi surgio la pregunta ¿como lo ago?
Entonces pense: "¡Puedo llamar a las API's de forma dinamica!". Como saben las unicas API's que se necesitan son 2: LoadLibrary y GetProcAddress asi que escribi esto:
pero me di cuenta que cuando un AV analize el archivo, se dara cuenta de las cadenas ASCII y si encuentra un patrón de funciones sospechosas pues es mas que seguro que lo detectara como una amenaza.
Fue ahi donde pense que si dejo la variable llena de caracteres al azar y compilo el programa, al abrirlo con un editor hexadecimal puedo ver la cadena que yo escribi, asi que puedo modificarla a placer y al ser ejecutada la variable tomara el valor que yo le asigne con el editor hexadecimal.
bueno a esto me refiero:
Supuestamente el exe no debe de hacer nada, ya que no hay nada que importar, pero al compilar y editar el archivo con un editor hexadecimal se muestra como el exe funciona.
Funciono!
Ahora, si esto lo modificamos un poco y le agregamos unos XOR podriamos modificar y agregar cadenas encriptadas. bueno eso es solo mi punto de vista.
Tambien cabe la posibilidad de insertar codigo (cifrado) en una variable, desencriptarlo y ejecutarlo.
si a alguien le parece y quiere implementar algo, cuanta con toda mi ayuda.
PD: Muy pronto lanzare un [MASM][SRC] Downloader
Entonces pense: "¡Puedo llamar a las API's de forma dinamica!". Como saben las unicas API's que se necesitan son 2: LoadLibrary y GetProcAddress asi que escribi esto:
Código [Seleccionar]
.386 ; create 32 bit code
.model flat, stdcall
;;;;; Importar Kernel32 y sus funciones
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
USER32 db "User32",0
Message db "MessageBoxA",0
.code
start:
PUSH offset USER32
CALL LoadLibrary
PUSH offset Message
PUSH EAX
CALL GetProcAddress
PUSH 0
PUSH offset USER32 ;Titulo del mensaje
PUSH offset USER32 ;Texto del mensaje
PUSH 0
CALL EAX
end start
pero me di cuenta que cuando un AV analize el archivo, se dara cuenta de las cadenas ASCII y si encuentra un patrón de funciones sospechosas pues es mas que seguro que lo detectara como una amenaza.
Fue ahi donde pense que si dejo la variable llena de caracteres al azar y compilo el programa, al abrirlo con un editor hexadecimal puedo ver la cadena que yo escribi, asi que puedo modificarla a placer y al ser ejecutada la variable tomara el valor que yo le asigne con el editor hexadecimal.
bueno a esto me refiero:
Código [Seleccionar]
.386 ; create 32 bit code
.model flat, stdcall
;;;;; Importar Kernel32 y sus funciones
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
USER32 db "666666",0
Message db "11111111111",0
.code
start:
PUSH offset USER32
CALL LoadLibrary
PUSH offset Message
PUSH EAX
CALL GetProcAddress
PUSH 0
PUSH offset USER32 ;Titulo del mensaje
PUSH offset USER32 ;Texto del mensaje
PUSH 0
CALL EAX
end start
Supuestamente el exe no debe de hacer nada, ya que no hay nada que importar, pero al compilar y editar el archivo con un editor hexadecimal se muestra como el exe funciona.
Funciono!
Ahora, si esto lo modificamos un poco y le agregamos unos XOR podriamos modificar y agregar cadenas encriptadas. bueno eso es solo mi punto de vista.
Tambien cabe la posibilidad de insertar codigo (cifrado) en una variable, desencriptarlo y ejecutarlo.
si a alguien le parece y quiere implementar algo, cuanta con toda mi ayuda.
PD: Muy pronto lanzare un [MASM][SRC] Downloader