Mostrando postagens com marcador payload. Mostrar todas as postagens
Mostrando postagens com marcador payload. Mostrar todas as postagens

quinta-feira, 5 de junho de 2014

Antes de ler esse post não esqueça da parte 1 e 2 aqui na página de guias!


msfconsole



Como já falamos anteriormente, o Metasploit Console, mais conhecido como msfconsole é a interface mais utilizada e conhecida por seus usuários. Vamos ver os principais comandos do msfconsole:

help: Informações de ajuda

use / back: Selecionar um módulo e sair dele, respectivamente

info / show: Obter informações do módulo

check: Testa se o alvo é vulnerável ao exploit selecionado sem executar o exploit no alvo.

exploit / run: Executar o módulo, normalmente utilizado o exploit para exploit e o run para todos os outros módulos.

connect: Similar ao telnet ou netcat.

banner: Muda o banner do Metasploit (imagem acima)

irb: interpretador ruby para testar scripts.

jobs: Módulos rodando em background.

load / unload: Carrega plugins.

resource ou flag -r: carrega instruções pré-prontas de um determinado arquivo de configuração.

set / unset: Seta valores aos parâmetros. Se estiver com um módulo selecionado seta apenas para o módulo, se não tiver nenhum módulo selecionado seta globalmente.

sessions: Interagir com sessões abertas.

search: Buscar por nome, expressão, tipo, cve, etc.

quinta-feira, 15 de maio de 2014

Olá! Vamos seguir em frente com a série. Se você não viu o primeiro post da série clique aqui!


Arquitetura e Sistema de Arquivos


A arquitetura e organização do Metasploit é um tanto complexa, o framework em si é bem grande. Você não necessariamente precisa conhecer o Metasploit a fundo para usar ele, somente para um caso de desenvolvimento, mas sempre é bom saber como as coisas funcionam.


Pode-se ver na imagem acima que os módulos são chamados pela base do sistema (MSF Base), enviados para o core para processamento (MSF Core). Junto ao core temos a chamada as ferramentas de desenvolvimento e bibliotecas. Entre essas ferramentas e bibliotecas temos por exemplo, sockets, protocolos, XOR, Base64 e muitos outros.

O MFS Base também abre para as interfaces pro usuário. São elas Console, CLI, Web e GUI.

A interface Console é a que conhecemos e usamos normalmente, linha de comando, iniciada pelo comando msfconsole. A interface CLI é a que chamamos e executamos diretamente com todos os parâmetros, a que usamos para automatizar algum script, como por exemplo, os comandos msfcli, msfpayload e msfencode.

As interfaces Web e GUI, foram oficialmente descontinuadas pela equipe do Metasploit, mas a GUI teve um sucessor independente, a ferramenta chamada Armitage

O sistema de arquivos do Metasploit é divido nos seguintes diretórios: lib, data, tools, modules, plugins, scripts e external.

lib: A base de códigos do Metasploit Framework
data: Arquivos editáveis
tools: utilitários
modules: a base de módulos
plugins: plugins que podem ser carregados
scripts: Meterpreter e outros scripts
external: Códigos e bibliotecas de terceiros.


Vou me focar aqui na interface mais utilizada, a console. Caso tenha interesse cheque também o Armitage. Em alguns exemplos pode ser que seja necessário o uso da interface CLI, mas normalmente usarei a console mesmo.

sexta-feira, 9 de maio de 2014

E ai galera!

Estou fazendo uma série de posts sobre segurança da informação em geral, algo bem prático e de simples entendimento. Você pode acompanhar post a post aqui e no final deles irei disponibilizar um paper gigante (quase um livro) e bem estruturado com todo o conteúdo. Basicamente o conteúdo destes posts serão exatamente o mesmo conteúdo que alguns sites não muito legais por ai vem cobrando para ensinar. Vou começar com metasploit. Se você não conhece absolutamente nada sobre Segurança da Informação de uma olhada no guia que postei a algum tempo atrás. Pela busca usando a tag "indicação" você também pode encontrar diversas indicações de livros, papers, vídeos, palestras e etc para aprender mais.

E vamos a ele!

Introdução

O Metasploit é uma das soluções mais completas para teste de invasão que temos hoje em dia, indo desde o básico de levantamento de informações até exploração de vulnerabilidades em dispositivos remotos e servidores. Outro atrativo dessa solução é  o fato de ser Open Source e gratuita, até um certo ponto.


Hoje em dia, o Metasploit é mantido pela comunidade e pela Rapid7 (http://www.rapid7.com/) e conta com quatro versões: uma delas gratuita e livre, que é a que já vem pré-instalada e configurada nas mais diversas distribuições Linux para Pentest, outra gratuita mas limitada e as outras duas versões comerciais.

Versões

Metasploit Pro: Uma das versões comerciais do Metasploit. Como a própria Rapid7 coloca, é uma versão para profissionais de segurança, pentesters. Tem muita coisa ali que ajuda e agiliza o processo todo de um pentest. Desde o básico de automação de scans até suporte com módulos de engenharia social.

Metasploit Express: A outra versão comercial. Esta é para os profissionais de TI, com as varreduras um pouco mais simples e ataques mais comuns. Normalmente utilizada em auditorias internas feitas pela própria equipe de TI da empresa.

Metasploit Framework: A versão open source. Denominada pela empresa como versão para pesquisadores de segurança e desenvolvedores. Seu principal objetivo é o auxílio a criação e testes de exploits. Esta versão está sendo usada para os mais diversos fins, principalmente por Hackers, Crackers e iniciantes na área. Para voltar a ser o que foi pensado, a Rapid7 está cortando funcionalidades desta versão, para que ela volte a ser apenas para pesquisadores e desenvolvedores. Para que o resto do público não se sinta obrigado a comprar a licença (relativamente cara) das outras versões, foi criada a versão a seguir.

Metasploit Community: Sendo esta versão gratuita e com interface semelhante as comerciais, voltada para todo aquele público que não se encaixa nas outras, sendo eles pequenas empresas, estudantes e por ai vai. 

Vamos nos focar aqui na versão Framework, já que é a mais usada ainda e acessível.


Conceitos e termos básicos

Antes de seguir em frente vamos a alguns conceitos.

Exploit: Um exploit é um pedaço de código que prova um conceito de uma vulnerabilidade. É um código que gatilha uma falha de segurança.

Payload: É um código arbitrário que vai executar no alvo com o objetivo de usar a vulnerabilidade explorada pelo exploit para obter algum tipo de dado, seja um arquivo de senhas ou uma conexão direta com o alvo.

Módulo: Módulos são exploits prontos do Metasploit, você pode customizar os módulos com os payloads, nops e codificações para atingir seu objetivo. Algumas outros tipos de códigos entram na definição de módulos, veremos eles logo a frente.

Sabendo disso, vamos seguir em frente. Tudo que você pode encontrar dentro do Metasploit é testado e reescrito, isso quer dizer que, diferente de um exploit que você ache na internet, todos os módulos do Metasploit fazem realmente o que dizem fazer, nada de malicioso, como um malware ou mandar informações para um terceiro.

A organização do Metasploit é bem simples, ele é subdividido em 5 áreas, Payloads, Exploits, Encoders, Nops e Auxiliares.

Payloads como comentado acima são os códigos que vão rodar no alvo com o objetivo de obter algo. Exploits também comentados acima, são os códigos que ativam as vulnerabilidades. Encoders são módulos que basicamente codificam seu exploit e payload para evitar a detecção por um Firewall, IDS, IPS e etc. Nops são geradores de códigos nulos, por exemplo em um ataque de Buffer Overflow, é necessário ir escalando a pilha para poder executar seus códigos. Uma instrução no local errado pode fazer a aplicação atacada encerrar ou até causar problemas no sistema. Para isso que servem os Nops, preencher essa área com instruções nulas para evitar problemas. E por último mas não menos importante temos os módulos auxiliares, estes são similares aos exploits mas não necessitam de payload, e não necessariamente “invadem” o alvo. Nessa categoria que você encontra módulos de bruteforce, scans, falhas de disclosure, entre outros.

O Metasploit tem centenas de módulos de todos os tipos, mas nada impede que possa ser criado um módulo específico para um ataque específico, toda a framework funciona em cima de ruby.


segunda-feira, 20 de maio de 2013

O Metasploit é um framework que auxilia o profissional de segurança da informação a desenvolver e executar exploits. Ele é figurinha carimbada em testes de invasão atualmente, sendo até meio que mal utilizado pelos testers (executar odb_autopwn e mostrar que conseguiu shell *não* é penetration testing!). Se você trabalha com segurança da informação ou mesmo se você é um administrador de redes que gosta de verificar a segurança dos seus servidores (parabéns pra você!), com certeza já usou o Metasploit Framework.

Mas, mesmo usando tanto o Metasploit, você já parou pra pensar nas diferenças entre os tipos de payloads que ele oferece? Você sabe o que é um payload? Então vamos aprender isso hoje! :)

O que é um payload?


A definição da SecurityFocus.com:


The part of the packet, message or code that carries the data. In information security, the term payload generally refers to the part of malicious code that performs the destructive operation.

Em tradução livre:


A parte do pacote, mensagem ou código que contém os dados. Em segurança da informação, o termo payload geralmente se refere à parte do código malicioso que executa alguma operação destrutiva.

No caso de um exploit, o payload é a parte do código injetada na vítima que vai executar alguma ação: criar um usuário, iniciar um processo, apagar arquivos, etc. Ou seja lá o que for que o atacante quer que seja executado quando a vulnerabilidade for explorada com sucesso pelo seu exploit.

A maioria dos tutoriais que você encontra na Internet raramente abordam payloads em detalhes. “Seleciona o exploit X para isso e um payload à sua escolha” (ficou parecendo objetivo do War, mas deu pra entender! heheh), chegando ao ponto de simplesmente falar para você escolher o Meterpreter em casos onde ele simplesmente não é a melhor escolha ou onde ele vai apenas levar mais tempo pra fazer o que um outro payload faz. A seleção do payload correto é tão importante quanto a seleção do exploit.


NOTA: Aqui vai mais um aviso para os iniciantes: quando você encontra um exploit na Internet, não saia apenas compilando e executando. São inúmeros os casos de exploits que têm payloads que ao serem executados simplesmente apagam todo o conteúdo da máquina local (não da vítima). Por isso, é importante que você analise e entenda o que o payload do exploit que você pegou vai fazer e que você execute este exploit antes em um ambiente de testes para não arriscar perder dados.

Se você digitar “show payloads” no “root” do msfconsole vai ver que ele vai te mostrar todos os 251 payloads disponíveis (este é o número atual enquanto escrevo este texto). Se você digitar o “show payloads” depois de selecionar um módulo específico, ele irá mostrar apenas os payloads compatíveis com aquele exploit. Isso acontece por que se você selecionar o payload errado, você pode acabar travando o seu alvo e tendo uma dor de cabeça bem grande se estiver fazendo um penetration test em um sistema crítico. Existe um payload adequado para cada situação e para entender qual deles escolher, você precisa entender que eles são separados em diferentes categorias: stagers, stages e singles (ou inline).

Geralmente você consegue descobrir o tipo de um payload lendo a descrição dele. Lá é muito frequente estar dizendo claramente o tipo do payload. Alguns exemplos:
windows/shell/reverse_ord_tcp: Windows Command Shell, Reverse Ordinal TCP Stager (No NX or Win7). Pela descrição, já sabemos que este é um stager.
windows/x64/shell_reverse_tcp: Windows x64 Command Shell, Reverse TCP Inline. Este, por outro lado, é um payload do tipo single (note o uso da palavra “inline” no final da descrição).

No resto deste post vamos discutir cada um dos tipos de payloads e também mostrar exemplos.

Stagers e stages


Vou discutir stagers e stages no mesmo tópico pois eles são complementares. Payloads do tipo stage usam payloads stagers para completar uma tarefa.
Em alguns casos, o pesquisador precisa lidar com tão pouco espaço em memória que não é possível usar um payload single para fazer o que ele quer. Nestes casos, ele precisa de stagers para conseguir fazer com que a vítima execute alguma ação.

Considere o seguinte caso: quando você consegue explorar a falha você vê que vai ter pouco espaço em memória. Então, você seleciona um stager que será enviado como payload para a vítima quando o exploit tiver sucesso em explorar uma vulnerabilidade. Quando o stager é executado na vítima, ele entra em contato com um host para que este lhe envie o resto do código que deve ser executado. Aí sim acontece a criação de um usuário, execução do NC, etc. É exatamente assim que o Meterpreter funciona: ele é um payload do tipo stage.

Um lado negativo óbvio de stages é que eles precisam manter uma conexão ativa com uma máquina para que esta possa enviar o resto do código a ser executado na vítima para que a invasão seja completada. O lado positivo é que o tamanho de memória não é exatamente um problema já que estes payloads são desenvolvidos para serem minúsculos e ocuparem o mínimo de memória possível.

Alguns exemplos são:

bind_ipv6_tcp (stager para Linux x86)
bind_tcp (stager para Windows)
meterpreter (stage multi-plataforma)
dllinject (stage para Windows)
Singles (ou “Inline”)

Payloads do tipo single são payloads maiores e que não precisam de complemento algum para poderem fazer o seu papel.
Quando uma vulnerabilidade é explorada com sucesso e um payload do tipo single é enviado para a máquina, ele já é capaz de executar todas as tarefas que você requisitou (fazer o download de um arquivo, criar um usuário, iniciar uma aplicação, criar uma chave no registro, etc). Portanto, a máquina do atacante não precisa de um stager dizendo ao módulo inline o que fazer à seguir: ele vai ser entregue à vítima, executado e irá completar a sua tarefa por inteiro, sem precisar receber mais instruções da máquina de origem.

O problema com este tipo de payload é que ele é fisicamente grande e nem sempre você vai ter espaço suficiente na memória da vítima para acomodar um payload single. Portanto, quando o espaço em memória é uma questão a se considerar, é melhor não se utilizar payloads single ou inline. Estes payloads, entretanto, são bastante eficientes em ataques através de dispositivos USB e também quando se quer persistência na máquina invadida (permitindo que algum software que você instalou sempre seja executado mesmo depois de reiniciar a máquina para permitir que você se conecte à ela novamente, por exemplo).

Alguns exemplos de payloads inline são:
windows/x64/shell_bind_tcp
windows/shell_bind_tcp
osx/x86/vforkshell_reverse_tcp

Conclusão


Como tentei deixar claro no texto, existem muitos detalhes que você deve considerar antes de sair executando exploits à torto e à direito por aí. Você precisa analisar a situação e lançar um ataque o mais eficiente possível até para não acabar travando a máquina que você está atacando ou acabar sendo detectado pelo IPS durante o teste (já vi casos onde clientes definem que se o atacante for detectado pelo IPS, o teste acaba na hora). Você precisa verificar quais são os payloads compatíveis com o módulo que você está usando e escolher o que é mais eficiente, considerando a sua finalidade. Não escolha o Meterpreter simplesmente por ele oferecer mais funcionalidades: isso pode acabar sendo um belo tiro no pé e te causando muita dor de cabeça e possivelmente um pouco de vergonha também. :)

Se você quiser uma lista completa de qual o tipo de cada um dos exploits existentes no framework, vá até o diretório /opt/metasploit/msf3/modules/payloads (no Backtrack 5 R2 – no seu sistema este caminho pode variar). Lá você vai encontrar três diretórios: singles, stagers e stages. Basta fazer uma listagem dos arquivos em cada diretório para confirmar o tipo do payload. Como regra geral, você pode simplesmente observar o path completo do payload. Se tiver um “_” quer dizer que ele é um single; se tiver um “/” é um stage/stager. Note que não são todos que obedecem esta nomenclatura e isso pode mudar um pouco, mas são raros os casos.

Agora que você já entende quais são e quais a diferenças entre os tipos de payloads oferecidos pelo Metasploit, passe um tempo planejando e escolhendo qual deles vai te atender melhor. Este tipo de ação é o que mais vai te render frutos, não simplesmente sair executando exploits por aí!

​Creditos:Pedro Pereira
Subscribe to RSS Feed Follow me on Twitter!