информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Вот блин, а я тебе такую статейку в интерналсах отгрохал 08.01.03 13:59  Число просмотров: 1380
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Только сейчас заметил что ее там нету.
Наверное нет глюканул или штрафанули меня втихую :-)), хотя в скрапе вроде нету.

Ладно попробую восстановить по памяти. (Повторно детально копаться и описывать все структуры в лом - если чего не хватит - пиши)
Есть функции
ZwOpenProcessToken opens the token of a process.
NTSYSAPI NTSTATUS NTAPI ZwOpenProcessToken( IN HANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, OUT PHANDLE TokenHandle ); Parameters ProcessHandle A handle to a process object. The handle must grant PROCESS_QUERY_INFORMATION access. DesiredAccess Specifies the type of access that the caller requires to the token object. This parameter can be zero, or any combination of the following flags: TOKEN_ASSIGN_PRIMARY Can be assigned as primary token TOKEN_DUPLICATE Can be duplicated TOKEN_IMPERSONATE Can be assigned as impersonation token TOKEN_QUERY Can be queried TOKEN_QUERY_SOURCE Can be queried for source TOKEN_ADJUST_PRIVILEGES Token privileges can be adjusted TOKEN_ADJUST_GROUPS Token groups can be adjusted TOKEN_ADJUST_DEFAULT Token default ACL and owner can be adjusted TOKEN_ADJUST_SESSIONID Token session id can be adjusted TOKEN_ALL_ACCESS All of the preceding + STANDARD_RIGHTS_REQUIRED TokenHandle Points to a variable that will receive the token object handle if the call is successful. Return Value Returns STATUS_SUCCESS or an error status, such as STATUS_ACCESS_DENIED or STATUS_INVALID_HANDLE.
И ZwOpenThreadToken opens the token of a thread.
NTSYSAPI NTSTATUS NTAPI ZwOpenThreadToken( IN HANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN BOOLEAN OpenAsSelf, OUT PHANDLE TokenHandle ); Parameters ThreadHandle A handle to a thread. The handle must grant THREAD_QUERY_INFORMATION access. DesiredAccess Specifies the type of access that the caller requires to the token object. This parameter can be zero, or any combination of the following flags: TOKEN_ASSIGN_PRIMARY Can be assigned as primary token TOKEN_DUPLICATE Can be duplicated TOKEN_IMPERSONATE Can be assigned as impersonation token TOKEN_QUERY Can be queried TOKEN_QUERY_SOURCE Can be queried for source TOKEN_ADJUST_PRIVILEGES Token privileges can be adjusted TOKEN_ADJUST_GROUPS Token groups can be adjusted TOKEN_ADJUST_DEFAULT Token default ACL and owner can be adjusted TOKEN_ADJUST_SESSIONID Token session id can be adjusted TOKEN_ALL_ACCESS All of the preceding + STANDARD_RIGHTS_REQUIRED OpenAsSelf A boolean specifying whether the security context of the process should be used to check the access to the token object. If OpenAsSelf is false, the security context of the thread is used, which may be an impersonation context. TokenHandle Points to a variable that will receive the token object handle if the call is successful. Return Value Returns STATUS_SUCCESS or an error status, such as STATUS_ACCESS_DENIED, STATUS_INVALID_HANDLE, or STATUS_NO_TOKEN. Related Win32 Functions OpenThreadToken. Remarks OpenThreadToken exposes the full functionality of ZwOpenThreadToken. TOKEN_ADJUST_SESSIONID is only valid in Windows 2000.
Хотя я бы советовал открывать именно ZwThreadToken, так как он может открыть и глобальный для процесса токен и имперсонированный токен для отдельно взятого потока. В качестве хендлов можешь передавать NtOpenProcess() и NtOpenThread() (есть в DDK).
С открытым токеном можно сделать следующее:
1) Закрыть ZwClose() или NtClose() :-))))
2) ZwQweryInformationToken()
ZwQueryInformationToken retrieves information about a token object.
NTSYSAPI NTSTATUS NTAPI ZwQueryInformationToken( IN HANDLE TokenHandle, IN TOKEN_INFORMATION_CLASS TokenInformationClass, OUT PVOID TokenInformation, IN ULONG TokenInformationLength, OUT PULONG ReturnLength ); Parameters TokenHandle A handle to a token object. The handle must grant TOKEN_QUERY access for most information classes. To query the token source TOKEN_QUERY_SOURCE access must be granted. TokenInformationClass Specifies the type of token information to be queried. The permitted values are drawn from the enumeration TOKEN_INFORMATION_CLASS, described in the following section. TokenInformation Points to a caller-allocated buffer or variable that receives the requested token information. TokenInformationLength Specifies the size in bytes of TokenInformation, which the caller should set according to the given TokenInformationClass. ReturnLength Points to a variable that receives the number of bytes actually returned to TokenInformation; if TokenInformationLength is too small to contain the available data, ReturnLength points to the number of bytes required for the available data. Return Value Returns STATUS_SUCCESS or an error status, such as STATUS_ACCESS_DENIED, STATUS_INVALID_HANDLE, STATUS_INVALID_INFO_CLASS, or STATUS_BUFFER_TOO_SMALL. Related Win32 Functions GetTokenInformation. Windows NT/2000 Native API 168 Remarks GetTokenInformation exposes the full functionality of ZwQueryInformationToken. typedef enum _TOKEN_INFORMATION_CLASS { TokenUser = 1, // 1 Y N TokenGroups, // 2 Y N TokenPrivileges, // 3 Y N TokenOwner, // 4 Y Y TokenPrimaryGroup, // 5 Y Y TokenDefaultDacl, // 6 Y Y Windows NT/2000 Native API 169 TokenSource, // 7 Y N TokenType, // 8 Y N TokenImpersonationLevel, // 9 Y N TokenStatistics, // 10 Y N TokenRestrictedSids, // 11 Y N TokenSessionld // 12 Y Y } TOKEN_INFORMATION_CLASS;

Все классы описывать не буду - опять таки в лом, здесь нужон TokenUser - инфа возвращается в следующей структуре
typedef struct _TOKEN_USER { // Information Class 1 SID_AND_ATTRIBUTES User; } TOKEN_USER, *PTOKEN_USER;
SID_AND_ATTRIBUTES - описан в winnt.h, тебе оттуда нужен SID.
Для kernel-mode имя юзера тебе не надо - не встречал ни одной фунции, работающей с ним - всем нужен только ACCESS_TOKEN. Хотя как-нить можно использовать имя только из user-mode (вывести где-нить на экран), а уж после того, как из дривера передан sid - его можно преобразовать в имя: LookupAccountSid() - описан в MSDN-е, находится в advapi32.dll

Бест регардс - если чего - пиши
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach