Como programar un troyano?

Iniciado por FMtH, Noviembre 16, 2016, 02:13:57 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 16, 2016, 02:13:57 AM Ultima modificación: Noviembre 16, 2016, 02:16:29 AM por FMtH
A la hora de programar un RAT como un troyano o una botnet (para windows), es impresindible usar el API de Windows? Es decir..
Si el WinAPI no existiera, no habria otra forma de acceder a los recursos del SO directamente?

Tambien creo haber escuchado que, actualmente al tirar mucho del WinAPI o al usar winsock, puede que nuestro malware sea mas detectado? Corrijanme porfavor.

Otra duda que tengo es, se puede crear el GUI de nuestro programa en el entorno de Visual Studio .NET(en C++) y usar las funciones de WinAPI para las demas cosas? como por ej. agregar al registro, crear threads, manipular procesos etc..
O si voy a usar WinAPI para lo dicho, tambien debo usarlo para crear mi GUI?

Y por ultimo y no molesto mas, que opinan de delphi para la programacion de RATs en la actualidad?


Gracias desde ya, saludos.

Noviembre 16, 2016, 11:20:12 AM #1 Ultima modificación: Noviembre 16, 2016, 11:22:07 AM por grep
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
A la hora de programar un RAT como un troyano o una botnet (para windows), es impresindible usar el API de Windows? Es decir..
Si el WinAPI no existiera, no habria otra forma de acceder a los recursos del SO directamente?

Si el WinAPI no existiera, no habria otra forma de acceder a los recursos del SO directamente.

También se accede a la WinAPI (de forma indirecta) cuando utilizas un intérprete, una librería, una máquina virtual u otro programa.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Tambien creo haber escuchado que, actualmente al tirar mucho del WinAPI o al usar winsock, puede que nuestro malware sea mas detectado? Corrijanme porfavor.

Los malwares suelen ser programados en C++ y en ASM. No solo por utilizar la WinAPI tu programa puede ser detectado porque, si fuera así, todo sería malware para un software de detección.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Otra duda que tengo es, se puede crear el GUI de nuestro programa en el entorno de Visual Studio .NET(en C++) y usar las funciones de WinAPI para las demas cosas? como por ej. agregar al registro, crear threads, manipular procesos etc..
O si voy a usar WinAPI para lo dicho, tambien debo usarlo para crear mi GUI?

Esto sirve para complementar la duda que tenías sobre los formularios en Visual Studio para C++
(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

* Para usar la WinAPI de forma directa necesitas utilizar código nativo (unmanaged code).
* Para crear ventanas con el Designer de Visual Studio necesitas usar el Framework .NET (managed code).

Para unir esos dos mundos se ha creado "C++/CLI", una especificación creada por Microsoft para permitir la interoperabilidad con el código nativo. "Native and .NET Interoperability" es en donde coexisten las estructuras unmanaged y managed en el mismo assembly (este assembly se conoce como un "Mixed assembly", un componente que puede llamar y ser llamado por otro componente .NET mientras mantiene la compatibilidad con componentes unmanaged). Como el resultado final es un assembly, entonces el programa generado depende del Framework .NET.
Native and .NET Interoperability: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Mixed (Native and Managed) Assemblies: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Antes de seguir, quiero aclarar que se puede crear un programa con varios módulos. Un módulo no es una DLL o dependencia, es una unidad que se puede combinar para generar un assembly (este assembly puede ser la aplicación o una librería).

Un módulo puede compilarse con la opción /clr para permitir que el mismo utilice las características del Framework .NET y mantener la compatibilidad con el resto de la aplicación.
/clr (Common Language Runtime Compilation): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Visual C++ soporta la generación de tres tipos de assemblies con la opción /clr:
* Mixed
* Pure
* Safe
Puedes ver la comparación en los siguientes enlaces:
Mixed, Pure, and Verifiable Feature Comparison (C++/CLI): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pure and Verifiable Code (C++/CLI): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Las funcionalidades de interoperabilidad necesarias para llamar código nativo desde unmanaged code las provee el CLR (la máquina virtual del Framework .NET) y se llaman "Platform Invocation Services" o PInvoke. Para el caso de Visual C++, se puede utilizar C++ Interop (Implicit PInvoke) o DllImport/DllExport Attribute (Explicit PInvoke).
Calling Native Functions from Managed Code: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Using C++ Interop (Implicit PInvoke): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Using Explicit PInvoke in C++ (DllImport Attribute): No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Finalmente quiero contarte que existen varias precauciones que debes tener en cuenta al desarrollar este tipo de soluciones y que la comunidad de desarrolladores de Visual C++ generalmente no utiliza C++/CLI.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
que opinan de delphi para la programacion de RATs en la actualidad?

Si Delphi te brinda todo lo necesario para crear el programa que quieres crear, entonces no hay problema.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos