Пять утилит и техник, используемых пентестерами, о которых должен знать каждый сисадмин

Пять утилит и техник, используемых пентестерами, о которых должен знать каждый сисадмин

Автор: Jeremy Trinka

Давайте попробуем типичную ситуацию, в которой находится пентестер.

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

Выглаженный повседневно-деловой костюм, который вы вынуждены носить, начинает сковывать ваше дыхание, поскольку внутри зарождается разочарование. До того момента, когда вам нужно сообщить клиенту о результатах работы остается несколько часов, однако нет никакого желания появляться в офисе до того, как задача не будет решена полностью.

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


Во времена Backtrack и ранних версий Kali Linux на фоновом изображении рабочего стола, используемом по умолчанию, висел следующий слоган: «Тем тише вы становитесь, тем больше сможете услышать» (который лучше было бы быстро поменять, чтобы не привлекать к себе внимание). Только после того, как я стал профессиональным пентестером, я понял мудрость этого изречения. Поскольку технологии непрерывно развиваются, как только вы проникли в чужую сеть, то должны в кратчайшие сроки разобраться, как устроена эта сеть. К сожалению, у большинства сетевых и системных администраторов, как и у обычных людей, есть привычки, и чтобы найти нечто интересное и представляющее ценность, все, что нам нужно – просто затаиться и слушать.

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

Вне всякого сомнения, задача пентестера заключается в том, чтобы безопасно симулировать легитимную угрозу с целью определения рисков. Однако без досконального понимания ситуации сложно придумать хорошее лекарство. Сунь-Цзы однажды сказал:

«Если вы не знаете ни противника, ни себя, то будете проигрывать каждую битву».

Чтобы обезопасить сеть от киберугроз каждый администратор должен быть знаком не только со своими инструментами, но инструментами противника (по крайней мере, на информационном уровне). Находиться в темноте – не самый оптимальный путь.

Введение

В этой статье в основном я попытаюсь дать ответ на вопрос «почему», и затрону ответы на вопрос «как». Существует бесчисленное множество всяких видео и руководств, где рассказывается о том, как использовать инструменты, и вообще приводится намного больше информации, чем можно уместить в одну статью. Кроме того, я допускаю, что у других специалистов может быть другое мнение относительно упоминаемых утилит. Приведенный здесь список далеко не полный. Если ваше мнение отличается о моего, я буду рад почитать ваши комментарии.

Теперь переходим непосредственно к описанию инструментов.

1. Responder

На мой взгляд, эта утилита находится во главе списка. Когда исследователь начинает свою работу и заводит речь об «ограниченной функциональности», этот инструмент – первое, что приходит в голову. Если вы - пентестер, то после подключения к сети и начала поиска уязвимостей, Responder – первая утилита, которой нужно воспользоваться. Суть работы Responder сводится к прослушиванию трафика и модификации ответов в следующих протоколах:

У Responder есть и другие возможности, но я уделю внимание только этим трем протоколам.

Если вы работаете сисадмином, то возможно что-то слышали об этих протоколах, но не сможете вспомнить откуда. Вы могли видеть упоминания этих понятий в учебной литературе от Microsoft, которая уже давно потеряла актуальность, или, в зависимости от того, как долго вы в теме, могли настраивать эти протоколы.

NBT-NS – протокол-пережиток прошлого, оставленный Microsoft в целях совместимости, чтобы приложения, где используется NetBIOS, могли работать в сетях TCP/IP. Протокол LLMNR схож с DNS и опирается на многоадресные (multicast) одноранговые (peer-to-peer) коммуникации для преобразования имен. Этот протокол появился во временя Windows Vista, что, как мы понимаем, не может сулить ничего хорошего. Даже если вы никогда не сталкивались ни с одним из вышеупомянутых понятий, пакеты данных протоколов распространяются по сети, о чем прекрасно осведомлены злоумышленника как реальные, так и вымышленные.

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

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

К сожалению, системные администраторы в основном уделяют внимание бесконечному списку задач, связанным с работоспособностью системы. Для особо занятых существуют простые методы защиты от подобного рода киберугроз, суть которых сводится к отключению соответствующих протоколов. Для передачи файла, связанного с автоматической настройкой прокси-сервера, необходимо использовать более безопасные методы, как, например, групповые политики. Понимаю, что соблазн воспользоваться автоматическим детектированием настроек весьма велик, однако старайтесь избегать подобного рода фишек.

2. PowerShell Empire

Прежде, чем утилита Empire появилась в широких массах, пентестеры пользовались инфраструктурой на базе C2-серверов, где агент должен был располагаться на диске. Впоследствии подобные разработки становились публичным достоянием, попадали в сервис Virus Total, а затем в базы антивирусов. Конечно, способы обхода антивирусов существовали и существуют, однако подобного рода трюки зачастую связаны с дополнительными и весьма трудоемкими танцами с бубном. По сути, противостояние между вирусописателями и антивирусными компаниями представляло собой бесконечную игру в кошки-мышки. Подобный расклад был до того момента, пока на горизонте не появился метод, подразумевающий использование бесфайловых агентов, который во многом изменил правила игры.

Произошедшее можно сравнить с коллективным подсознанием пентестеров, которые в один момент пришли к выводу, что наиболее продвинутый инструментарий уже находится на всех современных рабочих станциях по всему миру. Осталось только смастерить фреймворк, что и сделала команда Empire.

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

Если взглянуть на эту ситуацию с позиции системного администратора, сей факт означает ровно одно: некоторые меры безопасности можно легко обойти. Агенты, включая вредоносы, которые не используют файлы, можно легко развернуть на базе PowerShell. Подобного рода разработки существуют исключительно в памяти, не хранятся на жестком диске и не используют USB (хотя этот метод все еще остается рабочим). В наши дни все больше вредоносов обитают исключительно в памяти. В конце данного документа приводится ссылка на статью, где эта тема освещается более подробно. Как итог, большинство антивирусов, чей функционал заточен под сканирование файлов на диске, становятся все менее эффективными. В итоге фокус начинает смещаться на поиск источника инфекции, который, зачастую, находится в макросах часто меняющихся офисных файлов (Word/Excel).

Наилучший метод защиты от бесфайловых вредоносов – или Applocker или любое другое приложение, которое поддерживает белые списки программ. Конечно, составление белого списка может занять некоторое время и, вероятно потребует вмешательства руководства вашей компании, однако в целом безопасность рабочих станций двигается в этом направлении. Таким образом, используя данную технологию, вы окажетесь на острие современных тенденций.

Кроме того, не лишним будет проанализировать, как используется PowerShell в вашей системе. Могут ли обычные пользователи использовать этот инструмент, и если да, то почему?

Когда речь заходит о предотвращении угроз, позвольте мне сразу же сэкономить вам много времени. Ограничения, связанные с политикой выполнения в PowerShell, легко обходятся (см. флаг «-ExecutionPolicy Bypass»).

3. Hashcat и словари

Эта сладкая парочка находится в моем списке абсолютно заслуженно. Взлом хешей и восстановление паролей – достаточно понятная тема, поэтому я не буду уделять этому вопросу много времени.

Hashcat – взломщик паролей, позволяющий работать в связке графическими процессорами и поддерживающий множество форматов. Обычно используется вместе с хешами, полученными утилитой Responder. Помимо Hashcat обязательно нужно иметь USB-диск и несколько гигабайт словарей. Перебором паролей по словарю я пользуюсь во время каждого пентеста, но здесь есть одна тонкость. Поскольку взлом паролей может занять продолжительное время, следует выбирать оптимальное сочетание между затраченным временем и предполагаемым результатом.

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

Сисадмины, сделайте ревизию своих политик и конфигураций. Хорошая практика – следовать индустриальным стандартам как, например, DISA STIG. Стандарты, наподобие DISA STIG, поддерживают множество операционных систем и программного обеспечения, а также содержат ключевые конфигурации, позволяющие защититься от автономного взлома паролей и атак, связанных с повторным воспроизведением (replay attack). Сюда же могут входить политики паролей, рекомендуемых Национальным институтом стандартов и технологий (NIST), нестандартные схемы аутентификации и многое другое. В стандарте DISA даже предусмотрены шаблоны групповых политик, которые могут быть импортированы и адаптированы под ваши нужды, что значительно экономит время. До сих пор используете NTLMv1? Пароли меньше 8 символов? Тогда знайте, что ваша система очень уязвима.

4. Инструменты для тестирования веб-приложений

Если вы – пентестер, то, вероятно, еще раз услышите прописную истину. Для всех остальных хотел бы сказать, что утилиты для тестирования веб-приложений и сканеры уязвимостей – не одно и то же.

Несомненно, сканеры уязвимостей (Nessus, Nexpose, Retina и т. д.) могут иметь функционал, связанный с тестированием веб-приложений, а инструменты тестирования могут иметь функции сканера, однако я все же рекомендую избегать универсальности и не использовать какой-то один класс утилит во всех случаях. Инструменты тестирования больше заточены под работу на уровне приложений, а не на уровне служб и протоколов. Используйтесь этот класс утилит для тестирования страниц во внутренних и внешних сетях. С другой стороны, сканеры уязвимостей больше подходят для тестирования и оценки безопасности портов, протоколов и служб.

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

Лично я во время пентестов вначале пытаюсь найти явные уязвимости, связанные неправильной конфигурацией служб и хостами с устаревшим программным обеспечением. Если поиски не увенчались успехом, я поднимаюсь на уровень выше и приступаю к тестированию веб-приложения. Поскольку эта область чрезвычайно обширна, всегда можно найти что-нибудь компрометирующее. Вот некоторые классы брешей, которые находятся наиболее часто:

Если вы работаете системным администратором в организации, где используются внутренние веб-приложения, проанализируйте, насколько часто происходит ревизия кода. Повторное использование кода становится причиной проблем особенно тогда, когда происходит импорт из неизвестных источников вместе с дырами безопасности и потенциально вредоносными функциями. Более того, в последнее время методология «Always Be Shipping» (Всегда будьте мобильными) все чаще используется при разработке программного обеспечения. Суть этой технологии заключается в том, что основной упор делается на получение функционального кода вместо допущения, что бреши всегда могут существовать.

Ознакомьтесь с проектом OWASP, который полностью сфокусирован на безопасной разработке приложений. Проанализируйте жизненный цикл разработки программного обеспечения (Software Development Lifecycle; SDLC) на предмет того, присутствуют ли там блоки, связанные с тестированием безопасности приложений. В проекте OWASP даются некоторые рекомендации относительно этой темы.

Ознакомьтесь с двумя методологиями тестирования приложений:

Кроме того, рекомендую хотя бы раз в квартал проверять приложения при помощи различных утилит и сканеров: Burp Suite Pro, OWASP Zed Attack Proxy (ZAP), Acunetix, Trustwave и т. д.

5. Arpspoof и Wireshark

Вначале статьи я упомянул о том, что нужно взглянуть на ситуацию под новым углом зрения. Эта связка утилит как раз поясняет то, что имелось ввиду.

Arpspoof позволяет пентестеру оказаться между жертвой и шлюзом, а Wireshark дает возможность перехватить пакеты с интерфейса для последующего анализа. Грубо говоря, во время пентеста вы перенаправляете трафик от жертвы (например, с рабочей станции) и дальше анализируете содержимое перехваченной информации. Иногда достаточно понять, кто участвует в коммуникации, и перехватить некоторые данные в открытом виде, чтобы получить нечто интересное.

С того момента как была представлены первые теоретические концепции, MiTM-атаки (типа «человек посередине) до сих пор остаются эффективными в современных сетях. Учитывая, что на данный момент в подавляющем большинстве внутренних сетей используется протокол IPv4 (подобное положение вещей изменится еще не скоро) и архитектуру протокола ARP, традиционные MiTM-атака будет оставаться актуальной.

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

Рассуждая в той же самой парадигме, можно предположить, что рабочая станция будет скомпрометирована злоумышленником из другой страны при помощи трояна, позволяющего осуществить MiTM-атаку. Альтернативный и более реалистичный сценарий связан с инсайдерской угрозой. Например, сотрудник, имеющий технические познания и не очень чистые помыслы, ознакомился с несколькими видео на Youtube и решил подкатить к секретарше, к которой вдруг «внезапно» вспыхнули симпатии. Угрозы, связанные с инсайдерами актуальные особенно в тех организациях, руководители которых хорошо известны и очень богаты. Помните, что зависть часто толкает людей на необдуманные поступки.

Теперь поговорим о методах защиты.

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

VLAN-сегменты должны быть правильно спроектированы, а вся сеть должны быть защищена от неавторизированных устройств. Возможно, следует внедрить систему управления сетевым доступом (Network Access Control; NAC) или стандарт 802.1X. Отключите неиспользуемые порты и подумайте о Sticky MAC-адресах, если у вас ограничен бюджет.

Задумывались ли вы когда-либо о тестировании IDS-системы? Существуют даже бесплатные варианты с открытым исходным кодом, позволяющие оценить эффективность. Например, Security Onion. Правила IDS-систем предназначены для обнаружения аномальной сетевой активности, которая, например, может свидетельствовать о попытке реализовать атаку, связанную с отравлением ARP-кэша (ARP poisoning). Попробуйте внедрить у себя подобного рода средства, если у вас есть нужные ресурсы и, конечно, одобрение начальства. В качестве пробного шага также можно попробовать системы Honeypot. Здесь также доступны варианты с открытым исходным кодом. Например, Honeyd.

Нумераторы поддоменов

Нумераторы поддоменов (subdomain enumerator) я решил выделить отдельно, поскольку эта тема полноценно не пересекается ни с одной из вышеперечисленных утилит, но заслуживает рассмотрения. Если вы читаете канал r/netsec, то, вероятно, заметили, что в последнее время появилось много нумераторов и брутефорсеров поддоменов.

Почему эта тема актуальна?

Вне зависимости от того, кто пытается проникнуть в вашу сеть, нанятый пентестер или злоумышленник, разведка занимает 80% времени, и обычно первый шаг связан с перебором поддоменов. Злоумышленнику даже не нужно касаться вашей системы, чтобы понять точки соприкосновения со всемирной паутиной. Утилиты наподобие Fierce значительно упрощают эту работу.

Сисадмины, если бы я вас спросил, насколько ваша система видима из интернета, смогли бы вы ответить мне на этот вопрос? Какие порты и протоколы доступны из «дикой природы»? Доступны ли веб-консоли? Запустите поиск по базе Whois для главного домена, используемого вашей организацией и зарегистрированного у популярного регистратора (Network Solutions, GoDaddy, и т. д.). По результатам поиска проанализируйте полученные имена, почтовые и электронные адреса. Если в списке окажутся настоящие имена и адреса, то этой информации уже может быть достаточно для злоумышленников. Например, через поисковую систему Shodan можно найти все доступные устройства. Введите внешние IP-адреса в поисковой системе и взгляните на полученные результаты, которые доступны каждому.

Приведу пример. Если вы – системный администратор и не знакомы с Финиасом Фишером (Phineas Fisher), я не удивлюсь. Но если вы – пентестер, и не знаете, кто этот человек, то вам должно быть стыдно.

В 2016 году фирма «Hacking Team», располагавшаяся в Милане, была известна как производитель кибер-оружия для правительств по всему миру. Эти друзья были взломаны человеком под псевдонимом, указанным выше. В результате произошла утечка огромного объема данных, и появилась одна из наиболее обстоятельных статей, посвященных реальным взломам. Взгляните на Шаг 2, указанный в той заметке, который называется «Subdomain Enumeration» (перечисление поддоменов). Я не буду комментировать этичность данного мероприятия, но вне зависимости от того, на какой стороне вы находитесь, детали, описанные Финиасом Фишером, представляют огромную ценность для специалистов по безопасности и системных администраторов и позволяют понять, как мыслит злоумышленник.

Сунь-Цзы сказал следующее:

«Если вы знаете врага и себя, вам не нужно беспокоиться о результате сотни битв».

Интерпретацию этого изречения оставляю на ваше усмотрение.

Мы расшифровали формулу идеальной защиты!

Спойлер: она начинается с подписки на наш канал

Введите правильный пароль — подпишитесь!