Всем, доброго дня!

В прошлый раз мы рассмотрели утилиту WeBaCoo (https://defcon.ru/penetration-testing/647), которая позволяет организовать скрытый shell посредством web cookie. Сегодня рассмотрим метод сокрытия наших данных и обход firewalls с помощью механизма туннелирования данных через DNS.

Данная тема не является новой, поэтому сразу рассмотрим инструмент, реализующий метод сокрытия данных.

dnscat2 (https://github.com/iagox86/dnscat2) – Утилита, разработанная для создания командно-контрольного канала (C&C) через DNS протокол. Включает в себя серверную и клиентскую части.

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

Если у вас нет авторизованного DNS сервера, вы можете использовать соединение на свой хост по UDP/53 или любой другой выбранный порт.

Данные запросы будут отправляться быстро и будут выглядеть как обычный DNS траффик.

Серверная часть разработана для того, чтобы работать на авторизованном DNS сервере. При запуске, слушает UDP/53.

Установка dnscat2 server:

Теперь рассмотрим возможные сценарии работы с dnscat2.

Первый случай. На атакуемой машине доступен любой DNS траффик и имеется доступ к любым серверам DNS.

  • Запускаем dnscat2 server на машине атакующего:

2-1

При запуске dnscat2 server начинает слушать порт 53/UDP и предоставит интерактивный shell для удаленного доступа к компьютеру, с которого был запущен dnscat2 client.

  •  Теперь запускаем dnscat2 client на удаленной машине.

Для этого необходимо использовать утилиту с сайта разработчика https://downloads.skullsecurity.org/dnscat2/.

2-2

Как только мы выполним подключение, dnscat2 server сообщит нам об этом ввиде номера сессии.

2-3

Доступ к установленной сессии мы получим с помощью команды: session -i 5965

2-4

А далее мы можем с клиентом выполнят стандартные операции, такие как

  • Скачивание файлов
  • Загрузка файлов
  • Выполнение команд на жертве
  • Переход в шелл

Ниже представлен список команд, доступный атакующему:

2-5

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

Еще, при установке соединения с неавторизованным DNS сервером, утилита dnscat2 в составе пакета DNS отправляет свое имя, что также может быть проанализировано со стороны администраторов сети.

3-1

Второй случай. С атакуемой машины доступен DNS траффик только к легитимным DNS серверам.

В этом случае процесс построения туннеля будет аналогичен предыдущему описанию, но с использованием следующих опций:
Для сервера:

Для клиента:

Один из вариантов защиты – это запретить на компьютерах в локальной сети выполнение утилиты dnscat2 client или посторонних бинарных программ.

Но на этот случай мы можем воспользоваться методом запуска программ с помощью стандартного Windows Power Shell.

Для этих целей уже написан специальный скрипт dnscat2.ps1 (https://github.com/lukebaggett/dnscat2-powershell), который позволяет получить reverse shell на нашем dnscat2 server.

Соответственно, запускаем этот скрипт как показано на рисунке ниже.

В данном случае, у нас должны быть административные права для работы с powershell и запущен dnscat2 server. При выполнении скрипта мы получим shell нашей жертвы.

4-2

 

Вот мы и рассмотрели еще одну утилиту для сокрытия траффика. Надеюсь, что полученная информация будет использована только в исследовательских целях и в соответствии с законами УК РФ.