DEBIDO SCREEN LOGGER

18/12/2025

DEBIDO SCREEN LOGGER é um malware do tipo logger que tirara prints de tela do computador do seu escopo e as enviara para o C2 (Comando e Controle) no canal do Discord. 

📄 Documentação Técnica: ScreenLogger Persistente com Python


1. Visão Geral e Funcionalidade

Este script Python é um screenlogger autônomo e persistente. Sua função principal é capturar screenshots periódicas da área de trabalho de um sistema Windows e enviá-las automaticamente para um canal do Discord através de um webhook. O código incorpora técnicas avançadas de persistência para garantir que continue em execução mesmo após reinicializações do sistema, sendo capaz de operar tanto como script .py quanto como executável compilado .exe.

Funcionalidades Principais:

  • Captura de Tela: Utiliza a biblioteca mss para capturar o monitor primário a intervalos configuráveis.

  • Exfiltração de Dados: Envia as imagens capturadas para um servidor remoto (Discord) via requisições HTTP.

  • Persistência Avançada: Instala uma cópia de si mesmo na pasta temporária do sistema (%TEMP%) e cria um atalho na pasta de inicialização do Windows.

  • Ofuscação e Ocultação: Nomeia o processo de forma legítima (svchost.py/.exe) e define atributos de arquivo ocultos.

  • Contador Persistente: Mantém uma contagem global de capturas enviadas com sucesso, armazenada em um arquivo JSON.

  • Sistema de Logging: Registra todas as suas atividades em um arquivo de log local para diagnóstico.

2. Arquitetura e Fluxo de Execução

O programa segue um fluxo de execução lógico e eficiente:

  1. Inicialização e Contador: Carrega o número total de prints já enviados de um arquivo JSON.

  2. Teste de Conexão: Valida a conectividade e a validade do webhook do Discord.

  3. Configuração de Persistência (setup_persistencia): Esta é a etapa crítica:

    • Se executado pela primeira vez (de qualquer local), o script se copia para %TEMP%\svchost.[py|exe], oculta o arquivo, cria um atalho na pasta Startup e inicia essa nova cópia.

    • A instância original então se encerra.

    • Em todas as inicializações subsequentes (iniciadas pelo Windows via atalho), o script detecta que já está rodando da pasta %TEMP% e pula diretamente para o loop de captura.

  4. Loop Principal (capturar_e_enviar): Entra em um loop infinito que, a cada intervalo definido (INTERVALO):

    • Captura a tela e salva um arquivo PNG temporário.

    • Envia o arquivo para o Discord via requests.post, incluindo o contador atualizado na mensagem.

    • Atualiza o contador persistente em caso de sucesso.

    • Remove o arquivo de imagem temporário.

    • Aguarda o intervalo configurado antes de repetir.

3. Análise Detalhada das Técnicas de Persistência

A persistência é o coração deste script. Ele implementa um mecanismo robusto e furtivo:

  • Autocópia para Local Privilegiado (%TEMP%): A pasta temporária do sistema é um local comum, frequentamente ignorado em verificações rotineiras e que geralmente tem permissões de escrita. Copiar-se para lá desassocia o artefato malicioso do seu ponto de entrada inicial (ex.: um anexo de e-mail baixado na Área de Trabalho).

  • Criação de Atalho na Pasta Startup: Esta é uma técnica clássica (MITRE T1547.001). O atalho WindowsUpdate.lnk aponta para a cópia na %TEMP%. Quando qualquer usuário faz login no Windows, o sistema executa automaticamente tudo o que está nessa pasta, garantindo a reexecução do screenlogger.

  • Ofuscação por Nomenclatura: Usar nomes como svchost (um processo legítimo e crítico do Windows) e Windows Update busca enganar administradores e usuários que listam processos ou visualizam a pasta de inicialização.

  • Atributo de Arquivo Oculto: Tanto o arquivo na %TEMP% quanto o atalho na Startup têm o atributo FILE_ATTRIBUTE_HIDDEN definido via win32api, tornando-os invisíveis para um usuário que não tenha a opção "Mostrar itens ocultos" ativada no Explorador de Arquivos.

  • Mutex para Instância Única: O uso de um Mutex (Global\\ScreenshotBotMutex) impede que múltiplas instâncias do script sejam executadas simultaneamente, evitando conflitos e comportamento anômalo que poderia levantar suspeitas.

  • Suporte a .py e .exe: A função getattr(sys, 'frozen', False) detecta se o código está rodando como um executável compilado (ex.: com PyInstaller) ou como um script Python puro, adaptando a lógica de execução (python svchost.py vs. svchost.exe) e o nome do arquivo copiado.

4. Mapeamento para Frameworks de Segurança (MITRE ATT&CK & OWASP)

MITRE ATT&CK Matrix

Esta ferramenta se encaixa em várias táticas e técnicas da matriz ATT&CK:

Tática ID Técnica Nome da Técnica Descrição / Como se Aplica
Persistência T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder Persistência através do atalho na pasta Startup.
Defesa Evasion T1564.001 Hide Artifacts: Hidden Files and Directories Uso de SetFileAttributes para ocultar o executável e o atalho.
Defesa Evasion T1036.005 Masquerading: Match Legitimate Name or Location Nomeação do arquivo como svchost e uso da pasta %TEMP%.
Discovery T1057 Process Discovery Implícito ao enumerar processos para o taskkill durante a atualização da cópia.
Collection T1113 Screen Capture Uso da biblioteca mss para capturar a tela.
Exfiltration T1041 Exfiltration Over C2 Channel Exfiltração dos dados (imagens) sobre um canal Web (Discord Webhook).
Command and Control T1071.001 Application Layer Protocol: Web Protocols Comunicação com o servidor de comando e controle (Discord) via HTTPS.

OWASP Application Security Verification Standard (ASVS) / Top 10

Enquanto o MITRE ATT&CK foca no atacante, o OWASP foca na defesa. Este código explora falhas que as defesas devem mitigar:

  • A06:2021-Vulnerable and Outdated Components: Depende de que o Python e bibliotecas como pywin32 estejam presentes no sistema alvo. A falta de um inventário de software atualizado pode facilitar sua execução.

  • A08:2021-Software and Data Integrity Failures: Não possui verificação de integridade ou assinatura de código, mas se aproveita da confiança do usuário em arquivos na pasta TEMP e Startup.

  • Falha de Controle de Acesso: A técnica de persistência explora o fato de que muitos usuários têm permissão para escrever em suas próprias pastas Startup e %TEMP%.

5. Mitigações e Recomendações de Defesa

Para se proteger contra ferramentas com este perfil, as seguintes medidas são eficazes:

  • Monitoramento de Processos: Alertar sobre a execução de python.exe ou svchost.exe a partir de caminhos incomuns como %TEMP%.

  • Análise da Pasta de Inicialização: Ferramentas de segurança devem monitorar regularmente e validar itens na pasta Startup, especialmente os ocultos.

  • Restrição de Execução: Políticas como AppLocker ou Software Restriction Policies (SRP) podem ser configuradas para bloquear a execução de scripts Python (python.exe, pythonw.exe) ou executáveis a partir da pasta %TEMP%.

  • Inspeção de Tráfego de Rede: Bloquear ou alertar sobre conexões para domínios externos conhecidos (como discord.com) a partir de sistemas que não são destinados a acessá-los.

  • Educação do Usuário: Ensinar sobre os riscos de executar arquivos desconhecidos, mesmo que aparentem ser inofensivos ou venham de fontes aparentemente confiáveis.

  • Verificação Regular de Atributos Ocultos: Realizar varreduras periódicas no sistema de arquivos ativando a visualização de itens ocultos.

6. Considerações Éticas e Legais

É extremamente importante ressaltar:

  1. Uso Legal: Este código e sua documentação têm propósitos estritamente educacionais. Eles destinam-se ao estudo de técnicas de segurança, testes de penetração autorizados em ambientes controlados onde você tem permissão explícita por escrito, e ao desenvolvimento de defesas mais robustas.

  2. Consentimento: O uso de screenloggers, keyloggers ou qualquer software de monitoramento sem o consentimento explícito e informado do proprietário do sistema e do usuário é:

    • Ilegal na maioria dos países, violando leis como a Lei de Abuso e Fraude Computacional (CFAA), a Lei Geral de Proteção de Dados (LGPD) e outras leis de privacidade.

    • Antiético, constituindo uma violação grave da privacidade e da confiança.

  3. Responsabilidade: O desenvolvedor/mantenedor deste material não se responsabiliza por qualquer uso indevido, ilegal ou malicioso do código ou das informações aqui contidas. A responsabilidade pelo uso é inteiramente de quem o executa.

7. Projeto

Este projeto de screenlogger serve como um estudo de caso prático sobre como técnicas simples de programação Python, quando combinadas com conhecimento de sistemas operacionais (Windows) e de ofuscação, podem ser utilizadas para criar ferramentas persistentes e furtivas.

Para profissionais de segurança, entender profundamente essas técnicas é o primeiro e mais crucial passo para desenvolver monitoramentos eficazes, criar regras de detecção (como para SIEMs e EDRs) e planejar estratégias de mitigação que protejam efetivamente os ativos de informação.

Explorando o Código Aberto:

📁 1. IMPORTAÇÕES E CONFIGURAÇÕES INICIAIS

Configurações:

📊 2. SISTEMA DE CONTADOR PERSISTENTE

Técnica: Persistência via arquivo JSON no %TEMP%

  • Local: C:\Users\[Usuário]\AppData\Local\Temp\screenshot_counter.json

  • Estrutura: {"total": X, "ultima_atualizacao": "timestamp"}

  • ATT&CK: T1090 - Persistence Through Configuration Files

📝 3. SISTEMA DE LOGGING OFENSIVO

Características:

  • Logs em tempo real no console

  • Arquivo persistente em %TEMP%\screenlogger_log.txt

  • Timestamp para análise forense

  • Fail-safe com try-except para evitar crash

🔗 4. MECANISMO DE PERSISTÊNCIA (T1547.001)

Verificação inicial: Detecta se já está rodando da pasta temporária para evitar loop infinito. 

Deteção de ambiente:

  • sys.frozen = True: Executável compilado (PyInstaller)

  • sys.frozen = False: Script Python puro

  • Ofuscação: Nome "svchost" para se passar por processo legítimo do Windows

Técnicas:

  1. taskkill /F /IM - Mata processo anterior (T1489 - Service Stop)

  2. os.remove() - Remove arquivo antigo

  3. time.sleep(1) - Aguarda término do processo

shutil.copy2(): Copia arquivo mantendo metadados e timestamps

Técnica de evasão (T1564.001):

  • FILE_ATTRIBUTE_HIDDEN = 2 (atributo de arquivo oculto)

  • Arquivo não aparece no Explorer sem "Mostrar itens ocultos"

Caminho da persistência:

  • %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\

  • Executa automaticamente no login do usuário (T1547.001)

Ofuscação do atalho:

  • Nome: WindowsUpdate.lnk (parece legítimo)

  • WindowStyle = 7: SW_SHOWMINNOACTIVE (janela minimizada)

  • Descrição: "Windows Update Service" (engana inspeção rápida)

Ocultação dupla: Tanto o executável quanto o atalho são ocultados 

Execução furtiva:

  • CREATE_NO_WINDOW: Processo sem janela visível

  • sys.executable: Usa o Python instalado para scripts .py

  • sys.exit(0): Encerra instância original (limpa evidências)

📸 5. CAPTURA E EXFILTRAÇÃO (T1113 + T1041)

Captura com MSS:

  • sct.monitors[0]: Todos os monitores combinados

  • sct.monitors[1]: Primeiro monitor físico

  • sct.grab(): Captura região específica (mais eficiente que shot())

Processamento da imagem:

  • img.rgb: Dados RGB da captura

  • img.size: Dimensões (largura, altura)

  • Nome com timestamp para evitar sobrescrita

Validação: Verifica se a captura foi bem-sucedida e tem tamanho > 0

Exfiltração via Discord Webhook (T1041.001):

  • multipart/form-data: Imagem + mensagem em uma requisição

  • Nome fixo "screenshot.png" para consistência

  • Emoji 🖥️ para identificação rápida no Discord

  • Contador incluído para tracking

Limpeza e validação:

  • Remove evidência local (arquivo PNG)

  • Status 200/204 = Sucesso no Discord

  • Atualiza contador apenas se envio for bem-sucedido

🚀 6. PONTO DE ENTRADA E LOOP PRINCIPAL

Inicialização: Logs detalhados para debugging forense

Teste de conectividade: Valida webhook antes de iniciar capturas

Loop principal:

  • while True: Execução infinita

  • KeyboardInterrupt: Permite saída limpa com Ctrl+C

  • traceback.format_exc(): Logs detalhados de erros

  • time.sleep(INTERVALO): Controla frequência de captura

🔍 DETECÇÃO E MITIGAÇÃO

Indicadores de Comprometimento (IOCs):

  1. Processo svchost.exe ou python.exe executando de %TEMP%

  2. Arquivos ocultos svchost.py/exe na pasta TEMP

  3. Atalho oculto WindowsUpdate.lnk na Startup

  4. Conexões HTTPS para discord.com/api/webhooks/

  5. Arquivo screenshot_counter.json na TEMP

Mitigações:

  • AppLocker: Bloquear execução de Python/executáveis da TEMP

  • Monitorar criação de atalhos na pasta Startup

  • Analisar processos com parent/child relationship suspeito

  • Bloquear webhooks do Discord em redes corporativas

Codigo Aberto:

Crie seu site grátis! Este site foi criado com Webnode. Crie um grátis para você também! Comece agora