>
Сентябрь 2017
Пн Вт Ср Чт Пт Сб Вс
« Авг    
 123
45678910
11121314151617
18192021222324
252627282930  

Заметаем следы после взлома.

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

Картинки по запросу clear log files

Как известно, в среднем после взлома сети и до его обнаружения проходит порядка 200 дней (рекорд – восемь лет!). За это время злоумышленник успевает получить доступ практически ко всей интересующей его информации. Рассмотрим, какие действия может предпринять взломщик, проникнув в сеть, и что можно сделать, чтобы их обнаружить.

Вот основные действия хакера, о которых мы будем говорить:

  • Взлом паролей
  • Инвентаризация и поиск необходимой информации
  • Перехват передаваемого трафика
  • Выгрузка собранной информации
  • Сокрытие следов своего присутствия

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

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

Взлом паролей внутри корпоративных сетей.

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

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

Начнем с того, где хранят пароли различные операционные системы. Начнем с семейства ОС Windows.

Получаем хеши

За хранение паролей здесь отвечает Security Accounts Manager (SAM) – файл реестра в Windows. В SAM хранятся хешированные пароли пользователей (в формате LM-хеш или NTLM-хеш). Благодаря тому, что хеш-функция однонаправленная, пароли находятся в относительной безопасности. Единственным способом узнать пароль является подбор хеша. Существует множество способов получения SAM-файла. По «условиям учений» будем считать, что наш злоумышленник не имеет физического доступа к атакуемым машинам и не может их перезагружать.

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

При отсутствии доступа SAM-файл необходимо экспортировать из реестра с помощью консольных команд, представленных на рис. 1.

Рисунок 1. Экспорт SAM-файла в Windows 7

Рисунок 1. Экспорт SAM-файла в Windows 7

В случае если по каким-либо причинам выполнить экспорт хешей паролей не представляется возможным, можно попробовать применить утилиту Gsecdump. При ее использовании есть небольшая вероятность, что система «упадет» в BSOD, но зато эта утилита работает со всеми серверными ОС Windows (см. рис. 2).

Рисунок 2. Экспорт парольных хешей в Windows 2003

Рисунок 2. Экспорт парольных хешей в Windows 2003

Для того чтобы получить парольные хеши в ОС Linux, необходимо иметь доступ на чтение к файлам /etc/passwd и /etc/shadow. Переписав эти файлы к себе, злоумышленник может приступать к взлому.

Взлом паролей и его особенности

Классическим средством взлома паролей для ОС Windows и Linux является утилита John the Ripper. В рамках данной статьи я не буду описывать все возможности этой достаточно мощной утилиты. Желающие ознакомиться с ней подробнее могут воспользоваться статьей .

Рисунок 3. John the Ripper в действии

Рисунок 3. John the Ripper в действии

На рис. 3 приведен пример запуска перебора паролей с помощью John the Ripper. Первой командой unshadow мы объединяем два полученных ранее файла, а затем запускаем перебор. Утилита сначала будет пытаться подобрать пароль по собственным словарям, а затем начнет перебор всех значений.

Однако более быстрым способом поиска паролей является использование аппаратных графических ускорителей (GPU). Это умеет утилита oclHashcat из пакета HashCat (есть в Kali Linux), используемого для аудита паролей. На сайте проекта приведены требования к GPU, с которыми работает oclHashcat. Помимо скорости, это также расширенные возможности по созданию правил перебора паролей. Перед запуском oclHashcat необходимо узнать алгоритм хеширования, с помощью которого создавался хеш.

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

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

Рисунок 4. Работа с Hashcat

Рисунок 4. Работа с Hashcat

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

Из своего опыта могу сказать, что для одного и того же алгоритма хеширования перебор с помощью Hashcat и одного, не самого мощного, GPU занял в десять раз меньше времени, чем использование John the Ripper.

«Соленые» радужные таблицы

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

Данные таблицы можно генерировать самостоятельно с помощью пакета Rainbowcrack, входящего в состав Kali Linux (Password Attack → Rainbowcrack, далее rtgen). Однако лучше воспользоваться уже готовыми таблицами, которые можно скачать как на официальном сайте проекта, так и на просторах интернета.

Запуск перебора с помощью радужных таблиц (файлы с расширением rt) для файла с хешами passwords будет выглядеть следующим образом.

Все вышеизложенное хорошо до тех пор, пока в хеш пароля не добавляется «соль» (хеш = f (пароль + соль). В таком случае стандартные Rainbow tables нам не помогут, так как для восстановления такого пароля взломщику необходимы таблицы для всех возможных значений «соли». При этом «соль» должна быть достаточно длинной (шесть – восемь символов), иначе злоумышленник может вычислить таблицы для каждого значения «соли», случайной и различной для каждого пароля. Таким образом, два одинаковых пароля будут иметь разные значения хешей, если только не будет использоваться одинаковая «соль».

На сегодняшний день практически все *nix используют хеши с «солью» для хранения системных паролей. ОС Windows используют хеши LM-хеш и NTLM, которые не используют «соль». Таким образом, радужные таблицы являются наиболее действенным средством при аудите парольных файлов от данных ОС. Также многие приложения используют «несоленые» хеши. Это упрощает задачу взломщику.

Также дополню, что пароли от старых ОС Windows XP/ Vista хорошо ломает утилита 0phtcrack, входящая в состав Kali Linux.

Ищем сокровища

Запустив перебор файлов с паролями, самое время провести «инвентаризацию» взломанной сети. На этот момент многие администраторы не обращают внимание, а ведь благодаря

именно активности хакера взлом можно обнаружить. Для поиска интересного в сети злоумышленник использует различные инструменты, и многие из них мы уже рассматривали: сканер сети Nmap, сканеры уязвимостей Nessus и Ovasp. Также могут использоваться самописные скрипты, которые позволяют автоматизировать процесс поиска нужной информации, например поиска инстансов СУБД.

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

Существует множество различных приложений для поиска SMB-ресурсов. Мы воспользуемся утилитой enum4linux, входящей в состав Kali Linux. В качестве подопытного в примерах используется наш старый знакомый – уязвимый дистрибутив Metasploitable. Первым делом попробуем выяснить, какие учетные записи есть на данной машине.

Результат для Metasploitable будет примерно следующий (см. рис. 5).

Красным на рисунке подчеркнуты наиболее интересные для нас аккаунты. Теперь попробуем найти общие сетевые ресурсы на данной машине (см. рис. 6).

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

Для подбора пароля воспользуемся утилитой acccheck. Обратите внимание на словарь, указанный в примере. Данный каталог со словарями по умолчанию входит в состав Kali (см. рис. 7).

Так злоумышленник может быстро узнать пароль от учетной записи и затем подключиться к найденным ресурсам.

Выносим добычу незаметно

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

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

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

А извлечь данные в файл test.txt можно следующим образом:

Таким образом, злоумышленник может попытаться передать украденные данные из корпоративной сети.

Скрываем следы преступления

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

Операционные системы семейства Windows 2000, XP, 2003 хранят журналы событий в файлах формата EVT в каталоге c:\Windows\System32\config. ОС Windows Vista – 2012 в формате EVTX в каталоге c:\Windows\System32\ winevt\Logs.

Я не буду подробно рассматривать форматы EVT и EVTX. Желающие могут самостоятельно найти необходимую информацию в MSDN. Нас больше интересует то, что в EVT целостность ничего не гарантирует, необходимо лишь, чтобы длина записей совпадала. Для проверки достаточно открыть evt-файл в любом шестнадцатеричном редакторе и заменить, к примеру, несколько байт в имени пользователя.

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

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

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

Рассмотрим создание копии evtx-файла. Будем считать, что нам доступна только командная строка, соответственно, мы можем использовать только консольные команды.

Допустим, нам нужно удалить все записи, связанные с удачным входом в систему (событие 4624). Для этого из текущего evtx-файла экспортируем все записи, кроме 4624.

Команда wevtutil отвечает за работу с журналом событий. Ключ epl – это экспорт из файла Security d в файл Security.evtx с перезаписью. Далее мы запрашиваем все события, кроме 4624.

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

Теперь вторая часть. Здесь нам потребуется утилита Handle из состава Sysinternals. Для того чтобы перезаписать файл, необходимо сначала остановить все те процессы, которые с ним работают. Узнаем с помощью handle ID процессы, которые с ней работают. Далее по ID процесса узнаем те службы, которые его используют с помощью tasklist. И, наконец, самое простое – остановим эти службы. Пример всех этих действий для 64-битной Windows 7 приведен на рис. 8.

Рисунок 8. Останавливаем сервисы

Рисунок 8. Останавливаем сервисы

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

Делаем выводы

Если злоумышленник уже проник в сеть и скомпрометировал один или несколько узлов, он предпримет максимальные усилия для того, чтобы скрыть свою активность. Однако правильно настроенные средства защиты могут помочь обнаружить аномалии. Основным инструментом для обнаружения подозрительной активности является Система управления событиями безопасности (SIEM). Именно в эту системы должны стекаться события со всех источников (ОС, межсетевые экраны, IDS, антивирусы, DLP и т.д.). Все описанные манипуляции с журналами событий будут бесполезны, если все события будут пересылаться в базу SIEM.

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

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

Ну и классика работы SIEM: обнаружение входов с систему в нерабочее время, не с тех узлов и не к тем узлам, что обычно, вход при отсутствии в офисе и т.д. Злоумышленник, расшифровав пароль, наверняка попытается войти в систему под ним. Если он это будет делать в нерабочее время и/или не с машины данного пользователя при его отсутствии в офисе (в СКУД не зафиксирован вход в здание), то должен быть создан соответствующий инцидент.

Инвентаризация, так или иначе, связана с обходом большого числа ресурсов (узлы, папки, файлы и т.д.). Эти активности могут быть зафиксированы как журналами событий ОС на узлах, так и средствами обнаружения вторжений в сети. Поэтому здесь достаточно просто настроить сбор событий от источников и соответствующие правила. Но здесь важно помнить, что включение аудита для всех файлов и обращений ко всем объектам в Windows приведет к лавинообразному росту числа событий, так что тут главное не перестараться.

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

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

В целом грамотно настроенная SIEM-система способна существенно осложнить жизнь злоумышленнику.

Share Button
[Всего голосов: 17    Средний: 3.4/5]

Вам может быть интересно также:

Last updated by at .

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">