Marinha do Brasil
OSTENSIVO 5-1
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-2
OSTENSIVO GUIA DE ESTUDO
Conceitos
OSTENSIVO 5-3
OSTENSIVO GUIA DE ESTUDO
Exemplos:
“Papel e caneta” x “Máquina de escrever” x “Word”
“Mural de recados” x “Orkut/Facebook”
“Telefone” x “SMS” x “Whatsapp”
OSTENSIVO 5-4
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-5
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-6
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-7
OSTENSIVO GUIA DE ESTUDO
Custo da falha
http://www.youtube.com/watch?v=kYUrqdUyEpI
OSTENSIVO 5-8
OSTENSIVO GUIA DE ESTUDO
Processo de Desenvolvimento
OSTENSIVO 5-9
OSTENSIVO GUIA DE ESTUDO
Tipos de Sistemas
OSTENSIVO 5-10
OSTENSIVO GUIA DE ESTUDO
Tipos de Sistemas
OSTENSIVO 5-11
OSTENSIVO GUIA DE ESTUDO
Interpretação
OSTENSIVO 5-12
OSTENSIVO GUIA DE ESTUDO
Segurança do executável
OSTENSIVO 5-13
OSTENSIVO GUIA DE ESTUDO
Assinatura de executáveis
OSTENSIVO 5-14
OSTENSIVO GUIA DE ESTUDO
Arquitetura de Aplicações
OSTENSIVO 5-15
OSTENSIVO GUIA DE ESTUDO
Arquitetura de Sistemas
OSTENSIVO 5-16
OSTENSIVO GUIA DE ESTUDO
Arquiteturas de Aplicações
OSTENSIVO 5-17
OSTENSIVO GUIA DE ESTUDO
Arquiteturas multicamadas
OSTENSIVO 5-18
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-19
O protocolo HTTP é extremamente simples em sua origem. Os
navegadores enviam comandos para um servidor que responde com o conteúdo.
Note que não há, na origem do protocolo, qualquer necessidade de autenticação
ou mesmo de identificação de quem pede informação. A ideia era meramente
fornecer um texto com hiperlinks.
A partir daí, são enviados um ou mais pares header:valor, um por linha, indicando
informações adicionais. O protocolo em si não estabelece nenhum header, sendo a
definição destes própria da aplicação que está sendo acessada. Ocorre porém que
alguns headers passaram a ter um entendimento universal entre servidores web.
Note que, sendo estes headers campos livres não obrigatórios, um cliente pode alterar
esses valores livremente sendo estes um dos principais mecanismos de exploração de
aplicações, como veremos mais adiante no curso.
Alguns headers visam detalhar o tipo de arquivo que será servido, por exemplo o
formate e a linguagem esperada para o arquivo a ser recebido.
Ao final, a resposta contém também a página web em si ou seja a página que deve ser
apresentada ao usuário pelo navegador. Esta página é descrita na forma de um código
HTML.
Da mesma forma que os headers do navegador, também o header HTTP do servidor
mostra informações sobre o servidor que está respondendo a esta requisição. Informa o
tipo e linguagem da página que está sendo servida.
As linhas seguintes possuem pares header: valor de forma similar ao GET. O POST
tipicamente tem um header chamado content-length (tamanho do conteúdo) que indica
o tamanho em bytes dos dados que se seguem ao final da mensagem. Uma linha em
branco após os headers indica o fim do header HTTP e o início dos dados enviados.
Os dados podem ser enviados de diversos formatos, sendo o mais comum uma lista do
tipo nome1=valor1&nome2=valor2&nome3=valor3 ...
Note que, neste caso não há o caractere ? mo início pois não há necessidade de separar
a URL dos dados passados para esta.
Um header particularmente importante é o chamado Cookies. Esse header específico
funciona como um pequeno banco de dados no navegador do cliente. Note que a
aplicação mantém todos os dados desta no servidor do banco de dados, que fica dentro
do data center e, portanto, inacessível a principio para exploração.
O banco de dados dos cookies, por outro lado, fica armazenado na máquina cliente e
pode ser manipulado a vontade. Este banco de dados foi desenhado para manter
apenas um pequeno número de informações.
O banco de dados de cookies é organizado por URL, assim cada aplicação web tem seu
conjunto de cookies independentes (a princípio).
Embora o banco de dados fique no cliente, o mesmo é gerido pelo servidor de aplicação
da seguinte forma: sempre que o navegador vai fazer uma requisição a um servidor, ele
verifica se existe algum cookie daquela URL e já manda na requisição. O servidor web
pode, na resposta, pedir para incluir ou alterar cookies. Nas requisições seguintes os
cookies serão novamente enviados para o servidor web.
Para ver o banco de dados de cookies (windows xp ou 7):
C:\Users\<nome do usuário>\AppData\Roaming\Microsoft\Windows\Cookies
Uma breve pesquisa no google informa o diretório para outros navegadores ou outros
sistemas operacionais.
Ao ser retornado do navegador para o servidor web o cookie é sempre uma lista do tipo
nome1=valor1; nome2=valor2; nome3=valor3; ...
Mas ao ser definido pelo servidor web para a armazenagem no navegador, o cookie tem
uma definição mais complexa.
Primeiro tem o próprio par nome=valor que será retornado. Depois tem a definição do
domínio, ou seja, o servidor para o qual aquele cookie será retornado. O cookie pode ter
ainda uma data de expiração. Após este prazo, não será mais retornado.
Existem dois atributos importantes para segurança: HttpOnly indica que esse cookie só
deve ser retornado no header, mas não deve ser acessível ao código JavaScript da
página. Como veremos adiante, a principio, um código JavaScript pode ler e até alterar
um cookie, mas não um cookie marcado como HttpOnly.
O flag Secure indica que tal cookie só deve ser retornado ao servidor web se a conexão
for segura. Assim, se for feita uma conexão Http simples com o servidor, o navegador
não passará tal cookie.
Cookies podem ser usados para muitas coisas, sendo a principal utilidade o
estabelecimento de uma sessão web. Note que o protocolo HTTP não fornece um
mecanismo nativo de sessão, porém as aplicações web podem implementar tal
mecanismo, sendo a maneira mais usual através de um cookie que identifica a sessão
corrente do usuário.
O cookie pode ser usado para opções de personalização da página, tais como
informações sobre preferências do usuário. Eventualmente um cookie pode ser usado
até para armazenar informações da aplicação.
Finalmente o cookie também pode ser usado para registrar os acessos do usuário e
manter uma lista de páginas que o usuário visitou, por exemplo. Este uso foi inibido
entre sites, mas alguns sites que gerenciam propagandas costumam manter ainda tal
mecanismo com o apoio dos sites que apresentam as propagandas.
O protoclo HTTP (Hyper Text Transfer Protocol) não possui capacidades
nativas para proteger os dados de sua comunicação. Por seus dados circularem
pela WEB em claro, seria impraticável algumas das aplicações WEB mais
comuns nos dias atuais (Internet banking , por exemplo)
Para resolver este problema foi criado, pela Netscape, o protocolo Secure
Sockets Layer (SSL), o qual implementa uma camada de criptografia aos sites
WEB, permitindo garantir a confidencialidade fim-a-fim em uma comunicação.
Principais ameaças
A1 – Injection;
A2 – Broken Authentication and Session Management;
A3 – Cross-Site Scripting (XSS);
A4 – Insecure Direct Object Rferences;
A5 – Security Misconfiguration;
A6 – Sensitive Data Exposure;
A7 - Missing Function Level Access Control
A8 – Cross-Site Request Forgey (CSRF)
A9 – Using Components with Known Vulnerabilities;e
A-10 – Unvalidated Redirects and Forwards.
OSTENSIVO 5-34
OSTENSIVO GUIA DE ESTUDO
A1.Injection = Injeção
OSTENSIVO 5-35
OSTENSIVO GUIA DE ESTUDO
SQL Injection
OSTENSIVO 5-36
OSTENSIVO GUIA DE ESTUDO
O código que trata a tela de login geralmente vai pegar o que o usuário
digitou como login e como senha e precisa verificar no banco de dados se existe um
usuário com aquele login e cuja senha seja aquela. Geralmente a aplicação terá uma
tabela no banco de dados, que pode ser chamar, por exemplo “User”. Essa tabela terá
uma coluna “Login” e outra coluna “Pass”. Nesta situação, uma forma de fazer isso é
montar uma query na forma:
SELECT * FROM User WHERE Login =‘Fulano’ AND Pass=‘123’
Como tudo após o -- pode ser ignorado, a query irá retornar todos os
registros da tabela, pois 1 é sempre igual a 1. Mesmo que o Login sempre seja
diferente de ‘’, como é um OU, sempre vai retornar verdadeiro.
OSTENSIVO 5-37
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-38
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-39
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-41
OSTENSIVO GUIA DE ESTUDO
LDAP Injevtion
OSTENSIVO 5-42
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-43
OSTENSIVO GUIA DE ESTUDO
Script Injection
Ainda assim, deve-se lembrar que é possível fazer Script Injection sem esses caracteres,
quando o campo guardado no banco de dados é retornado na cláusula value de campos
do tipo input. Essa cláusula é usada principalmente em telas de atualização de registro,
pois indica o valor default do campo a ser apresentado para a edição do usuário.
Caso o sistema seja bem defendido por sistemas de IDS, IPS ou Firewalls de Aplicação, o
uso deste tipo de ataque pode ser detectado com alguma facilidade. Como apontamos,
o uso de sinais < e > não é comum em entrada de dados e os sistemas verificam isso
com prioridade.
Porém muitas vezes isso pode ser contornado buscando realizar a injeção via um outro
sistema que gere dados a serem usados no sistema a ser atacado. Se conseguirmos
“plantar” o injection no outro sistema, o ataque acabará ocorrendo no sistema alvo.
OSTENSIVO GUIA DE ESTUDO
A2.Broken Authentication
OSTENSIVO 5-47
Essa seria a visão de um processo de autenticação com o usuário fornecendo
autenticação em cada acesso. Mas note que seria muito trabalhoso para o usuário.
Outra alternativa seria o navegador guardar as credenciais do usuário e mandar essas
em cada requisição, mas isso seria uma falha de segurança pois indicaria o
armazenamento de credenciais.
A solução prática é que a autenticação é feita apenas no primeiro acesso (na tela de
login) e o servidor web manda um token de autenticação para o cliente. Esse token tem
uma validade finita. Essa seria a situação mais comum, sendo o token o próprio session
ID do navegador.
Uma forma mais segura ainda de autenticação é quando o token é trocado a cada
requisição. Isso é implementado por alguns servidores web, mas tem o problema de
diminuir a velocidade de conexão devido a necessidade de acompanhamento da
sequência de tokens. Na prática é pouco usado.
A quebra de autenticação consiste portanto em obter as credenciais do usuário ou o
token de sessão de forma a permitir que se passe pelo usuário face ao sistema.
Obter as credenciais de autenticação do usuário pode ser feita através de diversos tipos
de exploração. A falta de HTTPS por exemplo, permite capturar essas senhas no
momento da transmissão das informações.
Senhas fracas ou sem bloqueio podem ser obtidas por testes de força bruta.
Mecanismos do tipo esqueci minha senha podem ser usados quando temos os dados do
usuário, o que nem sempre é dificil.
Algumas aplicações web tem uma página inicial HTTP e, só se o usuário fizer login, que
passa para HTTPS. Isso muitas vezes gera uma fragilidade que pode ser explorada.
Podemos capturar o ID de sessão enquanto ainda estamos no HTTP e, depois que o
usuário passar para o HTTPS, o ID continua o mesmo. Podemos então quebrar a sessão
do usuário e usar o sistema como se fosse este.
Outra forma de sequestro de sessão é através de uma injeção de script. Um código
JavaScript é injetado fazendo com que o navegador do outro usuário passe o id de
sessão deste para um outro servidor conhecido onde podemos pegar essa informação.
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-57
O Cross Site Scripting é um ataque de script injection, ou seja, de
injeção, que visa roubar a sessão de um outro usuário. O ataque requer que o
atacante possua um outro servidor web para ser usado, daí o nome “cross site”
ou seja, entre sites. O atacante irá digitar uma informação qualquer no sistema
incluindo um código script que pegue o session id e envie para o outro
servidor. Quando o usuário legítimo acessa o sistema e, por algum motivo,
pede para ver a informação mostrada por aquele usuário, o código será
executado na máquina dele. Esse código irá pegar o id de sessão e enviará a
um servidor externo. Esse servidor, claro, é controlado pelo atacante que pode,
então, obter o id de sessão de outro usuário.
“The new attack has been given the name CRIME by the researchers.The
CRIME attack is based on a weak spot in a special feature in TLS 1.0, but exactly
which that feature is has not been revealed by the researchers. They will say that
all versions of TLS/SSL including TLS 1.2.”
http://thehackernews.com/2012/09/crime-new-ssltls-attack-for-hijacking.html#
Aplicações podem fazer referência a diversos objetos, por
exemplo, arquivos, WebServices, interfaces, etc. Esses objetos podem estar
em diversos locais: no próprio servidor, em outro servidor de outra aplicação,
na própria máquina do usuário, etc.
De qualquer forma, não é uma tarefa particularmente difícil falsificar uma embalagem,
ou pelo menos, é algo muito mais simples que falsificar uma nota ou selo.
OSTENSIVO 5-64
A má configuração de um servidor web é geralmente explorada por mapeamento via
port scanner, teste de vulnerabilidade e outros. Note que, sendo falha na camada do
sistema operacional e de suporte a aplicação, são explorações mais afeitas a
infraestrutura do que a aplicação. Existem algumas situações de falha de configuração,
porém, que caem claramente dentro do escopo de exploração de aplicações.
Uma aplicação tem páginas além daquelas que se espera que
sejam vistas pelo usuário. Por exemplo, algumas vezes os desenvolvedores
deixam versões de backup das páginas, com a extensão .BAK. Ocorre que o
servidor web, quando chamado a baixar um arquivo cuja extensão não
reconhece, faz simplesmente o download do arquivo para a máquina do
usuário. Assim, um arquivo de código com a extensão .BAK, ao invés de ser
interpretado pelo servidor, seria baixado na máquina do usuário mostrando
todo o código do sistema com informações sensíveis.
Havendo duas condições assim tão óbvias chega a ser chocante o grau de sucesso que
consegue-se obter em testes deste tipo.
Existe uma outra exploração que já foi muito comum, mas hoje é vedada por todos os
principais servidores web, chamada contorno de diretórios. Descrevemos o mecanismo
apenas para conhecimento, pois tal ataque é inviável em qualquer servidor com menos
de 10 anos de idade.
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-69
A apresentação de erros do sistema na página do usuário é também um problema que
precisa de dois erros: do desenvolvedor em não tratar um erro corretamente e da
configuração do servidor, onde pode ser definido um tratador padrão para páginas de
erro.
Neste ataque o hacker observa um parametro que, se manipulado,
levará o servidor a buscar um arquivo em outro servidor e, se do tipo correto,
executá-lo no host. Os passos para este ataque são:
Todas as linguagens permitem que seja feito um include, que é um comando do tipo:
“pare de ler este arquivo, leia e processe aquele arquivo todo, depois continue na
próxima instrução”. O que torna o PHP único é que ele permite que o arquivo incluso
seja passado na forma de uma variável fornecida pelo usuário. Todas as demais
linguagens requerem que o arquivo tenha um nome fixo, não alterável durante a
execução do sistema.
Explorar um include file portanto consiste em identificar uma página que chame outra
via um include. Em PHP isso é comum quando temos uma URL que tem conteúdo
completamente diferente, mas a URL continua a mesma. Fora isso, pode-se tentar fazer
o injection da mesma forma que nos demais ataques de injeção. Mas note que esse é
um erro de desenvolvedor, mas também uma falha de configuração, pois as versões
posteriores a 4.6 do PHP permitem uma configuração que impede este ataque.
Também conhecido como hot spot (ponto quente). O desenvolvedor
verifica os direitos de acesso do usuário e só mostra para ele as funções que ele
tem direito. Mas quando clica no menu, o usuário é direcionado para uma outra
página, onde executará a função sensível. O problema é que é muito comum o
desenvolvedor esquecer de verificar na função se o usuário tem direito àquela
função. Geralmente ele pensa: o usuário só chega até aqui se for pelo menu, se
não tem direito, não aparece no menu, então ele não tem como chegar aqui. O
problema é que se o usuário souber a URL completa da página da função, ele
chega direto lá. Mesmo sendo um usuário sem direitos.
Esse ataque tem o nome, dentro da comunidade hacker de Hot Spot, ou ponto quente.
Pode ser o caso daquela página particular sequer verificar se o usuário está logado. Esse
é o pior tipo. Se alguém conhecer a URL, consegue acessar as informações diretamente.
Os outros dois tipos exigem que se tenha um usuário no sistema, porém fazem com que
usuários comuns com poucos direitos passem a ter acesso a informações privilegiadas.
Nesta situação o usuário logado com perfil simples, usando um URL completa, tem
acesso a um página de acesso privilegiado.
Deve-se, porém, evitar o acesso seguido e sequencial com páginas inválidas numa
eventual tentativa de descobrir a página por força bruta. Esse tipo de problema pode
sim ser detectado.
A identificação de hot spots pode ser muito útil caso tenhamos um usuário legítimo ou o
log de navegação de um usuário legítimo. Nesta situação conseguimos conhecer todas
as páginas do sistema e, desta forma, podemos testar se alguma delas possui tal falha
de acesso.
Pode-se obter a lista de URLs de um usuário legítimo também por um sniffer da rede ou,
em último caso, por tentativa e erro. Muitos sites usam padrões de nome de página o
que facilita esse teste.
No caso de Hot Spot nível 2 precisamos fatalmente de um usuário legítimo no sistema,
mesmo que seja um usuário com poucos poderes. Muitos sistemas tem um perfil
público e um perfil de administrador, por exemplo, assim a ideia é identificar
possibilidade do usuário comum acessar as informações do administrador.
Precisamos novamente ter as URLs que podem ser obtidas de um usuário legítimo pelos
mesmos meios que no hot spot 1, ou podem ser buscadas por tentativa e erro.
O terceiro nível de hot spot é quando conseguimos acessar
registros aos quais não teriamos acesso. Esse tipo de ataque é em tudo
similar ao ataque sobre referencia insegura a objeto. A única diferença aqui é
que, enquanto na referencia insegura o usuário não está necessariamente
logado no sistema, aqui o usuário já tem um perfil definido no sistema.
Aplicações podem fazer referência diversos objetos, por
exemplo, arquivos, WebServices, interfaces, etc. Esses objetos podem estar
em diversos locais: no próprio servidor, em outro servidor de outra aplicação,
na própria máquina do usuário, etc.
82
Existem vários exemplos de CSRF, sendo os mais conhecidos uma falha que havia no
facebook e o problema com roteadores. O exemplo do google indicado acima é
hipotético, mas seria o caso em qualquer sistema em que um usuário podem mandar
mensagens para outros.
O CSRF é muito danoso porque contorna todos os mecanismos de proteção do Cookie.
Mesmo que o servidor esteja adequadamente configurado, com os cookies de sessão do
tipo HttpOnly e Secure, pode ser usado. Em tese o usuário não deveria clicar em links de
outros sites enquanto navega em sistemas críticos, mas usuários fazem isso o tempo
todo.
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-85
A exploração de componentes inseguros é difícil, a menos que você seja o fornecedor
do componente. Pode-se buscar as listas de hackers da internet pela informação de
componentes com fragilidades conhecidas.
Uma outra estratégia seria criar um componente bacana, mas com um backdoor, e
distribuir gratuitamente. Existem vários casos deste tipo de exploração.
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-87
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-88
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-89
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-90
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-91
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-92
OSTENSIVO GUIA DE ESTUDO
Ameaça OWASP
OSTENSIVO 5-93
Repare que as variáveis são reservadas na memória na sequencia em que são criadas.
Assim, geralmente, o overflow de uma variável pode afetar as demais variáveis após a
sua declaração.
94
OSTENSIVO GUIA DE ESTUDO
Buffer Overflow
OSTENSIVO 5-95
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-96
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-97
OSTENSIVO GUIA DE ESTUDO
Depuração de aplicação
OSTENSIVO 5-98
OSTENSIVO GUIA DE ESTUDO
Depuração – Ferramentas
OSTENSIVO 5-99
OSTENSIVO GUIA DE ESTUDO
Campos Ocultos
OSTENSIVO 5-100
OSTENSIVO GUIA DE ESTUDO
Campos Ocultos
OSTENSIVO 5-101
OSTENSIVO GUIA DE ESTUDO
Outro ponto que deve-se levar em conta é o fato de que, por mais
que a aplicação tenha segurança implementada, existe a chance do ataque se
originar na máquina do usuário. Obviamente a aplicação não pode garantir que a
máquina do usuário está imune a problemas. Mas existem alguns cuidados que
podem ser tomados para evitar problemas.
OSTENSIVO 5-102
Existem inúmeras formas de criar um interceptador de teclado. Alguns em user mode
(Ring 3) e outros em kernel mode (Ring 0). Já vimos alguns deles tais como o IME e o
kbdclass fliter. Existem diversas outras formas porém, em diversas posições do sistema
operacional. Note que a maioria destas formas já foi explorada uma ou mais vezes em
virus e trojans conhecidos.
OSTENSIVO GUIA DE ESTUDO
CAPTCHA
OSTENSIVO 5-104
OSTENSIVO GUIA DE ESTUDO
Outros ataques
Existem outros ataques menos comuns, mas nem por isso menos
importantes, por exemplo aqueles em que os agentes potenciais de ataque são
da própria equipe da aplicação, desenvolvedores e administradores. Esses
ataques podem ser evitados ou mitigados com alguns controles simples:
•Manter o código fonte em um sistema de gerência de versões;
OSTENSIVO 5-105
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-106
OSTENSIVO GUIA DE ESTUDO
Identificação e Autenticação
OSTENSIVO 5-107
OSTENSIVO GUIA DE ESTUDO
Autenticação Biométrica
A autenticação biométrica tem sido cada vez mais usada, porém não
é o meio preferencial, visto que ainda é cara e, em alguns casos incomoda.
Considere ainda que existem falhas de diversos tipos, por exemplo, ataques
conhecidos. O número de autenticação biométrica é muito grande e incorpora
diversos aspectos do corpo humano.
A digital do dedo é a forma mais comum, porém existem algumas
restrições: existem pessoas que não as possuem, particularmente trabalhadores
de indústria química, de cimento e outros materiais abrasivos. Sem contar, por
óbvio, amputados. Os dispositivos mais comuns geram muitos erros. Tanto erros
falso negativo quanto falso positivo, ou seja, deixam de reconhecer uma digital
válida ou, o que é pior, reconhecem como válida uma digital que não é.
Para os fãs de filmes de ação, fiquem avisados que não funciona
cortar o dedo da pessoa para passar no mecanismo. Mas existem ainda casos de
quebra deste mecanismo com películas de gelatina com a impressão de digital de
outra pessoa.
Outros mecanismos tem melhor resultado, como a de retina e a de
iris, porém são caros ainda. A autenticação facial tem grande utilidade na
identificação de pessoas sem a cooperação desta, o que pode ser útil em algumas
aplicações.
OSTENSIVO 5-108
OSTENSIVO GUIA DE ESTUDO
Certificado Digital
OSTENSIVO 5-109
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-110
OSTENSIVO GUIA DE ESTUDO
Login e Senha
OSTENSIVO 5-111
OSTENSIVO GUIA DE ESTUDO
Armazenamento da Senha
OSTENSIVO 5-112
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-113
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-114
OSTENSIVO GUIA DE ESTUDO
Gestão de Identidade
OSTENSIVO 5-115
OSTENSIVO GUIA DE ESTUDO
Métrica da Senha
OSTENSIVO 5-116
OSTENSIVO GUIA DE ESTUDO
Bloqueio da senha
OSTENSIVO 5-117
OSTENSIVO GUIA DE ESTUDO
Bloqueio da senha
OSTENSIVO 5-118
OSTENSIVO GUIA DE ESTUDO
Resposta da Autenticação
OSTENSIVO 5-119
OSTENSIVO GUIA DE ESTUDO
Acesso ao Sistema
OSTENSIVO 5-120
OSTENSIVO GUIA DE ESTUDO
Contorno do mecanismo
OSTENSIVO 5-121
OSTENSIVO GUIA DE ESTUDO
Contorno...como resolver
OSTENSIVO 5-122
OSTENSIVO GUIA DE ESTUDO
Conexão ao BD
OSTENSIVO 5-123
OSTENSIVO GUIA DE ESTUDO
Atender todos os itens acima parece algo bastante difícil. Hoje existe
uma solução quase que global e que funciona muito bem: Web Services sobre
HTTPS com certificados digitais em ambas as pontas. Essa solução deve sempre
ser buscada em novos sistemas. O problema é que, quando fazemos interface com
um sistema mais antigo, nem sempre temos essa possibilidade.
OSTENSIVO 5-124
OSTENSIVO GUIA DE ESTUDO
Integridade de dados
OSTENSIVO 5-125
OSTENSIVO GUIA DE ESTUDO
Informação Residual
OSTENSIVO 5-126
OSTENSIVO GUIA DE ESTUDO
Privacidade
OSTENSIVO 5-127
Segurança no Desenvolvimento de 25.11.14
Aplicações Críticas
www.modulo.com 128
Segurança no Desenvolvimento de 25.11.14
Aplicações Críticas
O controle sobre o administrador do banco de dados, por outro lado, requer a dupla
administração.
www.modulo.com 129
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-130
OSTENSIVO GUIA DE ESTUDO
Ambiente Seguro
OSTENSIVO 5-131
OSTENSIVO GUIA DE ESTUDO
Segregação de Ambiente
OSTENSIVO 5-132
OSTENSIVO GUIA DE ESTUDO
Banco de Desenvolvimento
OSTENSIVO 5-133
OSTENSIVO GUIA DE ESTUDO
Gerência de Versionamento
OSTENSIVO 5-134
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-135
OSTENSIVO GUIA DE ESTUDO
Desenvolvimento terceirizado
OSTENSIVO 5-136
OSTENSIVO GUIA DE ESTUDO
Central de Testes
OSTENSIVO 5-137
OSTENSIVO GUIA DE ESTUDO
O Erro na Aplicação
OSTENSIVO 5-138
OSTENSIVO GUIA DE ESTUDO
Ferramenta de Gestão
OSTENSIVO 5-139
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-140
OSTENSIVO GUIA DE ESTUDO
Inspeção de Código
OSTENSIVO 5-141
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-142
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-143
OSTENSIVO GUIA DE ESTUDO
Nestes casos, espera-se que ocorra um erro, mas que esse erro
seja normal, ou seja, não comprometa a segurança do sistema.
OSTENSIVO 5-144
OSTENSIVO GUIA DE ESTUDO
Teste integrado
OSTENSIVO 5-145
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-146
OSTENSIVO GUIA DE ESTUDO
Teste de Invasão
OSTENSIVO 5-147
OSTENSIVO GUIA DE ESTUDO
Ferramentas – Invasão
OSTENSIVO 5-148
OSTENSIVO GUIA DE ESTUDO
OSTENSIVO 5-149
OSTENSIVO GUIA DE ESTUDO
Ferramentas
Nikto
OSTENSIVO 5-150
OSTENSIVO GUIA DE ESTUDO
Ferramentas
Dirbuster
OSTENSIVO 5-151
OSTENSIVO GUIA DE ESTUDO
Ferramentas
W3AF
OSTENSIVO 5-152
OSTENSIVO GUIA DE ESTUDO
Ferramentas
Web Scarab
OSTENSIVO 5-153
OSTENSIVO GUIA DE ESTUDO
Ferramentas
BurpSuite
OSTENSIVO 5-154
OSTENSIVO GUIA DE ESTUDO
Ferramentas
Guyère
OSTENSIVO 5-155
OSTENSIVO GUIA DE ESTUDO
Ferramentas
SQL Map
OSTENSIVO 5-156
OSTENSIVO GUIA DE ESTUDO
Ferramentas
ModSecurity
OSTENSIVO 5-157
OSTENSIVO GUIA DE ESTUDO
Ferramentas
Pirni
OSTENSIVO 5-158
OSTENSIVO GUIA DE ESTUDO
Ferramentas
DisAid
OSTENSIVO 5-159
OSTENSIVO
Acunetix
OSTENSIVO 160
Segurança no Desenvolvimento de 25.11.14
Aplicações Críticas
A ferramenta da IBM faz os testes similares aos do Acunetix, ou seja, o teste de invasão
e também possui um módulo próprio para a inspeção de código, porém limitada a duas
linguagens: Java e PHP. O fato de não tratar a plataforma .NET nem outras linguagens
acaba por dificultar seu uso amplo. Deve-se considerar ainda que a ferramenta requer a
compilação do programa pela mesma. Isso torna o teste independente mais complexo
de se realizar.
www.modulo.com 161
Segurança no Desenvolvimento de 25.11.14
Aplicações Críticas
www.modulo.com 162
OSTENSIVO GUIA DE ESTUDO
Ferramentas
Safeval
OSTENSIVO 5-163