Pull to refresh
60
0
sn🥶vvcr💥sh @snovvcrash

Sr. Penetration Tester / Red Team Operator

Send message

Ни один зрелый нарушитель не будет проводить DCSync от имени пользовательской учетки, поэтому отбрасывать машинные УЗ – такое себе. Детектирование на основе фильтрации трафика / мониторинга IP-адреса источника DRSGetNCChanges – это да, норм тема.

Приветствую! Спасибо за комментарий, поправил листинг. Что касается смены хеша без прав ДА – это умеет делает API SamiChangePasswordUser из samlib.dll. Она (функция) не документирована, ближайшее описание живет в MS-SAMR. Работать с ней умеет SetNTLM.ps1 и мой скрипт из Impacket. Также не забывайте, что мы меняем пароль УЗ из-под этой самой УЗ, поэтому ничего удивительного, что мы можем изменить соответствующий хеш, нет ;-)

Мы с коллегами, кто сдавал обновленную версию, пришли к выводу, что ни ход экзамена, ни его сложность не изменились ;-)

Сдавал осенью 2021 года, поэтому на тот момент ограничений не было.

Из того, с чем я работал в контексте обхода защиты, «Касперский» всегда был в выигрышной позиции (его обходить труднее всего). В плане юзабилити лично мне он тоже нравится больше других вендоров, на домашней тачке уже давно стоит KIS, и я вполне доволен :)

Конечно, это тоже очень верная рекомендация. Однако зачастую решение отобрать у пользователей локального админа насовсем неприменимо из-за особенностей рабочего процесса сотрудников целевой компании, а рекомендовать всем сотрудникам «безопасно использовать» свои привилегированные локальные учетки не очень надежна в плане ее соблюдения :)

Поэтому лучше всего — на корню срубить потенциальный импакт, который дамп может дать злоумышленнику, а именно, исключить появление в нем привилегированных доменных УЗ.

Все верно. Плюс на токене процесса, который делает дамп, должна быть навешана (и активна) привилегия SeDebugPrivilege.

И правда похож, но я взял любительский арт с SCP-343. Почему-то это было первое, что пришло в голову =)
А почему нет? Можно было тащить целый urllib.request и просить html через urlopen(), а потом декодировать байты в текст, но зачем, если есть requests? По времени разницы особой не будет (грубый пример, но все же):
$ python3 -m timeit -s "from requests import get" -n 10 "get('http://www.linux-usb.org/usb.ids', timeout=10)"
10 loops, best of 3: 1.72 sec per loop

$ python3 -m timeit -s "from urllib.request import urlopen" -n 10 "urlopen('http://www.linux-usb.org/usb.ids', timeout=10).read().decode('cp1252')"
10 loops, best of 3: 3.05 sec per loop

Или Вы про само написание "import requests; requests.get()" вместо "from requests import get; get()"?
Тоже, когда игрался с реализацией статистических тестов, обзавелся целой кучей пробных последовательностей (псевдослучайных, которые только выглядят случайными, а на самом деле являются выходом вполне предсказуемого алгоритма, и истинно случайных — снятых с разных генераторов энтропии). Кому интересно, даже смог найти J
Да я же не возражаю, смотрится эффектно, и пускай)
В списке литературы неплохая статья + на англицкой вики есть публикация на эту тему. Даже вот еще одна.
Алгоритмизация — это, бесспорно, хорошо и правильно. Только тут дело не в ней. Обратите внимание, я не выпускаю конечный продукт а-ля «Переборщик паролей любой длины на все случаи жизни» — я всего лишь прохожу путь решения конкретной задачи с фиксированными входными данными (речь в которой, к тому же, идет о переборе не всех строк указанной длины над алфавитом, а лишь тех, которые удовлетворяют маске). В условиях ограниченного времени, отведенного на решение, мне все же видится естественным использование цикла for (при учете того, что существует #omp parallel for!), нежели чем попытки эффективно распараллелить первокурсные задачи по типу «Выпиши все префиксы длины N над данным множеством». Если вы об этом спрашивали в своем первом комментарии, то да — код именно такой в том числе и из-за #omp parallel for.
Мне подход с вложенными for видится естественным. Дело не в openmp, при желании можно обойтись и одним циклом (что собственно и делает collapse()). Но зачем, если так проще, легче читается и на производительности не сказывается?
Не понимаю недовольства — полный перебор на то и полный, чтобы проходить по каждому элементу множества От и До, и вложенные for в такой ситуации отлично с этим справляются. Что касается 32-символьных паролей, вообще не понял к чему этот вопрос. Мало того, что пароли длины 11 и выше уже не поддаются перебору при ряде условий, так еще и описанный алгоритм рассматривается в рамках конкретной задачи, где длина строго 8.
Тело цикла действительно нелицеприятное. Как было сказано, для #omp parallel for collapse(8) необходимо условие «идеально вложенных» циклов, поэтому пришлось выкручиваться.
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity