Прихований зламування паролів за допомогою Smbexec

Прихований зламування паролів за допомогою Smbexec

Ми регулярно пишемо про те, як хакери часто спираються на використання методів злому без шкідливого коду, щоб уникнути виявлення. Вони буквально «виживають на підніжному кормі», використовуючи стандартні засоби Windows, тим самим обминаючи антивіруси та інші утиліти виявлення шкідливої ​​активності. Ми, як захисники, тепер змушені мати справу з сумними наслідками таких хитрих технік злому: вдало розташований співробітник може використовувати той самий підхід для прихованого крадіжки даних (інтелектуальна власність компанії, номери кредиток). І якщо він не поспішатиме, а працюватиме повільно і непомітно, буде надзвичайно складно — але все ж таки можливо, якщо застосовувати правильний підхід і відповідні інструменти, - Виявити таку активність.

З іншого боку, мені не хотілося б демонізувати співробітників, оскільки ніхто не хоче працювати в бізнес-середовищі прямо з «1984» Оруелла. На щастя, існує низка практичних кроків і лайфхаків, які можуть значно ускладнити життя інсайдерам. Ми Роздивимось потайливі методи атаки, що використовуються хакерами співробітниками з деяким технічним бекграунд. А далі ми обговоримо варіанти скорочення таких ризиків – вивчимо як технічний, так і організаційний варіант дій.

Що поганого у PsExec?

Едвард Сноуден, справедливо чи ні, став синонімом інсайдерської крадіжки даних. До речі, не забудьте поглянути на цю замітку про інших інсайдерів, які також заслуговують на деякий статус популярності. Варто наголосити на одному важливому моменті про методи, які використовував Сноуден, — наскільки нам відомо, він не встановлював ніякого зовнішнього шкідливого софту!

Навпаки, Сноуден застосував трохи соціальної інженерії та скористався своїм посадовим становищем системного адміністратора для збирання паролів та створення облікових даних. Нічого складного – жодних мімікац, атак людина-в-середині або metasploit.

Співробітники організацій не завжди знаходяться в унікальній позиції Сноудена, але з концепції «виживання на підніжному кормі» можна отримати ряд уроків, про які слід знати – не робити жодних шкідливих дій, які можна виявити, і особливо акуратно використовувати облікові дані. Запам'ятайте цю думку.

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

Mimikatz перехоплює NTLM-хеш у процесу LSASS, та був передає токен чи облікові дані – т.зв. «pass the hash» атака – у psexec, дозволяючи зловмиснику увійти на інший сервер від імені іншого користувача. І з кожним наступним переміщенням на новий сервер атакуючий збирає додаткові облікові дані, розширюючи спектр своїх можливостей у пошуку доступного контенту.

Коли я вперше почав працювати з psexec, він здався мені просто магічним – дякую Марку Руссиновичу, геніальному розробнику psexec, - але я також знаю і про його галасливих компонентів. Він жодного разу не потайливий!

Перший цікавий факт про psexec полягає в тому, що він використовує надзвичайно складний мережевий файловий протокол SMB від Microsoft. За допомогою SMB psexec передає невеликі бінарні файли на цільову систему, поміщаючи в папку C:Windows.

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

Прихований зламування паролів за допомогою Smbexec

Візитна картка Psexec: служба "PSEXECSVC". Вона запускає бінарний файл, який був поміщений SMB в папку C:Windows.

Як фінальна стадія, скопійований бінарний файл відкриває RPC-підключення до цільового сервера і потім приймає керуючі команди (за замовчуванням – через cmd-шелл Windows), запускаючи їх і перенаправляючи введення та виведення на домашню машину атакуючого. При цьому зловмисник бачить базовий командний рядок – такий самий, якби він був підключений безпосередньо.

Безліч компонентів і дуже галасливий процес!

Складний механізм внутрішніх процесів psexec пояснює повідомлення, яке спантеличило мене під час моїх перших тестів кілька років тому: «Starting PSEXECSVC…» та подальшу паузу перед появою командного рядка.

Прихований зламування паролів за допомогою Smbexec

Psexec від Impacket насправді показує, що відбувається під капотом.

Не дивно: psexec робив величезну кількість роботи «під капотом». Якщо вас цікавить докладніше пояснення, ознайомтеся з цим чудовим описом.

Очевидно, що при використанні як інструмент системного адміністрування, що й було початковим призначенням psexec, нічого страшного в «дзижченні» всіх цих механізмів Windows немає. Для атакуючого, однак, psexec створить ускладнення, і для обережного та хитрого інсайдера, такого як Сноуден, psexec або схожа утиліта, буде занадто великим ризиком.

І тут приходить Smbexec

SMB - це майстерний і потайливий спосіб передачі файлів між серверами, і хакери впроваджувалися безпосередньо в SMB ще споконвіку. Вважаю, що всі вже знають, що не варто відкривати SMB порти 445 і 139 в інтернет, чи не так?

У 2013 році на Defcon Ерік Мілман (brav0hax) представив у світ smbexec, щоб пентестери могли випробувати потайний злом SMB. Я не знаю всієї історії, але потім Impacket додатково відточив smbexec. Насправді для свого тестування я скачав саме скрипти від Impacket на пітоні з Github.

На відміну від psexec, smbexec уникає передачі потенційно детектованого бінарного файлу на цільову машину. Натомість утиліта повністю живе з «підніжного корму» через запуск локальної командний рядок Windows.

Ось що вона робить: передає команду від атакуючої машини через SMB в спеціальний вхідний файл, а потім створює і запускає складний командний рядок (як служба Windows), який здасться знайомим лінуксоїдам. Коротко: вона запускає нативний Windows-Шел cmd, перенаправляє виведення в інший файл і потім відправляє його по SMB назад на машину зловмисника.

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

Прихований зламування паролів за допомогою Smbexec

Чи це найбільший спосіб перенаправлення вводу/вывода? До речі, створення служби має ідентифікатор події 7045.

Як і psexec, вона також створює службу, яка виконує всю роботу, але служба після цього видаляється – вона використовується лише один раз для запуску команди та потім пропадає! Співробітник інформаційної безпеки, який спостерігає за машиною жертви, не зможе виявити очевидних індикаторів атаки: немає ніякого шкідливого файлу, що запускається, ніякої постійної служби не встановлюється, і немає докази використання RPC, так як SMB є єдиним засобом передачі даних. Геніально!

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

Прихований зламування паролів за допомогою Smbexec

Для виведення даних назад з цільової машини на машину зловмисника, використовується smbclient. Так, це та ж сама Samba утилітаале тільки перероблена під Python-скрипт Impacket'ом. Фактично, smbclient дозволяє вам потай організувати передачу FTP поверх SMB.

Давайте зробимо крок назад і подумаємо, що це може дати для співробітника. У моєму вигаданому сценарії, скажімо, блогеру, фінансовому аналітику або високооплачуваному консультанту з безпеки можна використовувати власний ноутбук для роботи. В результаті якогось магічного процесу вона ображається на компанію і «пускається у всі тяжкі». Залежно від операційної системи ноутбука, вона або використовує версію Python від Impact, або Windows версію smbexec або smbclient у вигляді .exe файлу.

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

Злом DCC: нам не потрібен ніякий «безглуздий» Mimikatz

У моїх попередніх постах, присвячених пентесту, я часто використовував mimikatz. Це чудовий інструмент для перехоплення облікових даних - NTLM-хешів і навіть паролів у відкритому вигляді, що причаїлися всередині ноутбуків і чекають, щоб ними скористалися.
Часи змінилися. Інструменти моніторингу стали кращими у детектуванні та блокуванні mimikatz. Адміністратори інформаційної безпеки також стали мати велику кількість опцій зі скорочення ризиків, пов'язаних з атаками «pass the hash»-типу (далі – PtH).
То що має зробити розумний співробітник, щоб зібрати додаткові облікові дані без використання mimikatz?

У набір від Impacket входить утиліта під назвою secretsdump, яка отримує облікові дані з кешу Domain Credential Cache, або коротко DCC. Наскільки я розумію, якщо доменний користувач входить на сервер, але контролер домену недоступний, DCC дозволяє серверу аутентифікувати користувача. Так чи інакше, secretsdump дозволяє вам здампити всі ці хеші, якщо вони доступні.

DCC-хеші – це не NTML-хеші і їх не можна використовувати для PtH-атаки.

Ну ви можете спробувати зламати їх, щоб отримати вихідний пароль. Однак Microsoft стала розумнішою при роботі з DCC і зламати DCC-хеші стало надзвичайно складно. Так є хешкет, «Найшвидший у світі підбирач паролів», але він вимагає наявності GPU для ефективної роботи.

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

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

Якщо ви зараз намагаєтеся відтворити це у себе в домашніх умовах, то ви можете завантажити невеликий «C» код, що реалізує алгоритм хешування DCC, та скомпілювати його. Джон Потрошитель, до речі, додав підтримку DCC, тому його теж можна використовувати. Давайте припустимо, що інсайдер не хоче зв'язуватися з вивченням John the Ripper і любить запускати gcc на застарілому C-коді.

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

Прихований зламування паролів за допомогою Smbexec

Трохи соціальної інженерії, дещицю ворожіння та дрібку Maltego – і ви вже на шляху злому хеша DCC.

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

Джерело: habr.com

Додати коментар або відгук