Обфускация LDAP. Как скрыть разведку Active Directory от простых детектов

Обфускация LDAP. Как скрыть разведку Active Directory от простых детектов

Содержание статьи

Внут­ри боль­шинс­тва скрип­тов раз­ведки работа­ет LDAP. Нап­ример, ког­да ты запус­каешь скрипт GetUserSPNs. py из Impacket, он отправ­ляет LDAP-зап­рос в служ­бу катало­гов со сле­дующим филь­тром:

Этот филь­тр зап­рашива­ет все вклю­чен­ные учет­ные записи поль­зовате­лей с непус­тым SPN — то есть учет­ные записи, для которых мож­но зап­росить билет TGS.

Сбор­щики BloodHound получа­ют спи­сок всех объ­ектов в Directory Service с помощью раз­ных зап­росов. Нап­ример, RustHound ис­поль­зует зап­рос такого вида:

Ана­логич­но зап­рашива­ется информа­ция по LDAP при раз­ведке сер­висов AD CS, SCCM и дру­гих.

Од­нако у команд защиты пос­тепен­но появ­ляет­ся все боль­ше спо­собов отлавли­вать раз­ведку инфраструк­туры через LDAP. В сегод­няшней статье раз­берем эти методы, а так­же пос­мотрим, какие есть воз­можнос­ти для обфуска­ции зап­росов от средств защиты.

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

Краткая теория LDAP и служб каталогов

Пе­ред тем как перей­ти к обна­руже­нию атак и спо­собам защиты, давай сна­чала раз­берем­ся, что такое LDAP и как он работа­ет. Если по‑прос­тому, LDAP — это база дан­ных AD. Дан­ные хра­нят­ся в служ­бе катало­гов (Directory Service) в виде дре­вовид­ной струк­туры. Объ­ект домена — корень, от которо­го отхо­дят вет­ви с катего­риями дан­ных.

Клас­сичес­кий LDAP-зап­рос Search сос­тоит из сле­дующих полей:

BaseObject ( StartingNode ) — точ­ка, отку­да нач­нется поиск. Нап­ример, это может быть весь домен или отдель­ная вет­ка с поль­зовате­лями, если тебе инте­рес­ны толь­ко объ­екты поль­зовате­лей;

Scope — параметр LDAP-зап­роса Search, который опре­деля­ет глу­бину поис­ка. Зна­чение subtree подой­дет, если нужен поиск во вло­жен­ных вет­ках, onelevel — если нужен поиск на одном уров­не, без углубле­ния в вет­ки. Еще есть base — поиск толь­ко по одно­му объ­екту, базе;

филь­тр зап­роса — усло­вие, которо­му дол­жны соот­ветс­тво­вать иско­мые объ­екты;

зап­рашива­емые атри­буты — атри­буты, которые будут зап­рошены у най­ден­ных объ­ектов.

Сам филь­тр зап­роса сос­тоит из сле­дующих час­тей:

ис­комый атри­бут;

зна­чение;

опе­ратор срав­нения;

от­рицание — если нуж­но исклю­чить опре­делен­ные объ­екты.

При­мер филь­тра зап­роса:

В резуль­тате при­мене­ния филь­тра сер­вер вер­нет нам все объ­екты, у которых в атри­буте name есть зна­чение Bob .

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

9990 рублей 5000 р.

950 р.

За последние годы мы слышали про блокчейн много: про революцию финансов, про свободные ден…

← Cybersecurity