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)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Source] Conseguir privilegios (AdjustTokenPrivileges)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Source] Conseguir privilegios (AdjustTokenPrivileges)  (Leído 6,492 veces)
nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
[Source] Conseguir privilegios (AdjustTokenPrivileges)
« en: 11 Febrero 2008, 20:32 pm »

Bueno pues intentando matar procesos SYSTEM que corrian como servicios desde una cuenta Admin me di cuenta que el propio taskmgr.exe lograba matarlos, yo desde VB6.0 no y me puse a investigar...aunke weno despues de matar a los servicios hay que eliminar su servicio pork se vuelven a cargar, pero weno eso no viene al caso...

Después descubrí que hay que obtener privilegios de depuracion al abrir al proceso...y para eso hay que usar la API AdjustTokenPrivileges...obviamente tendrás que ser Administrador

Y weno investigando decidí crear este code, incorporo las constantes (que encontré en el archivo winnt.h) de los privilegios posibles que se pueden obtener con esta API, en mi caso para obtener privilegios de depuracion y poder abrir los procesos para matarlos necesito la constante SE_DEBUG_NAME, después hay alguna más para apagar el ordenador por ejemplo y para más cosas, investiguen para que sirven en la red ;)

Y weno aki el code, copiadlo en un modulo...

Código
  1. 'Codigo creado por nhaalclkiemr
  2. 'Se ruega mantener este texto
  3.  
  4. Option Explicit
  5.  
  6. 'Constantes
  7. Private Const ANYSIZE_ARRAY = 1
  8. Private Const TOKEN_ADJUST_PRIVILEGES = &H20
  9. Private Const TOKEN_QUERY = &H8
  10. Private Const SE_PRIVILEGE_ENABLED = &H2
  11.  
  12. 'Tipos
  13. Private Type LUID
  14.    LowPart As Long
  15.    HighPart As Long
  16. End Type
  17. Private Type LUID_AND_ATTRIBUTES
  18.        pLuid As LUID
  19.        Attributes As Long
  20. End Type
  21. Private Type TOKEN_PRIVILEGES
  22.    PrivilegeCount As Long
  23.    Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
  24. End Type
  25.  
  26. 'Declaraciones
  27. Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
  28. Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLUID As LUID) As Long
  29. Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
  30. Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
  31.  
  32. 'Constantes de privilegios
  33. Public Const SE_CREATE_TOKEN_NAME As String = "SeCreateTokenPrivilege"
  34. Public Const SE_ASSIGNPRIMARYTOKEN_NAME As String = "SeAssignPrimaryTokenPrivilege"
  35. Public Const SE_LOCK_MEMORY_NAME As String = "SeLockMemoryPrivilege"
  36. Public Const SE_INCREASE_QUOTA_NAME As String = "SeIncreaseQuotaPrivilege"
  37. Public Const SE_UNSOLICITED_INPUT_NAME As String = "SeUnsolicitedInputPrivilege"
  38. Public Const SE_MACHINE_ACCOUNT_NAME As String = "SeMachineAccountPrivilege"
  39. Public Const SE_TCB_NAME As String = "SeTcbPrivilege"
  40. Public Const SE_SECURITY_NAME As String = "SeSecurityPrivilege"
  41. Public Const SE_TAKE_OWNERSHIP_NAME As String = "SeTakeOwnershipPrivilege"
  42. Public Const SE_LOAD_DRIVER_NAME As String = "SeLoadDriverPrivilege"
  43. Public Const SE_SYSTEM_PROFILE_NAME As String = "SeSystemProfilePrivilege"
  44. Public Const SE_SYSTEMTIME_NAME As String = "SeSystemtimePrivilege"
  45. Public Const SE_PROF_SINGLE_PROCESS_NAME As String = "SeProfileSingleProcessPrivilege"
  46. Public Const SE_INC_BASE_PRIORITY_NAME As String = "SeIncreaseBasePriorityPrivilege"
  47. Public Const SE_CREATE_PAGEFILE_NAME As String = "SeCreatePagefilePrivilege"
  48. Public Const SE_CREATE_PERMANENT_NAME As String = "SeCreatePermanentPrivilege"
  49. Public Const SE_BACKUP_NAME As String = "SeBackupPrivilege"
  50. Public Const SE_RESTORE_NAME As String = "SeRestorePrivilege"
  51. Public Const SE_SHUTDOWN_NAME As String = "SeShutdownPrivilege"
  52. Public Const SE_DEBUG_NAME As String = "SeDebugPrivilege"
  53. Public Const SE_AUDIT_NAME As String = "SeAuditPrivilege"
  54. Public Const SE_SYSTEM_ENVIRONMENT_NAME As String = "SeSystemEnvironmentPrivilege"
  55. Public Const SE_CHANGE_NOTIFY_NAME As String = "SeChangeNotifyPrivilege"
  56. Public Const SE_REMOTE_SHUTDOWN_NAME As String = "SeRemoteShutdownPrivilege"
  57.  
  58. Public Function ObtenerPrivilegios(ByVal privilegio As String) As Long
  59. 'Devolvera 0 si se produjo algun error, sino devolvera un valor distinto de cero (normalmente 1)
  60. Dim lpLUID As LUID
  61. Dim lpToken As TOKEN_PRIVILEGES
  62. Dim lpAntToken As TOKEN_PRIVILEGES
  63. Dim hToken As Long
  64. Dim hProcess As Long
  65. Dim res As Long
  66.  
  67. hProcess = GetCurrentProcess()
  68. res = OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)
  69. If res = 0 Then
  70.    MsgBox "Se produjo un error al abrir el proceso", vbCritical
  71.    Exit Function
  72. End If
  73. res = LookupPrivilegeValue(vbNullString, privilegio, lpLUID)
  74. If res = 0 Then
  75.    MsgBox "No se pudo obtener el LUID", vbCritical
  76.    Exit Function
  77. End If
  78. With lpToken
  79.    .PrivilegeCount = 1
  80.    .Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
  81.    .Privileges(0).pLuid = lpLUID
  82. End With
  83.  
  84. res = AdjustTokenPrivileges(hToken, False, lpToken, Len(lpToken), lpAntToken, Len(lpAntToken))
  85. If res = 0 Then
  86.    MsgBox "No se pudo llevar a cabo el ajuste de privilegios", vbCritical
  87.    Exit Function
  88. End If
  89. ObtenerPrivilegios = res
  90. End Function

Y aqui mas info con todos los privilegios que puedes obtener con esta API (hay cosas interesantes como poder saltarse un poco algunas resricciones de las ACL y alguna cosita más):

http://msdn2.microsoft.com/en-us/library/bb530716(VS.85).aspx

Para tios con tanta idea de Inglés como yo: http://translate.google.com/translate?hl=es&u=http%3A%2F%2Fmsdn2.microsoft.com%2Fen-us%2Flibrary%2Fbb530716(VS.85).aspx  :xD

Espero que os sirva, saludos ;)


« Última modificación: 1 Abril 2008, 16:46 pm por nhaalclkiemr » En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: [Source] Conseguir privilegios (AdjustTokenPrivileges)
« Respuesta #1 en: 11 Febrero 2008, 20:47 pm »

Tiene muy wena pinta, y tiene su merito hacerlo en VB, q tardas mas en delarar las constantes q en usar el api xDD
Te lo añadi a la biblioteca de sources ;)


En línea

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: [Source] Conseguir privilegios (AdjustTokenPrivileges)
« Respuesta #2 en: 11 Febrero 2008, 23:31 pm »

Jeje gracias pero si la verdad es que si :xD

Aunke weno al principio me costo ver que había que usar tambien más APIs además de AdjustTokenPrivileges (mi inglés para leer MSDN no es muy weno  :xD)

Ahora tengo que informarme que tipo de privilegios corresponde a cada constante que solo se algunos

Saludos ;)
« Última modificación: 11 Febrero 2008, 23:34 pm por nhaalclkiemr » En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: [Source] Conseguir privilegios (AdjustTokenPrivileges)
« Respuesta #3 en: 12 Febrero 2008, 01:53 am »

Esta muy bueno este aporte porque esta api en mi opinion es una de las más des, des  (des no se) no se pero cuesta de encontrar información.

Ademas que es costoso usarla, si no se declara todo bien :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(Consulta) Conseguir privilegios de admnistrador? « 1 2 »
Windows
gramsch 10 5,774 Último mensaje 30 Septiembre 2014, 22:39 pm
por WHK
C++ Conseguir Privilegios para inyectar en procesos
Análisis y Diseño de Malware
dapz 1 2,770 Último mensaje 8 Abril 2017, 16:37 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines