|
Esta
parte inicial abrange os seguintes tópicos:
Ataques DDOS
Introdução
Os personagens
O ataque
Ferramentas
Trin00
TFN
STACHELDRAHT
TFN2K
Como se prevenir ?
Como detectar ?
Auditoria
Ferramentas de detecção específicas
Sistemas de detecção de intrusão
Como reagir ?
Considerações Finais
Ataques DDOS
Através do presente artigo, os autores pretendem
desmistificar os recentemente famosos ataques DDoS
(Distributed
Denial of Service), explicando não somente a anatomia
do ataque e a forma como ele é orquestrado, mas
principalmente dando a conhecer algumas estratégias
de como mitigá-lo. São abordados também alguns mecanismos
de detecção do ataque e, caso você se torne uma vítima,
são apresentadas algumas diretivas de como reagir.
O
artigo descreve também, de maneira sucinta, o funcionamento
das ferramentas DDoS comumente usadas nos ataques.
Introdução
No último mês, o assunto segurança de redes
passou a fazer parte da ordem do dia na imprensa falada
e escrita. Na
pauta das conversas nos cafés e esquinas das cidades
tornou-se comum falar sobre os hackers, os mais recentes
ataques que deixaram inacessíveis alguns dos mais
famosos web sites, e até mesmo se ouvia falar em ataques
de
"negação de serviço" (Denial of Service,
DoS).
Mas, afinal, o que é um ataque de "negação de
serviço"? Os ataques DoS são bastante conhecidos
no âmbito da
comunidade de segurança de redes. Estes ataques, através
do envio indiscriminado de requisições a um computador
alvo, visam causar a indisponibilidade dos serviços
oferecidos por ele. Fazendo uma analogia simples,
é o que ocorre
com as companhias de telefone nas noites de natal
e ano novo, quando milhares de pessoas decidem,
simultaneamente, cumprimentar à meia-noite parentes
e amigos no Brasil e no exterior. Nos cinco minutos
posteriores
à virada do ano, muito provavelmente, você simplesmente
não conseguirá completar a sua ligação, pois as linhas
telefônicas estarão saturadas.
Ao longo do último ano, uma categoria de ataques de
rede tem-se tornado bastante conhecida: a intrusão
distribuída.
Neste novo enfoque, os ataques não são baseados no
uso de um único computador para iniciar um ataque,
no lugar
são utilizados centenas ou até milhares de computadores
desprotegidos e ligados na Internet para lançar
coordenadamente o ataque. A tecnologia distribuída
não é completamente nova, no entanto, vem amadurecendo
e se
sofisticando de tal forma que até mesmo vândalos curiosos
e sem muito conhecimento técnico podem causar danos
sérios. A este respeito, o CAIS tem sido testemunha
do crescente desenvolvimento e uso de ferramentas
de ataque
distribuídas, em várias categorias: sniffers, scanners,
DoS.
Seguindo na mesma linha de raciocínio, os ataques
Distributed Denial of Service, nada mais são do que
o resultado de
se conjugar os dois conceitos: negação de serviço
e intrusão distribuída. Os ataques DDoS podem ser
definidos como
ataques DoS diferentes partindo de várias origens,
disparados simultânea e coordenadamente sobre um ou
mais alvos.
De uma maneira simples, ataques DoS em larga escala!.
Os primeiros ataques DDoS documentados surgiram em
agosto de 1999, no entanto, esta categoria se firmou
como a
mais nova ameaça na Internet na semana de 7 a 11 de
Fevereiro de 2000, quando vândalos cibernéticos deixaram
inoperantes por algumas horas sites como o Yahoo,
EBay, Amazon e CNN. Uma semana depois, teve-se notícia
de
ataques DDoS contra sites brasileiros, tais como:
UOL, Globo On e IG, causando com isto uma certa apreensão
generalizada.
Diante destes fatos, a finalidade deste artigo é desmistificar
o ataque, de modo que administradores e gerentes de
sistemas, conhecendo melhor o inimigo, se preparem
para combatê-lo.
Os personagens
Quando tratamos de um ataque, o primeiro passo
para entender seu funcionamento é identificar os "personagens".
Pois bem, parece não haver um consenso a respeito
da terminologia usada para descrever este tipo de
ataque. Assim,
esclarece-se que ao longo deste artigo será utilizada
a seguinte nomenclatura: Atacante: Quem efetivamente
coordena
o ataque. Master: Máquina que recebe os parâmetros
para o ataque e comanda os agentes (veja a seguir).
Agente:
Máquina que efetivamente concretiza o ataque DoS contra
uma ou mais vítimas, conforme for especificado pelo
atacante. Vítima: Alvo do ataque. Máquina que é "inundada"
por um volume enorme de pacotes, ocasionando um
extremo congestionamento da rede e resultando na paralização
dos serviços oferecidos por ela. Vale ressaltar
que, além destes personagens principais, existem outros
dois atuando nos bastidores: Cliente: Aplicação que
reside no
master e que efetivamente controla os ataques enviando
comandos aos daemons. Daemon: Processo que roda no
agente, responsável por receber e executar os comandos
enviados pelo cliente.
O ataque
O ataque DDoS é dado, basicamente, em três
fases: uma fase de "intrusão em massa",na
qual ferramentas automáticas
são usadas para comprometer máquinas e obteracesso
privilegiado (acesso de root). Outra, onde o atacante
instala
software DDoS nas máquinas invadidas com o intuito
de montar a rede deataque. E, por último, a fase onde
é lançado
algum tipo de flood de pacotes contra uma ou mais
vítimas, consolidando efetivamente o ataque. Fase
1: Intrusão em
massa Esta primeira fase consiste basicamente nos
seguintes passos:
1.É realizado um megascan de portas e vulnerabilidades
em redes consideradas "interessantes", como
por
exemplo, redes com conexões de banda-larga ou com
baixo grau de monitoramento.
2.O seguinte passo é explorar as vulnerabilidades
reportadas, com o objetivode obter acesso privilegiado
nessas
máquinas. Entre as vítimas preferenciais estão máquinas
Solaris e Linux, devido à existência de sniffers e
rootkits para esses sistemas. Entre as vulnerabilidades
comumente exploradas podemos citar: wu-ftpd, serviços
RPC como "cmsd", "statd", "ttdbserverd",
"amd", etc. É criada uma lista com os IPs
das máquinas que foram
invadidas e que serão utilizadas para a montagem da
rede de ataque.
Fase 2: Instalação de software DDoS Esta fase compreende
os seguintes passos: Uma conta de usuário qualquer
é
utilizada como repositório para as versões compiladas
de todas as ferramentas de ataque DDoS.
Uma vez que a máquina é invadida, os binários das
ferramentas de DDoS sãoinstalados nestas máquinas
para
permitir que elas sejam controladasremotamente. São
estas máquinas comprometidas que desempenharão os
papeis de masters ouagentes. A escolha de qual máquina
será usada como master e qual comoagente
dependerá do critério do atacante. A princípio, o
perfil dos master é o de máquinas que não são manuseadas
constantemente pelos administradores e muito menos
são frequentemente monitoradas. Já o perfil dos agentes
é
o de máquinas conectadas à Internet por links relativamente
rápidos, muito utilizados em universidades e
provedores de acesso.
Uma vez instalado e executado o daemon DDoS que roda
nos agentes, elesanunciam sua presença aos masters
e ficam à espera de comandos (status "ativo").O
programa DDoS cliente, que roda nos masters, registra
em uma
listao IP das máquinas agentes ativas. Esta lista
pode ser acessada pelo atacante.
A partir da comunicação automatizada entre os masters
e agentes organizam-se os ataques.
Opcionalmente, visando ocultar o comprometimento da
máquina e a presençados programas de ataque, são
instalados rootkits.
Vale a pena salientar que as fases 1 e 2 são realizadas
quase que umaimediatamente após a outra e de
maneira altamente automatizada. Assim, são relevantes
as informações que apontam que os atacantes podem
comprometer uma máquina e instalar nela as ferramentas
de ataque DDoS em poucos segundos.Fase 3:
Disparando o ataque O atacante controla uma ou mais
máquinas master, as quais, por sua vez, podem
controlar um grande número de máquinas agentes. É
a partir destes agentes que é disparado o flood de
pacotes que consolida o ataque. Os agentes ficam aguardando
instruções dos masters para atacar um ou mais
endereços IP (vítimas), por um período específico
de tempo. Assim que o atacante ordena o ataque, uma
ou mais máquinas vítimas são bombardeadas por um enorme
volume de pacotes, resultando não apenas na
saturação do link de rede, mas principalmente na paralização
dos seus serviços.
Ferramentas
Ao contrário do que se pensa, os ataques DDoS
não são novos. A primeira ferramenta conhecida com
esse
propósito surgiu em 1998. Desde então, foram diversas
as ferramentas de DDoS desenvolvidas, cada vez mais
sofisticadas e com interfáceis mais amigáveis. O que
é no mínimo preocupante, pois nos dá uma idéia de
quão
rápido se movimenta o mundo hacker. A seguir, elas
são listadas na ordem em que surgiram:
1. Fapi (1998)
4. TFN (ago/99)
7. TFN2K(dez/99)
2. Blitznet
5. Stacheldraht(set/99)
8. Trank
3. Trin00 (jun/99)
6. Shaft
9. Trin00 win version
Não é propósito deste artigo abordar todas as ferramentas
de DDoS disponíveis,mas apenas conhecer o
funcionamento básico das principais, que são: Trin00,
TFN, Stacheldraht e TFN2K.
TRIN00
O Trin00 é uma ferramenta distribuída usada para lançar
ataques DoScoordenados, especificamente, ataques do
tipo UDP flood.
Uma rede Trinoo é composta por um número pequeno de
masters e um grande número de agentes.
O controle remoto do master Trin00 é feito através
de uma conexão TCPvia porta 27665/tcp. Após conectar,
o
atacante deve fornecer uma senha(tipicamente, "betaalmostdone").
A comunicação entre o master Trin00e os agentes é
feita via pacotes UDP na porta 27444/udpou via pacotes
TCP
na porta 1524/tcp. A senha padrão para usar os comandosé
"l44adsl" e só comandos que contêm a substring
"l44"
serão processados.
A comunicação entre os agentes e o master Trin00 tambémé
através de pacotes UDP, mas na porta
31335/udp.Quando um daemon é inicializado, ele anuncia
a sua disponibilidadeenviando uma mensagem
("*HELLO*") ao master,o qual mantém uma
lista dos IPs das máquinas agentes ativas, que ele
controla.
Tipicamente, a aplicação cliente que roda no master
tem sido encontrado sob o nome de master.c, enquanto
que
os daemons do Trin00 instalados emmáquinas comprometidas
têm sido encontrados com uma variedade de
nomes, dentre eles: ns, http, rpc.trinoo, rpc.listen,
trinix, etc. Tanto o programa cliente (que roda no
master)
quanto o daemon (que roda no agente) podem ser inicializados
sem privilégios de usuário root.
TFN TRIBE FLOOD NETWORK
O TFN é uma ferramenta distribuída usada para
lançar ataques DoS coordenados a uma ou mais máquinas
vítimas, a partir de várias máquinas comprometidas.
Além de serem capazesde gerar ataques do tipo UDP
flood
como o Trin00, uma rede TFN pode gerar ataques do
tipoSYN flood, ICMP flood e Smurf/Fraggle.Neste tipo
de
ataque é possível forjar o endereço origem dos pacotes
lançados às vítimas, o que dificulta qualquer processo
de
identificação do atacante.No caso específico de se
fazer uso do ataque Smurf/Fraggle para atingir a(s)
vítima(s), o
flood de pacotes é enviado às chamadas "redes
intermediárias" que consolidarão o ataque, não
diretamente às
vítimas. O controle remoto de uma master TFN é realizado
através de comandosde linha executados pelo
programa cliente. A conexão entre o atacantee o cliente
pode ser realizada usando qualquer um dos métodos
de
conexão conhecidos, tais como: rsh, telnet, etc. Não
é necessária nenhuma senhapara executar o cliente,
no
entanto, é indispensável a lista dos IPs das máquinasque
têm os daemons instalados. Sabe-se que algumas
versões da aplicação clienteusam criptografia (Blowfish)
para ocultar o conteúdo desta lista. A comunicação
entre o cliente TFN e os daemons é feita via pacotes
ICMP_ECHOREPLY.Não existe comunicação TCP ou UDP
entre eles.Tanto a aplicação cliente (comumente encontrada
sob o nome de tribe) como os processos daemons
instalados nas máquinas agentes (comumenteencontrados
sob o nome de td), devem ser executados com
privilégios de usuário root.
TACHELDRAHT
Baseado no código do TFN, o Stacheldraht é
outra das ferramenta distribuídas usadas para lançar
ataques DoS
coordenados a uma ou mais máquinas vítimas, a partir
de várias máquinas comprometidas. Como sua
predecessora TFN, ela também é capaz de gerar ataques
DoS do tipo UDP flood, TCP flood, ICMP flood e
Smurf/fraggle.
Funcionalmente, o Stacheldraht combina basicamente
características das ferramentas Trin00 e TFN, mas
adiciona alguns aspectos, tais como: criptografia
da comunicação entre o atacante e o master;e atualização
automática dos agentes.
A idéia de criptografia da comunicação entre o atacante
e o master surgiuexatamente porque uma das
deficiências encontradas na ferramenta TFN era que
a conexão entre atacante e master era completamente
desprotegida, obviamente sujeita a ataques TCP conhecidos
(hijacking, por exemplo). O Stacheldraht lida com
este problema incluindo um utilitário "telnet
criptografado" na distribuição do código.
A atualização dos binários dos daemons instaladosnos
agentes pode ser realizada instruindo o daemon a apagar
a sua própria imagem e substituí-la poruma nova cópia
(solaris ou linux). Essa atualização é realizada via
serviço
rpc (514/tcp).
Uma rede Stacheldraht é composta por um pequeno número
de mastersonde rodam os programas clientes
(comumente encontrados sob o nome de mserv, e um grande
número de agentes, onde rodam os processos
daemons (comumente encontrados sob o nome de leaf
ou td). Todos eles devem ser executados com privilégios
de root.
Como foi mencionado anteriormente, o controle remoto
de um master Stacheldraht é feito através de um
utilitário "telnet criptografado" que usa
criptografia simétrica para proteger as informaçõesque
trafegam até o
master. Este utilitário se conecta em uma porta TCP,comumente
na porta 16660/tcp.
Diferencialmente do que ocorre com o Trinoo, que utiliza
pacotes UDPna comunicação entre os masters e os
agentes, e do TFN, que utilizaapenas pacotes ICMP,
o Stacheldraht utiliza pacotes TCP (porta padrão 65000/tcp)
eICMP (ICMP_ECHOREPLY).
TFN2K - TRIBLE FLOOD NETWORK
2000
A ferramenta Tribe Flood Network 2000, mais
conhecida como TFN2K, é mais umaferramenta de ataque
DoS
distribuída. O TFN2K é considerado umaversão sofisticada
do seu predecessor TFN. Ambas ferramentas foram
escritaspelo mesmo autor, Mixter.A seguir são mencionadas
algumas características da ferramenta:
Da mesma forma que ocorre no TFN, as vítimas podem
ser atingidas por ataques do tipo UDP flood, TCP
flood, ICMP flood ou Smurf/fraggle. O daemon podeser
instruído para alternar aleatoriamente entre estes
quatro tipos de ataque.
O controle remoto do master é realizado através de
comandos via pacotes TCP, UDP, ICMP ou os três de
modo aleatório. Estes pacotes são criptografados usando
o algoritmo CAST.Deste modo, a filtragem de
pacotes ou qualquer outro mecanismo passivo, torna-se
impraticável e ineficiente.
Diferentemente do TFN, esta ferramenta é completamente
"silenciosa", isto é, não existe confirmação
(ACK) da recepção dos comandos, a comunicação de controle
éunidirecional. Ao invés disso, o cliente
envia 20 vezes cada comando confiando em que, ao menos
uma vez, o comando chegue com sucesso.
O master pode utilizar um endereço IP forjado.
A título de ilustração se resume, através da seguinte
tabelacomparativa, como é realizada a
comunicação entre os"personagens" encontrados
em um típico ataque DDoS, para cada uma das ferramentas:
De um modo geral, os binários das ferramentas DDoS
têm sido comumente encontrados em máquinas com
sistema operacional Solaris ou Linux. No entanto,
o fonte dos programas pode ser facilmente portado
para outras
plataformas. Ainda em relação às ferramentas, vale
lembrar que a modificação do código fonte pode
causar a mudança de certas propriedades da ferramenta,
tais como: portas de operação, senhas de acesso e
controle, nome dos comandos, etc. Isto é, a personalização
da ferramenta é possível.
Como se prevenir ?
Até o momento não existe uma "solução
mágica" para evitar os ataques DDoS, o que sim
é possível é aplicar
certas estratégias para mitigar o ataque, este é o
objetivo desta seção. Dentre as estratêgias
recomendadas pode-se considerar as seguintes:
Incrementar a segurança do host
Sendo que a característica principal deste
ataque é a formação de uma rede de máquinas comprometidas
atuando como masters e agentes, recomenda-se fortemente
aumentar o nível de segurança de suas
máquinas, isto dificulta a formação da rede do ataque.
Instalar patches
Sistemas usados por intrusos para executar ataques
DDoS são comumente comprometidos via
vulnerabilidades conhecidas. Assim, recomenda-se manter
seus sistemas atualizados aplicando os patches
quando necessário.
Aplicar filtros "anti-spoofing"
Durante os ataques DDoS, os intrusos tentam esconder
seus endereços IP verdadeiros usando o mecanismo
de spoofing, que basicamente consite em forjar o endereço
origem, o que dificulta a identificação da
origem do ataque. Assim, se faz necessário que:
1.Os provedores de acesso implementem filtros anti-spoofing
na entrada dos roteadores, de modo que
ele garanta que as redes dos seus clientes não coloquem
pacotes forjados na Internet.
2.As redes conectadas à Internet, de modo geral, implementem
filtros anti-spoofing na saída dos
roteadores de borda garantindo assim que eles próprios
não enviem pacotes forjados na Internet.
Limitar banda por tipo de tráfego
Alguns roteadores permitem limitar a banda consumida
por tipo de tráfego na rede. Nos roteadores Cisco,
por exemplo, isto é possível usando CAR (Commited
Access Rate). No caso específico de um ataque DDoS
que lança um flood de pacotes ICMP ou TCP SYN, por
exemplo, você pode configurar o sistema para
limitar a banda que poderá ser consumida por esse
tipo de pacotes.
Prevenir que sua rede seja usada como "amplificadora"
Sendo que algumas das ferramentas DDoS podem lançar
ataques smurf (ou fraggle), que utilizam o
mecanismo de envio de pacotes a endereços de broadcasting,
recomenda-se que sejam implementadas
em todas as interfaces dos roteadores diretivas que
previnam o recebimento de pacotes endereçados a tais
endereços. Isto evitará que sua rede seja usada como
"amplificadora".
Estabelecer um plano de contingência
Partindo da premisa que não existe sistema conectado
à Internet totalmente seguro, urge que sejam
considerados os efeitos da eventual indisponibilidade
de algum dos sistemas e se tenha um plano de
contingência apropriado, se necessário for.
Planejamento prévio dos procedimentos de resposta
Um prévio planejamento e coordenação são críticos
para garantir uma resposta adequada no momento
que o ataque está acontecendo: tempo é crucial! Este
planejamento deverá incluir necessariamente
procedimentos de reação conjunta com o seu provedor
de backbone.
Como detectar ?
As ferramentas DDoS são muito furtivas no quesito
detecção. Dentre as diversas propriedades que
dificultam a sua detecção pode-se citar como mais
significativa a presença de criptografia. Por outro
lado,
é possível modificar o código fonte de forma que as
portas, senhas e valores padrões sejam alterados.
Contudo, não é impossível detectá-las. Assim, esta
seção tem por objetivo apresentar alguns mecanismos
que auxiliem na detecção de um eventual comprometimento
da sua máquina (ou rede) que indique ela
estar sendo usada em ataques DDoS. Estes mecanismos
vão desde os mais convencionais até os mais
modernos.
Auditoria
Comandos/Utilitários: Alguns comandos podem
ser bastante úteis durante o processo de auditoria.
Considerando os nomes padrões dos binários das ferramentas
DDoS, é possível fazer uma auditoria por
nome de arquivo binário usando o comando find. Caso
as ferramentas não tenham sido instaladas com
seus nomes padrões, é possível fazer uso do comando
strings que permitiria, por exemplo, fazer uma
busca no conteúdo de binários "suspeitos".
Esta busca visaria achar cadeias de caracteres, senhas
e
valores comumente presentes nos binários das ferramentas
DDoS.
O utilitário lsof pode ser usado para realizar uma
auditoria na lista de processos em busca do processo
daemon inicializado pelas ferramentas DDoS. Por último,
se a sua máquina estiver sendo usada como
master, o IP do atacante eventualmente poderia aparecer
na tabela de conexões da sua máquina (netstat).
Se tiver sido instalado previamente um rootkit, este
IP não se revelará.
Ferramentas de auditoria de host: Ferramentas como
o Tripwire podem ajudar a verificar a presença de
rootkits.
Ferramentas de auditoria de rede: O uso de um scanner
de portas pode revelar um eventual
comprometimento da sua máquina. Lembre-se que as ferramentas
DDoS utilizam portas padrões.
Assim também, analisadores de pacotes podem ser vitais
na detecção de trafego de ataque. Para uma
melhor análise dos pacotes é importante conhecer as
assinaturas das ferramentas DDoS mais comuns. No
caso específico da ferramenta TFN2K, que utiliza pacotes
randômicos e criptografados, o que prejudica em
muito a detecção da ferramenta por meio de análise
dos pacotes, é possível alternativamente procurar
nos
pacotes uma característica peculiar gerada pelo processo
de criptografia.
Ferramentas de Detecção Específicas
Uma variedade de ferramentas foram desenvolvidas
para detectar ferramentas de ataque DDoS que,
eventualmente, possam ter sido instaladas no seu sistema,
dentre elas:
O NIPC (National Infraestructure Protection Center)
disponibilizou uma ferramenta de auditoria local
chamada "find_ddos" que procura no filesystem
os binários do cliente e daemon das ferramentas de
Trin00, TFN, Stacheldraht e TFN2K. Atualmente estão
disponíveis os binários do find_ddos para Linux e
Solaris em: http://www.fbi.gov/nipc/trinoo.htm
Dave Dittrich, Marcus Ranum e outros desenvolveram
um script de auditoria remota, chamado "gag"
que
pode ser usado para detectar agentes Stacheldraht
rodando na sua rede local. Este script pode ser
encontrado em: http://staff.washington.edu/dittrich/misc/sickenscan.tar
Dave Dittrich, Marcus Ranum, George weaver e outros
desenvolveram a ferramenta de auditoria remota
chamada "dds" que detecta a presença de
agentes Trin00, TFN e Stacheldraht. Ela se encontra
disponível
em: http://staff.washington.edu/dittrich/misc/ddos_scan.tar
Sistemas de Detecção de Intrusão
Sistemas de detecção de intrusão mais modernos
incluem assinaturas que permitem detectar ataques
DDoS e comunicação entre o atacante, o master DDoS
e o agente DDoS.
Como reagir ?
Se ferramentas DDoS forem instaladas nos seus sistemas
Isto pode significar que você está sendo usado
como master ou agente. É importante determinar o papel
das ferramentas encontradas. A peça encontrada
pode prover informações úteis que permitam localizar
outros componentes da rede de ataque. Priorize a
identificação dos masters. Dependendo da situação,
a melhor estratégia pode ser desabilitar
imediatamente os masters ou ficar monitorando para
coletar informações adicionais.
Se seus sistemas forem vítimas de ataque DDoS O uso
do mecanismo de spoofing nos ataques DDoS
dificulta em muito a identificação do atacante. Assim,
se há um momento em que pode-se fazer um
backtracing e chegar ao verdadeiro responsável é no
exato momento em que está ocorrendo o ataque.
Isto significa que é imprescindível a comunicação
rápida com os operadores de rede do seu provedor de
acesso/backbone. Considere que, devido à magnitude
do ataque, não é recomendável confiar na
conectividade Internet para comunicação durante um
ataque. Portanto, certifíque-se que sua política de
segurança inclua meios alternativos de comunicação
(telefone celular, pager, sinais de fumaça, etc).
Mas,
por favor, aja rápido, tempo é crucial!
Considerações Finais
Não existe "solução mágica" para
evitar os ataques DDoS, não com a tecnologia atual.
No lugar, existem certas estratégias que podem ser
aplicadas pelos administradores e gerentes de rede
para mitigá-lo. Sem dúvida, sem se conhecer o que
acontece nos bastidores será uma tarefa difícil. Assim,
o motivo deste artigo foi justamente desmistificar
o ataque de modo que estes profissionais, conhecendo
melhor o inimigo, se preparem melhor para combatê-lo.
|