elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Desarrollo de malware en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Desarrollo de malware en C  (Leído 8,798 veces)
dyn4m0_st4rk

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Desarrollo de malware en C
« en: 14 Julio 2010, 03:52 am »

Buenas a todos los foreros.

La cuestión esque aprendí a manejar C estructurado, leí tutoriales y tras un buen rato de ocio por fin aprendí.
Veo que muchos lo recomiendan como base en cuanto al desarrollo de malware, lamentablemente no le encuentro aplicación alguna para malware.
Me la pase haciendo calculadores, agendas, repeticiones de numeros nones y pares, etc. etc.

¿Qué tiene que ver con un malware?, ahora veo que con batch es facilisimo hacer un bucle de procesos.. entonces todo lo que aprendí en C sirvio para nada?.
¿Hay algun tutorial de C enfocado al malware?, no encontre ninguno en los demas foros. ¿Alguna recomendación?.. Me sigo con el batch y abandono el C?

Aquí les paso una de mis ultimas practicas en C.


Código:
#include<stdlib.h>//libreria para comunicarme con el sistema
#include<conio.h>//libreria para pausar el sistemea
#include<stdio.h>// libreria estandar de entradas y salidas

//variables globales
char nombreContacto[5][50];
char direccionContacto[5][50];
char telefonoCasa[5][15];
char telefonoCelular [5] [15];
int  edad[5];

void modificarContacto(){
int numeroContactoModificar=0;

   printf("\nQue contacto deseas modificar?" );
   scanf("%d",&numeroContactoModificar);
   if ((numeroContactoModificar>5)||(numeroContactoModificar<=0)){
   printf ("\n no existe ese contacto");}
   else {
   printf("Introduce el nombre del #%d contacto: ", (numeroContactoModificar));
 fflush(stdin);
 gets(nombreContacto[numeroContactoModificar-1]);
 printf("Introduce la direccion del #%d contacto: ", (numeroContactoModificar));
 fflush(stdin);
 gets(direccionContacto[numeroContactoModificar-1]);
 printf("Introduce el telefono del #%d contacto: ", (numeroContactoModificar));
 fflush(stdin);
 gets(telefonoCasa[numeroContactoModificar-1]);
 printf("Introduce el celular del #%d contacto: ", (numeroContactoModificar));
 fflush(stdin);
 gets(telefonoCelular[numeroContactoModificar-1]);
 printf("Introduce la edad del #%d contacto: ", (numeroContactoModificar));
 scanf(" %d",&edad[numeroContactoModificar-1]);
}
}

void verTodos() {
     for (int indice=0; indice<=4; indice++) {
         printf("\n\nNombre: ");
         puts (nombreContacto[indice]);
          fflush(stdin);
         printf("Telefono: ");
         puts(telefonoCasa[indice]);
          fflush(stdin);
         printf("Celular: ");
         puts(telefonoCelular[indice]);
          fflush(stdin);
         printf("Edad: ");
         printf(" %d", edad[indice]);
         }
         }
void verContacto() {
     int numeroContacto=0;
     printf ("\nIntroduce el numero del contacto que deseas ver:  ");
     scanf (" %d",&numeroContacto);
     if ((numeroContacto>5)||(numeroContacto<=0)){
   printf ("\n no existe ese contacto");}
   else {
       printf("\nNombre: ");
         puts (nombreContacto[numeroContacto-1]);
          fflush(stdin);
         printf("Telefono: ");
         puts(telefonoCasa[numeroContacto-1]);
          fflush(stdin);
         printf("Celular: ");
         puts(telefonoCelular[numeroContacto-1]);
          fflush(stdin);
         printf("Edad: ");
         printf(" %d", edad[numeroContacto-1]);
                  }   
                  }
   void guardarAgenda () {
                     
   FILE *miArchivoTexto;//CREO UNA VARIABLE QUE DIRECCIONA A UN TIPO ARCHIVO
   miArchivoTexto = fopen ("Agenda.txt","w");
    for (int indice=0; indice<=4; indice++) {
         fprintf(miArchivoTexto, " \nNombre:%s", &nombreContacto[indice]);
         fprintf(miArchivoTexto, " Telefono:%s", &telefonoCasa[indice]);
         fprintf(miArchivoTexto, " Celular:%s", &telefonoCelular[indice]);
         fprintf(miArchivoTexto, " Edad:%d", edad[indice]);
         }
      fclose (miArchivoTexto);
}
                           
main(){
 system("title AGENDA ");
 system("color A");
   
  char opcion;
 char final;
 
 printf("\t\t\tBIENVENIDO A TU AGENDA\n");
printf("\t\t\t======================\n");
 for(int indice=0; indice<=4;indice++){
 printf("\nIntroduce el nombre del #%d contacto: ", (indice+1));
 fflush(stdin);
 gets(nombreContacto[indice]);
 printf("Introduce la direccion del #%d contacto: ", (indice+1));
 fflush(stdin);
 gets(direccionContacto[indice]);
 printf("Introduce el telefono del #%d contacto: ", (indice+1));
 fflush(stdin);
 gets(telefonoCasa[indice]);
 printf("Introduce el numero celular del #%d contacto: ", (indice+1));
 fflush(stdin);
 gets(telefonoCelular[indice]);
 printf("Introduce la edad del #%d contacto: ", (indice+1));
 scanf(" %d",&edad[indice]);
 }
system ("cls");
do{
printf ("Que operacion deseas realizar?\na)Modificar un contacto\nb)Ver todos los contactos\nc)Ver un solo contacto\nd)Guardar agenta en memoria \n");
scanf (" %s",&opcion);
switch (opcion) {
case 'a': case'A':
modificarContacto();
break;
case'b':case'B':
verTodos();
break;
case'c': case'C':
verContacto();
break;
case'd': case'D':
guardarAgenda();
break;
default:
printf ("\nOpcion invalida... ");
}
printf ("\nDeseas realizar otra operacion?s/n ");
scanf (" %s",&final);
system ("cls");
}while ((final=='s')||(final=='S'));
printf ("\nGracias por utilizar este programa =) ");
getch();
}

Es frustrante solo saber hacer este tipo de programas, y ni si quiera algo cercano a un virus.... :-(

Gracias de antemano.


Saludos
En línea

"El que busca la verdad corre el riesgo de encontrarla".
[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Desarrollo de malware en C
« Respuesta #1 en: 14 Julio 2010, 11:27 am »

Bueno, para hacer malware debes aprender a manejar archivos, memoria, sockets, registro, procesos, etc... Ya sea con las funciones de C o con las API's de Windows (ésto es lo más recomendable). No tienes más que buscar códigos por la red, seguro de ahí ya puedes arrancar.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Desarrollo de malware en C
« Respuesta #2 en: 14 Julio 2010, 12:45 pm »

Estoy de acuerdo con [Zero]. En esta Web encuentras todas las funciones de la API de Windows bien explicadas y, muchísima más información acerca de lo que te dijo.

Otra cosa, dices que ya sabes más o menos moverte bien en este lenguaje. Veo "errores" tontos como utilizar gets(), fflush(stdin), scanf(), la librería conio... puedes pasarte por acá, donde te solucionarán fácilmente estos errores.

Saludos :P
« Última modificación: 18 Septiembre 2010, 02:39 am por Horricreu » En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Desarrollo de malware en C
« Respuesta #3 en: 14 Julio 2010, 17:03 pm »

Para malware especialmente debe de conocer el sistema operativo, si lo conoces agregando la API de Windows e imaginacion ya serias muy bueno en malware.
En línea

dyn4m0_st4rk

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: Desarrollo de malware en C
« Respuesta #4 en: 14 Julio 2010, 22:07 pm »

Gracias a todos por sus respuestas.

Perdonen mi graaan ignorancia, reitero que soy un novato total en esto.

Estoy de acuerdo con [Zero]. En esta Web encuentras todas las API's bien explicadas y, muchísima más información acerca de lo que te dijo.

Otra cosa, dices que ya sabes más o menos moverte bien en este lenguaje. Veo "errores" tontos como utilizar gets(), fflush(stdin), scanf(), la librería conio, ... puedes pasarte por acá, donde te solucionarán fácilmente estos errores.

Saludos :P
Entre a la primera pagina que me diste, pero ¿En que apartado estan las API?, busque y solo encuentro tutoriales (para vb) que son para llamar APIS.


y otra preguntaa ¿Dónde puedo encontrar los commandos de C para manejar archivos y librerias?... los tutoriales no salen del scanf y del pintf...

Muchas gracias, aprecio sus respuestas  ;-)
En línea

"El que busca la verdad corre el riesgo de encontrarla".
Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Desarrollo de malware en C
« Respuesta #5 en: 14 Julio 2010, 22:30 pm »

Gracias a todos por sus respuestas.

Perdonen mi graaan ignorancia, reitero que soy un novato total en esto.

Estoy de acuerdo con [Zero]. En esta Web encuentras todas las API's bien explicadas y, muchísima más información acerca de lo que te dijo.

Otra cosa, dices que ya sabes más o menos moverte bien en este lenguaje. Veo "errores" tontos como utilizar gets(), fflush(stdin), scanf(), la librería conio, ... puedes pasarte por acá, donde te solucionarán fácilmente estos errores.

Saludos :P
Entre a la primera pagina que me diste, pero ¿En que apartado estan las API?, busque y solo encuentro tutoriales (para vb) que son para llamar APIS.


y otra preguntaa ¿Dónde puedo encontrar los commandos de C para manejar archivos y librerias?... los tutoriales no salen del scanf y del pintf...

Muchas gracias, aprecio sus respuestas  ;-)

Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salía la lista de funciones de la API ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las funciones. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas funciones relacionadas con ficheros.

Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la función que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las funciones explicadas sino por la cantidad de información explicada.

Saludos :P
« Última modificación: 1 Septiembre 2010, 19:50 pm por Horricreu » En línea

dyn4m0_st4rk

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: Desarrollo de malware en C
« Respuesta #6 en: 14 Julio 2010, 22:41 pm »

Citar
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.

Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.


Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas :-( lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee.



Gracias
En línea

"El que busca la verdad corre el riesgo de encontrarla".
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: Desarrollo de malware en C
« Respuesta #7 en: 14 Julio 2010, 22:45 pm »

Citar
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.

Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.


Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas :-( lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee.



Gracias
Si aprendes el 10% de batch y de C, te será mucho más útil batch. En cambio, si aprendes el 80% por ciento de ambos , batch te parecerá un juguete. Por supuesto los porcentajes son inventados pero supongo que se entiende.
En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Desarrollo de malware en C
« Respuesta #8 en: 15 Julio 2010, 13:04 pm »

Citar
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.

Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.



Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas :-( lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee.



Gracias

Bueno, supongo que crees que Batch es más fácil para "programar" malware, pero te lo piensas porque es muy sencillo y, al principio puedes hacer cosas muy simples y rápidas. Créeme, cuando sepas manejar todo esto en C/C++ ya veremos...

A ver, no es que no entiendas nada de estas cosas. Te dije que te miraras algunos códigos de malware programados en C/C++, donde manejan funciones de la API de Windows. A partir de ahí vas buscando información sobre ellas. Por ejemplo, te dejo un código que ofusca un simple fichero:

Código
  1. #include <windows.h>
  2.  
  3. int main()
  4. {
  5.        HANDLE hHeap = GetProcessHeap();
  6.  
  7. //Abrimos la ruta del archivo
  8. LPSTR lpFileName = "C:\\prueba.txt";
  9. HANDLE hFile = CreateFile(lpFileName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
  10.  
  11. //Leemos el archivo
  12. DWORD nNumberOfBytesToRead = GetFileSize(hFile, 0);
  13. LPSTR lpBuffer = (LPSTR)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, nNumberOfBytesToRead);
  14. DWORD nNumberOfBytesRead = 0;
  15. ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &nNumberOfBytesRead, 0);
  16.  
  17. //Ofuscamos el buffer
  18. for(DWORD n = 0; n < nNumberOfBytesToRead; n++) lpBuffer[n] ^= 100;
  19.  
  20. //Empezamos a guardar desde el principio del archivo
  21. SetFilePointer(hFile, FILE_BEGIN, 0, 0);
  22.  
  23. //Sobreescribimos los carácteres ofuscados
  24. WriteFile(hFile, lpBuffer, nNumberOfBytesToRead, &lpNumberOfBytesRead, 0);
  25.  
  26. //Liberamos la memoria dinámica
  27. HeapFree(hHeap, 0, lpBuffer);
  28.  
  29. //Cerramos los handles
  30. CloseHandle(hFile);
  31.        CloseHandle(hHeap);
  32.  
  33. return 0;
  34. }

Crea un fichero que se llame prueba en el directorio C:\ y, luego escribe algo, guárdalo y ciérralo. Seguidamente ejecuta este programa y notarás una ligera diferencia.

Te he puesto este código, comentado, porque estoy manejando las funciones que seguramente vas a utilizar más. Espero que lo vayas cogiendo.

Saludos :P
« Última modificación: 1 Septiembre 2010, 19:39 pm por Horricreu » En línea

dyn4m0_st4rk

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: Desarrollo de malware en C
« Respuesta #9 en: 15 Julio 2010, 22:11 pm »

Citar
Bueno, es que hace poco cambiaron el diseño y la estructuración de la MSDN y, antes salían las API's ordenadas alfabéticamente. Ahora tienes que ir acá. Dentro de esta página hay muchas otras páginas ordenadas y, vas encontrando las API's. Por ejemplo, la información de ReadFile está en: System Services/File Services/Local File Systems/File Management/File Management Reference/File Management Functions y, dentro de ahí hay muchas API's relacionadas con ficheros.

Pero yo no lo haría de esta forma ya que es muy molesto encontrarlas. Lee muchos códigos y, luegos en Google pones la API que quieras consultar y, ya te saldrá la información de la MSDN. Pero, antes de he pasado el enlace de la MSDN no sólo por las API's sino por la cantidad de información explicada.



Ya entre a la web, muchisimas gracias, de igual manera sigo sin entender nada de esas cosas :-( lo veo muuy complicado.. y en vista de esto.. realmente me recomiendan mas el C para malware que el batch?... me aferro a creer que el batch es mas útil..., pero no lo se, ignoro mucho y la ignorancia es valienteee.



Gracias

Bueno, supongo que crees que Batch es más fácil para "programar" malware, pero te lo piensas porque es muy sencillo y, al principio puedes hacer cosas muy simples y rápidas. Créeme, cuando sepas manejar todo esto en C/C++ ya veremos...

A ver, no es que no entiendas nada de estas cosas. Te dije que te miraras algunos códigos de malware programados en C/C++, donde manejan las API's. A partir de ahí vas buscando información sobre ellas. Por ejemplo, te dejo un código que ofusca un simple fichero:

Código
  1. #include <windows.h>
  2.  
  3. int main()
  4. {
  5. //Abrimos la ruta del archivo
  6. LPSTR lpFileName = "C:\\prueba.txt";
  7. HANDLE hFile = CreateFileA(lpFileName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
  8.  
  9. //Leemos el archivo
  10. DWORD nNumberOfBytesToRead = GetFileSize(hFile,0);
  11. LPSTR lpBuffer = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,nNumberOfBytesToRead);
  12. DWORD lpNumberOfBytesRead = 0;
  13. ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,&lpNumberOfBytesRead,0);
  14.  
  15. //Ofuscamos el buffer
  16. for(DWORD n = 0;n < nNumberOfBytesToRead;n++) lpBuffer[n] ^= 100;
  17.  
  18. //Empezamos a guardar desde el principio del archivo
  19. SetFilePointer(hFile,FILE_BEGIN,0,0);
  20.  
  21. //Sobreescribimos los carácteres ofuscados
  22. WriteFile(hFile,lpBuffer,nNumberOfBytesToRead,&lpNumberOfBytesRead,0);
  23.  
  24. //Liberamos la memoria dinámica
  25. HeapFree(GetProcessHeap(),0,lpBuffer);
  26.  
  27. //Cerramos los handles
  28. CloseHandle(hFile);
  29.  
  30. return 0;
  31. }

Crea un fichero que se llame prueba en el directorio C:\ y, luego escribe algo, guárdalo y ciérralo. Seguidamente ejecuta este programa y notarás una ligera diferencia.

Te he puesto este código, comentado, porque estoy manejando las API's que seguramente vas a utilizar más. Espero que lo vayas cogiendo.

Saludos :P


Muchas gracias, ya estoy en ello.

Saludos
En línea

"El que busca la verdad corre el riesgo de encontrarla".
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
“Windows 7 afectará al desarrollo de malware en 2011” « 1 2 »
Noticias
wolfbcn 15 5,953 Último mensaje 23 Diciembre 2010, 01:39 am
por ~ Ghost_Networks ~
Hombre de Rusia reconoce que desarrolló y distribuyó el malware SpyEye
Noticias
wolfbcn 1 1,353 Último mensaje 30 Enero 2014, 17:39 pm
por Vaagish
Malware-Gen
Análisis y Diseño de Malware
xxDonxx 1 1,964 Último mensaje 22 Mayo 2020, 17:09 pm
por ThunderCls
Libros de desarrollo web
Desarrollo Web
beto1555 1 1,632 Último mensaje 17 Diciembre 2020, 09:54 am
por Hakkimen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines