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 Temas
Páginas: [1]
1  Programación / Ingeniería Inversa / Duda sobre la IT y la IAT en: 6 Octubre 2014, 16:53 pm
Buenas,

Estoy desempacando un pequeño programa que parece comprimido en UPX. Usando el método del hardware breakpoint llego al OEP pero a la hora de reconstruir la IAT tengo el siguiente problema: las funciones no figuran por orden de DLL. Es decir, si por ejemplo la IT tiene dos dll user32.dll y kernell32.dll hay parte de las funciones de user32 que en la IAT figuran entre las de kernell32 (obviamente es sólo un ejemplo para que la idea quede más clara). Mi duda es: ¿hay un método/programa que "reordene" la IAT y la IT? En caso negativo, ¿hay algún programa con el que crear las dos cosas desde cero? Si ésta también es que no, ¡lo tendré que hacer a mano!

Saludos!
2  Seguridad Informática / Hacking Wireless / Curiosidad sobre las redes WLAN_XX en: 12 Junio 2014, 17:59 pm
Buenas a todos.

Supongo que alguien se habría fijado antes y ya estará el tema re-manido pero por si acaso, acá les dejo algo en lo que me había fijado hace un tiempo en relación a las redes WLAN_XX de telefónica que van con clave WEP.

La clave de la red wifi es la letra del modelo de router (Z o X) más la dirección mac del adaptador ethernet del router. Lo que no sé es si la dirección mac del adaptador wifi de la red tiene algún tipo de relación con ella.

En fin, una tontería que seguro que ya conocían pero ahí queda.

Saludos!
3  Foros Generales / Foro Libre / ¿Es legal publicar errores en páginas web? en: 25 Febrero 2013, 18:50 pm
Pues eso. Si publico en mi página web fallos de seguridad de otra página web (inyección sql, XSS, RFI, etc.), ¿me meto en un lío?

Saludos!
4  Programación / Ingeniería Inversa / Ayuda en delphi en: 26 Febrero 2012, 13:27 pm
Buenas.

Estoy intentando crackear un ransomware que está hecho en Borland Delphi 5.0 KOL/MCK según el PeID. El programa estaba empacado con un UPX+packer desconocido+UPX. Llegué más o menos sin problemas al OEP y dumpee el programa.

Se trata de un formulario formado por cuatro partes (que yo haya identificado): el número de teléfono, texto, textbox+botón, texto.

Cargando el  dump me daba un error de que el entry point estaba fuera de sitio pero lo arreglé modificando el valor del BaseOfCode en el encabezado. Revisando las secciones me fijo en que tiene 4 UPX0, UPX1, .rsrc y .mackt y no sé por qué las secciones no son las típicas (el código está desempacado seguro).

Leyendo por ahí encontré el DeDe y el IDR pero apenas me reconoce nada con el IDR y nada con el DeDe. No reconoce ni clases, ni eventos, ni nada.También he probado con el resource hacker pero me da error y no abre. El problema de todo esto creo que tiene que ver con el nombre de las secciones (aunque cambié UPX0->.text y UPX1->.data y nada), o si no con que haya dos secciones unidas en una pero no sé cómo hacer para verificar eso o para arreglarlo.

Lo que he intentado hasta el momento con el olly es ponerle un breakpoint condicional en la class procedure del botón (que es la misma que la del resto de elementos del formulario que muestra), para que salte cuando el mensaje sea WM_LBUTTONUP pero desde allí me es imposible llegar a identificar nada.

Otra cosa que he probado es poniéndole un breakpoint a SendMessage para ver si así era como obtenía el texto del textbox (ya que no tengo ninguna api del estilo de GetWindowText, GetDlgItem, GetWindow, etc.) y no he conseguido nada.

También he probado con breakpoints desde el WM_LBUTTONUP en CallWindowProc, pensando en que igual había mensajes propios del programa que llamasen al procedimiento de obtener el serial del textbox y comprobarlo pero nada.

El programa no muestra una nag pero sí que cambia el texto del textbox a otra cosa. Eso lo hace mediante un SendMessage WM_SETTEXT, pero no soy capaz de tracear hacia atrás: llego a una sección que se usa para muchos de los eventos y no logro hacerlo parar en el evento de "comprobación del serial".

Os dejo una lista de las apis que tiene para ver si os parece que hay alguna interesante que se me haya podido escapar.

user32.BeginPaint
user32.CallNextHookEx
user32.CallWindowProcA
user32.ClientToScreen
user32.ClipCursor
kernel32.CloseHandle
user32.CopyImage
gdi32.CreateBrushIndirect
gdi32.CreateCompatibleDC
gdi32.CreateDIBSection
gdi32.CreateFontIndirectA
gdi32.CreateSolidBrush
kernel32.CreateThread
user32.CreateWindowExA
user32.DefWindowProcA
gdi32.DeleteDC
gdi32.DeleteObject
user32.DestroyCursor
user32.DestroyWindow
user32.DispatchMessageA
user32.DrawTextA
user32.EnableMenuItem
user32.EnableWindow
user32.EndPaint
kernel32.ExitProcess
user32.FillRect
user32.FindWindowA
kernel32.FreeLibrary
kernel32.FreeLibrary
     user32.GetCapture
user32.GetClassInfoA
user32.GetClassLongA
user32.GetClientRect
kernel32.GetCommandLineA
kernel32.GetCurrentThreadId
user32.GetCursorPos
user32.GetDC
kernel32.GetExitCodeThread
kernel32.GetFileAttributesA
user32.GetFocus
user32.GetKeyState
kernel32.GetModuleFileNameA
kernel32.GetModuleHandleA
kernel32.GetProcessHeap
gdi32.GetStockObject
user32.GetSysColor
user32.GetSystemMenu
user32.GetSystemMetrics
kernel32.GetSystemTime
gdi32.GetTextExtentPoint32A
kernel32.GetVersion
user32.GetWindowLongA
user32.GetWindowRect
kernel32.GlobalAlloc
kernel32.GlobalFree
kernel32.HeapAlloc
kernel32.HeapFree
kernel32.HeapReAlloc
     user32.InvalidateRect
user32.IsWindow
user32.IsWindowEnabled
user32.KillTimer
user32.LoadCursorA
user32.LoadIconA
kernel32.LocalAlloc
gdi32.MoveToEx
user32.OffsetRect
user32.PeekMessageA
user32.PostMessageA
user32.PostQuitMessage
kernel32.RaiseException
advapi32.RegCloseKey
user32.RegisterClassA
user32.RegisterHotKey
advapi32.RegOpenKeyExA
advapi32.RegSetValueExA
user32.ReleaseDC
kernel32.ResumeThread
kernel32.RtlUnwind
user32.ScreenToClient
gdi32.SelectObject
user32.SendMessageA
user32.SendMessageA
gdi32.SetBkColor
gdi32.SetBkMode
gdi32.SetBrushOrgEx
user32.SetCursor
     user32.SetFocus
user32.SetForegroundWindow
user32.SetParent
gdi32.SetPixel
gdi32.SetROP2
gdi32.SetStretchBltMode
gdi32.SetTextColor
kernel32.SetThreadPriority
user32.SetTimer
user32.SetWindowLongA
user32.SetWindowPos
user32.SetWindowsHookExA
user32.ShowWindow
gdi32.StretchBlt
user32.SystemParametersInfoA
kernel32.TerminateThread
kernel32.TlsGetValue
kernel32.TlsSetValue
user32.TranslateMessage
kernel32.UnhandledExceptionFilter
kernel32.WaitForSingleObject
user32.WaitMessage
kernel32.WinExec

Saludos!
5  Programación / Ingeniería Inversa / Duda en análisis de malware en: 8 Febrero 2012, 19:48 pm
Buenas!

Me estoy dedicando a analizar un poco de malware y me surge una duda.

El programa es una versión del Security Shield 2011 (rogue). Viene comprimido con un compresor desconocido para el PeID o el RDG. Tras jugar un rato, llegué al OEP (o lo que yo creía que era el OEP). Hago el dump, arreglo la IAT (sin problemas) y, cuando todo parece que va como la seda, el programa no arranca. Bueno, sí arranca pero se estropea enseguida. Como no tengo nidea de por qué puede pasar, arranco los dos exes (el original y el dumpeado) y, una vez el original está en el OEP, comparo cómo se van ejecutando. Me fijo en que, para una función que parece tener el mismo nombre, el original lo carga desde ntll y en el dumpeado la arranca desde kernel32. No entiendo por qué pasa esto.

Al final lo que hice fue esperar a que la rutina de desempacado cargara el programa original en la memoria y lo dumpee desde allí, pero sigo sin entender por qué el dumpeado no funcionaba.

¡A ver si me podéis echar una mano!

Saludos!
6  Programación / Ingeniería Inversa / Ayuda con un Crackme en: 18 Julio 2010, 14:10 pm
Buenas,

Estoy jugando un poco con unos crackmes y estoy con uno que no sé resolver. Me explico:

Llego a la rutina que calcula el serial y es como sigue:
Código:
004013C0  /$ 60             PUSHAD
004013C1  |. C1C0 02          ROL EAX,2
004013C4  |. A3 6D314000   MOV DWORD PTR DS:[40316D],EAX
004013C9  |. 05 79740000    ADD EAX,7479
004013CE  |. 35 33323100    XOR EAX,313233
004013D3  |. C1E0 06         SHL EAX,6
004013D6  |. A3 72314000    MOV DWORD PTR DS:[403172],EAX
004013DB  |. 61             POPAD

Hasta donde entiendo, lo que hace es (en decimal):

Multiplico por 4 (en realidad se añaden al final del número en binario dos ceros lo que es lo mismo que multiplicar por 4)
Le sumo 29.817
Hago un XOR con 3.224.115
Multiplico por 64 (técnicamente no es esto pero el resultado que obtengo es el mismo, no?)

Cuando acaba la rutina, lo compara con 3.272.071.856 y en función de eso decide si es válido o no. Por lo que entiendo, la solución a este problema es:

Código:
x = {XOR [(3.272.071.856/64) , 3.224.115] - 29.817}/4

El resultado que obtengo de esto es 13.577.784 (o 13.577.783 si hago las operaciones en hexadecimal). En cualquier caso cuando introduzco el serial, el resultado después de las operaciones el 3.272.071.691.

Haciendo todas las operaciones en hexadecimal el número con el que se compara es el C307DA80 y el que obtengo usando mi serial C307DA0B, siendo la diferencia entre estos dos números en hexadecimal de 75 (117 en decimal), que es distinto de la diferencia si hago todos los cálculos en decimal.

No tengo muy claro el porqué de esto y quería saber si alguien me lo podría explicar.

Un saludo
7  Seguridad Informática / WarZone / Hack-Web_Atacame en: 5 Mayo 2008, 18:04 pm
Buenas! Tengo el siguiente problema:
He encontrado un fallo de XSS de los de la prueba de "Atácame!" pero no consigo leer el hash dinámicamente. He probado desde la propia página (atkm.php) usando la barra de direcciones para ver si conseguía sacar algo pero para código del estilo de "javascript:alert(document.getElementsByTagName("pre")" y similares no consigo que salga nada más que un "[object HTMLCollection]". El problema (a mi juicio) está en el estupido "alert(" que precede a la página y no sé cómo evitarlo. A ver si alguien me puede echar una mano.

Un saludo!

EDITO:me alegro de que nadie me contestara. Ahora ya sé la ***** que hacía y lo pobre de la pregunta. Si es que la ignorancia es la madre del atrevimiento, pero es lo que toca para de aprehender. ;D
8  Seguridad Informática / WarZone / Hack-Web_Carrito en: 6 Junio 2007, 17:35 pm
Buenas!

Estaba dándole un rato al warzone y frustrándome con el carrito cuando me encontré con un fallo XSS en esa prueba. Mi pregunta es si el fallo es parte de la solución o no estaba planeado.

Saludos
9  Programación / PHP / Leyendo variables en: 9 Mayo 2007, 18:07 pm
Hola. Tengo una duda y no se bien como formularla. No tengo ni papa de PHP y tengo ya el programa hecho pero en una de las variables, que leo con el HTTP_GET_VARS[] , los valores que le tocan suelen tener incluido el símblolo "&" con lo que la mitad de la variable queda sin ser leida. Cómo hago para solucionarlo? Gracias por su ayuda
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines