Análise e Exploração de Vulnerabilidades 0day no Sistema Windows da Microsoft
Introdução
No mês passado, o patch de segurança da Microsoft incluiu uma vulnerabilidade de elevação de privilégios win32k explorável, que existe apenas em versões anteriores do Windows. Este artigo analisará como os atacantes continuam a explorar essa vulnerabilidade, apesar da constante melhoria das medidas de segurança. O ambiente de análise é o Windows Server 2016.
Contexto da Vulnerabilidade
A vulnerabilidade 0day refere-se a vulnerabilidades que não foram divulgadas nem corrigidas, podendo ser exploradas maliciosamente para causar grandes danos. A vulnerabilidade 0day do sistema Windows descoberta recentemente pode permitir que hackers obtenham controle total do sistema, com consequências que incluem, mas não se limitam a:
Roubo de informações pessoais
Falha do sistema, perda de dados
Perda financeira
Injeção de malware
A chave privada foi roubada
Ativos digitais foram transferidos
De uma forma mais ampla, essa vulnerabilidade pode afetar todo o ecossistema Web3 que opera com base na infraestrutura Web2.
Análise de Patch
O patch corrigiu um problema de múltiplas manipulações da contagem de referências de objetos. A análise dos comentários do código-fonte inicial revelou que o código original apenas bloqueava o objeto da janela, sem bloquear o objeto do menu na janela, o que poderia levar a referências incorretas ao objeto do menu.
Análise de Exploração de Vulnerabilidades
A análise revelou que na função xxxEnableMenuItem, a função MenuItemState retorna dois tipos possíveis de menus: o menu principal da janela ou um submenu dentro do menu.
Construir uma estrutura de menu aninhado em múltiplas camadas e definir propriedades específicas para contornar a deteção de funções. Ao retornar ao nível do utilizador na função xxxRedrawTitle, eliminar a relação de referência entre os menus e libertar o objeto de menu alvo. Por fim, na função xxxEnableMenuItem, fazer referência a um objeto de menu que já não é válido.
Implementação de Exploração de Vulnerabilidades
Abordagem geral
Considerar duas direções de utilização:
Executar código shellcode
Modificar o endereço do token utilizando primitivas de leitura e escrita
Escolha a segunda opção, dividindo o processo em duas questões:
Como explorar a vulnerabilidade UAF para controlar o valor de cbwndextra
Como implementar primitivas de leitura e escrita estáveis
escrita de dados iniciais
Utilizar o objeto de nome da janela na classe WNDClass para ocupar e libertar o objeto de menu disponível. Encontrar a oportunidade de escrever dados na função xxxRedrawWindow.
A escolha final é escrever o parâmetro cb-extra da HWNDClass usando a operação AND 2 com a flag.
Layout de memória estável
Desenhar três objetos HWND consecutivos, liberar o objeto do meio e ocupar com o objeto HWNDClass. Os objetos HWND na frente e atrás são usados para:
Fornecer parâmetros de verificação de logotipo
Fornecer um meio de leitura e escrita de primitivos
Determinar com precisão a ordem de arranjo dos objetos através do endereço do manipulador do núcleo vazado.
implementação de leitura e escrita de primitivas
Qualquer leitura: GetMenuBarInfo()
Escrever à vontade:SetClassLongPtr()
Além da escrita de TOKEN, outras operações de escrita utilizam o objeto da classe do primeiro objeto da janela.
Resumo
A vulnerabilidade win32k pode ser eliminada nas novas versões do Windows.
O processo de exploração de vulnerabilidades é relativamente simples, dependendo principalmente do vazamento do endereço do manipulador de pilha de desktop.
A descoberta de vulnerabilidades pode depender de uma detecção de cobertura de código mais abrangente.
A deteção de leituras e gravações de memória anómalas ajuda a descobrir vulnerabilidades semelhantes
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
13 gostos
Recompensa
13
3
Republicar
Partilhar
Comentar
0/400
MidnightTrader
· 14h atrás
Outro grande buraco, o Windows realmente não está a funcionar.
Ver originalResponder0
TokenDustCollector
· 14h atrás
A vulnerabilidade da Microsoft é um pouco grave, até a chave privada pode ser roubada.
Análise de vulnerabilidades 0day do Windows: da UAF do menu à elevação de privilégios do sistema
Análise e Exploração de Vulnerabilidades 0day no Sistema Windows da Microsoft
Introdução
No mês passado, o patch de segurança da Microsoft incluiu uma vulnerabilidade de elevação de privilégios win32k explorável, que existe apenas em versões anteriores do Windows. Este artigo analisará como os atacantes continuam a explorar essa vulnerabilidade, apesar da constante melhoria das medidas de segurança. O ambiente de análise é o Windows Server 2016.
Contexto da Vulnerabilidade
A vulnerabilidade 0day refere-se a vulnerabilidades que não foram divulgadas nem corrigidas, podendo ser exploradas maliciosamente para causar grandes danos. A vulnerabilidade 0day do sistema Windows descoberta recentemente pode permitir que hackers obtenham controle total do sistema, com consequências que incluem, mas não se limitam a:
De uma forma mais ampla, essa vulnerabilidade pode afetar todo o ecossistema Web3 que opera com base na infraestrutura Web2.
Análise de Patch
O patch corrigiu um problema de múltiplas manipulações da contagem de referências de objetos. A análise dos comentários do código-fonte inicial revelou que o código original apenas bloqueava o objeto da janela, sem bloquear o objeto do menu na janela, o que poderia levar a referências incorretas ao objeto do menu.
Análise de Exploração de Vulnerabilidades
A análise revelou que na função xxxEnableMenuItem, a função MenuItemState retorna dois tipos possíveis de menus: o menu principal da janela ou um submenu dentro do menu.
Construir uma estrutura de menu aninhado em múltiplas camadas e definir propriedades específicas para contornar a deteção de funções. Ao retornar ao nível do utilizador na função xxxRedrawTitle, eliminar a relação de referência entre os menus e libertar o objeto de menu alvo. Por fim, na função xxxEnableMenuItem, fazer referência a um objeto de menu que já não é válido.
Implementação de Exploração de Vulnerabilidades
Abordagem geral
Considerar duas direções de utilização:
Escolha a segunda opção, dividindo o processo em duas questões:
escrita de dados iniciais
Utilizar o objeto de nome da janela na classe WNDClass para ocupar e libertar o objeto de menu disponível. Encontrar a oportunidade de escrever dados na função xxxRedrawWindow.
A escolha final é escrever o parâmetro cb-extra da HWNDClass usando a operação AND 2 com a flag.
Layout de memória estável
Desenhar três objetos HWND consecutivos, liberar o objeto do meio e ocupar com o objeto HWNDClass. Os objetos HWND na frente e atrás são usados para:
Determinar com precisão a ordem de arranjo dos objetos através do endereço do manipulador do núcleo vazado.
implementação de leitura e escrita de primitivas
Além da escrita de TOKEN, outras operações de escrita utilizam o objeto da classe do primeiro objeto da janela.
Resumo
A vulnerabilidade win32k pode ser eliminada nas novas versões do Windows.
O processo de exploração de vulnerabilidades é relativamente simples, dependendo principalmente do vazamento do endereço do manipulador de pilha de desktop.
A descoberta de vulnerabilidades pode depender de uma detecção de cobertura de código mais abrangente.
A deteção de leituras e gravações de memória anómalas ajuda a descobrir vulnerabilidades semelhantes