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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Temas
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12
11  Programación / Programación C/C++ / Pasar de Static Linking a Dynamic Linking. en: 28 Julio 2012, 20:31 pm
Hola! Como va, estoy desarrollando un programa y me gustaría saber si es posible hacer que todas las llamadas estáticas a APIs se conviertan en dinámicas, es decir, poder cargarlas en tiempo de ejecución. La razón es que quiero obfuscar las apis para que no aparezcan adentro del ejecutable si uno lo abriese con un editor hexadecimal. Hay alguna manera de hacer esto que no sea manualmente hacer todas las llamadas en el código??

Un abrazo
APOKLIPTICO.
12  Programación / Programación C/C++ / Problema con LogonUser() / ImpersonateLoggedOnUser() en: 24 Julio 2012, 16:15 pm
Buenas! Tengo un problema con la función LogonUser
Estoy utilizando estas funciones.

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. #define LOGON32_LOGON_NEW_CREDENTIALS 9
  4. #define LOGON32_PROVIDER_WINNT50 3
  5. #define REMOTE_USER_S "Administrador"
  6. #define REMOTE_PASS_S "password"
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.    HANDLE hToken;
  12.    bool bAnswer = false;
  13.    bAnswer = LogonUser(REMOTE_USER_S, (char*) ".", REMOTE_PASS_S, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &hToken);
  14.    cout << bAnswer << endl;
  15.    HANDLE hToken2;
  16.    bAnswer = DuplicateToken(hToken, SecurityImpersonation, &hToken2);
  17.    cout << bAnswer << endl;
  18.    bAnswer = ImpersonateLoggedOnUser(hToken2);
  19.    cout << bAnswer << endl;
  20.    HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  21.    if(hSCManager == NULL) cout << "Error! " << GetLastError() << endl;
  22.    return 0;
  23. }

Este código devuelve
1
1
1
Error! 5 (Acceso denegado).

Pasa lo mismo si le pongo la contraseña válida o una inválida.

Como puedo hacer para asegurarme que el usuario haya sido correctamente logueado y cargado, es decir, como puedo hacer para comprobar que las credenciales que se le proveen (Usuario y contraseña, en este caso no hay dominio) son válidas.

Esto lo quiero utilizar para acceder a recursos de red que sólo están disponibles bajo ciertos usuarios.

Un saludo
APOKLIPTICO.

PD: Pasa lo mismo sino utilizo DuplicateToken.
13  Programación / Programación C/C++ / Modificar el visor de eventos en windows XP / Vista / Seven / 2003 / 2008. en: 12 Junio 2012, 14:54 pm
Hola! Como va todo? Estaba buscando una manera de limpiar el visor de eventos, en windows Vista, Seven y 2008 hay una API que es EvtClearLog para esto, el problema que en XP y 2003 esta API no existe y no pude encontrar una equivalente.

Hay alguna manera de limpiar el visor de eventos en windows XP y 2003 que sea compatible con Windows Vista, Seven y 2008 mediante APIs o haciendo una llamada a un programa externo??

Saludos
APOKLIPTICO
14  Seguridad Informática / Criptografía / MOVIDO: concatenacion de string y se queda pillado en: 15 Abril 2012, 21:03 pm
El tema ha sido movido a Programación Visual Basic.

https://foro.elhacker.net/index.php?topic=359048.0
15  Programación / Programación C/C++ / Multi-Threading con winpcap. en: 12 Marzo 2012, 16:49 pm
Hola! Estoy trabajando con winpcap, el tema es que solo permite escuchar en un solo adaptador a la vez, para resolver esto, estaba pensando en utilizar threads, cada uno con un adaptador distinto.
El tema es que no puedo pasarle correctamente el parámetro, que es un array de chars.
Probe varias combinaciones pero no puedo hacer que funcione, a ver si alguien me puede hechar una mano en esto.
Dejo el código:

Código
  1. int main(int argc, char* argv[])
  2. {
  3.    pcap_if_t *alldevs;
  4.    pcap_if_t *d;
  5.    char errbuf[PCAP_ERRBUF_SIZE];
  6.    pcap_findalldevs(&alldevs, errbuf);
  7.    int i = 0;
  8.    for(d=alldevs; d; d=d->next, i++);
  9.    HANDLE *hThreads = new HANDLE[i];
  10.    for(d=alldevs; d; d=d->next)
  11.    {
  12.        char *pszIname = new char[strlen(d->name)];
  13.        ZeroMemory(pszIname, strlen(d->name));
  14.        strcpy(pszIname, d->name);
  15.        hThreads[i] = (HANDLE) _beginthread((void (*)(void*))HandleAdapter, 0, (void*) pszIname);
  16.        delete pszIname;
  17.        break;
  18.    }
  19.    for(int j = 0; j < i; j++)
  20.    {
  21.        if(hThreads[i] != NULL) WaitForSingleObject(hThreads[j], INFINITE);
  22.        else cout << "Thread " << i << " Failed." << endl;
  23.    }
  24.    delete hThreads;
  25.    pcap_freealldevs(alldevs);
  26.    return 0;
  27. }
  28.  
  29. int HandleAdapter(void *di)
  30. {
  31.    char *d = (char*) di;
  32.    cout << d << endl;
  33.    return 0;
  34. }

Muchas gracias!
APOKLIPTICO.
16  Programación / Programación C/C++ / Modificar paquetes al vuelo. en: 12 Marzo 2012, 15:21 pm
Hola! Estuve utilizando la librería winpcap para ver los paquetes en formato raw de un determinado adaptador, hasta ahora todo bien, pero ahora quería saber como modificar dichos paquetes, aparentemente winpcap no permite hacer esto. Sin embargo, muchas herramientas como por ejemplo Cain, utilizan winpcap y sin utilizar drivers ni aparentemente ninguna otra librería, modifican paquetes al vuelo (por ejemplo cuando spoofean los certificados https o los challenges de las conexiones SMB).

Alguien sabe como puedo hacer para modificar con winpcap los paquetes o conoce alguna librería que me pueda ayudar a cumplir dicha tarea??
Estoy trabajando bajo windows XP/Vista/7/2000/2003/2008.

Muchas gracias!
APOKLIPTICO.
17  Seguridad Informática / Análisis y Diseño de Malware / Propagación por red. en: 2 Marzo 2012, 22:21 pm
Holas! Como va todo?
Estaba pensando que un buen método para propagarse por red es la utilización del Active Directory en las redes con dominio y el usuario por defecto del mismo, que en teoría debería tener acceso administrativo a todas las pcs del dominio.
Ahora, mi pregunta es: Lo que estoy asumiendo es correcto??
Qué otros métodos de propagación se les ocurre que no involucre la explotación de vulnerabilidades conocidas como la MS08-067??

Un saludo
APOKLIPTICO.
18  Informática / Hardware / Memoria Ram no funciona en Dual Channel. en: 8 Febrero 2012, 12:27 pm
Hola! Como va todo? Bueno, estuve teniendo un problema con mi pc, el tema es que trato de poner las memorias que tengo 2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T) a 1.5V. En dual channel y no arranca la pc, me da error de overclocking, en raras ocasiones arranca y se cuelga en el inicio del SO.
Ahora, cuando las uso en single channel, funcionan perfectamente...
Alguien sabe por qué puede estar sucediendo esto??
Los timings son los de fábrica.

Saludos
APOKLIPTICO.
19  Programación / Programación C/C++ / Máximo de conexiones a medio abrir. en: 30 Enero 2012, 16:56 pm
Hola! Estoy programando una utilidad que escanea los hosts que están activos y con determinados puertos abiertos, el problema es que le desactivé el bloqueo al sock y le puse un timeout, pero si tratas de abrir una conexion nueva, falla sin importar el timeout.

Hay alguna manera de saber el máximo de conexiones a medio abrir?? Asi puedo hacer las conexiones y después esperar que se cierren y luego volver abrir otro juego de conexiones.

Gracias!
Un abrazo
APOKLIPTICO.
20  Programación / Programación C/C++ / Inactivando registro de eventos. en: 21 Diciembre 2011, 02:35 am
Hola! Como va? Me estoy carcomiendo la cabeza con un problema, estoy tratando de hacer un programa que cierre el registro de eventos (servicio eventlog) o que en su defecto, permita el acceso de escritura para los archivos de registro (.evt). Cabe aclarar que necesito eliminarlos de manera segura (con sobreescritura previa), osea que la opción de eliminar el registro de eventos no es viable.

Para esto se me ocurrieron dos maneras:

1) Cerrar el eventlog, para esto sería necesario de alguna manera cerrarlo sin matar el proceso services.exe que es escencial para windows, parece como si fuese un thread dentro del proceso services.exe. Cabe aclarar que no se puede cerrar el servicio ya que la llamada a ControlService() con la flag SERVICE_CONTROL_STOP devuelve un error ERROR_INVALID_SERVICE_CONTROL ya que el sistema lo marca como escencial.

2) Hacer una llamada a CloseHandle dentro del proceso services.exe llamando a las handles de los archivos, o desbloquear su acceso exclusivo de alguna manera. Estuve intentando con code injection pero todavía no pude hacerlo funcionar ya que crashea el proceso en el que se inyecta (en este caso estuve tratando de inyectar un winamp.exe) durante la llamada a createremotethread:

Código
  1.    HANDLE hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, false, 4492);
  2.    if(!hProcess) return GetLastError();
  3.    DWORD iFuncSize = (DWORD) test - (DWORD) UnloadEvtLog;
  4.    void *pAddress = VirtualAllocEx(hProcess, 0, iFuncSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
  5.    if(!pAddress)
  6.    {
  7.        CloseHandle(hProcess);
  8.        return GetLastError();
  9.    }
  10.    if (!WriteProcessMemory(hProcess, pAddress, (void *)test, iFuncSize, 0 ) )
  11.    {
  12.        CloseHandle(hProcess);
  13.        VirtualFreeEx(hProcess, pAddress, 0, MEM_RELEASE);
  14.        return GetLastError();
  15.    }
  16.    HANDLE hThread = CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)pAddress, 0, 0, NULL);
  17.    WaitForSingleObject(hThread,INFINITE);
  18.    CloseHandle(hThread);
  19.    VirtualFreeEx(hProcess, pAddress, 0, MEM_RELEASE);
  20.    return ERROR_SUCCESS;
  21.  

La funcion de prueba es la siguiente:

Código
  1. void test()
  2. {
  3.    char szPID[1000];
  4.    ZeroMemory(szPID, 10);
  5.    itoa(GetCurrentProcessId(), szPID, 10);
  6.    strcat(szPID, "\n");
  7.    strcat(szPID, GetCommandLine());
  8.    MessageBox(NULL, szPID , NULL, 0);
  9.    return;
  10. }


Esto puede ser porque no le estoy pasando parámetros a la funcion (ya que no tiene), entonces le pongo "0" en el puntero a los datos. Como debería poner cuando no hay parámetros para pasar??

Bueno, ojalá que alguien me pueda dar una mano.
Un abrazo
APOKLIPTICO.

PD: Vale aclarar que el proceso tiene el flag SE_DEBUG_PRIVILEGES activado.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines