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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 122
131  Seguridad Informática / Seguridad / Re: Virus en fb? en: 23 Febrero 2011, 18:27 pm
No pasa nada, fueron solo 15 minutos. Es preferible eso antes que tratar de desinfectar todos los hosts comprometidos, eso si hubiese llevado tiempo  :P.

Saludos
132  Seguridad Informática / Seguridad / Re: Virus en fb? en: 23 Febrero 2011, 10:23 am
Hice la vacuna ahora porque luego a la tarde no voy a poder.

El código no esta comentado y tiene muy poco manejo de errores, lo hice de esa manera para terminarlo mas rápido. Igualmente no debería ser muy difícil de entender pero si quieren que lo comente lo hago luego.

A grandes rasgos cierra el proceso del malware, elimina algunas entradas del registro, y renombra y mueve el ejecutable malicioso al mismo directorio donde se ejecute la vacuna (renombrado a txt, para el que no quiera perder la muestra).

No le he prestado demasiado tiempo al análisis porque esta a la vista que el malware es muy simple. Tal vez por esa razón me hayan quedado algunas entradas del registro en el tintero, pero en ese caso si alguien ve mas, agréguelas al código. Igualmente con esto el malware no seguirá funcionando.

Vaccine.h

Código
  1. #ifndef VACCINE_H
  2. #define VACCINE_H
  3.  
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <windows.h>
  7. #include <Tlhelp32.h>
  8.  
  9. class Vaccine
  10. {
  11.  
  12. public:
  13. INT KillProcess(const char* ProcessName);
  14. LONG DeleteReg (HKEY Hkey, const char* SubKey, const char* KeyValue);
  15. INT FileDelete (const char* Path);
  16. };
  17.  
  18. #endif // VACCINE_H

Vaccine.cpp
Código
  1. #include "Vaccine.h"
  2.  
  3. INT Vaccine::KillProcess(const char* ProcessName)
  4. {
  5.  
  6. PROCESSENTRY32 P32 = {0};
  7. P32.dwSize = sizeof( PROCESSENTRY32 );
  8. HANDLE Handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  9. DWORD ExitCode = 0;
  10.  
  11. if(Process32First(Handle,&P32))
  12. while(strcmp(P32.szExeFile,ProcessName)!= 0 && Process32Next(Handle,&P32));
  13.  
  14. HANDLE Hprocess = OpenProcess(PROCESS_ALL_ACCESS,0,P32.th32ProcessID);
  15. if(Handle)
  16. {
  17. GetExitCodeProcess(Hprocess,&ExitCode);
  18. TerminateProcess(Hprocess,ExitCode);
  19. return EXIT_SUCCESS;
  20. }
  21.  
  22. return EXIT_FAILURE;
  23. }
  24.  
  25. LONG Vaccine::DeleteReg (HKEY Hkey, const char* SubKey, const char* KeyValue)
  26. {
  27. HKEY HkeyHandle;
  28. long RegReturn = 0;
  29. if(!RegOpenKeyEx(Hkey, SubKey, 0, KEY_ALL_ACCESS, &HkeyHandle))
  30. {
  31. RegReturn = RegDeleteValue(HkeyHandle, KeyValue);
  32. RegCloseKey(HkeyHandle);
  33. return RegReturn;
  34. }
  35.  
  36. return RegReturn;
  37. }
  38.  
  39.  
  40. INT Vaccine::FileDelete(const char* Path)
  41. {
  42. SetFileAttributes(Path, FILE_ATTRIBUTE_NORMAL);
  43. MoveFileEx(Path,"NewCopyMalware.txt",MOVEFILE_WRITE_THROUGH);
  44. return EXIT_SUCCESS;
  45. }

main.cpp
Código
  1. #include "Vaccine.h"
  2.  
  3. int main()
  4. {
  5. Vaccine Vac;
  6. Vac.KillProcess("nvsvc32.exe");
  7.  
  8. Vac.DeleteReg(HKEY_LOCAL_MACHINE,
  9. "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
  10. "NVIDIA driver monitor");
  11.  
  12. Vac.DeleteReg(HKEY_LOCAL_MACHINE,
  13. "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
  14. "NVIDIA driver monitor");
  15.  
  16. Vac.DeleteReg(HKEY_CURRENT_USER,
  17. "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
  18. "NVIDIA driver monitor");
  19.  
  20. Vac.FileDelete("C:\\WINDOWS\\nvsvc32.exe");
  21.  
  22. system("sc config wuauserv start= auto");
  23. system("net start wuauserv");
  24. system("net start MsMpSvc");
  25.  
  26. std::cin.get();
  27. return EXIT_SUCCESS;
  28. }



Posiblemente algún antivirus  detecte la vacuna como una aplicación riesgosa por las llamadas a system y demás, pero en fin, ahi esta el codigo para el que quiera compilarla.

Ejecutable de la vacuna:
http://www.megaupload.com/?d=X8D580N2

MD5   : 695830eace00c253e11aae440abbae24
SHA1  : 86eb76dd3f1776b50e8442f62879eba8b63d1bb8
SHA256: 0c092a4c2e9edf20f8e3fdc6d08937a8ae7c8a150902dcbc8b28005f4125d97d


Los que la ejecuten recuerden hacerlo como administrador.

Saludos.
133  Programación / Programación C/C++ / Re: [Duda] Programacion C y parametros en: 23 Febrero 2011, 04:17 am
Usando los argumentos de la función principal lo puedes lograr muy fácilmente. Recuerdas haber leído alguna vez algo como:

Código
  1. int main(int argc, char **argv)

argc es la cantidad de argumentos recibidos y argv es un arreglo de cadenas que contiene esos argumentos, comenzando por el nombre del propio programa.

Código
  1. int main(int argc,char **argv){
  2.  
  3. printf("Cantidad de argumentos: %d\n", argc);
  4. while(argc--)
  5.    printf("%s\n",*argv++);
  6.  
  7. return 0;
  8. }


Saludos
134  Seguridad Informática / Seguridad / Re: Virus en fb? en: 23 Febrero 2011, 00:37 am
Bueno lo he visto un poco por encima y a grandes rasgos crea un archivo llamado nvsvc32.exe en la carpeta de Windows y luego agrega excepciones al Firewall. Es decir, se trata de esconder simulando estar relacionado con Nvidia. Luego deshabilita actualizaciones automáticas y demás sistemas de seguridad inherentes a Windows.
Se agrega al inicio con el mismo nombre mediante la modificación de las típicas entradas de registro.

Citar
HKLM\​SOFTWARE\​Microsoft\​Windows\​CurrentVersion\​Run

HKLM\​SOFTWARE\​Microsoft\ ​Windows NT\​CurrentVersion\​Terminal Server\​Install\​Software\​Microsoft\​Windows\​CurrentVersion\​Run


Realiza algunas dns queries a varios dominios, pero no tiene mucha mas actividad de red por el momento. Luego mirare esa parte con mas atención ya que al parecer este bot tiene ciertos problemas con mi VM.

Mañana a la tarde si puedo hago la vacuna y de paso posteo todo mas en detalle. Va a ser mas efectivo que intentar desinfectar los hosts que utiliza, ya que esa seria una tarea interminable.

Saludos
135  Seguridad Informática / Seguridad / Re: Virus en fb? en: 22 Febrero 2011, 21:19 pm
La anterior web la defacearon porque tenia demasiados agujeros de seguridad. No creo que haya sido el mismo que la utilizo como medio de propagación.

En cuanto a este nuevo link, la metodología es exactamente la misma. Crear una aplicación en Facebook y cargar el contenido de otro sitio infectado.

El sitio en cuestión es este:

http://burstjam.com/images/

Luego con mas tiempo analizo el ejecutable para ver de que se trata.

Saludos
136  Programación / Programación C/C++ / Re: Problema con lista enlazada en C en: 21 Febrero 2011, 22:01 pm
Ahora tienes una cadena de 2 posiciones y a fgets le pasas 3 como tamaño por lo tanto lee 2 caracteres, por ende es posible que la cadena te quede sin el carácter nulo.

Si el problema es solo el contenido restante en el buffer de entrada, en Windows se puede tirar de la API para solucionarlo fácilmente, pero para no salir del estándar puedes hacer algo como esto:

Código
  1. void CleanStdin()
  2. {
  3. while(getchar() != '\n');
  4. }
  5.  

Aunque no debería hacer falta puesto que el salto de linea debería quedar perfectamente en la cadena pasada a fgets siempre que le dejes espacio. Luego puedes reemplazarlo fácilmente por un carácter nulo.

Con el tema de las lecturas, hay miles de formas de leer una opción. Usualmente cuando son opciones simples con fgets + sscanf basta y sobra:


Código
  1. if(fgets(Buff, sizeof Buff, stdin))
  2. sscanf(Buff, "%d", &Opt);
  3.  




El problema del buffer de entrada en Windows esta muy tratado en el foro. Hoy ya vi 3 posts con la misma duda asi que mi recomendación es que utilicen el buscador del foro, ya que hay hilos enteros solo sobre este tema. Tambien con Google pueden buscar algo como:

Citar
fflush(stdin) site:foro.elhacker.net

o

Citar
fgets problema site:foro.elhacker.net

Saludos
137  Programación / Programación C/C++ / Re: me dicen si les funciona!! en: 21 Febrero 2011, 20:03 pm
Código
  1. fflush(stdin);

Esa linea es lo que te provoca el comportamiento indefinido. Utiliza el buscador del foro y lee las chinchetas.

Saludos
138  Programación / Programación C/C++ / Re: Problema con lista enlazada en C en: 21 Febrero 2011, 19:56 pm
Es que de la forma que haces la lectura, fgets nunca llega a leer el salto de linea por lo tanto nada puede hacer con el.

Si tenes una cadena de 3 posiciones, y a fgets le pasas como parámetro que lea solo 2, en realidad lee 2-1. Es decir, lee 1 solo carácter, luego agrega el carácter nulo a la cadena, y el salto de linea queda deambulando por el buffer de entrada.


Citar
Reads characters from stream and stores them as a C string into str until (num-1) characters have been read or either a newline or a the End-of-File is reached, whichever comes first.
A newline character makes fgets stop reading, but it is considered a valid character and therefore it is included in the string copied to str.
 A null character is automatically appended in str after the characters read to signal the end of the C string.
Cuando dije leer como texto me referia a leer y analizar una expresion para verificar si el usuario ha ingresado la opción correctamente. Lo que estas haciendo ahora es utilizar una cadena como si fuese un solo carácter y aunque es legal no es del todo correcto.

Saludos!
139  Programación / Programación C/C++ / Re: Problema con lista enlazada en C en: 21 Febrero 2011, 00:47 am
Las variables globales son perjudiciales para la salud, trata de evitarlas siempre que sea posible.


 
En ese caso tengo que reemplazar el scanf() por fgets() y poner la variable opcion como un arreglo de caracteres :-X
 

Efectivamente. La forma mas segura de realizar un ingreso de datos por parte del usuario es leyendo como texto y luego parseando y validando lo necesario.

Saludos
140  Programación / Programación C/C++ / programa en C que calcule un salario neto de un trabajador en: 19 Febrero 2011, 03:03 am
El mensaje 'programa en C   que calcule un salario neto de un trabajador' fue bloqueado
Bienvenido al foro oert. No se hacen tareas!
Leer reglas:
http://foro.elhacker.net/reglas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 122
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines