Как найти дату создания учетной записи локального пользователя?

8

Я хотел бы получить дату создания учетной записи локального пользователя (Win 7, если это имеет значение). Я посмотрел на следующие объекты WMI (и Google, конечно):

Win32_UserAccount Win32_NetworkLoginProfile

Возвращаемые объекты NetworkLoginProfileимеют время последнего входа в систему, но не дату создания. Проверка Date Createdсвойства их папки профиля просто дает дату, когда папка была создана, не обязательно сама учетная запись.

MDMoore313
источник
2
Чтобы добавить из чата: я вижу пользователя улья в дате создания реестра, но это только на основе их первого входа в систему, а не даты создания учетной записи.
TheCleaner

Ответы:

10

Данные находятся в SAM, но, по-видимому, Microsoft не документирует их публично, и я не нахожу официальный API для их получения. Из исходного кода chntpwутилиты видно, что значение хранится в разделе реестра «F» для каждой учетной записи. Quoth исходный код:

#define USER_F_PATH "\\SAM\\Domains\\Account\\Users\\%08X\\F"

struct user_F {
  ...
  char t_creation[8]; /* Time of account creation */
  ...
}

Regripper проект судебно - медицинской экспертизы имеет плагин, samparse , который сообщит дату создания учетной записи.

Инструмент судебной экспертизы, вероятно, не то, что вам нужно, но похоже, что Microsoft не делает его легким.


При исследовании этого я нашел забавным, что Microsoft MVP не знал, что данные о создании учетной записи хранятся в SAM . В его пользу, может быть, он не отошел от chntpwутилиты, с которой я начал искать информацию о недокументированных структурах SAM.

Эван Андерсон
источник
Ваши идеи меня заинтриговывают, и я хочу - подписаться на рассылку новостей - я имею в виду, научиться использовать этот инструмент, чтобы попробовать это сам. Возможно, у вас есть какая-нибудь связь, которую я мог бы использовать для этой цели? (Черт, уценка!)
HopelessN00b
Просто ссылка на проект regripper выше. Лично я этим не пользовался, но с этим довольно легко справиться. Похоже, что теперь он включен в Kali Linux ( bugs.kali.org/print_bug_page.php?bug_id=246 ), если вы предпочитаете просто загружать live CD, а не устанавливать среду Perl для запуска regripper. Видимо, вокруг этих инструментов была написана книга. Это выглядит дорого: amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp/… Возможно, мне стоит поиграть с этими инструментами в какой-то момент - у меня просто не было повода.
Эван Андерсон
Я думаю, что Эван может
принести
Я не давал инструментам попробовать. Вы находите, что дата не заполняется?
Эван Андерсон
Не уверен, что вы уже видели мой собственный ответ ниже, но поле, называемое «дата создания», на самом деле является «паролем последнего изменения», что, очевидно, будет таким же значением до первого изменения пароля после создания учетной записи.
charleswj81
3

Единственный способ узнать это - включить аудит управления учетными записями на компьютере r при создании учетной записи. Затем вы увидите EventID 4720 в журнале событий на дату создания. (В статье говорится, что Active Directory, но то же самое относится и к локальным учетным записям; я проверил.)

Без этого вы можете приблизиться, проверив дату создания в кусте реестра пользователя, ntuser.datфайле, папке профиля пользователя и т. Д., Но, как упоминалось в комментариях, это верно только в отношении первого входа пользователя в систему, поскольку именно тогда эти вещи созданы.

К сожалению для вас, это случай «если вы не регистрировали его, то эта информация не существует».

HopelessN00b
источник
1

Я собирался дать вам сценарий POC PowerShell для извлечения и анализа времени создания, но я понял, что chntpwлогика неверна. Значение, которое он называет временем создания, фактически является последним установленным временем пароля, хотя эти значения одинаковы при первоначальном создании учетной записи. Смотрите здесь для исчерпывающего описания SAM.

Впрочем, вторая ссылка Эвана samparseможет помочь. Глядя на это на самом деле работает. Если вы посмотрите на его источник здесь , строка 99:

$c_date = $create->get_timestamp();

вы увидите, что это звонки get_timestampот Perl Parse::Win32Registry. Я почти уверен, что это последнее время записи ключа. Поскольку HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>создается впечатление, что определенный ключ ( ) содержит только указатель на соответствующий ключ RID, он не должен изменяться после создания, а время последней записи будет равно времени создания.

Если вы хотите использовать больше встроенных инструментов, вот серия статей для сценаристов, объясняющих, как с помощью PowerShell:

Использование PowerShell для доступа к последним модифицированным временным меткам реестра

Повторное использование кода штампа времени PowerShell Registry

Создание прокси-функции для отображения меток времени в реестре

Использовать временные метки ключа реестра через PowerShell

charleswj81
источник
-3

Эта команда в powershell должна сделать свое дело:

systeminfo | findstr /C:"Install Date"
Майк
источник
1
Как это связано? Вы читали вопрос?
Свен
-5

Перейдите через Мой компьютер к

C: \ Users, и вы увидите все учетные записи пользователей, перечисленные на локальном компьютере. Вы можете щелкнуть правой кнопкой мыши соответствующую учетную запись пользователя и перейти к свойствам, и он покажет вам дату создания, она должна совпадать с созданием учетной записи пользователя.

Просто мои 2 цента

Kevin
источник
2
-1 - показывает, когда был создан каталог профиля. Это не говорит вам, когда была создана учетная запись, так как каталог профиля можно было удалить и заново создать в любое время после создания учетной записи.
Эван Андерсон
Хотя это возможно, в 99% случаев это будет точно, и этого достаточно для большинства
Кевин
Мне всегда говорили, чтобы все было просто ... кажется, что мы оба получаем один и тот же ответ, вам нужно было написать программу, и я просто взял данные, которые уже были доступны вам
Кевин
2
Извините, Кевин, почти не подходит для этого конкретного решения. В частности, это должно было быть сделано для компьютеров в лаборатории, где папки профиля должны были регулярно удаляться, чтобы сохранить время входа в систему приемлемым и тратить пространство впустую, поэтому это решение ни в коем случае не является правдоподобным, так как эта дата просто дата создания папки, а не дата создания профиля пользователя .
MDMoore313
1
@Kevin Ответ "держи его простым" - мой, который состоит в том, что это невозможно сделать, если аудит не был включен до создания учетной записи, хотя создание куста реестра пользователя, файла ntuser.dat или папки профиля пользователя может обеспечить приближение. Сложный ответ - EvanAnderson, который, к моему удивлению, действительно работает.
HopelessN00b