54 | Manual do Hacker Especial
minúsculo applet Flash em sua home page
serviria aos seus visitantes uma mistura
deliciosa do melhor malware. Por esse
motivo, é importante não ignorar o update
de segurança, porque a vulnerabilidade à
qual ele é destinado probirá acesso
imediato ao root.
É muito importante ter o hábito de
examinar regularmente os logs do seu
servidor. Isto pode ser um pouco
incômodo, mas há ferramentas que
poderão ajudá-lo. A ferramenta Logwatch
é particularmente útil que pode simplificar
o acesso ao SSH, web, banco de dados e
quaisquer outros serviços que estejam
executando em formato facilmente
manipulável.
O popular Awstats baseado em Perl
oferece uma interface web atraente para
pesquisar logs de web, FTP ou servidor de
e-mail. Também é prudente manter a
atenção no carregamento do sistema. O
comando uptime oferece um segundo, um
minuto e uma média de 15 minutos de carga
do processador, mas você pode representar
o histórico de dados por meio de uma
ferramenta baseada na web, o Munin.
O programa vmstat fornece informação
sobre o tempo de espera da CPU e as
solicitações swap que, quando encontradas
em abundância, apontam as que estão
sobrecarregando a memória, blocos I/O e
outras. O comando
ps awwlx --sort=vsz
irá listar processos classificados por
tamanho virtual, que inclui biblioteca e
swap em uso compartilhado. Assim, todas
as ameaças serão exibidas no final da lista.
Tais os programas intrusos não precisam
ser necessariamente grandes, ou (no caso
de um rootkit) visíveis.
Rootkit oculto
Rootkits são programas que usam uma
variedade de técnicas de furtividade para
evadir a detecção. Eles podem se esconder
dentro de outros programas, o próprio
kernel, ou mesmo sua BIOS ou outro
firmware do dispositivo. Eles podem ser
inteiramente indetectáveis, uma vez que
qualquer sistema chama o que geralmente
os detecta pode ser subvertido. Existem
programas, como chkrootkit e rkhunter,
que podem verificar alguns rootkits
conhecidos do Linux. Você também pode
instalar um programa de detecção de
intrusões, como AIDE, para detectar
mudanças em seu sistema de arquivos,
mas precisa de alguma configuração.
Alguns rootkits e outros malwares
podem depender de um módulo kernel
intruso. Você pode atenuar isso,
habilitando a assinatura de módulo em
seu kernel. O kernel pode gerar uma
chave privada e um certificado (que
contém a chave pública) para você, ou
você pode usar uma própria. Quaisquer
outros módulos que você compilar terão
de ser assinados com esta chave antes de
o kernel carregá-los. Um script Perl
acessível, sob a forma de scripts/sign-
file (script/assinatura de arquivo) dentro
do diretório de fontes do kernel, fará
exatamente isso, desde que você possua
a chave privada. Por exemplo, para
assinar o módulo acx100 (um driver “fora
da árvore” para determinados chipsets
wireless da Texas Instruments):
$perl /usr/src/linux/scripts/sign-file sha512
/mnt/sdcard/kernel-signkey.priv /mnt/
sdcard/kernel-signkey.x509 acx100.ko
Observe como a nossa chave e
certificados são armazenadas em um
cartão SD. Como o certificado é público, é
possível deixá-lo em qualquer lugar, porém,
sob nenhuma circunstância você deve
armazenar chaves privadas no mesmo
meio em que os dados estão protegidos.
Isso é exatamente como trancar a sua
porta da frente, mas deixar a chave na
fechadura. Depois que o kernel assinado é
compilado você pode salvar a chave dele
em um lugar seguro (isto é, não em
qualquer lugar do sistema) e excluir a
original. Assinar os módulos de kernel é
bom, mas ele próprio pode ser infectado e
permitir que outros módulos intrusos
sejam carregados.
Senhas hashed and salted (técnica de
embaralhamento) no Linux são
armazenadas no arquivo /etc/shadow,
que pode ser interpretada somente pelo
Aberto vs fechado
Há uma falácia bastante difundida que,
uma vez que o código aberto é público,
ele é mais vulnerável a ataques. Em
2014 vimos um embaraçoso bug goto
na biblioteca GnuTLS, o bug ShellShock
no Bash e o bug Heartbleed no
OpenSSL. Enquanto qualquer pessoa
com experiência pode, depois do fato,
esbravejar de raiva no código que
causou estas vulnerabilidades, isto não
significa que os erros sejam tão
flagrantes que deveriam ter sido vistos
anteriormente. Ler o código de outras
pessoas é extremamente difícil e,
embora projetos como o OpenSSL
façam uma análise completa, eles não
conseguirão pegar tudo.
Quem diz que o software proprietário
não sofre tanto, só precisa ligar uma
máquina Windows na primeira terça-
feira de um determinado mês. Em abril
de 2015, por exemplo, havia 11 patches
(quatro dos quais foram críticos) e,
enquanto não ficamos a par de todos os
detalhes, vemos frases como “privilege
escalation” e “security bypass”, que são
provavelmente nada do que gostaríamos
de ver em nosso sistema operacional.
Tais vulnerabilidades também podem
ser encontradas por meio de técnicas
como fuzzing. Uma vez que os patches
de software são lançados, eles podem
ser projetados de forma reversa.
https://security.gentoo.org
Segurança | Malware
Grupo Unico PDF Passe@diante