Apache Killer integrado ao Amargeddon DDoS Bot tool
8 de Março de 2012, 0:00 - sem comentários aindaPesquisadores da Arbor Networks analisaram a nova versão do malware russo Amargeddon, utilizado exclusivamente para ataques de DDoS, que passou a integrar o exploit Apache Killer desenvolvido pelo Kingcope.Este exploit explora a vulnerabilidade Apache Range Header DoS CVE-2011-3129 publicada em agosto de 2011.
Segundo os pesquisadores da Arbor, esta versão do malware suporta novos comandos dependendo da aplicação existente no alvo:
.apacheflood, .vbulletinflood, .phpbbflood,
A vulnerabilidade presente nas versões 1.3.x, 2.0.x até a 2.0.64, e 2.2.x até a 2.2.19 do webserver Apache causa indisponibilidade do serviço httpd ao tentar responder as requisições do conteúdo de uma URL ( principalmente arquivos ) em um grande número de “partes” indiviuais ou byte ranges.
O seguinte questionamento poderá vir a tona:
“Porque o Alexos está falando desta vulnerabilidade relativamente antiga e que foi corrigida semanas após a descoberta. Provavelmente este malware não atingirá nenhuma alvo”
Para responder este plausível questionamento pesquisei no Shodan por Apache/2.2.19 e eis que surge o grande resultado:
Top countries matching your search
* United States 32,731
* United Kingdom 3,005
* Canada 2,467
* Czech Republic 1,708
* Russian Federation 1,620
Agora o resultado da pesquisa por Apache/2.0.64:
Top countries matching your search
* United States 12,529
* Japan 3,123
* United Kingdom 872
* Canada 726
* Russian Federation 529
Os resultados obtidos mostram que se todos este alvos estiverem infectados (se já não estão!) pode se tratar de uma grande BOTNET com fins específicos.
Mitigando o ataque
Existem diversas ações para mitigarmos este ataque:
Ação 1 – Atualizar o Apache ( + Recomendada )
Ação 2 – Usar mod_rewrite para detectar um grande número de ranges ignorando ou rejeitando as requisições maliciosas.
SetEnvIf Range (,.*?){10,} bad-range=1
RequestHeader unset Range env=bad-range
CustomLog logs/range-CVE-2011-3192.log common env=bad-range
Ação 3 – Limitar o tamanho do campo de requisição usando o parâmetro LimitRequestFieldSize. No exemplo abaixo limitamos para 200 bytes que é um valor sustentável para o principais CMSs.
LimitRequestFieldSize 200
Veja mais em:
Breaking Armageddon’s latest and greatest crypto reveals some interesting new functionality
DDoS botnet clients start integrating the Apache Killer exploit
Mitigation of Apache Range Header DoS Attack
Nginx – Implantação e hardening do nginx no Debian
6 de Março de 2012, 0:00 - sem comentários ainda
O Nginx ( pronuncia-se “engine-x”) é um webserver e proxy reverso para os protocolos http, smtp, pop3 e imap focado em alta performance. Sua utilização vêm crescendo bastante rapidamente, numa pesquisa realizada em janeiro deste ano pela Netcraft ele ocupa o 2o. lugar entre os servidores webs ativos na internet.
Neste post apresentarei como configurar o Nginx com suporte ao PHP e todos os ajustes de segurança necessários.
NOTA: Informações importantes encontram-se nos comentários dos arquivos de configuração.
Para obter as versões mais recente usaremos os pacotes disponíveis no repositório squeeze-backports
deb http://backports.debian.org/debian-backports squeeze-backports main
aptitude install -t squeeze-backports nginx spawn-fcgi php5-cgi
Configurando o vhost
vim /etc/nginx/sites-available/www.acme.com
#O dominio acme.com é um alias para www.acme.com
server {
server_name www.acme.com acme.com;
access_log /var/log/nginx/www.acme.com.access.log;
error_log /var/log/nginx/www.acme.com.error.log;
root /var/www/acme/;location / {
index index.php;
}#Restrigindo o acesso ao ambiente administrativo
location /admin {
root /var/www/acme/;
index index.php;
allow 200.222.222.222;
deny all;
}#Negando o acesso a alguns arquivos
location =/*.txt {
deny all;
log_not_found off;
access_log off;
}location =/xmlrpc.php{
deny all;
log_not_found off;
access_log off;
}location =/readme.html {
deny all;
log_not_found off;
access_log off;
}#Habilitando o suporte ao PHP
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/acme$fastcgi_script_name;
}
}
Hardening do Nginx
user www-data;
#Total de threads. Configure de acordo com a quantidade de CPU existente, acima de 2 CPUs = 4.
worker_processes 4;
pid /var/run/nginx.pid;events {
#Juntamente com o work_processes permite calcular o máx. de clientes ( max clients = worker_processes * worker_connections )
worker_connections 1024;}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;tcp_nodelay on;
gzip on;
gzip_disable “MSIE [1-6]\.(?!.*SV1)”;include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;# Protecao contra DoS
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 2M;
large_client_header_buffers 2 1k;
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;# Oculta banner
server_tokens off;
}# Limita o maximo de conexoes concorrentes por IP
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
Script de inicialização do PHP-Fastcgi
vim /etc/init.d/php-fastcgi
RETVAL=0
case “$1″ in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall php5-cgi
RETVAL=$?
;;
restart)
killall php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo “Usage: php-fastcgi {start|stop|restart}”
exit 1
;;
esac
exit $RETVAL
Adicionando nos Runlevels
update-rc.d php-fastcgi defaults
Habilitando o vhost e iniciando os serviços
cd /etc/nginx/sites-enabled
ln -s ../sites-available/www.acme.com
invoke-rc.d nginx start && invoke-rc.d php-fastcgi start
UPDATE 21/03/2012
Dicas adicionais do Jeronimo Zucco (@jczucco)
#Para evitar conexões DAV (PROPFIND TRACE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK OPTIONS) se isso não for utilizado, é claro.
proxy_cache_methods GET HEAD POST;
#Para acompanhar a performance e utilização do nginx, afinal a disponibilidade também é importante. Pode ser feito gráfico do rrdtool usando essa ferramenta:http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/
HttpStubStatusModule
Configuração do limits.conf do parâmetro “nofile” para o usuário que está rodando o nginx. Por padrão o valor é 1024 arquivos abertos, se isso for insuficiente, o log irá apresentar: “failed (24: Too many open files)”, causando negação de serviço.
#Alguns bloqueios por extensão:
location ~ /\.ht {
deny all;
}
location ^/MSOffice {
deny all;
}location ~ _vti_bin {
deny all;
}location ~* \.(dll|cmd|src)$ {
deny all;
}
#Se o nginx for proxy reverso de HTTPS, habilitar somente criptografia forte para evitar o BEAST attack (CVE-2011-3389):
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
UPDATE 2 – 22/03/2012
Mais dicas do meu amigoJeronimo Zucco (@jczucco)
#Regra para evitar acidentes de “desenvolvedores” que esquecem arquivos em diretórios expostos para a internet, como dump de base de dados, código fonte backup, etc:
location ~* \.(ant|asa|asax|ascx|axd|backup|bak|bat|bkp|cdx|cer|cfg|cmd|com|config|conf|cs|csproj|csr|dat|db|dbf|dll|dos|htr|htw|ida|idc|idq|inc|ini|key|licx|lnk|log|mdb|old|pass|pdb|pol|printer|pwd|resources|resx|sql|src|sys|vb|vbs|vbproj|vsdisco|webinfo|xsd|xsx)$ {
deny all;
}
#Bloqueio por hostname do que está sendo feito proxy, para evitar que uma configuração mal feita acabe abrindo o proxy para o mundo externo:
if ($host !~ ^(dominio.com.br|www.dominio.com.br)$ ) {
return 403;
}
Considerações finais
As melhores práticas de segurança do PHP já foram abordadas nos posts anteriores [1] [2]
Como pudemos constatar sua implementação é aparentemente fácil, o site do projeto é bastante rico em documentação.
O Nginx é muito utilizado como proxy reverso tornando-se um frontend para balanceamento de carga suportando diversos protocolos, existe também um módulo de WAF chamado Naxsi, esta e outras soluções serão tratadas nos próximos posts.
Referências
Nginx and PHP-FastCGI on Debian 5
Top 20 Nginx WebServer Best Security Practices
Slowloris e outras ferramentas do Anonymous infectadas por malwares
5 de Março de 2012, 0:00 - sem comentários aindaA pesquisa disponibilizada pela Symantec mostra que uma das ferramentas utilizadas pelo Anonymous foi modificada com o malware Zeus. As figuras abaixo comparam as características do arquivos disponibilizados em maio de 2011 e janeiro de 2012 durante a operação Megaupload com cerca de 26000 views e 400 tweets.
No Brasil novos membros contam com vários pacotes para iniciantes contendo todas as ferramentas necessárias para os ataques de DDoS e instruções de uso.
Analisando o conteúdo do pacote identifiquei que 28 dos 42 arquivos são malwares.
Como uma grande parte dos integrantes são newbies(novatos) suas máquinas acabam não só servindo como zumbis “voluntários” para os propósitos hacktivistas,mas elas podem estar sendo utilizadas também para ações do cybercrime.
Leia mais:
Anonymous Supporters Tricked into Installing Zeus Trojan
The Anatomy of an Anonymous Attack
Configurando os agentes do Ossec HIDS automaticamente no Linux
1 de Março de 2012, 0:00 - sem comentários ainda<p>O <a href="http://blog.alexos.com.br/?p=886">modo tradicional</a> para configurar as chaves de autenticação dos <a href="http://blog.alexos.com.br/?p=886">agentes</a> no Ossec server é sustentável até 5 servidores em média. Para facilitar esta tarefa <a href="http://dcid.me">Daniel Cid</a> criou o daemon <a href="http://www.ossec.net/doc/programs/ossec-authd.html">ossec-authd</a>, responsável por gerenciar as chaves de autenticação dos agentes no servidor usando um certificado digital.</p> <p><strong>NO OSSEC SERVER</strong></p> <p>Execute os seguintes comandos para gerar o certificado:</p> <blockquote><p> #openssl genrsa -out /var/ossec/etc/sslmanager.key 2048</p> <p>Generating RSA private key, 2048 bit long modulus<br /> ……………………………………………………………….+++<br /> …………………………………………………………………………………………………………………..+++<br /> e is 65537 (0×10001) </p></blockquote> <blockquote><p> #openssl req -new -x509 -key /var/ossec/etc/sslmanager.key -out /var/ossec/etc/sslmanager.cert -days 365</p> <p>—–<br /> Country Name (2 letter code) [AU]:<strong>BR</strong><br /> State or Province Name (full name) [Some-State]:<strong>Bahia</strong><br /> Locality Name (eg, city) []:<strong>Salvador</strong><br /> Organization Name (eg, company) [Internet Widgits Pty Ltd]:<strong>Alexos Core Labs</strong><br /> Organizational Unit Name (eg, section) []:<strong>IT</strong><br /> Common Name (eg, YOUR name) []:<strong>debian</strong><br /> Email Address []:<strong>alexos@acme.com</strong> </p></blockquote> <p>Inicie o ossec-authd</p> <blockquote><p> #/var/ossec/bin/ossec-authd -p 1515 >/dev/null 2>&1 & </p></blockquote> <blockquote><p> #netstat -at | grep 1515<br /> tcp 0 0 *:1515 *:* LISTEN </p></blockquote> <p><strong>NO OSSEC AGENT</strong></p> <p>OBS: Antes de compilar o agente instale o pacote <strong><em>libssl-dev</em></strong> ( Debian ) ou <strong><em>openssl-dev</em></strong> ( CentOS ) evitando assim a mensagem erro abaixo.</p> <blockquote><p> <strong>ERROR: Not compiled. Missing OpenSSL support.</strong> </p></blockquote> <p>Execute o seguinte comando para iniciar a autenticação:</p> <blockquote><p> #/var/ossec/bin/agent-auth -m 192.168.0.1 -p 1515<br /> 2012/03/01 20:28:12 ossec-authd: INFO: Started (pid: 10988).</p> <p>INFO: Connected to 192.168.0.1:1515<br /> INFO: Using agent name as: debian<br /> INFO: Send request to manager. Waiting for reply.<br /> INFO: Received response with agent key<br /> INFO: Valid key created. Finished.<br /> INFO: Connection closed. </p></blockquote> <p>Reinicie o servidor e o agente:</p> <blockquote><p> invoke-rc.d ossec restart ( Debian ) </p></blockquote> <p> ou </p> <blockquote><p> service ossec restart ( CentOS ) </p></blockquote> <p>Confirme a comunicação usando o <strong>agent_control</strong> no servidor</p> <blockquote><p> #/var/ossec/bin/agent_control -l</p> <p>OSSEC HIDS agent_control. List of available agents:<br /> ID: 000, Name: debian (server), IP: 127.0.0.1, Active/Local<br /> <strong>ID: 1024, Name: debian, IP: any, Active</strong> </p></blockquote> <p><a href="http://dcid.me/2011/01/automatically-creating-and-setting-up-the-agent-keys/">Referência</a></p> <div class="crp_related"><h3>See:</h3><ul><li><a href="http://blog.alexos.com.br/?p=886" class="crp_title">Instalando o Ossec-HIDS agent</a></li><li><a href="http://blog.alexos.com.br/?p=880" class="crp_title">Instalando o Ossec-WUI ( Web Interface )</a></li><li><a href="http://blog.alexos.com.br/?p=2892" class="crp_title">Configurando o agente do Ossec HIDS no Windows server</a></li><li><a href="http://blog.alexos.com.br/?p=2625" class="crp_title">Ossec HIDS 2.6 Beta Testing – Novas funcionalidades</a></li><li><a href="http://blog.alexos.com.br/?p=800" class="crp_title">Saiu do forno – OSSEC v2.1</a></li></ul></div>