Домен / Программы · 11.08.2022

UserHunter

Версия 1.2 (сборки не учитываются, так как я уже сам в них запутался…)

Внимание! Программа использует файловую СУБД SQLite.

Немного об обновлениях:

  • добавлен функционал поиска любых объектов в Active Directory;
  • добавлен функционал включения и отключения учётных записей в Active Directory;
  • добавлено контекстное меню, теперь можно помещать в буфер обмена не только имя пользователя, но и всю сопутствующую информацию;
  • добавлен функционал проверки доступности удалённого хоста по заявленному IP адресу;
  • добавлена интеграция с утилитой ADapter и выборки базы по имени хоста, IP адресу и имени пользователя;
  • добавлен функционал резервного копирования базы данных;
  • интегрирована утилита RDPShadow, с помощью которой можно осуществить теневое подключение к консольной сессии удалённого хоста;
  • теперь из контекстного меню можно получить доступ к папке профиля пользователя.

Софтина-эпопея, к созданию которой привели эксперименты с идентификацией пользователей на конкретных хостах в домене. К этому функционалу я подбирался уже очень давно, но всё было как-то не до экспериментов. Уж слишком долго разбирался с реализацией системы фильтрации в связке Lazarus+SQLite. В итоге, конечно, всё закончилось хорошо, но теперь о сабже.

Изначально задумка была такова: нужна программа, которая могла бы хранить событие входа доменного пользователя на конкретный хост и собирать сопутствующие данные. К релизу текущей версии функционал немного сдвинулся в сторону сетевой инфраструктуры.

По сути, хотелось соотнести пользователей и машины для последующего учёта в ActiveDirectory. Софт также был бы незаменим для процесса высокоуровневой технической поддержки, но это уже частности.

Итак, UserHunter состоит из двух компонентов: UserHunterServer (uhserver.exe) и UserHunterViewer (uhviewer.exe). Для записи данных в базу используется UserHunterServer. Он собирает данные о дате и времени события входа, имени пользователя и компьютера, а также IP и MAC адреса* (большое спасибо коллеге за идею с IP и MAC).

UserHunterViewer — это наблюдательный пункт и основной исполняемый файл программы. Он отвечает за мониторинг базы данных. В нём можно проводить фильтрацию по параметрам, экспортировать выборку базы данных в CSV или вовсе её очистить и начать всё с нуля.

Главное окно UserHunterViewer выглядит (примерно*) вот так:

Окно UserHunterViewer

Все кнопки снабжены подсказками, а функционал программы максимально прост. Сортировка записей ведётся исключительно по мере заполнения базы данных и иных опций сортировки я даже не рассматривал. Для всего остального есть поиск и фильтрация данных. В один клик можно вывести данные за текущий день или месяц.

Поиск по месяцам ведётся по маске ГГГГ-ММ, по дням соответственно — ГГГГ-ММ-ДД.

На момент запуска программы данные в базе фильтруются по текущим суткам! Всё управление, включая обновление выдачи, проходит в ручном режиме.

UserHunter умеет обращаться к Active Directory и асинхронно получать данные о пользователях. Получение данных происходит с помощью отработки команды Get-ADUser в PowerShell. Обратите внимание, что для корректной работы этой функции в системе должен быть установлен RSAT.

Теперь расскажу о самом интересном — как установить и как пользоваться этой штукой.

Программа распространяется в виде uhviewer.exe и sqlite3.dll. Все остальные сопутствующие файлы можно развернуть из ресурсов программы с помощью первых двух клавиш на панели инструментов. Первая кнопка извлекает файл uhserver.exe, а вторая генерирует скрипты для запуска.

Важно! Программа и все её компоненты должны быть установлены в общедоступную папку с правом записи для пользователей домена. Только в этом случае гарантируется корректная работа программы и запись данных в базу.

Скрипты для запуска uhserver.exe — это файлы run.bat и activedir.ps1. Отдельно останавливаться на них не вижу смысла. После извлечения — можете полюбопытствовать сами. Кстати, мастер создания скриптов попросит указать путь к общей папке с установленной программой.

Далее необходимо создать объект групповой политики со сценарием входа пользователя в систему и указать сетевой путь до скрипта run.bat. Этот объект нужно будет связать с подразделением, в котором хранятся доменные записи компьютеров.

Реализация запуска серверной части групповыми политиками

Само собой, запуск скрипта и вызов файла uhserver.exe будет незаметен для пользователя.

Кстати, UserHunterViewer поддерживает горячие клавиши. Например, Escape сбрасывает условия поиска, F5 — обновляет выборку, а F3 активирует поле поиска. Вызвать функцию поиска можно по клавише Enter. С помощью клавиши F2 можно вызвать функцию экспорта в CSV.

КлавишаДействие
F1О программе
F2Экспорт выборки в CSV
F3Активировать поле поиска
F5Обновить выборку
F6Выборка по текущей дате
F7Выборка по текущему месяцу
F8Открыть окно календаря для выбора дня
F9Запустить ADapter
F10Открыть окно поиска объектов AD
F11Выгрузить сервер
F12Открыть окно генерации скриптов
EscapeСбросить все фильтры
EnterПоиск

Программа написана на Object Pascal в IDE Lazarus. В качестве СУБД использована SQLite.

В проекте использованы модули UniqueInstance и Synapse.

В программу интегрированы консольные утилиты RDPShadow и ADapter. Для работы этих программ нужна среда .Net Framework 4.5.2.

Скачать .Net Framework с этого сайта: 4.5.2 | 4.7.2 | 4.8.1.

Теперь ложка дёгтя…

Получение IP и MAC адресов происходит по принципу получения данных с первого сетевого адаптера. Если на удалённом хосте установлено несколько сетевых плат — выдача может быть, мягко говоря, не точной. Рекомендую опрашивать машины только с одной сетевой платой, а незадействованные адаптеры отключать.