Pentest

Fases de um pentest

Uma metodologia refere-se aos passos executados por um atacante em relação a um computador na rede, por exemplo. Não existe uma fórmula mágica e fixa, já que varia de acordo com o atacante. O que veremos nesta postagem é uma abordagem genérica para um teste de invasão, que pode ser usada por um hacker convencional ou um hacker ético.

Os passos, de forma geral, são os seguintes:

  1. Footprinting
  2. Scanning
  3. Enumeration
  4. System hacking
  5. Escalation of privileges
  6. Covering tracks
  7. Planting of backdoors

(mais…)

Introdução ao Metasploit Framework

Veremos o Metasploit Framework, uma ferramenta que tornou-se padrão para pentesters. Lançado pela primeira vez em 2003, Metasploit alcançou status na comunidade de segurança. Embora Metasploit agora seja de propriedade da empresa de segurança Rapid7, uma edição de código aberto está ainda disponível, com o desenvolvimento em grande parte impulsionado pela comunidade de segurança.

A arquitetura modular e flexível do Metasploit ajuda os desenvolvedores de forma eficiente a criar exploits que trabalham de acordo com as novas vulnerabilidades quando são descobertas. Como você verá, Metasploit é intuitiva e fácil de usar, e oferece uma forma centralizada para executar código confiável de exploração que foi analisado com precisão pela comunidade de segurança. (mais…)

Evitando filtros básicos de XSS

Hoje em dia, alguns sites estão mais protegidos contra ataques XSS, fazendo alguns filtros que não permitem o ataque, entretanto, nós podemos evitar estes filtros através de alguns métodos que iremos ver mais abaixo:

  1. Bypass magic_quotes_gpc (se estiver ligado)
  2. Bypass com criptografia do html
  3. Bypass com ofuscação
  4. Bypass com com uma solução de contorno

(mais…)

Atacando redes wifi com Aircrack-ng protegidas com criptografia WPA e WPA2

Vimos na postagem anterior como a criptografia WEP é fraca e podemos quebrar a criptografia, obtendo a chave de proteção com o Aircrack-ng.

Nesta postagem iremos ver como fazer para entrar em uma rede protegida com WPA e WPA2.

Wi-Fi Protected Access (WAP)

Assim que a fraqueza do WEP veio à tona, um sistema de segurança wireless mais robusto foi necessário e foi desenvolvido para trocar o WEP, o que ultimamente veio se tornar WPA2. Entretanto, a criação de um sistema criptográfico seguro para wireless levou tempo e neste meio tempo, mais segurança foi necessária para ser compatível com o hardware utilizado. Então, Wi-Fi Protected Access (WPA), também conhecido como Temporal Key Integrity Protocol (TKIP), nasceu.

WPA usa o mesmo algoritmo que o WEP (RC4), mas procura endereçara fraqueza do WEP adicionando aleatoriedade na keystream aos IVs e integridade para o ICV. Diferente do WEP, o qual usa uma chave de 40 ou 104 bits combinado com IVs fracas para cada pacote, WPA gera uma chave de 148 bits para cada pacote garantindo que cada um deles seja criptografado com uam keystream única. (mais…)

Atacando redes wifi com Aircrack-ng protegidas com criptografia WEP

Muitos roteadores vem com um método de criptografia padrão chamado Wired Equivalent Privacy (WEP). Um problema fundamental com o WEP é uma falha no algoritmo, o qual é possível um atacante recuperar qualquer chave WEP. WEP usa a cifra de fluxo Rivest Cipher 4 (RC4) e uma pre-shared key. Qualquer um que queira se conectar à rede pode usa a mesma chave, composta de uma string de dígitos hexadecimais, tanto para criptografar quanto para descriptografar. Os dados em texto claro (não criptografados) passam por uma operação de OU-Exclusivo (XOR) bit a bit de fluxo com uma chave para criar um texto cifrado.

A operaçõe tem quatro possibilidade:

  • 0 XOR 0 = 0
  • 1 XOR 0 = 1
  • 0 XOR 1 = 1
  • 1 XOR 1 = 0

Os zero e um em um fluxo de dados pode representar qualquer dado sendo enviad através da rede. Veja um exemplo de texto claro sendo cifrado com XOR e uma chave para criar um texto cifrado: (mais…)

Introdução aos testes de segurança em redes sem fio com Aircrack-NG

O Aircrack-NG é conjunto de ferramentas para avaliar a segurança de redes sem fio. Ele foca em diferentes áreas da segurança do WiFi:

  • Monitoramento: Captura de pacote e exporatação de dados para arquivos de textos para processamento posterior em outras ferramentas;
  • Ataque: Replay attacks, deautenticação, falso access points e outros através de injeção de pacotes;
  • Testes: Verificar placas WiFi e capacidades dos drivers (capturar e injetar);
  • Cracking: WEP e WPA PSK (WPA 1 e 2).

Todas as ferramentas são através de linhas de comando, as quais permitem usar em scripting de forma pesada. Funciona, a princípio em Linux, mas também no Windows, OS X, FreeBSD, OpenBSD, NetBSD, assim como no Solaris e inclusive no eComStation 2. (mais…)

Netcat: O canivete suíço das conexões TCP/IP

O Netcat é uma ferramenta versátil para testes de rede o qual permite ler e escrever dados através das conexões, usando o protocolo TCP/IP.

Foi desenhado para ser uma ferramenta back-end confiável que pode ser usada diretamente ou de modo fácil por outros programas e scripts. Ao mesmo tempo, é cheia de funcionalidades de debugging e exploração, já que pode criar quase qualquer tipo de conexão que você possa precisar e tem diversas capacidades interessantes.

Esta ferramenta provê acesso às principais funcionalidades:

  • Conexões de saída e entrada, TCP ou UDP, de ou para qualquer porta;
  • Tem um modo de tunelamento que permite também um tunelamento espeicla como UDP para TCP, com a possibilidade de espeicificar todos os parâmetros de rede (porta de origem/interface, porta/interface ouvinte, e o host remoto permitido para conectar no túnel;
  • Tem a funcionalidades de port scanning, de modo aleatório;
  • Opções avançadas de uso como modo de envio buffered (uma linha a cada N segundos) e hexdump (para stderr ou para um arquivo específico) dos dados transmitidos ou recebidos;
  • Parser e responder dos códigos RFC854 opcionais.

(mais…)

Vulnerabilidades de Remote/Local File Inclusion (RFI / LFI)

Muitas linguagens de scripts suportam o uso de inclusão de arquivos. Esta facilidade permite os desenvolvedores colocar componentes de códigos reusáveis em arquivos separados e inclui-los dentro do código com a função específica quando eles precisarem. O código dentro do arquivo incluído é interpretado como se ele fosse inserido no local da função de inclusão.

Remote File Inclusion (RFI)

A linguagem PHP é particularmente suscetível a vulnerabilidades de inclusão de arquivos porque a sua função include() pode aceitar um caminho remoto. Esta tem sido a base de inúmeras vulnerabilidades em aplicações PHP.

Considere um aplicativo que forneça conteúdo diferente para pessoas em locais diferentes. Quando os usuários escolher a sua localização, este é comunicado ao servidor através de um parâmetro de solicitação, como mostrado abaixo: (mais…)

Cross-Site Scripting (XSS): Entendendo o conceito e seus tipos

Talvez a vulnerabilidade de segurança de aplicações web mais comum e mais debatido é Cross-Site Scripting (XSS). Quando tais vulnerabilidades estão presentes, os atacantes podem injetar scripts maliciosos em um site inofensivo de forma que seja executado no navegador do usuário.

Ataques XSS são geralmente divididos em duas categorias: persistente (ou armazenado) e não-persistente (refletido). Ataques XSS persistente são armazenados no servidor e executado sempre que um usuário visita a página onde o script está armazenado. Fóruns de usuários, comentários e outros locais onde os usuários podem salvar entrada que serão exibidas para outros usuários são locais ideais para esses tipos de ataques. Ataques XSS não-persistentes não são armazenados no servidor, mas são criados através do envio de solicitações com o próprio ataque XSS. Os ataques ocorrem quando o input do usuário é incluído na resposta do servidor, por exemplo, em mensagens de erro ou resultados de pesquisa.

Ataques XSS não-persistentes dependem de um usuário enviar um pedido com o ataque XSS incluídos na solicitação, portanto, provavelmente haverá algum tipo de engenharia social para o ataque também. Na verdade, ter XSS pode realmente aumentar o sucesso de um ataque de engenharia social, porque você pode criar uma URL que faz parte de um site de verdade, o qual o usuário conhece e confia em usar, e o XSS será usado para, por exemplo, redirecionar o usuário para uma página maliciosa. Como os outros ataques discutidos nesta postagem, ataques XSS devem contar com uma falta de atenção no saneamento do input do usuário, o que nos permite criar e executar um script malicioso. (mais…)

SQL Injection (SQLi): Identificando o BD e extraindo dados com UNION

A maioria das técnicas demonstradas na primeira postagem sobre SQLi são efetivas contra todas as plataformas de banco de dados comuns e qualquer divergência podem ser ajustadas facilmente de acordo com a sintaxe. Entretanto, quando começamos a ver técnicas mais avançadas de exploração, as diferenças entre as plataformas começam a ser mais significante e você precisará ampliar seu conhecimento sobre o tipo de banco de dados que está sendo manipulado.

Você já viu como extrair a string de versão da maioria dos tipos de BD. Mesmo que você não consiga por algum motivo, normalmente é possível obter por outros métodos. Um dos mais viáveis é a forma que o BD concatena strings. Em uma consulta onde você controla a string de dados, você pode fornecer um valor particular em uma consulta e então testar diferentes métodos de concatenação para produzir uma string. Quando o mesmo resultado é obtido, você provavelmente identificou o tipo de BD que está sendo usado. Os próximos exemplos mostra como string pode ser construída para a maioria dos tipos de BD: (mais…)