Vol. 1 No. 20250814-855 (2025)

O PwdLastSet pode confundir?

João Fuzinelli | joao@cylo.com.br | 14/08/2025

Trabalhando em uma resposta a um incidente onde o Domain Admin foi comprometido, comecei a fazer um levantamento do campo PwdLastSet no Active Directory Domain Services com o objetivo de identificar, logicamente, os usuários que realizaram trocas de senhas antes e/ou durante o incidente. Sendo assim, me surgiu uma dúvida:

O atributo PwdLastSet pode ser alterado?

Primeiro, vamos a definição:

A data e a hora em que a senha dessa conta foi alterada pela última vez. Esse valor é armazenado como um inteiro grande que representa o número de intervalos de 100 nanossegundos desde 1º de janeiro de 1601 (UTC). Se esse valor for definido como 0 e o atributo User-Account-Control não contiver o sinalizador UF_DONT_EXPIRE_PASSWD, o usuário deverá definir a senha no próximo logon.

FONTE: https://learn.microsoft.com/en-us/windows/win32/adschema/a-PwdLastSet

Partimos para um laboratório onde subi um Active Directory Domain Services sobre um Windows Server 2022. Criei um usuário chamado lab.user com uma senha definida. O campo pwdLastSet adicionou as informações de data, hora e GMT configuradas no sistema operacional

Aí vem o teste. A primeira coisa que tentei foi adicionar um epoch time no usuárioporém sem sucesso em um script powershell.

Verificando a documentação entendi que é possível setar duas flags o 0 indicando que a senha nunca foi trocada e o -1 que utiliza do tempo atual.

O script e os resultados

OBS.: O script apresentado neste artigo é destinado exclusivamente para fins educativos e de aprendizado. Não nos responsabilizamos pelo uso indevido, aplicação em contextos não autorizados ou quaisquer consequências decorrentes da utilização deste código. Recomendamos que os leitores utilizem o script de forma ética e em conformidade com todas as leis e regulamentos aplicáveis.

Import-Module ActiveDirectory
    Import-Module ActiveDirectory
    Set-ADUser -Identity "lab.user" -Replace @{PwdLastSet="0"}
    Get-ADUser -Identity lab.user -Properties PasswordLastSet

Utilizando 0 como flag
Import-Module ActiveDirectory
    Import-Module ActiveDirectory
    Set-ADUser -Identity "lab.user" -Replace @{PwdLastSet="-1"}
    Get-ADUser -Identity lab.user -Properties PasswordLastSet
Adicionando -1 como flag

Entendo que existem outros campos como WhenChanged que podem ser utilizados para investigação porém o que me trouxe até aqui foi quanto isso poderia ser confuso para quem está respondendo ao incidente de cibersegurança

Vol. 1 No. 20250808-803 (2025)

Detectando Técnicas de Persistência em Endpoints Windows

Hector Carlos Frigo | hector@cylo.com.br | 08/08/2025

Comprometer um sistema não se trata apenas da quebra de uma credencial ou o upload de um malware em um endpoint, agentes de ameaça pensam muito além do acesso inicial, ele ou ela farão de tudo, a fim de alcançar seu objetivo final, podendo ser um vazamento de dados, roubo de propriedades intelectuais, ou em muitos casos uma infecção de ransomware.

Para que isso possa ocorrer, o atacante precisará permanecer vivo e operante no ambiente, uma vez que não é possível calcular quanto tempo ele levará para cumprir seu objetivo, portanto neste post eu gostaria de abordar algumas das técnicas de persistência mais comuns encontradas em ambientes que foram alvos de incidentes cibernéticos, observados em nosso dia a dia no SOC.

A grande realidade é que existem incontáveis técnicas utilizadas por agentes de ameaça para garantir persistência em um ambiente, muitas delas mapeadas pelo famoso framework “MITRE ATT&CK”. Primeiramente, gostaria de definir “O que é” uma técnica de persistência e por que ela é tão importante para um criminoso cibernético. Em seguida, exemplificarei algumas dessas técnicas me baseando em situações reais detectadas por nosso time de segurança.

Conforme a definição do MITRE ATT&CK “Persistência consiste em técnicas utilizadas por adversários para manter acesso a um sistema, indiferente a reinicializações, alterações de credenciais e/ou outras interrupções capazes de cortar seu acesso ao ambiente[…]” basicamente, essa tática ocorre somente após a invasão de um sistema, onde o descrito “adversário” planeja manter-se ativo na infraestrutura da vítima que pode ou não, estar ciente da ocorrência do incidente, essas técnicas são essenciais para a resiliência do atacante, que ainda não atingiu seu objetivo final.

Entendendo agora o “por que” de um agente de ameaça utilizar essas técnicas, agora devemos esclarecer “COMO” isso geralmente é feito… A grande realidade é que os Sistemas Operacionais atuais, facilitam muito o emprego de persistência, devido a diversos recursos nativos, criados em tese para auxiliar no funcionamento de softwares e processos legítimos, utilizados pelos usuários finais, mas quando configurados corretamente em favor do atacante, são ferramentas-chave para seu sucesso no ambiente.

Irei abordar algumas das técnicas mais comuns encontradas em incidentes cibernéticos reais voltados a ambientes “Microsoft Windows”, lembrando que para o “hacker” experiente, “o céu é o limite”, portanto não devemos nos apegar somente ao que será apresentado aqui, ou somente as técnicas já mapeadas pelo MITRE ATT&CK, mas sim compreender que, a medida que as tecnologias evoluem, inevitavelmente maneiras de se conquistar persistência, também irão seguir esse rumo.

Outro fato que devemos considerar é sobre a existência de inumeras táticas e técnicas utilizadas em ambientes “Unix” e também em outros Sistemas Operacionais, porém neste artigo abordarei somente o emprego das mesmas em sistemas “Windows”.

Startup Folder

Para iniciar, introduzirei uma técnica muito interessante e efetiva em ambientes sem monitoramento e análise comportamental. Por padrão, o sistema operacional Windows possui diretórios de startup que são críticos e comumente utilizados por agentes de ameaça que buscam persistência no ambiente, sendo eles:

Startup global (todos os usuários):
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

Startup de usuário especifico:
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

A inclusão de programas ou scripts como arquivos com extensões ps1, .bat, .cmd, entre outros… nestes diretórios do sistema irá resultar em sua execução automática sempre que um usuário se autenticar. Essa prática é frequentemente explorada por agentes maliciosos como uma forma eficaz de garantir persistência no ambiente comprometido. Ao configurar esses arquivos para serem executados em momentos estratégicos, como o logon do usuário, o invasor assegura que seu código continue ativo, mesmo após reinicializações ou tentativas de limpeza, mantendo o controle sobre o sistema de forma discreta e contínua.

Observamos a utilização desta técnica em um ataque recentemente presenciado pela nossa equipe, onde, após ganhar acesso ao endpoint, o agente de ameaça realizou o upload de um malware nomeado como “explorer.exe” no sistema e imediatamente adicionou um arquivo .lnk referenciando ao malware no diretório: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\

Tarefas agendadas

A criação e utilização de tarefas agendadas, poderia ser considerada a técnica de persistência mais conhecida e comumente utilizada em um ambiente comprometido, a técnica consiste na utilização do recurso de criação de tarefas agendadas nativo do Windows para realizar a execução periódica de arquivos ou scripts maliciosos, desta forma garantindo que, mesmo que o processo malicioso seja finalizado por um usuário do sistema, o mesmo volte a ser executado através da utilização deste recurso.

No mesmo incidente citado anteriormente, foi também possível presenciar a criação de uma tarefa agendada cujo a finalidade era executar um software malicioso a cada 1 minuto no ambiente, como mostrado na imagem abaixo:

“C:\Windows\System32\schtasks.exe” /create /f /RL HIGHEST /sc minute /mo 1 /tn “explorer” /tr “C:\Users\Administrator\AppData\Roaming\explorer.exe”

Na imagem e linha de comando acima é possivel observar a utilização do processo nativo “schtasks.exe” para criar uma tarefa agendada com os seguintes parametros:

  • /create: Cria uma nova tarefa.
  • /f: Força a criação, sobrescrevendo qualquer tarefa existente com o mesmo nome.
  • /RL HIGHEST: Define o nível de privilégio como máximo (executa com privilégios de administrador).
  • /sc minute: Define a frequência da tarefa como a cada minuto.
  • /mo 1: Modificador da frequência — neste caso, a cada 1 minuto.
  • /tn "explorer": Nome da tarefa será "explorer".
  • /tr "C:\Users\Administrator\AppData\Roaming\explorer.exe": Caminho do arquivo malicioso nomeado como “explorer.exe”.

Por mais que os parâmetros definidos aparentam ser bem “barulhentos” ainda assim há dificuldade em sua detecção sem o auxílio de ferramentas que estejam configuradas corretamente para realizar a busca por esses comportamentos característicos.

Chaves de registro.

Chaves de registro são peças fundamentais no sistema operacional, por serem responsáveis por garantir o funcionamento de praticamente todos os processos, serviços e conexões existentes no sistema, incluindo também a inicialização dos programas, por esse motivo, alterações e criações de novas chaves de registro no Windows são técnicas extremamente comuns de serem utilizadas por agentes de ameaça para se manter vivo no ambiente, sendo bem semelhante com a primeira técnica discutida neste post, as seguintes chaves de registro geralmente tornam-se alvo de cibercriminosos que buscam adicionar a elas um “valor” que posteriormente irão realizar a execução de processos maliciosos.

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

As chaves de registro apresentadas acima são apenas um exemplo de muitas outras, que possuem capacidades semelhantes, portanto é sempre recomendado configurar ferramentas de detecção para monitorar qualquer alteração ou criação suspeita de chaves de registro que possam ter ocorrido no sistema.

Como podem ver, no incidente analisado por nossa equipe, também foram detectadas mudanças em chaves de registro, onde as alterações realizadas tinham como objetivo executar o conhecido malware nomeado como “explorer.exe” no sistema, utilizando as chaves citadas anteriormente.

Criação de usuários.

A criação de novos usuários em sistemas comprometidos é uma prática comum em incidentes de segurança. Essa técnica é frequentemente usada para garantir persistência no ambiente invadido. Quando um atacante cria contas adicionais no endpoint afetado, ele estabelece uma forma de retorno fácil ao sistema, mesmo que as credenciais originais sejam alteradas ou revogadas. Assim, caso o usuário legítimo tente mitigar o ataque trocando senhas ou removendo acessos, o invasor ainda pode retomar o controle utilizando os usuários previamente criados, dando continuidade às suas ações maliciosas.

Portanto, é sempre muito recomendado realizar a detecção e homologação de todos os usuários criados no ambiente, independentemente se são locais, de serviço ou do domínio, além de definir precisamente quem possuirá o nível de privilégio necessário para realizar criações de novos usuários no sistema.

Conclusão

Após analisar algumas das mais famosas técnicas de persistência utilizadas “world-wide”, entende-se que um Adversário bem preparado irá quase sempre, utilizar mais de uma técnica de persistencia em um ambiente comprometido, e que não existe grande complexidade em desenvolve-las e coloca-las em operação, portanto o analista de SOC treinado a buscar e reconhecer essas praticas, tende a estar sempre um passo a frente dos cibercriminosos.

Referências

https://attack.mitre.org/techniques/T1547/001

https://attack.mitre.org/techniques/T1136

https://attack.mitre.org/techniques/T1078/003

https://attack.mitre.org/tactics/TA0003