Ir para conteúdo

Palestra 2: Abusando de fuzzing no Windows


Otavioarj

Posts Recomendados

Wagner, esse cara é referência no assunto ahaha. Eu sugeriria vc botar a mão na massa, começando por nível de usuário, há muita coisa "escondida".

Na minha opinião, pegar um injetor de dll/código é um bom ponto de começo, fuçar na WinAPI, resolução de símbolos, comportamento do loader e tal. Tem o Kiljector no meu github, e o BlackBone que possui alguns métodos mais tradicionais, e possuí injetor em nível de kernel :P.

https://github.com/DarthTon/Blackbone

 

 

Link para o comentário
Compartilhar em outros sites

  • Apoiador Nibble

Boa noite Otávio. Tudo certo? Cara, primeiramente, muito obrigado pelo retorno. Então, eu vi que ele entende da parte interna do Windows pra caramba, por isso que eu estou focando nas aulas dele. Ter uma base forte do Windows. O cara é top mesmo!

Quanto a sua dica, obrigado! Vou começar por aí mesmo! Começar pelo ntdll.dll de cara é uma boa? Tipo debugando ele com o Windbg ou desassemblando ele?

Quanto tu diz injetor de código de dll, desculpa a pergunta, mas com qual finalidade? Tipo já injetar dll mesmo e estudar o que acontece?

Obrigado Otávio. 

Link para o comentário
Compartilhar em outros sites

23 hours ago, Wagner Drachinski said:

Quanto a sua dica, obrigado! Vou começar por aí mesmo! Começar pelo ntdll.dll de cara é uma boa? Tipo debugando ele com o Windbg ou desassemblando ele?

Olha, 1/3 da API em nível de usuário se encontra aí. Seria legal vc ver partes disso, por exemplo, como funciona o OpenProcess, pro NtOpenProcess e aí ver como rola tudo :). Debuggar a dll daria um trampo absurdo, e seria bem confuso.

A parte que falo sobre injeção de código é justamente para estudar todo o processo. O serviço, ou a função, mais importante em um S.O é fornecer a abstração aos recursos controlados e escassos, como acesso ao hardware :P. E essa abstração rola principalmente pelo conceito de processos e threads, então estudar os processos e suas linhas de execução, principalmente como um processo interage com o outro, é bem dahora para tanto estudar a API do S.O, seus internals eee ainda segurança. Tdo ao mesmo tempo ahaha ?

Link para o comentário
Compartilhar em outros sites

  • Apoiador Nibble

Opa, boa noite Otávio. Tudo certo? Desculpa a demora para responder aí! Beleza, vou dar uma olhada no OpenProcess e como ele se comunica com o NtOpenProcess. Essa passo a passo pode ser feito pelo WinDbg?

Quanto a essa parte de recursos controlados e escassos, está ligado a que tudo precisa ser solicitado ao modo kernel, a aí sim, ele que faz a parada de verdade. Na verdade, pelo o que eu já percebi, não é nem o kernel na verdade, pois o kernel passa para o driver e o driver passa para o HAL e daí o HAL é que faz o que precisa ser feito e depois avisa o kernel que está pronto. É mais ou menos isso?

Então, quanto aos processos e threads, eu estava vendo (estava pq o curso acabou o prazo grátis e agora eu tenho que esperar para comprar.....rsrsrs) é que o processo é um objeto do kernel que dá recursos para as threads poderem executar. Aí o processo em kernel modo é dividido em EPROCESS (executivo) e KPROCESS (kernel) e se não me engano o EPROCESS contém o KPROCESS. O mesmo processo acontece com o ETHREAD e KTHREAD. Só que cada um contém informações diferentes. Aí depois que toda essa parada rola, o subsistema de ambiente Windows (csrss.exe) é avisado de que o processo e thread do lado kernel está pronto, aí ele pode criar as suas informações no lado cliente. Acho que é mais ou menos isso também?

Cara, se eu estiver falando besteira, dá um grito aí que daí eu já apago tudo aí!! kkkkk

Aí quanto ao processo conversar com outro é por IPC. Aí uma parada que eu não entendi, pipe nomeado, fila de mensagem e memória compartilhadas são formas de IPC? (foi mal se a pergunta é muito básica)

Então, se eu estiver no caminho do entendimento das coisas aí, eu ainda não consegui olhar com o olhos de um atacante ainda, pois eu estou pegando os conceitos ainda e vendo como o Windows funciona certinnho, tipo, como inicia um processo, ou como termina o processo. Mas ainda não estou conseguindo ter um olhar de atacante.

Na verdade, só tipo tendo umas ideias, tipo, aqui provavelmente pode ser que dá pra fazer algo, aqui também. Tipo, eu estava vendo sobre o Windows Graphics (win32k.sys) e que ele é acessado direito pelo modo usuário, sem passar pelo executivo. Aí deve da pra fazer alguma coisa. Fui dar uma pesquisada e tem uma falha recente no GDI aí. Também estou estudando o protocolo SMB para entender como ele funciona.

Então, tudo isso é da hora mesmo cara, tipo, tu ver as coisas acontecendo e você ver que está entendo tudo.

Cara, se eu estiver no caminho dá um toque aí.

Outra coisa, tu me permite ir estudando e te perguntando quando surgir dúvidas?

Obrigado novamente Otávio!

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...