1. PYTHON PENTESTING
Análise de Redes Usando Python
Marcelo Rodrigues – marcelorodriguesss@gmail.com
Faculdade Evolução – Maio 2016
IX Semana de Gestão e Tecnologia
2. 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
3. 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.
4. 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;
5. 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.
6. POR QUE PYTHON?
Simplicidade;
Vasta documentação (pt-br);
Várias bibliotecas;
Comunidade ativa;
10. 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
11. 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.
12. 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
13. 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
14. 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
15. 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
16. 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
17. 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