Páginas: [1] 2
|
 |
|
Autor
|
Tema: <-!-> Herramientas: findjmp, offsets, etc.. (Actualizado) (Leído 13435 veces)
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.525
|
|
|
|
|
« Última modificación: 12 Agosto 2008, 16:16 por sirdarckcat »
|
En línea
|
|
|
|
mdada
Desconectado
Mensajes: 184
f
|
Corrijanme si estoi mal (y espero no estarlo) pero ese es un registro de ensamblador, o no? esp, edi,ebp,eax , ax,cx,bx, ip,cs, etc... (vicety verá que no se llega a ningun lugar por crear virus? io ahora aprendo asm que ya me fastidié del pascal y Visual Shit ;-)) saludos!
|
|
|
|
|
En línea
|
|
|
|
dxr
Colaborador
Desconectado
Mensajes: 2.568
|
creo q no habeis entendido la funcion de esto.
A ver es post anteriores se abla de q en los exploits hacen un overflow a unas librerias... y no todas se cargan en el mismo sitio dependiendo del idioma del windows... si el exploit esta preparao pa atacar en la direccion a y en el windows en expañol esta en la c ya no funciona esto lo q ace es buscar q el punto donde ay q atacar es c...
|
|
|
|
|
En línea
|
Hacer preguntas concretas, claras y aportando toda la documentación necesaria. De lo contrario, no tendreis una respuesta clara.
|
|
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.525
|
Los offsets se buscan para cambiarlos en el exploit y/o en la shellcode, para que dicho exploit SIRVA en el SO que kieres atacar 
|
|
|
|
|
En línea
|
|
|
|
elvizo
Desconectado
Mensajes: 109
Takedown
|
entonces cual es la funcion q realiza un offset? se encarga de indicar cual es el so q corre? esq me he hecho un lio, xq entonces, tu averiguas por ejemplo los offset de windows y coges y los cambias por los q hay en un exploit para linux y te tira el exploit en windows????? espero me aclaren ???
|
|
|
|
|
En línea
|
dsH-Team
|
|
|
®®
Colaborador
Desconectado
Mensajes: 5.270
|
imaginate que el exploit sobreescribe esp con la direccion donde se encuentra la shellcode, entonces tienes que buscar en una libreria que use el programa el jmp esp, entonces saltara a el codigo de tu shellcode. esa direccion no es = en todos los windows, cambia segun versiones sps etc, si usas una direccion cualquiera lo mas normal es que el programa que tiene el fallo pete, pq a saber donde apunta esa direccion.
|
|
|
|
|
En línea
|
|
|
|
elvizo
Desconectado
Mensajes: 109
Takedown
|
la verdad q es una buena idea, ya que yo tampoco entiendo muy bien eso de sacar los offsets y apuntarlos en la direccion de la shellcode aunque sea un trabajo algo tedioso para los "pro" de este foro q nos puedan demostrar como se hace, creo q seria muy bueno explicarlo bien, y si sale una buena expliacion pos a partir de ella se crea un texto para q futuros wannabies q kieran aprender acerca de este temna tan solo tengan q leer el texto y no volv er a preguntar...
|
|
|
|
|
En línea
|
dsH-Team
|
|
|
®®
Colaborador
Desconectado
Mensajes: 5.270
|
|
|
|
|
|
En línea
|
|
|
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.525
|
Bueno, como estuve buscando el programita (Findjmp) por aqui, y sabiendo que es muy util, pues le pongo chinchetazo....
Salu2
|
|
|
|
|
En línea
|
|
|
|
Kintaro
Desconectado
Mensajes: 74
|
estoy probando el exploit rpc2 con shellcode de shell, para buscar el offset he visto que pone algo asi: "\xeb\x1e\x01\x00"// FOR CN SP3/SP4+-MS03-26 "\x4C\x14\xec\x77"// TOP SEH FOR cn w2k+SP4,must modify to SEH of your target's os
el seh es el setupexceptonhandler , no? y la primera linea que es? busque con el olly la direccion de una llamada a seh y cambie pero seguia sin funcionar, la verdad es q no se a que se refieren esas lineas, otras veces lo explica mejor, por favor aver si podeis echarme una mano y echamos a andar el rpc2 cn shell, salu2 thxthx
|
|
|
|
|
En línea
|
¡Benkyo, benkyo, benkyo!
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.580
|
A ver... no se pq abres este post aquí, ya q no mencionas nada del Findjmp... pa la prox, abre un nuevo tema. Tb podías haber dicho q estás hablando del exploit RPC2 @ http://www.k-otik.com/exploits/10.09.rpc2universal.c.php, q me ha costao encontrarlo... La mitad del código fuente está comentado, en plan chapuza... asi q yo no me fío nada de este código! No da mucha confianza y paso de tirarme horas buscando offsets pa na. Tío, sé q es una putada pq MS03-039 es una buena vulnerabilidad y no se han publicao exploits q funcionen con éxito, pero creo q es mejor pasar de este exploit RPC2 (o conoces de buena fe q a alguien le ha funcionao??) De todas formas, el SEH pointier creo q hacía referencia al kernel32.dll, y sí, se desensambla con el olly. La primera linea ni idea... Bueno, si quieres echar a andar un exploit a ver q te parece mi idea: Ahora casi todo el mundo q tiene Win XP tiene puesto el SP1 así q pq no echamos a andar el MS03-043 de Adik??. Llevo mucho tiempo queriendo probarlo con éxito, pero definitivamente no funciona contra SP0 y no he podido probarlo contra SP1. Contra SP1 tiene q funcionar fijo, pq he visto por internet análisis sobre este exploit, vease: Exploiting Heap Overflow in Microsoft Messenger Service with msgr07.exe by Patti Lawrence www.giac.org/practical/GCIH/Patti_Lawrence_GCIH.pdfAn Analysis of the Windows Messenger Service Buffer Overflow Vulnerability by Peter Hewitt www.giac.org/practical/GCIH/Peter_Hewitt_GCIH.pdfPos eso, si quieres seguir trabajando con RPC2, como tu quieras, pero creo q estaría bien intentar sacar el exploit de Adik, q es bastante más fiable q el RPC2. Si tienes oportunidad de trabajar con este exploit sobre Win XP SP1, yo te ayudo en lo q pueda... Ciao Salu2
|
|
|
|
« Última modificación: 22 Agosto 2004, 09:59 por Gospel »
|
En línea
|
|
|
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.525
|
Bueno, con este programita, puedes conocer el offset de por ejemplo System() en la msvcrt.dll o de WinExec(), o de lo que necesites (nunca se sabe  ) Al compilarlo y ejecutarlo, te dara la direccion en la memoria de la funcion que le especifiques por parametro dentro de la DLL que le especifiques por parametro  #include <stdio.h> #include <windows.h> typedef VOID (*MYPROC)(LPTSTR);
int main (int argc, char **argv) { char dll[100]; char funcion[100]; HINSTANCE libreria; MYPROC procadd;
printf ("Busca offsets xDD. Introduce como primer argumento el nombre de la DLL,\n"); printf ("y como segundo argumento la funcion dentro de esa DLL\n"); printf ("Por ejemplo %s msvcrt.dll system\n\n", argv[0]); if (argc != 3){ printf ("Introduce 2 argumentos como se explica mas arriba!!!\n"); return 1; } memset(dll,0,sizeof(dll)); memset(funcion,0,sizeof(funcion)); memcpy (dll, argv[1], strlen(argv[1])); memcpy (funcion, argv[2], strlen(argv[2])); libreria = LoadLibrary(dll); procadd = (MYPROC)GetProcAddress (libreria,funcion); printf ("Offset de %s en la DLL %s es %x", funcion, dll, procadd); return 0; } En este caso, si probais el ejemplo, sale: F:\Rojodos>system_offset msvcrt.dll system Busca offsets xDD. Introduce como primer argumento el nombre de la DLL, y como segundo argumento la funcion dentro de esa DLL Por ejemplo system_offset msvcrt.dll system
Offset de system en la DLL msvcrt.dll es 77bf8044 Asi se pueden calcular rapidamente offsets, si tener que trastear con el Olly. Entre esto (para calcular los offsets de las APIs) y el findjmp (para buscar jmp esp, o jmp ebp, etc...) se pueden codear exploits rapidamente para cualquier sistema Windows  Sin necesidad de trastear con el olly. Salu2
|
|
|
|
|
En línea
|
|
|
|
Crack_X
Anti-War
Colaborador
Desconectado
Mensajes: 2.324
Peace & Love
|
Se publico un findjmp2 hoy en bugtraq . El primer findjmp fue hecho por Eeye para encontrar jmp/call/push en una dll cargada. Esta 2da version fue hecha por Hat-squad.com , incluye pop/ret scanner y logea lo que encuentra con findjmp en findjmp.txt.
|
|
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.480
|
Quería poner este mismo código en VB, por si a alguno le interese, ya que no todos saben programar en C. Además es interesante poder comparar los codes en distintos lenguajes  Sub Main() Dim sLib$, sFunc$ Dim sCmdLine$ Dim hLib& Dim lProcAddr& Dim sMsg$
'Obtiene la linea de comandos. ' sCmdLine = Command$ If sCmdLine Like vbNullString Then sMsg = "Debes ingresar la librería y el nombre de la función:" & vbCrLf & vbCrLf & _ "USO: FndOffset librería función"
Call MsgBox(sMsg) Exit Sub End If 'Obtiene los argumentos desde la linea de comandos. ' sLib = RTrim$(Left$(sCmdLine, InStr(1, sCmdLine, " "))) sFunc = Trim$(Mid$(sCmdLine, InStr(1, sCmdLine, " "))) 'Carga la librería en memoria y devuelve 'la dirección en donde se cargó. ' hLib = LoadLibrary(sLib) If hLib Then 'Obtiene el offset relativo (RVA) de la función ' lProcAddr = GetProcAddress(hLib, sFunc) If lProcAddr Then sMsg = "El offset de '" & sFunc & "' en '" & sLib & "' es 0x" & _ Hex$(lProcAddr) & " (" & lProcAddr & ")"
Call Clipboard.SetText(sMsg, vbCFText) 'Copia los datos al portapapeles. Call MsgBox(sMsg, vbExclamation) Call MsgBox("Los datos se copiaron al portapapeles.", vbInformation) Else Call MsgBox("No se encontró la función u ordinal '" & sFunc & "' en '" & sLib & "'", vbCritical) End If 'Descarga la librearía de memoria. ' Call FreeLibrary(hLib) Else Call MsgBox("No se pudo cargar la librería '" & sLib & "'", vbCritical) End If End Sub
|
|
|
|
« Última modificación: 25 Marzo 2005, 16:18 por Slasher Keeper »
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
Dark_Knight
Desconectado
Mensajes: 98
|
Hola Tengo una pregunta para Rodojos, en tu tutorial explicas un metodo sencillo de hacer un exploit completo.....pero en tus ejemplos al inicio esta el codigo de vuln1, despues dices que puedo ver la vulnerabilidad por medio del OllyDbg y que al colocar el mas de 64 A´s vere en EIP 41414141 hasta aqui todo va bien, pero cuando veo las explicaciones todo es distinto porque cuando busco por ejemplo: 004012CD |. 68 80124000 PUSH vuln1.00401280 ; /format = "Introduzca un argumento al programa" 004012D2 |. E8 79170000 CALL <JMP.&msvcrt.printf> ; \printf 004012D7 |. 83C4 10 ADD ESP,10 004012DA |. EB 17 JMP SHORT vuln1.004012F3 004012DC |> 83EC 08 SUB ESP,8 004012DF |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C] 004012E2 |. 83C0 04 ADD EAX,4 004012E5 |. FF30 PUSH DWORD PTR DS:[EAX] ; /src 004012E7 |. 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48] ; | 004012EA |. 50 PUSH EAX ; |dest 004012EB |. E8 50170000 CALL <JMP.&msvcrt.strcpy> ; \strcpy 004012F0 |. 83C4 10 ADD ESP,10 todo me aparece muy distinto o no esta como aqui....como ADD ESP, 10 a mi no me aparece y me confundo demasiado.... lei que cambia por el sistema operativo que tenga cada uno y cosas asi, pero mejor te pregunto a ti, es por esa razon que me aparece diferente o porque no sale igual a los ejemplos ....y es una lastima para mi, porque esta muy bien realizado el tutorial y quisiera seguir aprendiendo de el. Ahorita estoy viendo el programa que pusiste aqui...y quisiera saber si aun es necesario utilizar el Olly o con el programa que pusiste junto con el findjmp puedo seguir realizando los ejemplos del tutorial......y si el codigo de la shell tiene algun fallo, porque al compilarlo en visual c++ me aparecen un errores que dicen "missing "{" before "_cdecl", "siza_t" y "main", ojala me puedas responder. GRACIAS 
|
|
|
|
|
En línea
|
El hombre no puede crear nada sin antes dar algo a cambio... para crear... algo del mismo valor debe perderse.... esa es la ley de la equivalencia de intercambio... y el que desafie esa ley se convertira en un desafio de las creencias del ser humano y de la existencia de dios....
|
|
|
|
Páginas: [1] 2
|
|
|
|