Internet Daemons:
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.
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:
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:
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:
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.
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.
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:
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.
---------------------------
Documento traduzido e adaptado por DrSkull
Fonte: Internet Daemons
por Voyager[TNO]
As ports dinâmicas são atribuídos por necessidade do sistema.
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
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
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.
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.