¿Cómo encontrar la fecha de creación de una cuenta de usuario local?

8

Me gustaría obtener la fecha de creación de una cuenta de usuario local (Win 7 si es importante). He mirado los siguientes objetos WMI (y google, por supuesto):

Win32_UserAccount Win32_NetworkLoginProfile

Los objetos devueltos NetworkLoginProfiletienen la última hora de inicio de sesión, pero no la fecha de creación. Verificar la Date Createdpropiedad de su carpeta de perfil simplemente da la fecha en que se creó esa carpeta , no necesariamente la cuenta en sí.

MDMoore313
fuente
2
Para agregar desde el chat: puedo ver la sección del usuario en la fecha de creación del registro, pero eso solo se basa en su primer inicio de sesión, no en la fecha de creación de la cuenta.
TheCleaner

Respuestas:

10

Los datos están en el SAM, pero no parece estar documentado públicamente por Microsoft y no encuentro una API oficial para recuperarlos. Puedo ver, mirando el código fuente de la chntpwutilidad, que el valor se almacena en la clave de registro "F" para cada cuenta. Quoth el código fuente:

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

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

El proyecto forense regripper tiene un complemento, samparse , que informará la fecha de creación de la cuenta.

Una herramienta forense probablemente no sea lo que desea, pero parece que Microsoft no lo está facilitando.


Al investigar esto, me pareció divertido que un MVP de Microsoft no supiera que los datos de creación de la cuenta están almacenados en el SAM . Para su beneficio, tal vez no esté alejado de la chntpwutilidad, que es donde comencé mi búsqueda de información sobre estructuras SAM indocumentadas.

Evan Anderson
fuente
sus ideas son interesantes para mí y deseo --- suscribirme a su boletín informativo --- , quiero decir aprender a usar esta herramienta para probar esto yo mismo. ¿Podría, por casualidad, tener algún vínculo que pueda aprovechar para ese fin? (Maldito que rebaja!)
HopelessN00b
Solo el enlace al proyecto regripper arriba. No lo he usado, personalmente, pero parece bastante fácil de manejar. Parece que ahora se ha incluido en Kali Linux ( bugs.kali.org/print_bug_page.php?bug_id=246 ) si prefiere simplemente iniciar un CD en vivo en lugar de instalar un entorno Perl para ejecutar regripper. Aparentemente había un libro escrito sobre estas herramientas. Parece caro: amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp/… Probablemente debería jugar con estas herramientas en algún momento, simplemente no he tenido la oportunidad de hacerlo.
Evan Anderson
Creo que Evan podría deberle una disculpa a Richard Mueller;)
charleswj81
No probé las herramientas. ¿Estás descubriendo que la fecha no se está poblando?
Evan Anderson el
Aún no estoy seguro si vio mi propia respuesta a continuación, pero el campo al que se hace referencia como "fecha de creación" es en realidad "última contraseña modificada", que obviamente será el mismo valor hasta el primer cambio de contraseña posterior a la creación de la cuenta.
charleswj81
3

La única forma de saber realmente sería tener habilitada la auditoría de administración de cuentas en la computadora cuando se creó la cuenta. Luego, vería EventID 4720 en el Registro de eventos en la fecha de creación. (El artículo dice Active Directory, pero lo mismo se aplica a las cuentas locales también; lo comprobé).

Sin eso, lo más cercano que puede llegar es verificar la fecha de creación en la sección del registro del usuario, el ntuser.datarchivo, la carpeta del perfil del usuario, etc., pero como se menciona en los comentarios, esto solo es preciso con respecto al primer inicio de sesión del usuario, ya que es cuando esas cosas son creados.

Desafortunadamente para usted, este es un caso de "si no lo registró, entonces esa información no existe".

HopelessN00b
fuente
1

Estaba a punto de darle un script POC PowerShell para extraer y analizar el tiempo de creación, pero me di cuenta de que chntpwla lógica es incorrecta. El valor que llama el tiempo de creación es en realidad el último tiempo establecido de contraseña, aunque estos valores son los mismos en la creación inicial de la cuenta. Vea aquí para una descripción exhaustiva del SAM.

Sin samparseembargo , el segundo enlace de Evan , podría hacerlo bien. Verlo realmente funciona. Si observa su fuente aquí , línea 99:

$c_date = $create->get_timestamp();

verá que llama get_timestampdesde Perl's Parse::Win32Registry. Estoy bastante seguro de que ese es realmente el último tiempo de escritura de la clave. Como parece que esa tecla en particular ( HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>) solo contiene un puntero a la tecla RID correspondiente, no debería cambiar después de la creación y el último tiempo de escritura será igual al tiempo de creación.

Si desea seguir con más herramientas integradas, aquí hay una serie de artículos de Scripting Guy que explican cómo a través de PowerShell:

Use PowerShell para acceder a la marca de tiempo de la última modificación del registro

Reutilización del código de marca de tiempo del registro de PowerShell

Crear una función de proxy para mostrar marcas de tiempo clave del registro

Aproveche las marcas de tiempo clave del registro a través de PowerShell

charleswj81
fuente
-3

Este comando en powershell debería hacer el truco:

systeminfo | findstr /C:"Install Date"
Miguel
fuente
1
¿Cómo se relaciona esto? ¿Has leído la pregunta?
Sven
-5

Navega a través de Mi PC para

C: \ Users y verá todas las cuentas de usuario enumeradas en la máquina local. Puede hacer clic con el botón derecho en la cuenta de usuario adecuada e ir a propiedades y le mostrará una fecha de creación, esto debería ser lo mismo que la creación de la cuenta de usuario

Solo mis 2 centavos

Kevin
fuente
2
-1 - Eso te muestra cuándo se creó el directorio de perfil. Eso no le dice cuándo se creó la cuenta, ya que el directorio del perfil podría eliminarse y volver a crearse en cualquier momento después de que se creó la cuenta.
Evan Anderson
Si bien eso es posible, el 99% de las veces será preciso, y esto es lo suficientemente bueno para la mayoría
Kevin
Siempre me dijeron que lo mantuviera simple ... parece que ambos obtuvimos la misma respuesta, tenía que ir a escribir un programa, y ​​simplemente tomé los datos que ya estaban disponibles frente a usted
Kevin
2
Lo siento Kevin, casi no es suficiente para esta solución en particular. Específicamente, esto tenía que hacerse para las computadoras en un laboratorio, donde las carpetas de perfil tenían que eliminarse regularmente para mantener los tiempos de inicio de sesión aceptables y el espacio desperdiciado, así que esta solución no es plausible, ya que esa fecha es solo una fecha de creación de carpeta, no una fecha de creación de perfil de usuario .
MDMoore313
1
@Kevin La respuesta "mantenerlo simple" es mía, que es que no se puede hacer, a menos que se haya habilitado la auditoría antes de la creación de la cuenta, aunque la creación de la sección del registro del usuario, el archivo ntuser.dat o la carpeta del perfil del usuario pueden proporcionar Una aproximación. La respuesta compleja es la de Evan Anderson, que realmente funciona, para mi sorpresa.
HopelessN00b