Cuentas locales SAM¶
Qué contiene el SAM¶
El hive Security Account Manager (SAM) almacena los registros de las cuentas locales. Juntei
decodifica los nombres de cuenta, los RID, los campos de perfil y comentario, los indicadores de
control de la cuenta, las marcas de tiempo del último inicio de sesión y de la contraseña, los
contadores, las pistas de contraseña, la vinculación con cuentas Microsoft, las rutas de perfil y
si Windows oculta la cuenta en la interfaz de inicio de sesión.
Resulta útil para encontrar administradores locales creados recientemente, cuentas inactivas que se han habilitado, cambios de contraseña, cuentas ocultas y cuentas preparadas para el movimiento lateral.
Mejor conclusión: el SAM local representaba la cuenta con el estado registrado. No es un historial de autenticación completo y no describe cuentas de dominio.
Ubicación y recopilación¶
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SAM.LOG1
C:\Windows\System32\config\SAM.LOG2
Recopile el hive y los registros de transacciones con privilegios suficientes o acceso sin procesar
(raw). La identidad del host puede enriquecerse a partir del hive SYSTEM correspondiente de la
recopilación.
Precauciones para el analista¶
- Este comando analiza cuentas locales, no usuarios de dominio de Active Directory.
- Juntei no extrae intencionadamente los hashes de contraseñas.
- El RID 500 es la cuenta Administrator integrada aunque se haya renombrado; el nombre por sí solo no basta.
LastLogony los contadores son estado del Registro, no un registro de auditoría completo por sesión.HiddenFromLogonUIoculta una cuenta en la pantalla de inicio de sesión; no la deshabilita.- Las cuentas integradas
DefaultAccountyWDAGUtilityAccountpueden estar ocultas de forma legítima. - Los indicadores de cuenta nulos procedentes de un valor
Fdañado o ausente no deben interpretarse como cuenta habilitada. NamesKeyLastWrittenUTCaproxima el contexto de registro del nombre de la cuenta, pero no es una hora de creación garantizada.
Análisis con Juntei¶
Usage: juntei parse-registry sam <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SAM hives
-f, --file <FILE> Parse one SAM hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--rid <RID> Parse one decimal RID (example: 500)
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry sam -f SAM -o accounts.csv
juntei parse-registry sam -f SAM --rid 500 -t jsonl | jq .
juntei parse-registry sam -d evidence/ -t jsonl \
| jq 'select(.HiddenFromLogonUi == true or (.AccountFlags | index("disabled") | not))'
Campos de salida¶
| Campo | Interpretación |
|---|---|
Host, SourcePath |
Contexto del host y hive SAM exacto. |
RID |
Relative Identifier. Pivote sólido de identidad de la cuenta; 500 es el Administrator integrado. |
User |
Nombre actual de la cuenta local. Puede cambiarse; correlacione por RID. |
FullName, Comment, UserComment |
Texto descriptivo; lo controla el atacante y es útil para revisar suplantaciones. |
AccountFlags |
Estados decodificados como deshabilitada, bloqueada, contraseña no requerida, cuenta normal o contraseña que nunca caduca. |
AccountFlagsValue |
Indicadores numéricos sin procesar para la validación y para bits no admitidos. |
CountryCode, CodePage |
Metadatos de configuración regional y página de códigos de la cuenta; normalmente contexto, no atribución. |
LastLogonUTC, LastLogonWholeSecondsUTC |
El mismo estado del último inicio de sesión con precisión completa y en segundos enteros por compatibilidad. No es un historial completo. |
PasswordLastSetUTC |
Hora registrada del cambio de contraseña. Investigue valores inesperadamente recientes o antiguos. |
AccountExpirationUTC |
Caducidad configurada cuando es finita. Un valor nulo puede significar nunca o no establecida. |
LastFailedLogonUTC |
Último inicio de sesión local fallido registrado en el estado del SAM; corrobórelo con los eventos de Security. |
FailedLogonCount, LogonCount |
Contadores acumulados o de estado con un comportamiento de actualización propio de Windows; úselos como contexto, no como recuento exacto de eventos. |
PasswordHint |
Pista sensible proporcionada por el usuario; puede revelar patrones de contraseña. Trátela adecuadamente. |
InternetUserName |
Identidad de la cuenta Microsoft vinculada, si existe. |
HiddenFromLogonUI |
Estado de ocultación en la interfaz. Revise los RID altos y las cuentas personalizadas inesperadas; no significa que esté deshabilitada. |
HomeDirectory, HomeDrive, ProfilePath, LogonScript |
Configuración del entorno y del inicio de sesión de la cuenta local; los scripts o rutas UNC inusuales pueden indicar persistencia. |
KeyLastWrittenUTC |
Hora de cambio de la clave de la cuenta del RID. A nivel de clave, no específica de un campo. |
NamesKeyLastWrittenUTC |
Hora de cambio de la clave de asignación del nombre de usuario; útil como aproximación del ciclo de vida de la cuenta. |
LastLogonFiletime, PasswordLastSetFiletime, AccountExpirationFiletime, LastFailedLogonFiletime |
Valores FILETIME de 64 bits sin procesar que se conservan para la validación y el tratamiento de valores centinela especiales. |
TransactionLogStatus, LogsApplied |
Contexto de la reproducción de los registros de transacciones del Registro. |
Problems |
Discrepancias entre F/V/Names, entradas ausentes, desplazamientos mal formados o daños en la decodificación. |
Estrategia de investigación¶
- Compare el RID, el nombre, los indicadores, la ruta del perfil y
NamesKeyLastWrittenUTCcon la línea base del host. - Revise las cuentas habilitadas con RID 1000 o superior, las que no requieren contraseña, las que nunca caducan, las ocultas o las modificadas recientemente.
- Correlacione con los eventos 4720/4722/4724/4732 de Security, los eventos de inicio de sesión, la creación de perfiles y la actividad remota.
- Busque en el historial de recuperación del Registro si una cuenta se eliminó antes de la recopilación.
- Distinga las cuentas legítimas de aprovisionamiento o predeterminadas de las cuentas interactivas creadas por un atacante.