PsExec і що він може робити

Більшість інструментів, які ми використовуємо для адміністрування мереж, представляють дві сторони однієї медалі. Ці інструменти надають значний ступінь гнучкості та спрощують керування пристроями, службами та програмами. Якщо ці інструменти знаходяться в потрібних руках, то нам нема про що турбуватися, але якщо інструменти віддаленого управління мережами потраплять не в ті руки, вони стають потужною зброєю, яка може використовуватися для атак широкого спектру. У цій статті ми розглянемо інструмент, що підпадає під цей опис. Це інструмент Microsoft Sysinternals PsExec. У цій статті я надам огляд того, що є інструментом PsExec і які можливості він дає з точки зору адміністрування. Після чого я стану на бік зловмисника і продемонструю деякі жахливі речі, які можна виконати за допомогою цього інструменту в мережі.

Що таке PsExec?

Утиліта PsExec була розроблена як частина пакету інструментів PsTools, спочатку розробленого Марком україніновичем (Mark Russinovich) із компанії Sysinternals, яка тепер належить компанії Microsoft. Інструмент виконаний як інструмент керування на основі командного рядка та дозволяє віддалено виконувати процеси в іншій системі. Цей інструмент дуже гнучкий у тому відношенні, що він дозволяє використовувати різні облікові дані, а не ті, які використовує користувач, що виконує програму, а це означає, що ви можете керувати пристроями, розділеними межами домену та сайту. PsExec не тільки виконує програми на віддаленій системі, вона може перенаправляти вхідні та вихідні дані між системами так, що ви можете використовувати інтерактивні інструменти віддалено.

На відміну від більшості програмних продуктів, пов'язаних із Microsoft,внутрішній принцип роботи PsExec не є секретом і досить простий. PsExec дозволяє перенаправляти вхідні та вихідні дані віддалено запущеної виконуваної програми за допомогою використання SMB та прихованого ресурсу загального доступу $ADMIN на віддаленій системі. За допомогою цього ресурсу PsExec використовує інтерфейс програмування диспетчера керування Windows Service control Manager API для запуску служби PsExecsvc на віддаленій системі, яка створює іменований канал (named pipe), яким працює PsExec. Саме цей іменований канал дозволяє перенаправлення введення/виводу назад у систему, де працює PsExec.

Позитивна сторона PsExec

Як і передбачалося при початковому створенні програми PsExec, вона може використовуватися для виконання великої кількості корисних завдань, які можуть допомогти адміністратору системи. Однією з таких ситуацій, в якій мені довелося виявитися, була ситуація, коли я знав DNS ім'я комп'ютера, але не знав точних параметрів IP конфігурації (сервер DNS, шлюз і т.д.). За нормальних обставин я використовував ipconfig на локальній системі для визначення цієї інформації. Однак у більшості випадків це означає, що мені довелося б їхати в інше місце і позичати комп'ютер користувача відповідно знижуючи рівень його продуктивності на цей день. Оскільки команда ipconfig не має можливості для виконання на віддалених машинах, я можу використовувати PsExec для її успішного виконання, як показано на малюнку 1.

робити

Рисунок 1: Використання PsExec для виконання ipconfig на віддаленій системі

Після виклику PsExec, віддалений комп'ютер вводиться за двома похилими (\\), після чого вводиться команда ipconfig. Коли ви виконуєте PsExec, вона за замовчуванням входить до%SYSTEM% каталог віддаленої системи, на якій ви намагаєтеся її виконати, і тому мені не довелося вказувати повний шлях. Нарешті, ключ /all команди ipconfig вказується, щоб відобразити всю доступну інформацію ipconfig.

Ще однією поширеною ситуацією застосування PsExec є її використання для встановлення оновлень, латок та виправлень. Хоча бажаним способом виконання цього завдання є використання групової політики, можуть бути ситуації, коли цей спосіб є занадто повільним. Я стикався з багатьма ситуаціями, де потрібно було встановлювати високопріоритетне виправлення безпеки, яке не могло чекати на стандартний час оновлення групової політики, тому я використовував PsExec для більш швидкої установки файлу. Цей приклад показано малюнку 2.

може

Малюнок 2: Видалене виконання виправлення, що виконується.

І ще однією останньою ситуацією законного використання PsExec є ситуація віддаленого адміністрування систем з високим рівнем привілеїв, при використанні системи від імені облікового запису з нижчим рівнем привілеїв. Не можу пригадати точну кількість разів, коли мені доводилося працювати з комп'ютерами користувачів та отримувати дзвінки, які вимагали від мене виконання адміністративних завдань, таких як зміна пароля. Звичайно, в середовищі Active Directory я міг просто використовувати протокол RDP для входу в контролер домену та виконання цього завдання, але я мав кілька клієнтів, які не використовували active directory або RDP з ряду причин. У цій ситуації дуже зручно просто вставити USB-накопичувач і скористатися встановленою на нього утилітою PsExec. У випадку, показаному на малюнку 3, я використовував PsExec для скидання пароля користувача на системі, шляхом підйому рівняпривілеїв мережного інструменту, що виконується під PsExec.

робити

Рисунок 3: Зміна пароля користувача шляхом підвищення привілеїв PsExec

Виконання незаконних операцій за допомогою PsExec

Тепер давайте розглянемо темну сторону інструменту та подивимося на ті речі, які можна виконати за допомогою PsExec у недобрих намірах. Перш за все, розглянемо ситуацію, в якій зловмисник отримав облікові дані системи, але не має безпосереднього доступу до неї. У цьому випадку зловмисник має намір отримати контроль над GUI або командним рядком системи, але можливості використання цих облікових даних можуть бути обмежені. Одним із способів, який може виявитися корисним у такій ситуації, є використання PsExec для виконання файлів лазівок (backdoor executable), що виконуються, на системі, як показано на малюнку 4.

може

Рисунок 4: Шкідлива програма запущена на системі віддалено

У цій ситуації віддалений зловмисник використовує PsExec із ключем /c для виконання файлу nc.exe на віддаленій системі. Поряд із цим використовуються 'u і 'p ключі, які вказують ім'я та пароль зламаної системи, щоб файл міг виконуватися з привілеями кореневого рівня. Без відома жертви файл, що виконується на його системі, є лазівкою, яка дозволить зломщику підключатися до системи і отримувати доступ до адміністративного інтерпретатора команд.

Цікавим аспектом у щойно розглянутій ситуації є те, що вам навіть не потрібний пароль користувача для виконання такої атаки. Насправді вам лише потрібне ім'я користувача та хеш-значення пароля користувача. У Windows математичні розрахунки застосовуються до введених користувачами паролів, щоб перетворити ці паролі на зашифровані рядкипевної довжини, звані хеш (hash). Ці хеші є компонентом безпеки, призначений для запобігання передачі паролів по мережі відкритим текстом. При виконанні автентичності ці хеш-значення паролів передаються з одного вузла на інший. Використовуючи PsExec, можна скористатися цим шляхом простого надання хеш-значення пароля, а не самого пароля, як показано на малюнку 5.

може

Малюнок 5: Використання хеш-значення пароля для віддаленого виконання файлу

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

Ще одним трюком, який можливий завдяки PsExec, є можливість отримання доступу до файлів та процесів, що виконуються вбудованим обліковим записом SYSTEM. Обліковий запис SYSTEM у Windows є обліковим записом з максимальними повноваженнями, які забезпечують доступ практично до всього, включаючи деякі елементи, які недоступні для облікового запису адміністратора та створених користувачем облікових записів. На малюнку 6 показаний приклад доступу до програми regedit.

робити

Малюнок 6: Доступ до реєстру комп'ютера жертви

Вказана команда виконується безпосередньо на локальній системі, але вказує ключ 's, щоб використовувати локальний обліковий запис SYSTEM. Цей ключ використовується в поєднанні з опцією I (інтерактивний), яка виконує regedit в інтерактивному режимі. Виконання цієї команди запустить regedit з доступом до SYSTEM, що забезпечитьдодатковий доступ до деяких цікавих файлів. Одним із прикладів такого є SAM файл, що містить хеш-значення паролів користувача. Враховуючи певні мотиви, зломщик з таким доступом до системи та PsExec з легкістю може витягти всі хеші паролів із системи, використовуючи цю методику, забезпечивши себе інформацією, яка може дозволити скомпрометувати інші системи або облікові записи.

Декілька попереджень

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

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

PsExec та Metasploit – по можливості я ніколи не використовую PsExec окремо. Змінена версія PsExec тепер включена до Metasploit Framework. Metasploit є середовищем для тестування систем на можливість проникнення, яке надає пристойний набір функцій. Якщо ви хочете використовувати PsExec для певного роду оцінкибезпеки, слід скористатися додатковими функціями, запропонованими Metasploit. Я використав цю версію PsExec у своїй попередній статті про техніку передачі хеша Passing the Hash.

Висновок