class main AboutMe { exec(); }
Hoje fiquei fascinado com a leitura de um artigo sobre uma empresa de segurança (auditorias, pentesting etc..) que para mostrar o exemplo, tinham tudo contra eles... Basicamente, estão num host da Amen com servidores próprios, correm um joomla da treta, Apache 2, PHP, etc... Enfim, o servidor normal de qualquer mortal.
Certamente que o meu fascínio teria terminado bem rapidamente caso não fosse o site da empresa estar no ramo da segurança informática. Foi então que me lembrei em escrever uma série de pequenos textos sobre segurança informática e como silenciar os malditos serviços que tantas fingerprints geram.
As evidências residuais ou efectivas das aplicações em produção são de facto os primeiros elementos em qualquer tipo de ataque. Nos ataques web, o primeiro a ser verificado é sem dúvida o servidor web, seguindo da camada aplicacional. A metodologia para descobrir as fingerprints segue os seguintes pontos:
  • Identificar a arquitectura web/topologia
    Verificar a existência de DMZ, servidor Proxy/Reverse Proxy, Loadbalancer, Firewall aplicacional (Ex: ModSecurity) etc...
  • Identificar a versão do servidor web
    Verificar de qual é o tipo do servidor - Microsoft, Apache, Ngnix etc.. E claro a sua versão.
  • Identificar a(s) aplicação(ões) web
    Verificar o tipo das aplicações web estão a correr no servidor como por exemplo Webmin, Joomla, PhpMyAdmin
  • Identificar a base de dados
    Verificar se o sistema possui um sistema de base de dados, se sim, os ataques por SQL Injection podem sofrer alterações caso trate-se de um MySQL, PostgreSQL, SQL SERVER. O ataque directo ao SGBD também pode ser realizado caso este último não esteja devidamente protegido.
  • Identificar web services
    CrossOver com o WSDL e acesso directo à plataforma de serviços.
Neste texto iremos ver como dificultar o segundo ponto apenas com algumas alterações no ficheiro de configuração do Apache.

ServerToken

Com apenas uma linha, podemos silenciar o apache de forma quase perfeita. Em tudo o que é Debian e Ubuntu (ainda tenho de verificar isso em CentOS) o ficheiro de configuração principal omite o valor ServerProd, tomando a por valor por omissão Full. A ideia, é criar uma nova linha com o valor correcto, neste caso Prod.

ServerTokens prod


Basta esta pequena alteração para passar de um servidor web muito conversador para algo de reservado.



A ideia por trás desta manipulação é obviamente esconder o máximo de detalhes possível sobre o tipo de aplicações que estão a correr no nosso servidor. Ao dar o número de versão do Apache, do PHP e informar sobre a existência do Suhosin-Patch, estamos de certa forma a dar a estrutura da porta de casa ao atacante.  Ao ter o conhecimento destes dados, facilmente procuram exploits, limitações que podem ser exploradas com a finalidade de comprometer a máquina.
Existem outras alterações ao Apache que podem ser feitas de forma a simplesmente eliminar o nome do servidor, ou mesmo ainda invocar o erro por parte do atacante ao especificar outro tipo de servidor (de outra empresa, ou mesmo outro de tipo de versões). Mais complexo, pode-se igualmente compilar o código fonte do Apache já com o nome do servidor que desejamos no código fonte (um texto para breve). Para os menos aventureiros, é possível igualmente mudar o nome do servidor através do ModSecurity. A solução ideal é mesmo disponibilizar o mínimo de informações possíveis sobre o servidor de forma a dificultar a vida ao atacante de uma forma ou de outra.

ServerSignature

Depois de indicar o tipo de servertoken, a própria assinatura do servidor fica diferente. Os famosos erros 404 por omissão apresentam uma página branco com o erro, e claro toda a informação do servidor.

ServerSignature Off

Ao desligar o ServerSignature, toda a informação complementar e inútil simplesmente desaparece.



Homes Directories

Nada de melhor do que as homes directories para descobrir os utilizadores do servidor. Um ataque por bruteforce aos utilizadores simplifica em muito o processo de descoberta das palavras chaves.
Uma das formas para impedir a criação das homes directories é simplesmente adicionar a seguinte configuração:

<Directory /usr/users/*/public_html>
Order Deny,Allow
Allow from all
</Directory>
<Directory /usr/local/httpd>
Order Deny,Allow
Allow from all
</Directory>


robots.txt

O verdadeiro falso amigo! Todos o utilizam para impedir os crawlers (ex: Yahoo, Googlebot etc..) em navegar em zonas restritas (geralmente em directorias do tipo: /admin, /gestao, /root, /administration). Mau, muito mau! Ao indicar este tipo de informações ao ficheiro, estão directamente a dizer ao atacante onde está escondida o vosso backend! O melhor é mesmo criar uma pasta completamente diferente (ex: como se fosse uma password: /W31rd0---here) sem qualquer referência no código HTML a ficheiros, sitemap, e claro no robots.txt.

Ao longo dos próximos tempos irei descrever um pouco mais sobre metodologias de fingerprinting, e como proteger os servidores mais eficazmente. Antes de terminar este texto, queria referir, que apesar de mais complexo, a compilação própria do Apache (em vez dos RPM ou DEB) melhora o desempenho do servidor, tanto a nível de desempenho como de segurança (compilando apenas o que é necessário - criando assim um servidor à medida).


Sem comentário, seja o primeiro! | Publicado por Ruben Alves @ 18/05/10 00:15
Escrever um comentário ao texto: "Fingerprinting: Como silênciar um servidor Apache.pt"
Nome*:
E-mail*:
Página web
(não obrigatório):
"Quanto dá dez mais Catorze"
(Resposta: 20,22 ou 24?)*:
Mensagem*:


  ÚLTIMO MÊS: Agosto 2011

  Sobre.Pessoas.pt (21/08/11)
  Pensamento.dia.em.pleno.Agosto.pt (18/08/11)
  E foi assim que... (18/08/11)
  Julho.em.Imagens.2011 (18/08/11)

  TEXTOS EM ALTA!

  iPhone5 - my predictions.com (07/03/11)
  parvo.que.sou.pt (22/02/11)
  2G,3G,4G e agora 5G! (08/02/11)
  Novo.Projecto:Pedra-alta.com (01/02/11)
  website.updates-status-v1.pt (30/01/11)



FOTOGRAFIA ALEATÓRIA: Estruturas

Estruturas

Ruben... Quem sou? Nascido em Novembro de 1980, Sagitáriano puro e duro com ascendente Aquário. Sou canhoto, adoro arte, computadores, fotografia, redes, programação, design, música. Odeio futebol, bacalhau e injustiça.

Neste momento sou um Jovem de 30 anos, curioso pela vida, curioso por tudo o que mexe, tudo que respira, que faça ruídos. Encanto-me facilmente com uma gota de água a bater no vidro mas não fico impressionado com um Ferrari. Gosto das coisas simples da vida, um olhar, um sorriso, um simples gesto. Adoro amar, como gosto de ser amado. Não troco o meu leitor DVD por uma PlayStation, no entanto trocaria um filme por uma bela fotografia.

Não sou complexo, apenas perplexo... tudo depende do ponto de vista.

[...] Farto de escrever... | pausa II

~~~


No meio de tudo isto, tenho este lugar cibernético. Um recanto pontualmente actualizado, apontado como um blog, mantenho a minha ideia que antes de ter esta pretensão, considero que é antes de mais nada um simples sítio web onde escrevo, descrevo, apresento, coloco perguntas, dúvidas e afirmações. Com os textos, coabitem vários espaços representativos do meu Espaço.

Talvez seja o lugar mais sensato para me conhecer... Ou pelo menos, iniciar-se nesta longa viagem que é o meu Ser...
[...] Farto de escrever..| stop .

Correio.electrónico:
mail AT ruben-alves PONTO com

Telefone:
919.181.***

A minha Página no Twitter.


creative commons