Cracking Online Test/Quiz Software: Ataque e Defesa
Neste blog, demonstrarei com que facilidade qualquer pessoa pode quebrar um software de teste/quiz online se ele for mal desenvolvido.
Olá Mundo! ❤️
Espero que todos estejam bem e seguros em casa. Devido ao recente aumento do COVID-19 na China e em alguns outros países, muitas instituições educacionais estão planejando novamente mudar todas as atividades educacionais para um formato de e-learning. Recebi uma solicitação de uma empresa de desenvolvimento de software para testar seu aplicativo de exame on-line recém-desenvolvido .
Era um aplicativo cliente pesado, eles planejavam fornecer o arquivo executável para os alunos.
Simplificando, quando um aluno clica nesse aplicativo, ele abre uma interface de tela inteira solicitando credenciais de login.
Uma vez iniciado o exame, não havia como minimizar as janelas ou voltar para a interface do sistema operacional, pois eles bloqueavam todos os eventos do teclado, como eventos de teclas de controle e função. Ele mencionou isso no passo a passo.
Inicialmente, tentei sair da tela cheia, tentei atalhos como Alt+Tab, Ctrl+Alt+Del, Alt+Esc, Ctrl+Esc, etc., mas sem sucesso, tentei várias outras Chaves/Sequência de Atenção Segura. Não consegui sair daquela janela.
Comecei analisando as partes internas do aplicativo com a ajuda do IDA Pro , durante a análise binária, descobri que ele verifica as combinações de teclas de atalho, mas não verifica o evento que ocorre quando a mesma tecla é pressionada várias vezes. Isso significa que não é possível restringir certos comandos de controle de recurso de acessibilidade, como Sticky Keys .
'Teclas adesivas' é um recurso de acessibilidade de algumas interfaces gráficas do usuário que auxiliam os usuários com deficiências físicas ou ajudam os usuários a reduzir lesões por esforço repetitivo. Ele serializa os pressionamentos de tecla em vez de pressionar várias teclas ao mesmo tempo, permitindo que o usuário pressione e solte uma tecla modificadora, como Shift, Ctrl, Alt ou a tecla Windows, e mantenha-a ativa até que qualquer outra tecla seja pressionada.
- Wikipédia
Os usuários podem ativar ou desativar as teclas de aderência no Windows pressionando a tecla Shift cinco vezes . Com a ajuda da configuração da tecla Sticky, um usuário pode sair da tela cheia e acessar a interface do sistema operacional em um teste em andamento.
Ao clicar em “Ir para a Central de Facilidade de Acesso para desativar o atalho do teclado”, uma janela de configuração das Sticky Keys aparecerá. Na janela de configuração das Sticky Keys, um usuário mal-intencionado pode acessar os aplicativos disponíveis no sistema a partir da barra de endereços.
Digitei rapidamente cmd.exe na barra de endereço e cliquei no ícone "Ir", e o CMD foi aberto.
Isso resolveu meu principal desafio de obter a janela do Prompt de Comando, é fácil executar qualquer coisa a partir daqui. Eu usei o método de escape de chave pegajosa em algumas máquinas de quiosque e exibições de robótica durante meus dias de faculdade.
Agora, o que vem?
Meu objetivo final era comprometer o servidor e obter todas as respostas, então comecei uma análise dinâmica do executável.
Eu interceptei o tráfego do aplicativo usando a ferramenta Echo Mirage . Acabou de abrir a ferramenta Echo Mirage. Clicou em “Injetar” no menu “Processo” no Echo Mirage. Selecionou o processo de aplicação atual para acessar seu tráfego.
Percebi que o aplicativo estava enviando um nome de usuário e senha para um IP na porta 21, que é usada para serviços de FTP .
O File Transfer Protocol (FTP) é um protocolo de comunicação padrão usado para a transferência de arquivos de computador de um servidor para um cliente em uma rede de computadores. O FTP é construído em uma arquitetura de modelo cliente-servidor usando controle separado e conexões de dados entre o cliente e o servidor.
- Wikipédia
FTP é um protocolo de transmissão de texto não criptografado no qual os dados são transmitidos em um formato não criptografado . Esta é uma vulnerabilidade de segurança, explorar esta vulnerabilidade pode permitir que um invasor obtenha informações confidenciais da rede.
Abri rapidamente o cliente FTP ( WinSCP ), inseri os detalhes coletados na ferramenta Echo Mirage e tentei me conectar ao FTP.
Bingo! Eu me conectei com sucesso a um servidor FTP remoto que continha pastas e arquivos confidenciais .
Curiosamente, consegui criar um arquivo de teste, o que significa que o servidor tem permissões de “gravação” para esse usuário.
Havia alguns arquivos de backup e códigos-fonte completos de versões mais antigas do aplicativo . A partir da análise do código-fonte, descobri que o aplicativo estava usando um serviço do SQL Server e notei que as credenciais estavam codificadas no código . Com credenciais codificadas, consegui acessar o banco de dados SQL que continha todos os registros dos alunos, incluindo detalhes pessoais, nomes de usuário, senhas e todas as perguntas e respostas.
Lições para as equipes de desenvolvimento
- Sempre implemente uma validação de evento-chave baseada em lista de desbloqueio eficaz e evite abordagens de lista negra.
- Não use meios de comunicação de texto simples, como FTP ou HTTP, em vez disso, use SFTP ou HTTPS
- As credenciais codificadas devem ser armazenadas em um arquivo de propriedades separado e de maneira criptografada.
- Não permita que aplicativos sejam executados em versões desatualizadas do sistema operacional.
- Antes de criar um software, tenha um plano abrangente que inclua defesas em camadas cuidadosamente planejadas, mesmo que seja um software não financeiro.
Quem sou eu?
Para me apresentar brevemente, meu nome é Bipin Jitiya e sou o fundador das soluções Cuberk.
Somos uma empresa de segurança da informação, fornecemos soluções de segurança da informação de ponta para empresas críticas com a intenção de proteger de forma inteligente seu ambiente de TI. Oferecemos uma variedade de serviços de avaliação de vulnerabilidade e teste de penetração para nossos clientes. Se você tiver um ou dois minutos para saber mais sobre nós, visite-nos aqui em www.cuberk.com





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)