Internet Daemons:
---------------------------

Documento traduzido e adaptado por DrSkull
Fonte: Internet Daemons
por Voyager[TNO]

Os computadores da Internet comunicam uns com os outros usando o TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol) no topo do IP (Internet Protocol). Outros protocolos são usados no topo do IP, mas TCP e UDP são aqueles que nos interessam. Num Sistema Unix, o ficheiro /etc/protocols mostra os protocolos disponíveis numa máquina.

Na Session Layer (modelo OSI) ou na Internet Layer (DOD Protocol Model) os dados são transferidos através dos hosts usando as ports. Cada comunicação de dados terá o número da port de origem e o número da port de destino. Os números das ports podem ser divididos em dois tipos, as já ports conhecidas e as ports atribuídas dinamicamente. Em Unix as ports conhecidos estão definidas no ficheiro /etc/services.
As ports dinâmicas são atribuídos por necessidade do sistema.

Unix tem a capacidade de ligar programas designados por daemons às ports conhecidas. O computador remoto irá ligar-se às ports conhecidos do outro computador, que será ligado ao programa daemon.

Os programas Daemon começam tradicionalmente por inetf (The Internet Daemon) para serem executados definem-se em inetd ficheiro de configuração, /etc/inetd.conf.

A maioria destes Daemons são executados por utilizadores privilegiados, como root. Muitos deste programas tem a vulnerabilidade na qual pode-se ganhar acesso ao computador remoto.

Os daemons que nos interessam são:
Serviço Número da Port Descrição
ftp 21 File Transfer [Control]
smtp 25 Simple Mail Transfer Protocol
tftp 69 Trivial File Transfer Protocol
finger 79 Finger
www-http 80 World Wide Web HTTP
sunrpc 111 SUN Remote Procedure Call
fln-spx 221 Berkeley rlogind with SPX auth
rsh-spx 222 Berkeley rshd with SPX auth
netinfo 716-719 NetInfo
ibm-res 1405 IBM Remote Execution Starter
nfs 2049 Network File System
x11 6000-6063 X Window System
rcp/rshd   Remote Copy/Remote Shell Daemon
nis   Network Information Services

A próxima parte deste artigo irá focar daemons específicos e as suas vulnerabilidades. Numa breve explicação, as vulnerabilidades serão aqui abordadas. Para mais desenvolvimentos que estão para além deste artigo, mais pesquisa deverá ser feita por parte do leitor.

Ftp 21 File Tranfer Protocol

FTP é um protocolo de transferência de ficheiros. Os pedidos de FTP são respondidos por um daemon de ftp, ftpd. As versões abaixo do 2.2 "wuarchive's" tem uma vulnerabilidade na qual se pode executar qualquer binário, e pode-se ver com o comando 'site exec' fazendo-o correr relativamente do caminho com "../" no começo. Aqui fica um exemplo:

Entrando num sistema via ftp:

        220 uswest.com FTP server (Version wu-2.1(1) ready.
        Name (uswest.com:waltman): waltman
        331 Password required for waltman.
        Password: jim
        230 User waltman logged in.
        Remote system type is UNIX.
        Using binary mode to transfer files.
        ftp> quote "site exec cp /bin/sh /tmp/.tno"
        200-cp /bin/sh /tmp/tno
        ftp> quote "site exec chmod 6755 /tmp/.tno"
        200-chmod 6755 /tmp/tno
        ftp> quit
        221 Goodbye.

smtp 25 Simple Mail Transfer Protocol

Ataques ao correio são uns dos métodos mais antigos de atacar internet hosts. O daemon, mais comum e menos seguro, é sendmail. Outros Daemons de correio incluem smail, MMDF, e IDA sendmail. Sendmail tem muitas vulnerabilidades para serem aqui todas listadas. Existe um FAQ escrita especialmente sobre as vulnerabilidades de sendmail mas não será muito abordado aqui.

Uma vulnerabilidade conhecida, mas útil apenas para efeitos históricos é "Wizard Modo" Em modo Wizard pode-se pedir uma shell pela port 25 ( SMP port). Nenhum dos sistemas modernos será vulnerável a este ataque. Para explorar esta vulnerabilidade, terá-se de fazer telnet para a port 25, escrever WIZ para entrar no modo Wizard e digitar a password. O problema relatado é a maneira de como as passwords encriptadas são armazenadas. Havia um erro (bug) que fazia com que o sistema pensa-se que nenhuma password seria melhor do que a passaword real.

Citando Steven Bellovin:
A intenção do comportamento do modo wizard era de que se fosse fornecida a password correcta, alguns comandos não standard SMTP fossem autorizados de forma a fornecerem uma shell. A password reutilizada -- de uma maneira encriptada e armazenada no ficheiro de sendmail /etc/passwd.

Em ordem de poupar o trabalho de ler e analisando de cada vez o ficheiro de configuração, sendmail tem o que se chama de "ficheiro de configuração congelado" "frozen configuration file". O conceito é bom mas a sua implentação não o é. Para congelar o ficheiro de configuração, o sendmail apenas escreve no disco toda a área da memória dinâmica (usada por malloc) e pela área 'bss' -- a área que não ocupou espaço no ficheiro executável, mas foi inicializado para todos os zeros pelo UNIX kernel quando o programa foi executado. A área bss mantém todas as variáveis que não são dadas explicitamente pelp código C. Naturalmente quando"entregamos" o mail, o sendmail apenas lê isso em duas leituras gigantes. Foi então necessário armazenar toda informação do ficheiro de configuração nas áreas bss ou malloc, que exigem um pouco de cuidado na codificação.

A password do modo wizard foi armazenada na memória "malloc", para que fosse propriamente congelada. Mas o ponto explicito foi acertado para NULL na source.

char +wiz=NULL

Significa que estava na área inicializada de informação, *não* a bss. E estava ali *não* gravado com a configuração congelada. Então -- quando o ficheiro de configuração é parcialmente congelado, a password é lida, e escrita. A próxima vez que o sendmail for executado, pelo ponto será feito um reset para NULL. (Claro que a password está presente, mas não há maneira de a encontrar.) O código acredita estupidamente no conceito de não haver password para a porta das traseira.

Tftp 69 (Trivial File Transfer Protocol)

tftp é Protocolo Trivial De Transferencia de Ficheiros. Tftp é usado para tentar gravar os ficheiros das passwords num sistema remoto. Os ataques de tftp são tão simples e repetitivos que os scripts são escritos para que o processo de atacar domínios inteiros seja automático.

finger 79 Finger

O comando finger mostra a informação acerca de outro utilizador, como o nome do login, o nome completo, o nome do terminal, idle time, o tempo do login e a localização se for conhecida. Os pedidos do finger são respondidos por um finger daemon.

Robert Tappan Morris Internet Worm usou o finger daemon. O finger daemon suportava mais de 512 bytes da máquina remota como parte do pedido de finger. No entanto, sofria de um erro (bug) de sobrecarga causada pela falta de uma própria verificação.
Tudo acima de 512 era interpretado pela máquina como uma instrução executar localmente, fossem quais fossem os privilégios que o finger daemon tivesse.

www-http 80 World Wide Web HTTP

HTML ((HyperText Markup Language) permite que o utilizador da página executar programas no sistema remoto. Se o Criador da página deixar o utilizador inserir argumentos aos comandos, o sistema é vulnerável aos problemas usuais associados com o sistema. Em adição existe uma vulnerabilidade que em alguma circunstancias dará um X Term usando o UID em que o server está a correr o WWW.

sunrpc 111 SUN Remote Procedure Call

Sun RPC (Remote Procedure Call) permite que os utilizadores em computadores remotos executem comandos. RPC sofreu da falta de verificação de segurança. Para explorar as vulnerabilidades do RPC, deverá ter um programa chamado "ont" que não é muito difícil de encontrar.

login 513 Remote login

Algumas versões do AIX e Linux sofrem de um bug de forma que o rlogind lê os argumentos. Para explicar esta vulnerabilidade executa-se o seguinte comando de um sistema remoto:

rlogin host -l -froot

Host é o nome do computador alvo e o username é aquele que se usa para fazer o rlogin (costuma ser root). Se este erro (bug) existe nos sistemas remotos, entrara nele sem ser pedida a password

rsh-spx 222 Berkeley rshd with SPX auth

Algumas versões do Dynic e Irix tem um erro (bug) no rshd que permite executar comandos como root. Para explorar esta vulnerabilidade executa-se o seguinte comando no sistema remoto:

rsh host -l "" /bin/sh

netinfo 716-719 NetInfo

NeXT implantou um protocolo conhecido por NetInfo para que uma máquina com NeXT possa perguntar informação a outra NeXT. Um server NetInfo por padrão irá permitir acesso livre as bases de dados do sistema. Isto pode ser corrigido pelo o Administrador do sistema. Uma das informações que o netinfo dará é o ficheiro da password.

ibm-res 1405 IBM Remote Execution Starter

rexd (execução remota de um daemon) permite executar um programa numa máquina que contenha Unix. As versões do sitema AIX, NeXT e HPUX que tenham o rexd sofrem de uma vulnerabilidade que permite uma execução remota. O daemon rexd verifica o uid da máquina de que se conecta, para isso têm de ser root na máquina de que se faz o ataque do rexd. Para determinar a máquina alvo está a correr o rexd, usa-se o comando 'rcp -p '. Têm de se pesquisar um programa conhecido como 'on' que está disponível em h/p boards everyhere.

nfs 2049 Network File System

NFS, o sistema de rede de ficheiros da Sun Microsystem sofreu de múltiplas vulnerabilidades na segurança. Em adição muitos administradores configuraram o NFS, incorrectamente permitindo o acesso remoto não intencionado.

Usando o comando 'showmount -e' pode-se ver quais os ficheiros que são exportados de uma máquina. Muitos administradores permitem o ler o directório /etc, permitindo copiar o ficheiro da password. Outros administradores permitem ao utilizador escrever directórios, permitindo a criação de ficheiros rhosts e ganhar acesso a uma máquina via rlogin ou rsh.

Em relação a assuntos de configuração, NFS é vulnerável a ataques que usem uid mask bug, a mknod bug, e o ficheiro geral que trata do ataque. Várias versões hackadas do comando mount foram escritas para explicar vulnerabilidades conhecidas.

x11 6000-6063 X Window System

X-Windows sofreu e sofre de várias vulnerabilidades. Uma delas permite ter acesso ao que os outros utilizadores estão a ver, permite também ver o que teclam. Existe uma vulnerabilidade que permite ao atacante remoto correr qualquer programa que o utilizador root comece na sua xsesion de ficheiros. Ainda existe outra vulnerabilidade que permite ao utilizador local de criar entradas root no ficheiro /etc/passwd.

rcp

O utilitário SunOS 4.0.x rcp pode ser usado por qualquer host de confiança que esteja em /etc/host.equiv ou /.rhosts. para usar este buraco tem-se de correr NFS(Sistema de ficheiros de rede) (Network File System) num sistema Unix ou PC/NFS num sistema DOS.

NIS

Sun's NIS (Serviço de Informação de Rede) também conhecido com yp (Yellow Pages) (Páginas Amarelas) tem a vulnerabilidade em que se pode pedir um mapa NIS de outro domínio NIS se souber o domínio NIS do sistema alvo. Não existe maneira de perguntar ao sistema remoto pelo seu domínio NIS, mas muitos domínios NIS são facilmente deduzidos. Os NIS mais populares fazem um registo.

Outros ataques

Em adição a estes ataques baseados em daemons, muitos outros métodos podem ser usados para se ganhar acesso a um computador remoto. Estes incluem mas não são limitados em: contas, adivinhação da password, sniffing, source routing, DNS routing attacks, tcp sequence prediction and uucp configuration exploits.

Isto dará uma ideia de como os ataques baseados em daemons funcionam. Isto não quer dizer que seja uma lista completa de vulnerabilidades em privilegiados daemons da internet. Para descobrir mais informação acerca de como os daemons operam, e como explorar as suas vulnerabilidades, recomenda-se a leitura da source code, man pages e RFC's.