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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: [1] 2
1  Seguridad Informática / Seguridad / Re: Duda con posible infección meterpreter en Windows10 en: 13 Febrero 2018, 01:05 am
Rootkits ? Windows ? 2018 ? Jajaja
Que buenos recuerdos los años 2009-2013 . Los rootkits de verdad murieron con x86 hace años .
Todos los ejemplos que se han sacado en x64 (todos bootkits) son tecnologia antigua , 100% detectable hoy en dia e incluso me atrevo a decir que estan muertos totalmente . Quizas haya algun gobierno con equipos sponsorizados que tengan un kit para un windows 10 (no digo 7 , vista o xp porque no interesan) x64, pero hasta que no se vea ninguno con tecnologia diferente o nuevas tecnicas de bypassear DSE , los rootkits en windows estan muertos
2  Seguridad Informática / Análisis y Diseño de Malware / Re: Zeus Botnet en: 7 Diciembre 2017, 22:44 pm
Zeus (zbot) es el mas "emblematico" por el bombo mediatico que le daban , todo por ser un troyano bancario.

Desde de un punto de vista tecnico de desarrollo nada se acerca a ZeroAccess o TDL , en mi opinion dos de las familias de malware mas avanzadas que se hayan creado de calle ademas. Ninguno de ellos atacaban bancos . Tenian un programa de afiliados , vendian paquetes con el kit completo por precios astronomicos y actuaban como plataformas para descargar mas malware + el sistema de clicks fraudulentos . Silencioso y mucho mas efectivo que atacar bancos
3  Programación / Programación C/C++ / Re: Establecer Vídeo como fondo de Escritorio (Programa). en: 2 Octubre 2017, 18:20 pm
La funcion para poder cambiar el escritorio es SystemParametersInfo

BOOL WINAPI SystemParametersInfo(
  _In_    UINT  uiAction,
  _In_    UINT  uiParam,
  _Inout_ PVOID pvParam,
  _In_    UINT  fWinIni
);

defines los parametros , la ruta de la imagen y cambia el fondo de escritorio, y lo del video
explicalo mejor, igual te refieres a un gif

4  Programación / Programación C/C++ / Operaciones básicas en el kernel [drivers] en: 1 Octubre 2017, 12:55 pm
...
5  Programación / Programación C/C++ / Codigo para cargar Drivers en el kernel en: 17 Septiembre 2017, 17:45 pm
Mi pequeño Loader, que hace :
1-) registrar un servicio y ejecutarlo
2-) detener un servicio y eliminarlo

Loader:

Código
  1. #include <Windows.h>
  2. #include <stdio.h>
  3.  
  4. char *driver = "C:\\hellowWorld.sys";
  5.  
  6. void instalar_driver() {
  7. SC_HANDLE Manager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
  8. if (Manager != ERROR) {
  9. printf("\nCargando el driver...");
  10. SC_HANDLE Service = CreateService(Manager, "TEST", "TEST", SERVICE_START | DELETE | SERVICE_STOP, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, driver, NULL, NULL, NULL, NULL, NULL);
  11. if (Service == ERROR) {
  12. Service = OpenService(Manager, "TEST", SERVICE_START | DELETE | SERVICE_STOP);
  13.  
  14. }
  15. if (Service) {
  16. StartService(Service, 0, NULL);
  17. printf("\nServicio Ejecutado");
  18. }
  19. CloseServiceHandle(Manager);
  20. }
  21.  
  22. }
  23.  
  24. void eliminar_driver() {
  25.  
  26. SC_HANDLE Manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  27. if (Manager != ERROR) {
  28. SC_HANDLE Service = OpenService(Manager, "TEST", SERVICE_START | DELETE | SERVICE_STOP);
  29. if (Service != ERROR) {
  30. SERVICE_STATUS status;
  31. ControlService(Service, SERVICE_CONTROL_STOP, &status);
  32. printf("\nServicio Detenido");
  33. DeleteService(Service);
  34. printf("\nServicio Eliminado");
  35. CloseServiceHandle(Service);
  36. }
  37. CloseServiceHandle(Manager);
  38. }
  39. }
  40.  
  41. int main(void) {
  42. int opcion;
  43. while (1)
  44. {
  45. printf("\n1) cargar driver");
  46. printf("\n2) eliminar driver de la memoria");
  47. printf("\n3) salir del menu");
  48. printf("\n\n->  ");
  49. scanf("%d", &opcion);
  50. switch (opcion) {
  51. case 1:
  52. instalar_driver();
  53. break;
  54. case 2:
  55. eliminar_driver();
  56. break;
  57. case 3:
  58. exit(1);
  59.  
  60. default:
  61. printf("\n\nOpcion incorrecta");
  62. break;
  63. }
  64.  
  65. }
  66. return 0;
  67. }
  68.  

Codigo del Driver

Código
  1. #include <ntddk.h>
  2.  
  3.  
  4. VOID Unload(PDRIVER_OBJECT DriverObject)
  5. {
  6. DbgPrint("Driver Unloaded From Memory\n");
  7. }
  8.  
  9. NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegisterPath)
  10. {
  11. DbgPrint("Hellow World From Kernel Space\n");
  12. DriverObject->DriverUnload = Unload;  // No siempre hay que limpiar el codigo , pero si es recomendable si vamos a hacer pruebas, ya que , de lo contrario hay que reiniciar el ordenador continuamente
  13. return STATUS_SUCCESS;
  14. }

https://imgur.com/kfXwXNf
https://imgur.com/oeWnpO1
https://imgur.com/4obeza9

6  Seguridad Informática / Análisis y Diseño de Malware / Re: [DUDA] Creación de botnet en: 16 Septiembre 2017, 15:15 pm
Y... para el servidor te recomendaría cualquiera lenguaje que genere un .exe, yo personalmente nunca usaría un lenguaje como java o .net para crear un servidor de botnet.

Según tengo entendido, una botnet es semejante a cualquier troyano normal solo que con la variante de que por lo general se utilizan para realizar ataques de denegación de servicio, por esta razón se esperan una gran cantidad de conexiones y esto obliga a los desarrolladores a escribir los clientes en lenguajes como PHP, lo que les permite subir el cliente a un hosting de terceros que aguante las conexiones.

Te dejo el siguiente post que habla un poco de Winsocks de Windows.

C++ Winsockets como reconectar un cliente al server

¡Saludos!

Los ataques de denegacion de servicio apenas generan beneficios . Es la ultima opcion que tendria en un bot . Lo principal es un sistemas de clicks fraudulentos , es lo que mas dinero genera junto con un grabber de contraseñas . Realmente son las dos unicas opciones que consideraria imprescindibles
7  Programación / Programación C/C++ / Inyeccion Dll básica en: 28 Agosto 2017, 18:31 pm
Como hacer una inyección básica de una dll en C

Código dll

Código
  1. #include <Windows.h>
  2.  
  3. BOOL APIENTRY DllMain(HMODULE hMod, DWORD callback, LPVOID Param)
  4. {
  5. switch(callback)
  6. {
  7. case DLL_PROCESS_ATTACH:
  8. aqui ponemos el codigo que queremos que se ejecute en la dll
  9. MessageBoxW(NULL, TEXT("Hola desde proceso injectado !"), TEXT("Test"), MB_ICONINFORMATION);
  10. case DLL_PROCESS_DETACH:
  11. case DLL_THREAD_ATTACH:
  12. case DLL_THREAD_DETACH:
  13. default:
  14. break;
  15. }
  16. return TRUE;
  17. }

codigo de la aplicacion externa

Código
  1. #include <Windows.h>
  2. #include <stdio.h>
  3. #include <winternl.h>
  4.  
  5. #pragma comment(lib, "ntdll.lib")
  6.  
  7. typedef struct _CLIENT_ID
  8. {
  9. HANDLE UniqueProcess;
  10. HANDLE UniqueThread;
  11. } CLIENT_ID, *PCLIENT_ID;
  12.  
  13. extern "C" NTSTATUS NTAPI ZwOpenProcess(PHANDLE ProcessHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, PCLIENT_ID ClientID);
  14.  
  15.  
  16. int main(int argc, char *argv[]) {
  17.  
  18. char *ruta_dll = "C:\\Dlltest.dll";
  19. ULONG pid;
  20. OBJECT_ATTRIBUTES oa;
  21. HANDLE hproc;
  22. CLIENT_ID cid;
  23. NTSTATUS status;
  24.  
  25.  
  26. printf("\n pid -> ");
  27. scanf("%d", &pid);
  28.  
  29.  
  30. cid.UniqueProcess = (HANDLE)pid;
  31. cid.UniqueThread = 0;
  32. InitializeObjectAttributes(&oa, NULL, 0, NULL, NULL);
  33. if(NT_SUCCESS(ZwOpenProcess(&hproc, PROCESS_ALL_ACCESS, &oa, &cid))) {
  34. if(NT_SUCCESS(status)) {
  35. HMODULE dll = GetModuleHandle(L"kernel32");
  36. if(dll != NULL) {
  37. FARPROC load = GetProcAddress(dll, "LoadLibraryA");
  38. if(load != ERROR) {
  39. LPVOID base = VirtualAllocEx(hproc, NULL, 256, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
  40. if(base != ERROR) {
  41. BOOL exito = WriteProcessMemory(hproc, base, ruta_dll, strlen(ruta_dll) + 1, NULL);
  42. if(exito != 0) {
  43. HANDLE thread = CreateRemoteThread(hproc, NULL, NULL, (LPTHREAD_START_ROUTINE)load, base, NULL, NULL);
  44. if(thread != ERROR) {
  45. printf("\n dll inyectada en proceso id: %d", pid);
  46. }
  47. }
  48. }
  49. }
  50. }
  51. }
  52. }
  53. return 0;
  54.  
  55. }
  56.  
http://imgur.com/DsEoTz4
http://imgur.com/6HoVbVR
http://imgur.com/jD3CYTH

8  Seguridad Informática / Análisis y Diseño de Malware / Re: C++ Winsockets como reconectar un cliente al server en: 28 Agosto 2017, 16:33 pm
Oye y los troyanos son """"simplemente"""" eso?? enviar un comando, que no es mas que un numero o una string (en definitiva un dato/variable) y dependiendo de cual sea, el cliente ejecuta una acción u otra??

a muy grosso modo si, son eso, una aplicación cliente-servidor. Sin embargo hoy en día las cosas no son tan simples. El cliente del troyano tiene que esconderse por razones obvias. Tiene que esconder llaves del registro, archivos, procesos etc, y eso se consigue con dlls que al fin y al cabo son una forma de ejecutable, necesarios para hacer hooks en windows
9  Seguridad Informática / Análisis y Diseño de Malware / Re: Foro de Malware e Indetectables en: 23 Agosto 2017, 23:21 pm
los mejores  foros malware son rusos (mas que nada por que bastante buenos desarrollando) , y no , no hace falta irse a la cebolla para encontrarlos, normalmente los registros en este tipo de foros es tener un requisito principal, hablar el idioma . Hacen versiones del foro para gente extranjera, uno de ellos es exploit.in , foro en ruso nativo y en inglés, es de pago .
10  Programación / Programación C/C++ / Terminar Proceso usando funciones NTAPI en: 21 Agosto 2017, 20:44 pm
Usando NtOpenProcess para conseguir el handle del proceso NtTerminateProcess para acabarlo

Código
  1. #include <Windows.h>
  2. #include <winternl.h>
  3. #include <stdio.h>
  4.  
  5.  
  6. #pragma comment(lib, "ntdll.lib")
  7.  
  8. typedef struct _CLIENT_ID
  9. {
  10.     PVOID UniqueProcess;
  11.     PVOID UniqueThread;
  12. } CLIENT_ID, *PCLIENT_ID;
  13.  
  14. EXTERN_C NTSTATUS NTAPI NtOpenProcess(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PCLIENT_ID);
  15. EXTERN_C NTSTATUS NTAPI NtTerminateProcess(HANDLE, NTSTATUS);
  16.  
  17. void main() {
  18. OBJECT_ATTRIBUTES oa;
  19. HANDLE hProc;
  20. ULONG pid;
  21. CLIENT_ID cid;
  22.  
  23.  
  24. printf("\n introduce pid-> ");
  25. scanf("%ld", &pid);
  26. cid.UniqueProcess = (HANDLE)pid;
  27. cid.UniqueThread = 0;
  28. InitializeObjectAttributes(&oa, NULL, 0, NULL, NULL);
  29. if(NT_SUCCESS(NtOpenProcess(&hProc, PROCESS_TERMINATE, &oa, &cid))) {
  30. NTSTATUS status = NtTerminateProcess(hProc, 1);
  31. if(NT_SUCCESS(status)) {
  32. MessageBoxW(0, TEXT("proceso terminado"), TEXT("test"), MB_ICONINFORMATION);
  33. }
  34. }
  35. NtClose(hProc);
  36.  
  37.  
  38.  
  39.  
  40. }
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines