Página 1 de 1

ayuda on la api OpenProcessToken

Publicado: 23 Jul 2009, 03:26
por bloodday
pues cuando llamo a esta api me da error "no Acces" usando como parametros el handle del proceso que hace la llamada (por default es 0xFFFFFFFF), la constante 0x20 (que equivale a TOKEN_ADJUST_PRIVILEGES) y null en el ultimo parametro.

e revisado la msdn, otras paginas que me ha lanzado el semi-dios google, y nada... T.T

la llamada seria la siguiente:

en ASM:

Call GetCurrentProcess
Push 0
Push 20
Push Eax
Call OpenProcessToken

en VB

Dim hToken as long
hProcess = GetCurrentProcess()
res = OpenProcessToken(hProcess, 20 , hToken)

en C
bueno la verdad poco se sobre y lo que sabia se me olvido pues dure serca de mes y medio casi que sin tocar el pc.

saludos

Re: ayuda on la api OpenProcessToken

Publicado: 23 Jul 2009, 04:01
por cobein
Es 20 hex, fijate de tener los privilegios adecuados y posiblemente necesites TOKEN_QUERY tambien

Re: ayuda on la api OpenProcessToken

Publicado: 23 Jul 2009, 04:07
por bloodday
si, se que es 20 en hex, pero no esta especificado en "el codigo de la llamada" por que no recuerdo como hacerlo. lo que estoy haciendo es un injerto a un .exe por lo tanto no hay que espeificar si no que todo se toma como un numero hexa.

on token_query no eh Provado. vere si es eso.

saludos y gracias

Re: ayuda on la api OpenProcessToken

Publicado: 23 Jul 2009, 04:11
por cobein
Sea como fuere, 20 no es &h20, 0x20 o 20h, supongo que estas parchando o haciendo un shellcode... pero bueno desde ya te digo que no es lo mismo.

Re: ayuda on la api OpenProcessToken

Publicado: 23 Jul 2009, 05:24
por tercer_ojo
bloodday agregó el codigo vb para que el ejemplo sea más claro. En realidad cobein también tiene razón: si quisieramos compilar la llamada tal cual está expresada en vb, no funcionaría tal cual se requiere. pero como bloodday va a meter ese '20' en el .exe (y no en vb), la API de windows lo presume hexadecimal, por lo que el fallo quizá se deba a una cuestión de privilegios. Abrir un proceso (aún con SE_DEBUG_PRIVILEGE) no te habilita necesariamente a toquetear sus tokens. Para abrir tokens necesitás los permisos subyacentes. Y por lo que veo, estás intentando hacer que un proceso abra el token de otro, que tiene privilegios más elevados. Los privilegios administrativos no dan control sobre los procesos SYSTEM, y estos últimos son los únicos que pueden manipular todos los objetos y procesos ring0.

Re: ayuda on la api OpenProcessToken

Publicado: 23 Jul 2009, 08:51
por Thor
El problema es que si está compilando ese push 20, y el compilador por defecto toma los números como decimales después cuando pase la shellcode estará usando un 20d.

Será cosas de permisos, con ProcessExplorer creo que se pueden ver detalladamente por cada proceso.

Re: ayuda on la api OpenProcessToken

Publicado: 27 Jul 2009, 19:20
por bloodday
solucionado... lo que pasa es que lo estaba compilando con RadASM usando el macro "invoke" y se me olvido poner "addr" antes de una variable que contiene un puntero.

pero en radasm no lo puse como dije aca, si no que use TOKEN_ADJUST_PRIVILEGES que esta como constante por defecto.

ahora, lo que no se es como manipular una estructura en ASM... si alguien sabe, pues lo necesito.

pd: mi idea es ir acostumbrandome al IDE, y copiar los bytes del compilado para injertarlos a cualquier exe (con sus respectivos cambios por supuesto)

pd2: verbal estoy intentando que este proceso edite su token para llegar a system... una vez hecho system este sera libre para volar, o para estrellarse xD

saludos

Re: ayuda on la api OpenProcessToken

Publicado: 28 Jul 2009, 03:07
por tercer_ojo
Aleluya!
Si le puedo servir, aún de espectador lustrabotas, avise.

Re: ayuda on la api OpenProcessToken

Publicado: 03 Ago 2009, 08:43
por Psymera
bloodday escribió:solucionado... lo que pasa es que lo estaba compilando con RadASM usando el macro "invoke" y se me olvido poner "addr" antes de una variable que contiene un puntero.

pero en radasm no lo puse como dije aca, si no que use TOKEN_ADJUST_PRIVILEGES que esta como constante por defecto.

ahora, lo que no se es como manipular una estructura en ASM... si alguien sabe, pues lo necesito.

pd: mi idea es ir acostumbrandome al IDE, y copiar los bytes del compilado para injertarlos a cualquier exe (con sus respectivos cambios por supuesto)

pd2: verbal estoy intentando que este proceso edite su token para llegar a system... una vez hecho system este sera libre para volar, o para estrellarse xD

saludos
pero segun recuerdo el ajuste de token de un proceso bajo a uno alto fue eliminado en el sp2 del xp xP
recuerdo ek era un metodo muy okupado para elevar privilegios solo cambiando su token buscare el link y te lo paso
por ke segun recuerdo es viejo y ya parchado eso

namas no ayo el link
pero aye uno parecido
[Enlace externo eliminado para invitados]

buscare en msi viejos respaldos por ke si guarde lo de modificacion de token
y recuerdo ke ahbia sido parchado