Vídeo: Como Resolver Rapidamente um Cubo de Rubik 3x3 | O Tutorial Mais Fácil (Novembro 2024)
Coloque um monte de hackers e outras pessoas preocupadas com a segurança no mesmo lugar, e um pouco de competição e hackers de boa índole são inevitáveis.
Na semana passada, o Kaspersky Lab Security Analyst Summit foi repleto de sessões interessantes e contou com a presença de algumas das melhores mentes em segurança da informação, mas isso não foi tudo. Os participantes também podem competir no "desafio de criptografia", onde usam suas habilidades de hackers para resolver uma série de quebra-cabeças. Eu estava entre os poucos que terminaram o desafio e, ao longo do caminho, aprendi um pouco mais sobre criptografia, ofuscação e engenharia reversa.
Acima de tudo, aprendi que hackear é como resolver quebra-cabeças; você fica pensando: "Deixe-me tentar uma coisa", e me sinto realmente empolgado quando você entende.
A criptografia detém a chave
No fundo, a criptografia consiste em pegar uma mensagem e escrevê-la de uma maneira que pareça sem sentido para quem não conhece o segredo. É um pouco como o Pig Latin. Se você não conhece as regras do idioma, não tem idéia do que "ellohay" significa. Algumas cifras são muito simples - como trocar a letra pela letra seguinte, para que a se torne b, b se torne c e assim por diante, até que "olá" se torne "ifmmp". Outros são muito mais matematicamente complexos e são usados para proteger nossos números de cartão de crédito e credenciais de senha.
Cada participante da cúpula, após o registro, recebeu uma carta sobre o desafio de criptografia. No final, havia uma série de letras que não faziam sentido, mas tinham um formato familiar. Começando com "vhhd: //" e seguido por grupos de letras separados por um ponto (.), Era claramente o URL de um site. Depois que percebi que as primeiras letras eram "http: //", eu sabia que era o ROT13, uma cifra popular (e tremendamente fraca), que troca cada letra por uma que vem 13 posições depois no alfabeto. Não foi necessário elaborar o URL manualmente, pois há muitos decodificadores ROT13 na Web.
Javascript ofuscado, Oh My
A página resultante, com uma imagem e uma mensagem de boas-vindas, era chata. A fonte da página não era nada. Eram linhas e mais linhas sem sentido, incluídas nas tags <script type = "text \ javascript">. Ah, ofuscou Javascript.
A ofuscação é uma técnica comumente usada em que codificadores mal-intencionados escrevem código de ataque de tal maneira que um humano não consegue ler o código facilmente. É diferente da criptografia, pois não depende de um segredo, mas de métodos de programação complicados para gerar código de difícil leitura. O código resultante é ilegível ao olho humano, mas a máquina não tem problemas para entender e executá-lo.
Como foi o caso do ROT13, não houve necessidade de tentar analisar o Javascript ofuscado manualmente. Em vez disso, usei o inspetor DOM, embutido no navegador Chrome e percorri cada elemento da página. Pude ver o código para exibir a imagem e a mensagem de boas-vindas escondida dentro da tagarelice, bem como uma linha de código comentada contendo a próxima pista.
A ofuscação não se limita apenas ao Javascript. Eu tive que editar um script Perl para descobrir o que aquele feio código estava tentando dizer.
Engenharia reversa como um chefe
A certa altura, baixei um arquivo executável (verificado com o Kaspersky Antivirus - não custa nada ter cuidado!), O que me levou a inserir um nome de usuário e senha. Estava na hora de fazer a engenharia reversa desse executável.
Trabalhar com um laptop Linux ajudou nesse ponto, porque eu poderia usar strings , uma ferramenta Linux de linha de comando que imprime o conteúdo de arquivos não-texto, e o gdb , um depurador que permite ver o que está acontecendo dentro de um arquivo enquanto ele é executado.. cordas também foi útil mais tarde no desafio, quando baixei arquivos.d64. Eu poderia ter baixado um emulador do Commodore 64 - como o organizador do desafio pretendia - executar o arquivo, mas apenas executei strings para descobrir para onde ir a seguir.
Eu ouvi falar sobre a incorporação de mensagens secretas dentro de uma imagem, mas quando me deparei com essa imagem, fiquei inicialmente perplexo. Lembrei-me de que as imagens têm camadas, e os invasores podem incorporar informações em diferentes camadas sem interromper a camada visível. Eu poderia ter examinado cada camada no GIMP, uma ferramenta de código aberto semelhante ao Adobe Photoshop, que roda no Linux. Em vez disso, passei a imagem por meio de strings , que extraíram todo o texto oculto na imagem. Esse é um comando versátil e prático.
Nota sobre senhas
Algumas das etapas do desafio solicitaram uma senha válida. Embora "senha" nunca tenha surgido, houve pelo menos uma ocasião em que apenas digitei aleatoriamente palavras que tinham alguma relevância para a conferência e o jogo, até encontrar a correta. Em uma etapa, fui enganado por letras minúsculas / maiúsculas, portanto, apenas gerei uma lista de todas as combinações possíveis e trabalhei.
Um invasor, munido de algumas informações sobre a vítima, pode facilmente tentar adivinhar a senha correta ou apenas executar uma lista de possíveis palavras. Eu ficava murmurando: "Vou enganar você", e quando descobri, pensei: "HA! Entendi!"
Apenas resolução de quebra-cabeças
Com exceção de strings e gdb, todos os elementos do desafio dependiam de algo bastante simples ou algo que eu pudesse aprender com uma pesquisa no Google. Embora nem todos os hackers sejam assim tão simples, é importante entender que as habilidades se desenvolvem umas sobre as outras. Para começar, você só precisa de um pouco de curiosidade e vontade de perseverar.
Você ouve pessoas tentando invadir sistemas ou lançando campanhas on-line por diversão, ou apenas para provar que podem. O que mantém os hackers hackers é a adrenalina indescritível que vem da solução de um quebra-cabeça desafiador.