ix semana gest tec evolucao
TRANSCRIPT
PYTHON PENTESTINGAnálise de Redes Usando Python
Marcelo Rodrigues – [email protected]
Faculdade Evolução – Maio 2016
IX Semana de Gestão e Tecnologia
About.me
Marcelo Rodrigues Graduado em Redes de Computadores Mestrado em Ciências Analista de Sistemas Prof. Faculdade Evolução Certificação Linux – LPIC 2 Entusiata Software Livre
O QUE É PENTESTING? Pentesting é um teste que mede a
segurança da informação de um empresa. Verifica-se a segurança da informação na rede da empresa, nos bancos de dados, nos servidores de rede e tudo que seja especificado pela empresa.
No final do Pentesting deve-se apresentar um relatório detalhado das fraquezas encontradas, vulnerabilidades e os riscos associados, assim como as soluções para os problemas.
PENTESTER X HACKER Pentester e Hacker são termos similares; Pentesters trabalham em empresas ou organizações e usam
seus conhecimentos para evitar tentativas de invasão ou ataques hackers;
Hackers usam seus conhecimentos para outros propósitos como fama, venda de vulnerabilidades por dinheiro ou por simples inimizade;
O QUE É PYTHON? Python é uma linguagem de programação de alto
nível, interpretada, usa scripts e é orientada a objetos; Foi lançada por Guido van Rossum em 1991; Prioriza a legibilidade do código sobre a velocidade ou
expressividade. Combina uma sintaxe concisa e clara com os recursos
poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros.
POR QUE PYTHON?
Simplicidade; Vasta documentação (pt-br); Várias bibliotecas; Comunidade ativa;
PYTHON – SIMPLICIDADE
SOFTWARES
Python2.7 scapy (pip install scapy) tcpdump (aptitude install tcpdump) Linux Debian 8 – 64 bits
AMBIENTE DE TESTES
IP SCANNER E PORT SCANNER
IP Scanner: Usado para identificar se um host está ativo atráves de seu endereço IP usando o ECHO REQUEST e o ECHO REPLY (PING). Script: ping_sweep.py
Port Scanner: Usado quando o firewall bloqueia o protocolo icmp. Além de verificar se o host está ativo na rede, identifica também as portas abertas no host. Script: portsc.py
HALF-OPEN SCANNER
Half-Open Scanner é um tipo especial de scanner. Esta técnica é usada para bular as regras do firewall e sistemas de detecção de por logs.
Está técnica utiliza crafting, que consiste na criação de pacotes personalizados.
Usamos um pacote Python chamada Scapy. O Scapy permite a customização de pacotes de rede.
HALF-OPEN SCANNER
O cliente envia um pacote SYN para o servidor em uma porta específica;
Se a porta está aberta, o servidor responde com um pacote SYN/ACK;
Se um servidor responde com um pacote RST, a porta está fechada;
Script: halfopen.py
FIN SCANNER
Algumas vezes Firewalls ou Sistemas de Detecção de Intrusão (IDS) são configurados para detectar SYN scans. Neste caso, usamos um FIN Scanner.
O FIN Scanner envia um pacote TCP com somente a flag FIN configurada.
Se não houver resposta, isso significa que a porta está aberta;
Se houver resposta, isso significa que a porta está fechada; Script: fin.py
ACK FLAG SCANNER
O método ACK Scanner é usado para determinar se um host está ou não protegido por um firewall ou algum tipo de filtragem de pacotes.
Neste método o cliente envia um pacote ACK ao servidor; Se não houver respostas, a porta está sendo filtrada; Se houver reposta, com a Flag 04, a porta não está sendo
filtrada; Scripts: sniffer1.py e ack.py
PING OF DEATH
O ping da morte (ping of death) é um tipo de negação de serviço onde o atacante deliberadamente envia pacotes do typo ping request com tamanho maior que 65.536 bytes;
Nesse caso, o TCP fragmenta os pacotes ao enviar pela rede; Normalmente o IP do atacante é trocado por um IP falso para
não ser rastreado; Em Python é possível criar um script para enviar vários ping
requests silmutâneamentes; Scripts: pingofd.py
COLETA DE INFORMAÇÕES - WEB Do ponto de vista para os pentesters, a técnica de coleta
de informações é importante para a manipulação de erros; Esses erros podem ser incluídos em relatórios para
eventuais correções; Informações coletados:
Sistema operacional; Software Web; Aplicações Web;
Script: info.py
VERIFICAÇÃO CABEÇALHO HTTP
Uma outra maneira de se obter informações é verificando o cabeçalho de páginas web;
O cabeçalho http provê muitas informações sobre o servidor;
O script é bem menor que o anterior; Script: header.py
OBRIGADO
LIVRO MUITO BOM!