terça-feira, 12 de maio de 2015

Um ataque spoofing TCP simples



Ao longo do anos número de seqüência TCP passado ataques tornaram-se uma previsão
ameaça real contra as redes desprotegidas, aproveitando a inerente
relações de confiança presentes em muitas instalações de rede. Seqüência TCP
ataques de previsão de número foram mais comumente implementado pela abertura de um
série de conexões para o host de destino, e tentar prever o
número de seqüência que será usada na próxima. Muitos sistemas operacionais têm
Por conseguinte, tentou resolver este problema através da aplicação de um método de
gerar números de seqüência em modas imprevisíveis. Esse método faz
não resolve o problema.

Esta nota de aviso apresenta um método alternativo para se obter a inicial
número de seqüência de alguns serviços comuns confiáveis. O ataque apresentado aqui
não requer o atacante para abrir múltiplas conexões, ou inundar uma porta
no host confiável para completar o ataque. O único requisito é que
pacotes fonte encaminhado pode ser injectada na rede de destino com falso
endereços de origem.

Este comunicado assume que o leitor já tem uma compreensão de como
Seqüência TCP ataques previsão número são implementadas.

O impacto deste comunicado é muito reduzido, devido ao grande número de
organizações que fonte bloco de pacotes e pacotes roteados com endereços
dentro de suas redes. Por isso, apresentamos a informação como mais de
uma mensagem 'heads-up' para o tecnicamente inclinado, e de reiterar que
a randomização de números de seqüência TCP não é uma solução eficaz
contra este ataque.

Detalhes Técnicos
~~~~~~~~~~~~~~~~~

O problema ocorre quando determinadas daemons aceitar conexões de rede
com encaminhamento de origem activado, e prossiga para desativar qualquer roteamento de origem
opções sobre a conexão. A conexão é permitida para continuar, no entanto
o percurso inverso não é mais usado. Um exemplo ataque pode lançada contra
o daemon in.rshd, que na maioria dos sistemas irá recuperar as opções de socket
via getsockopt () e, em seguida, desligue todas as opções perigosas via setsockopt ().

Um exemplo ataque segue.

Host A é o host confiável
Host B é o host de destino
Anfitrião C é o atacante

Anfitrião C inicia uma conexão de fonte encaminhado para in.rshd no host B, fingindo
a ser hospedeiro A.

Anfitrião C spoofing Host A <SYN> -> Host B in.rshd

Host B recebe o pacote SYN inicial, cria um novo PCB (protocolo
bloco de controle) e associados a rota com o PCB. Host B responde,
usando o percurso inverso, enviando de volta um SYN / ACK com o número de seqüência.

Anfitrião C spoofing Host A <- <SYN / ACK> Host B in.rshd

Anfitrião C responde, ainda spoofing host A, reconhecendo o número de seqüência.
Opções de roteamento de origem não são necessários neste pacote.

Anfitrião C spoofing Host A <ACK> -> Host B in.rshd

Agora temos uma conexão estabelecida, a chamada accept () for concluída, e
controle agora é passado para o daemon in.rshd. O daemon faz agora IP
opções de verificação e determina que iniciámos uma fonte roteado
conexão. O daemon agora desliga essa opção, e quaisquer pacotes enviados
posteriormente vai ser enviada para o host A verdadeira, não utilizando o inverso
percurso que temos especificado. Normalmente, este seria seguro, no entanto, o
atacando anfitrião agora sabe o que o próximo número de seqüência será. Conhecimento
este número de seqüência, agora podemos enviar um pacote falsificado sem a fonte
opções de roteamento habilitado, fingindo vir de Host A, e nossa
comando será executado.

Em algumas condições é necessária a inundação de uma porta no host verdadeiro A
se maiores ammounts de dados são enviados, para evitar que o hospedeiro a partir de um verdadeiro
respondendo com um RST. Isso não é necessário na maioria dos casos, quando se realiza
este ataque contra in.rshd devido ao pequeno ammount de dados transmitidos.

Deve notar-se que o número de sequência é obtida antes aceitar ()
voltou e que esta não pode ser impedido sem desligar fonte
roteamento no kernel.

Como uma nota lateral, temos muita sorte que o TCP única associa uma rota de origem com
uma PCB quando o SYN inicial é recebido. Se ele aceitou e mudou o ip
opções a qualquer momento durante uma conexão, os ataques mais exóticas pode ser possível.
Estes poderiam incluir conexões de seqüestro em toda a Internet sem jogar
um homem no meio ataque e ser capaz de ignorar a verificação de IP opções
imposta por daemons usando getsockopt (). Felizmente * BSD pilhas TCP baseado / IP
Não faça isso, no entanto, seria interessante examinar outras implementações.

Impacto
~~~~~~

O impacto deste ataque é semelhante à sequência de TCP mais complexo
número predição ataque, no entanto, envolve menos passos, e não exige
nós para 'adivinhar' o número de seqüência. Isso permite que um invasor execute
comandos arbitrários como root, dependendo da configuração do alvo
sistema. É necessário que a confiança é aqui presente, como um exemplo, a utilização
de .rhosts ou hosts.equiv.


Soluções
~~~~~~~~~

A solução ideal para este problema é ter todos os serviços que dependem de
Autenticação baseada em IP cair a conexão completamente quando inicialmente
detectando essa fonte encaminhado opções estão presentes. Os administradores de rede
e os usuários podem tomar precauções para evitar que os usuários fora da sua rede
de tirar partido deste problema. As soluções são esperançosamente já
ou implementadas ou em implementação.

1. Bloqueie ligações encaminhadas qualquer origem em suas redes
2. Bloquear todos os pacotes com endereço baseado interna de entrar em sua rede.

Os administradores de rede devem estar cientes de que esses ataques podem ser facilmente
lançado por trás roteadores e firewalls de filtragem. Serviço de Internet
fornecedores e as empresas devem garantir que os usuários internos não podem lançar
os ataques descritos. As precauções sugeridas acima devem ser implementadas
para proteger redes internas.

Código de exemplo para processar corretamente pacotes roteados de origem é apresentado aqui
como um exemplo. Por favor, deixe-nos saber se há algum problema com ele.
Este código foi testado em sistemas operacionais baseados BSD.

        u_char optbuf [BUFSIZ / 3];
        int optsize = sizeof (optbuf), ipproto, i;
        struct protoent * ip;

        if ((ip = getprotobyname ("IP"))! = NULL)
                ipproto = IP-> p_proto;
        mais
                ipproto = IPPROTO_IP;
        if (! getsockopt (0, ipproto, IP_OPTIONS, (char *) optbuf, & optsize) &&
            optsize! = 0) {
                for (i = 0; i <optsize;) {
                        u_char c = optbuf [i];
                        if (c == IPOPT_LSRR || c == IPOPT_SSRR)
                                saída (1);
                        if (c == IPOPT_EOL)
                                break;
                        i + = (== IPOPT_NOP c)? 1: optbuf [i + 1];
                }
        }


Uma preocupação importante é no caso em que os invólucros estão a ser utilizados TCP. Se
um usuário está contando com o TCP wrappers, a correção acima deve ser incorporada
fix_options.c. O problema é que o TCP wrappers em si não fecha
a ligação, no entanto, remove as opções através Setsockopt (). Neste caso
quando o controle é passado para in.rshd, ele nunca vai ver todas as opções de presente,
ea conexão permanecerá aberta (mesmo se in.rshd tem o patch acima
incorporado). Uma opção para soltar completamente conexões de fonte encaminhado vontade
espero ser fornecida na próxima versão do TCP wrappers. A outra opção
é undefine KILL_IP_OPTIONS, que parece ser indefinido por padrão.
Isto passa por opções de IP e permite que o daemon chamado para lidar com eles
em conformidade.


A desativação Source Routing
~~~~~~~~~~~~~~~~~~~~~~~~

Nós acreditamos que as seguintes informações sejam precisas, no entanto, não é
garantida.

--- Cisco

Para que o roteador descartar qualquer datagrama contendo uma opção de rota de origem IP
emitir o seguinte comando:

no ip source-route

Esta é uma opção de configuração global.


--- NetBSD

As versões do NetBSD 1.2 antes de não fornecer a capacidade para desativar
roteamento de origem. Outras versões fornecidos com o roteamento de origem ativado por padrão.
Nós não sabemos de uma forma de evitar NetBSD de aceitar pacotes fonte roteado.
NetBSD sistemas, no entanto, pode ser configurado para evitar o encaminhamento de pacotes
quando actua como um gateway.

Para determinar se o encaminhamento de pacotes fonte roteado é habilitado,
emitir o seguinte comando:

# Sysctl net.inet.ip.forwarding
# Sysctl net.inet.ip.forwsrcrt

A resposta vai ser 0 ou 1, 0 significa desligado, e um o que significa que está ligado.

Transmissão dos pacotes fonte encaminhadas pode ser desligado através de:

# Sysctl -w net.inet.ip.forwsrcrt = 0

Encaminhamento de todos os pacotes em geral podem desligada via:

# Sysctl -w net.inet.ip.forwarding = 0


--- BSD / OS

BSDI fez um patch disponível para os rshd, rlogind, tcpd e nfsd. Este
patch é availible em:

ftp://ftp.bsdi.com/bsdi/patches/patches-2.1

OU através de seu servidor de e-mail remendos <patches@bsdi.com>

O número patch é
U210-037 (versão normal)
D210-037 (versão doméstica para sites que executam a versão Kerberized)


BSD / OS 2.1 tem o roteamento de origem desativado por padrão

As versões anteriores fornecido com o roteamento de origem ativado por padrão. Tanto quanto
Nós sabemos, BSD / OS não pode ser configurado para soltar roteados por fonte destinados
por si mesma, no entanto pode ser configurado para impedir a transmissão de tais
pacotes quando actua como um gateway.

Para determinar se o encaminhamento de pacotes fonte roteado é habilitado,
emitir o seguinte comando:

# Sysctl net.inet.ip.forwarding
# Sysctl net.inet.ip.forwsrcrt

A resposta vai ser 0 ou 1, 0 significa desligado, e um o que significa que está ligado.

Transmissão dos pacotes fonte encaminhadas pode ser desligado através de:

# Sysctl -w net.inet.ip.forwsrcrt = 0

Encaminhamento de todos os pacotes em geral podem desligada via:

# Sysctl -w net.inet.ip.forwarding = 0


--- OpenBSD

Navios com roteamento de origem desativada por padrão. Para determinar se a fonte
roteamento está habilitado, o seguinte comando pode ser emitido:

# Sysctl net.inet.ip.sourceroute

A resposta vai ser 0 ou 1, 0 sentido de que o roteamento de origem está desligado,
e 1 o que significa que está ligado. Se o roteamento de origem foi ligado, desligue via:

# Sysctl -w net.inet.ip.sourceroute = 0

Isso impedirá que o OpenBSD a partir de encaminhamento e de aceitar qualquer fonte roteado
pacotes.


--- FreeBSD

Navios com roteamento de origem desativada por padrão. Para determinar se a fonte
roteamento está habilitado, o seguinte comando pode ser emitido:

# Sysctl net.inet.ip.sourceroute

A resposta vai ser 0 ou 1, 0 sentido de que o roteamento de origem está desligado,
e 1 o que significa que está ligado. Se o roteamento de origem foi ligado, desligue via:

# Sysctl -w net.inet.ip.sourceroute = 0


--- Linux

Linux, por padrão, tem o roteamento de origem desativado no kernel.


--- 2.x Solaris

Navios com roteamento de origem ativado por padrão. Solaris 2.5.1 é um dos mais
alguns sistemas operacionais comerciais que tem sequência imprevisível
números, que não ajudam neste ataque.

Nós sabemos de nenhum método para evitar Solaris de aceitar distribuído fonte
ligações, no entanto, sistemas que actuam como gateways Solaris pode ser prevenida
de encaminhar qualquer fonte encaminhados pacotes através dos seguintes comandos:

# Ndd -set / dev / ip ip_forward_src_routed 0

Você pode impedir o encaminhamento de todos os pacotes através de:

# Ndd -set / dev / ip ip_forwarding 0

Estes comandos podem ser adicionados a /etc/rc2.d/S69inet tenham efeito na inicialização.


--- SunOS 4.x

Nós sabemos de nenhum método para evitar SunOS de aceitar distribuído fonte
ligações, no entanto um patch é disponível para evitar sistemas de SunOS
encaminhamento de pacotes fonte roteado.

Este patch é disponível em:

ftp://ftp.secnet.com/pub/patches/source-routing-patch.tar.gz

Para configurar SunOS para evitar o encaminhamento de todos os pacotes, o seguinte
comando pode ser emitido:

# Echo "ip_forwarding / w 0" | adb k w / vmunix / dev / mem
# Echo "ip_forwarding w 0?" | Adb k w / vmunix / dev / mem

O primeiro comando desliga o encaminhamento de pacotes em / dev / mem, o segundo em
/ Vmunix.


--- HP-UX

O HP-UX não parecem ter opções para configurar um sistema HP-UX para
evitar aceitar ou encaminhamento de fonte encaminhados pacotes. HP-UX tem IP
encaminhamento ativado por padrão e deve ser desligado quando actua como
firewall. Para determinar se o encaminhamento IP está atualmente em, a seguinte
comando pode ser emitido:

# Adb / HP-UX
ipforwarding X <-? a entrada do usuário
ipforwarding:
ipforwarding: 1
#

A resposta de 1 indica o encaminhamento de IP é ON, 0 indica off. HP-UX pode
ser configurados para evitar a transmissão de quaisquer pacotes através do seguinte
Comandos:

# Adb w / HP-UX / dev / kmem
ipforwarding / W 0
ipforwarding? W 0
^ D
#

--- AIX

AIX não pode ser configurado para descartar fonte encaminhado pacotes destinados a si,
no entanto pode ser configurado para evitar o encaminhamento de pacotes fonte encaminhado.
IP encaminhamento e encaminhamento de pacotes fonte encaminhado especificamente pode ser
desligado sob AIX através dos seguintes comandos:

Para desativar o encaminhamento de todos os pacotes:

# / Usr / sbin / no -o ipforwarding = 0

Para desativar o encaminhamento de pacotes fonte encaminhadas:

# / Usr / sbin / no -o nonlocsrcroute = 0

Note-se que estes comandos deve ser adicionado ao /etc/rc.net



Se desligar o encaminhamento de origem não é possível e você ainda está usando
serviços que dependem de autenticação de endereços IP, que deve ser desativado
imediatamente (in.rshd, in.rlogind). in.rlogind é seguro se .rhosts e
/etc/hosts.equiv não são utilizados.


Atribuições
~~~~~~~~~~~~

Graças a Niels Provos <provos@physnet.uni-hamburg.de> para fornecer
as informações e detalhes deste ataque. Você pode ver seu web
site em http://www.physnet.uni-hamburg.de/provos

Graças a Theo de Raadt, o mantenedor do OpenBSD para encaminhar este
informações para nós. Mais informações sobre o OpenBSD pode ser encontrada em
http://www.openbsd.org

Graças a Keith Bostic <bostic@bsdi.com> para discussão e um rápido
solução para BSD / OS.

Graças a Brad Powell <brad.powell@west.sun.com> para fornecer informações
para Solaris 2.x e sistemas operacionais 4.x SunOS.

Os agradecimentos vão para CERT e AusCERT para recomendações contidas neste comunicado.

Você pode entrar em contato com o autor deste consultivo em oliver@secnet.com



----- BEGIN PGP PUBLIC KEY BLOCK -----
Versão: 2.6.3ia

mQCNAzJATn0AAAEEAJeGbZyoCw14fCoAMeBRKiZ3L6JMbd9f4BtwdtYTwD42 / Uz1
A / 4UiRJzRLGhARpt1J06NVQEKXQDbejxGIGzAGTcyqUCKH6yNAncqoep3 + PKIQJd
Kd23buvbk7yUgyVlqQHDDsW0zMKdlSO7rYByT6zsW0Rv5JmHJh / bLKAOe7p9AAUR
tCVPbGl2ZXIgRnJpZWRyaWNocyA8b2xpdmVyQHNlY25ldC5jb20 + iQCVAwUQMkBO
Fr / bLKAOe7p9AQEBOAQAkTXiBzf4a31cYYDFmiLWgXq0amQ2lsamdrQohIMEDXe8
45SoGwBzXHVh + gnXCQF2zLxaucKLG3SXPIg + nJWhFczX2Fo97HqdtFmx0Y5IyMgU
qRgK / j8KyJRdVliM1IkX8rf3Bn + ha3xn0yrWlTZMF9nL7iVPBsmgyMOuXwZ7ZB8 =
= Xq4f
----- END PGP PUBLIC KEY BLOCK -----

Aviso de direitos autorais
~~~~~~~~~~~~~~~~
O conteúdo deste comunicado, Copyright (C) 1997 Seguro Networks Inc,
e pode ser distribuído livremente desde que nenhuma taxa é cobrada para
distribuição, e que o crédito apropriado é dado.

 Você pode encontrar Redes papéis segura em ftp://ftp.secnet.com/pub/papers
 e avisos na ftp://ftp.secnet.com/advisories

 Você pode navegar nosso Web site em http://www.secnet.com

 Você pode se inscrever em nossa lista de discussão comunicado de segurança, enviando e-mail para
 majordomo@secnet.com com a linha "subscribe SNI-avisos"
←  Anterior Proxima  → Página inicial

0 comentários:

Postar um comentário