Segredos LSA¶
O que são¶
A Autoridade de Segurança Local (LSA) mantém segredos no hive SECURITY. Eles incluem a
senha de logon automático, as senhas das contas sob as quais os serviços são executados, a senha de domínio da conta de computador,
as chaves de sistema do DPAPI e a chave com a qual os logons de domínio em cache são criptografados. Ela
também mantém logons de domínio em cache, para que usuários do domínio possam entrar sem um controlador de domínio.
parse-registry lsa-secrets lista quais segredos um sistema contém e quando foram definidos, e quantos
logons em cache ele mantém e usa. Ele lê apenas nomes e horários: nada é descriptografado, e
nenhum byte de segredo é lido ou gravado. O Juntei lê evidências; ele não extrai credenciais.
Melhor conclusão: o sistema continha um segredo com este nome, definido
neste horário. O segredo de um serviço (_SC_<service>) significa que a LSA armazena a senha da conta
sob a qual esse serviço é executado.
Localização¶
C:\Windows\System32\config\SECURITY
Policy\Secrets\<name>\CurrVal the current value (encrypted)
Policy\Secrets\<name>\OldVal the previous value
Policy\Secrets\<name>\CupdTime when the current value was set (FILETIME)
Policy\Secrets\<name>\OupdTime when the previous value was set
Cache\NL$1 … NL$n cached domain logons, one slot each
Cache\NL$Control how many slots Windows keeps
| Nome | Tipo | O que é |
|---|---|---|
DefaultPassword |
autologon |
A senha com a qual o Winlogon entra automaticamente. |
_SC_<service> |
service_account |
A senha da conta sob a qual <service> é executado. |
$MACHINE.ACC |
machine_account |
A senha da conta de computador em seu domínio. |
DPAPI_SYSTEM |
dpapi_system |
As chaves DPAPI do sistema. |
NL$KM |
cached_logon_key |
A chave com a qual os logons em cache são criptografados. |
L$_SQSA_<SID> |
security_questions |
As perguntas de segurança de uma conta local (Windows 10 e posteriores). |
RasDialParams!<SID>#n, L$_Ras… |
ras_credentials |
Credenciais de conexão discada e de VPN. |
L$…, G$…, M$… |
local, global, machine |
Outros dados privados, pelo prefixo que LsaStorePrivateData lhes atribui. |
Colete o SECURITY com seus logs de transação, além do hive SYSTEM do sistema, que nomeia o
host.
Cuidados para o analista¶
- Nomes e horários, não valores. Se um valor contém dados é determinado pelo seu tamanho. Seu conteúdo não é lido.
DefaultPasswordnão significa logon automático. O segredo existe na maioria dos sistemas, inclusive naqueles que nunca entram automaticamente. A chaveMicrosoft\Windows NT\CurrentVersion\WinlogondoSOFTWARE(AutoAdminLogon,DefaultUserName) indica se o logon automático está configurado. UmCurrentSetUTCrecente é uma alteração que merece explicação.- Segredos de serviço:
_SC_<service>aparece quando um serviço é configurado para ser executado como uma conta com senha. Compare comparse-registry services(ObjectName) e procure serviços instalados recentemente ou desconhecidos. O segredo pode permanecer depois que o serviço deixa de existir. - Horários:
CurrentSetUTCeOldSetUTCindicam quando o Windows definiu os valores atual e anterior. A senha$MACHINE.ACCmuda a cada 30 dias por padrão, portanto seus horários mudam.KeyLastWrittenUTCe os horários das chavesCurrVal/OldValindicam quando o segredo foi alterado pela última vez. - Logons em cache: um slot está em uso quando seu registro nomeia um usuário. O cabeçalho do registro não é
criptografado; apenas o comprimento do nome de usuário é lido.
CachedLogonsKepté a contagem deNL$Control, que segueCachedLogonsCount(10 por padrão). Slots em uso significam que usuários do domínio entraram interativamente, e suas credenciais podem ser quebradas offline a partir do hive. Os nomes dos usuários são criptografados e não são decodificados. Somente registros binários validados, com cabeçalho completo e comprimento de nome de usuário consistente, contam como em uso. SeProblemsrelatar slots danificados, a contagem de slots em uso abrange apenas os slots validados; não interprete os slots danificados como vazios.
Analisar com o Juntei¶
Usage: juntei parse-registry lsa-secrets <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SECURITY hives
-f, --file <FILE> Parse one SECURITY hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry lsa-secrets -d collection/ -o lsa-secrets.csv
juntei parse-registry lsa-secrets -f SECURITY -t jsonl | jq 'select(.Kind == "service_account")'
Para cada hive, o resumo lista cada segredo com seu tipo e quando foi definido. Em seguida, nomeia os serviços cujas senhas de conta a LSA armazena e conta os slots de logon em cache em uso.
Campos de saída¶
| Campo | Interpretação |
|---|---|
Host, SourcePath |
Host (do hive SYSTEM do sistema) e o hive SECURITY. |
Secret, Kind |
O nome do segredo e o que ele é (consulte a tabela acima); Cache e cached_logons para o registro dos logons em cache. |
ServiceName, UserSID |
O serviço ao qual se refere um segredo _SC_ e o SID do usuário fornecido por um nome (L$_SQSA_, RasDialParams). |
CurrentSetUTC, OldSetUTC |
CupdTime e OupdTime: quando os valores atual e anterior foram definidos. |
HasCurrentValue, HasOldValue |
Se CurrVal e OldVal contêm dados. |
CurrentValueLastWrittenUTC, OldValueLastWrittenUTC, KeyLastWrittenUTC |
As últimas gravações das chaves CurrVal, OldVal e do segredo. |
CachedLogons, CachedLogonsInUse, CachedLogonsKept |
O registro dos logons em cache: slots, slots em uso e a contagem de NL$Control. |
TransactionLogStatus, LogsApplied |
Contexto de recuperação do Registro. |
Problems |
Horários malformados ou fora do intervalo (apenas os metadados de horário são exibidos), cabeçalhos de cache danificados, tipos de valor de cache incorretos e chaves que não podem ser lidas. |
Estratégia de investigação¶
- Procure segredos
_SC_de serviços desconhecidos ou instalados recentemente e associe-os aparse-registry servicese ao evento 7045 (um serviço foi instalado). - Compare os horários de
DefaultPasswordcom as configurações de logon automático doWinlogon. - Em membros de domínio, anote os slots de logon em cache em uso e quando
Cachefoi gravada pela última vez. - Compare os horários dos segredos com a linha do tempo: um segredo definido durante a janela da intrusão pode indicar uma nova conta de serviço, logon automático ou alteração da conta de computador.