Novo John The Ripper 1.7.3.1 Released!

Posted in hacking, linux hacking, segurança, windows hacking on July 21, 2008 by ulissescastro

O bom e velho John The Ripper deu as caras novamente!

Para quem não conhece John é uma ferramenta criada com o intuito de auditar senhas, mas claro, como “quase” todas as ferramentas de segurança acaba funcionando como um martelo! (martelo?) Isso mesmo, explicando, a analogia no caso é pelo fato que com um martelo podemos tanto martelar um prego na parede (coisa útil para pendurar quadros, etc…) ou matar uma pessoa com uma martelada na cara! :-o

Em um pentest usamos para testar se as senhas utilizadas são senhas consideradas “fracas” tanto em windows como linux/unix, olhando por outro lado, em um ataque onde o invasor/cracker que de alguma forma consegue acesso aos arquivos que contém senhas (passwd,shadow/sam) ele normalmente o utiliza para descobrir as senhas fracas, elevar privilégios, ganhar acesso a compartihamentos em outras máquinas, etc… ;-)

Após um longo período sem atualização ontem (20/07/2008) foi lançada uma nova versão abaixo listo parte relevante do Changelog.

——————

The following changes have been made between John 1.7.3 and 1.7.3.1:

* Corrected the x86 assembly files for building on Mac OS X.

* Merged in some generic changes from JtR Pro.


The following changes have been made between John 1.7.2 and 1.7.3:


* Two Blowfish-based crypt(3) hashes may now be computed in parallel for much

better performance on modern multi-issue CPUs with a sufficient number of

registers (e.g., x86-64).

* Bitslice DES assembly code for x86-64 has been converted to use

instruction pointer relative addressing (needed for Mac OS X support).

* New make targets: macosx-universal, macosx-x86-64, solaris-x86-64-cc,

solaris-x86-64-gcc, solaris-x86-sse2-cc, solaris-x86-sse2-gcc,

solaris-x86-mmx-cc, solaris-x86-mmx-gcc, solaris-x86-any-cc, linux-ia64;

other changes to the Makefile.

* Minor bug fixes.

* “DumbForce” and “KnownForce” external mode samples have been added to the

default john.conf.

——————

Mais algumas informações e funcionalidades podem ser vistas no site do meu brother Anderson.[2] 

Enjoy! ;-)

 

Referências:

Site official: http://www.openwall.com/john/

2 - http://y2h4ck.wordpress.com/2008/04/18/john-the-ripper-more-ciphers/

Backtrack 3 Versão Final disponível para download

Posted in backtrack, hacking, linux hacking, segurança on June 20, 2008 by ulissescastro

É isso ae! Saiu a versão final, e dessa vez a novidade que além da imagem para CD e USB disponibilizaram uma imagem de VMware.

O download pode ser feito aqui.

Em posts anteriores comentei um pouco sobre o Bracktrack e sua versão de pré-lançamento feita através do canal IRC.

Enjoy…  :)

“Data Mining” e o ingênuo Robots.txt

Posted in hacking, segurança, uncategorized on June 15, 2008 by ulissescastro

Em uma das primeias fases de um pentest precisamos coletar o máximo de informações sobre o alvo ao qual atacar para entender sobre o que estou dizendo e ganhar tempo colo abaixo um trecho direto do wikipedia…

"Data mining is the process of sorting through large amounts of data and picking out relevant information." [1]

Com este conceito em mente, venho escrever um simples passo para coletar passivamente dados de um determinado alvo e somar na fase de "Passively Information Gathering" de um pentest.

falando que o uso do robots.txt é pra ser usado para AUXILIAR as engines de busca a filtrar o conteudo que vai ser indexado pra aumentar a relevancia dos resultados, e não pra esconder as coisas que nao podem ser vistas….

Robots.txt (Robots Exclusion Standard), arquivo texto que fica na raiz de um website para auxiliar os "web spiders" a filtrar o conteúdo que vai ser indexado para os sites de busca (google, yahoo, etc..) e aumentar a relevância dos resultados. *

Como exemplo prático, seu site tem uma área restrita com informações sobre parceiros http://www.seusite.com.br/parceiros e você não quer que o conteúdo desta área seja indexado pelos sites de busca pois possui informações sensíveis sobre parceiros de sua empresa, você criaria um Robots.txt na raiz do seu site como abaixo:

User-Agent: *
Disallow: /parceiros

Certo, legal bem bacana, mas uma coisa importante que temos que lembrar, este arquivo nunca deve ser utilizado como medida de seguraça para esconder diretórios importantes pois este arquivo tem permissão de acesso ao mundo para ser lido! Abaixo um sript bem simples escrito em python que baixa e imprime na tela o conteúdo deste arquivo.

#vi robots.py

Conteúdo:
——————–
#!/usr/bin/python

import urllib, sys

try :
        robotsFile = urllib.urlopen("http://" + sys.argv[1] + "/robots.txt")
        print robotsFile.read()
except:
        print "Error fetching Robots.txt file !"
——————–

Então para olhar o conteúdo do arquivo Robots.txt (se ele existir) e descobrir quais diretórios o site não quer que seja indexado pelos robôs de busca, basta executar:

#./robots.py <www.site.com>

Exemplo:

./robots.py www.bancofibra.com.br

User-agent: *
Disallow: /admin/
Disallow: /engine/
Disallow: /db/
Disallow: /media/

Com as informações obtidas, temos uma lista de possíveis diretórios que podem ter informações sensíveis, é possível encontrar interfaces de administração, diretórios de parceiros, desenvolvimento, teste…  muita informação que não deveria ficar exposta em um arquivo que tem leitura por qualquer um.

No exemplo acima a interface de administração "Disallow: /admin/" está aparecendo e NÃO deveria estar aberta pois com esta informação sei que existe uma interface de administração e posso usar o acesso e preparar um ataque de força bruta para conseguir o acesso a esta interface.

NUNCA coloque neste arquivo diretórios que possam demonstrar informações sensíveis ou lugares onde não quer que acessem, um ótimo artigo sobre Robots.txt pode ser encontrado aqui e uma boa referência de como criar arquivos Robots.txt corretamente por ser visto aqui.

Uma outra forma utilizando o wget para simular um User-Agent pode ser encontrada aqui.

Amplexos e até o próximo! ;-)

Referências

[1] - http://en.wikipedia.org/wiki/Data_mining

* Modificado o conceito sobre robots.txt para ficar mais claro o entendimento. Todos os créditos ao Rafael(stiod) por melhorar o conceito de Robots! (valeu Rafa, meu amigo da cidade onde chove ácido! o.O)

Saiu!! Backtrack 3 - Pre-Final IRC Version

Posted in backtrack, linux hacking, segurança on June 10, 2008 by ulissescastro

Backtrack[1] é uma distribuição Linux live baseada em uma outra distribuição Linux live chamada Slax[2] que por sua vez é baseada em Slackware e criada utilizando LinuxLive[3], que são scripts para criar distribuições Linux live (putz!)

Bom como ela é criada não vem muito ao caso, o interessante desta distribuição live é seu foco em teste de intrusão (pentest) onde bastando inicilizar à partir de um CD ou Pen drive temos um ambiente completo com inúmeras ferramentas de segurança para realização de testes de intrusão (pentest), o que espanta bastante é seu kernel bem preparado para reconhecer diversos tipos de hardware e a facilidade para personalização através de módulos.

Uma lista de ferramentas disponíveis no Backtrack pode ser visto aqui.

Caso não exista alguma ferramenta que esteja acostumado a utilizar recomendo fortemente a leitura de como personalizá-la no Wiki[4], utilizando-a em um Pen drive a capacidade de modularização aumenta significativamente pois podemos personalizá-la sem ter que gravar outro CD.

A última versão (Backtrack 3 Beta) foi lançada em 14-12-2007 e desde então o trabalho em aperfeiçoar e arrumar os bugs foram iniciados. Hoje 10-06-2008 foi lançado no IRC a versão BT3 Pre-Final, que logo será substituída pela Final para quem se interessar em testar e reportar alguns bugs, segue o link para download:

http://cracker.offensive-security.com/bt3-irc-prerelease.iso

Abraços!

Referências:

[1] - http://www.remote-exploit.org/backtrack.html
[2] - http://www.slax.org
[3] - http://www.linux-live.org
[4] - http://wiki.remote-exploit.org

Video: SELinux em poucos minutos

Posted in debian, segurança, selinux, video on June 7, 2008 by ulissescastro

Fazendo um gancho com o post anterior…

Aproveitando para aprender a criar videos, tarefa que diga-se de passagem foi bem chata para acertar o formato, tamanho, codec, música, programa…

Disponibilizo meu primeiro video “SELinux em poucos minutos“, como demonstro no video é possível deixar instalado e pronto para uso facilmente.

Agora que acertei como gravar videos espero ter tempo para criar diversos videos, tanto sobre SELinux como hacking em geral.

Sintam-se a vontade para criticar! :)

Amplexos! (by Guidolin)

Instalação e Ativação SELinux no Debian

Posted in debian, eventos, segurança, selinux on May 30, 2008 by ulissescastro

Em meus estudos sobre SELinux não encontrei material em português mostrando de forma prática como se instala o SELinux no Debian, abaixo demonstro da maneira mais simples possível como fazer.

Apesar deste tutorial falar de como instalar no Debian Etch é possível aplicá-lo também no Lenny.

Na próxima versão estável do Debian muitas novas funcionalidades estão sendo aplicadas aos programas que trabalham no "user-space", pois não basta ter o SELinux compilado dentro do kernel e ativá-lo é preciso que as ferramentas que o manipulam estejam preparadas para interargir.

Considerando que você já está com uma instalação padrão do Debian Etch, instale os seguintes pacotes:

# aptitude install selinux-basics selinux-policy-refpolicy-targeted

O Debian vai resoler as dependências e encarregar-se de instalar mais alguns pacotes que auxiliam na administração do SELinux.

Para ajustar e finalizar as configurações e deixar o SELinux funcionando é interessante utilizar o aplicativo "check-selinux-installation" é um programa desenvolvido em python que auxilía a instalação criando uma "check-list" com dicas de como proceder para finalizar a configuração do SELinux.

# check-selinux-installation
getfilecon: getfilecon(/proc/1) failed
SELinux is not enabled.
Could not read the domain of PID 1.
Old style ttys were found.
/etc/pam.d/ssh is not SELinux enabled
/etc/pam.d/login is not SELinux enabled
Dynamic motd updating is enabled
A dynamic MOTD is present in /var/run/motd.
FSCKFIX is not enabled - not serious, but could prevent system from booting…

Abaixo o que é necessário para "zerar" esta lista. Vou começar removendo terminais antigos "Old style ttys were found."

# rm -f /dev/[tp]ty[abcdepqrstuvwxyz][0-9a-f]

Para ativar as configurações do pam "/etc/pam.d/ssh" e "/etc/pam.d/login" basta editar os arquivos e descomentar.

No arquivo /etc/pam.d/login procure pela entrada abaixo e descomente.

session required pam_selinux.so multiple

No arquivo /etc/pam.d/ssh procure pela entrada abaixo, descomente e remova a opção multiple:

session required pam_selinux.so

O "Message of the Day" (motd)  é atualizado dinâmicamente para isto precisamos definir um motd estático.

# rm -f /etc/motd /var/run/motd

Crie um novo com uma mesnagem qualquer:

# echo -ne "Bem vindo.\n" >> /etc/motd

Modifique o arquivo /etc/init.d/bootmisc.sh, procure pelas entradas abaixo e comente-as.

# Update motd
# uname -snrvm > /var/run/motd
# [ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd

Para solucionar este item "FSCKFIX is not enabled" no arquivo /etc/default/rcS existe a seguinte entrada "FSCKFIX=no" modifique para yes, isto modifica o tipo de ação que o Debian toma quando executa um fsck durante o boot tirando a opção (-a) menos segura quando tentar reparar um disco em relação a (-y).

FSCKFIX=yes

Apesar de que a variável abaixo não está sendo mais utilizada neste arquivo (/etc/default/rcS), se não à inserirmos como abaixo, devido a um bug nos scripts de checagem do "check-selinux-installation" ele retornará "Dynamic motd updating is enabled", para resolver adicione a entrada abaixo só para termos um "check-list" sem nenhuma reclamação.

EDITMOTD=no

Salve o arquivo.

SELinux vem compilado dentro do kernel do Debian por padrão, mas não é ativado, para isto é preciso passar para o kenrel na inicialização o parâmetro selinux=1. Edite o arquivo de configuração do seu gerenciador de boot (grub/lilo) e adicione o parâmetro, abaixo demostro como ficaria no grub.

title Debian GNU/Linux, kernel 2.6.18-6-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/sda1 ro selinux=1
initrd /boot/initrd.img-2.6.18-6-686
savedefault

Para que o SELinux aplique seu conceito MAC(Mandatory Access Control) é preciso aplicar o contexto para todos os arquivos do sistema. Para isto tanto com o comando "fixfiles relabel" como adicionando um arquivo vazio na raiz com o nome de ".autorelabel" e executando um reboot.

# touch /.autorelabel

# fixfiles relabel

Files in the /tmp directory may be labeled incorrectly, this command
can remove all files in /tmp. If you choose to remove files from /tmp,
a reboot will be required after completion.

Do you wish to clean out the /tmp directory [N]? N
/sbin/setfiles: labeling files under /
matchpathcon_filespec_eval: hash table stats: 23509 elements, 17216/65536 buckets used, longest chain length 3
/sbin/setfiles: Done.

Repare que o comando fixfiles pergunta se quer remover todos os arquivos do diretório tmp, responda NÃO pois a remoção dos arquivos do /tmp podem causar inconsistências a programas que já estão em execução. Utilize a opção de criação do arquivos pois de qualquer forma é preciso reinciar o sistema para que o SELinux fique ativado.

Um detalhe importante é que alguns programas após a ativação do SELinux se estiver utilizando a política targeted podem gerar diversos avisos no seu /var/log/messages, os passos abaixos são necessários para evitar essas mensagens….

Edite o arquivo de configuração do udev "/etc/udev/udev.conf" e acrescente ao final:

no_static_dev="1"

Isso evita que o udev crie o diretório "/dev/.static". Para atualizar as "initial ramdisk images":

# update-initramfs -k all -u

O pacote findutils que traz o comando locate executa um script que varre todo o sistema operacional para indexá-lo, desatvie o script que faz esta varredura pois traz diversas mensagens no /var/log/messages quando é executado. Ainda não existe uma política para que sua execução ocorra de forma efetiva e sem mensagens.

Para desativar edite o arquivo "/etc/cron.daily/find" e na segunda linha acrescente um "exit 0".

Outro que pode nos trazer problemas e muitas mensagens é o arquivo responsável por fazer periódicamente um backup de alguns arquivos chave do sistema operacional (/etc/shadow, /etc/gshadow, /etc/passwd), edite o arquivo "/etc/cron.daily/standard" e procure pela entrada "Backup key system files" e comente todo o bloco:

#
# Backup key system files
#
#
#if cd $bak ; then
# cmp -s passwd.bak /etc/passwd || (cp -p /etc/passwd passwd.bak &&
# chmod 600 passwd.bak)
# cmp -s group.bak /etc/group || (cp -p /etc/group group.bak &&
# chmod 600 group.bak)
# if [ -f /etc/shadow ] ; then
# cmp -s shadow.bak /etc/shadow || (cp -p /etc/shadow shadow.bak &&
# chmod 600 shadow.bak)
# fi
# if [ -f /etc/gshadow ] ; then
# cmp -s gshadow.bak /etc/gshadow || (cp -p /etc/gshadow gshadow.bak &&
# chmod 600 gshadow.bak)
# fi
#fi

Agora reinicie a máquina e após execute para verificar  sua instlação:

# check-selinux-installation

Provavelmente não retornará nada pode checar com um "echo $?", e também:

# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 20
Policy from config file: refpolicy-targeted

Como pode ver na saida dos comandos o SELinux está instalado corretamente e no modo permissive que é um modo onde o SELinux não nega as requisições aos arquivos/dispositivos/processos com base nos contextos somente gera um log no arquivo /var/log/messages.

Nos próximos posts sobre SELinux pretendo mostrar de forma prática como utilizá-lo para blindarmos nosso sistema operacional e aumentar considrávelmente a segurança.

Obrigado e até o próximo! ;-)

Referências

http://wiki.debian.org/SELinux
http://etbe.blogspot.com/2006/12/se-linux-on-debian-in-5-minutes.html
http://www.coker.com.au/selinux/tweaks.html

Passei! CEH - Certified Ethical Hacker

Posted in certificação, mensagem, segurança on May 26, 2008 by ulissescastro

Eeeeeeeeeeeeeeee \o/ !!!

Consegui! Fiz hoje a prova (cansativa) 150 questões! Precisava de 70% para ser aprovado e … bom uma imagem vale mais do que mil palavras! ;-)

Logo mais postarei com base em quais materiais estudei, como funciona a prova, o que é exatamente esta certificação, o que fazer para quem se interessar em tirar esta certificação!

Para quem estiver com pressa e quiser saber um pouco mais antes do meu post, clique aqui e veja mais informações com descrição sobre CEH, tópicos cobrados …

Até mais! :-)

Chamada de Voluntários - Projeto ASDR

Posted in mensagem, segurança, uncategorized on May 21, 2008 by ulissescastro

Galera segue abaixo chamada de voluntários para o projeto ASDR (Application Security Desk Reference) da OWASP, feita por Leonardo Cavallari.

Na íntegra:

"Olá a todos!

Estamos remodelando o projeto Honeycomb em um guia de referência mais amplo, chamado the Application Security Desk Reference - ASDR.

O projeto ASDR tem por objetivo reunir referencias completas sobre agentes de ameaças, principios, ataques, vulnerabilidades, controles, impactos técnicos e de negócios, com o intuito de criar o guia de segurança mais completo que se tenha notícia.

Porém, para alcançar este objetivo precisamos de voluntários que ajudem a desenvolver e revisar os artigos, pois temos mais de 600 artigos para desenvolver/atualizar, sendo que 300 só tem o título.

Pelo fato de acreditar que a comunidade brasileira possa dar mais uma boa contribuição para a OWASP, estou fazendo esta chamada.

Quem tiver interesse em conhecer e participar do projeto, acesse a página ASDR Workplan e me envie um e-mail (leonardocavallari #at# gmail.com) demonstrando como você poderia ajudar.
A idéia é lançar o livro do projeto até 1 de Agosto.

Quem aí tá com disposição?!

Abraços,

Leo Cavallari"

Acredito ser uma ótima oportunidade para aprender evoluir e contribuir! E que também não deixa de ser uma ótima referência para o curríclo de quem participa!

Conforme informado no e-mail existe um Workplan[1] montado onde o Leonardo já iniciou a distribuição dos tópicos[2], desta forma fica aqui meu convite a todos os interessados em segurança.

Abraços!

1 - http://www.owasp.org/index.php/OWASP_ASDR_Workplan
2 - https://www.owasp.org/index.php/ASDR_TOC_Attacks

Palestra SELinux APROVADA!

Posted in eventos, mensagem, segurança, selinux, uncategorized on May 16, 2008 by ulissescastro

É isso ae minha palestra "Desmitificando SELINUX" foi aprovada no 1o. Simpósio Goiâno de Software Livre / 5o. Fórum Goiâno de Software Livre, o evento irá ocorrer nos dias 30 e 31 de maio de 2008.

Breve resumo da palestra

Security Enhanced Linux (SELinux) tem reputação de ser complexo e díficil de implementar, recentemente os desenvolvedores tem trabalhado em sua evolução e facilitação de uso. Isto tem representando num crescimento rápido, fortalecendo diversos tipos de servidores Linux. Esta palestra abordará as suas funcionalidades e desmitificação dos mitos de dificultade de implantação.

Maiores informações, local do evento, etc…

http://www.sgsl.ueg.br

Espero vocês lá!

Instalação e integração Snort, PostgreSQL e Barnyard

Posted in debian, postgresql, segurança, snort, uncategorized on April 22, 2008 by ulissescastro

Enjoy…

Objetivo
Instalação do Snort com gravação de log unificado (unified log), instlação do PostgreSQL 8.1 à partir dos pacotes pré-compilados para distribuição Debian Etch e também a compilação e configuração do aplicativo Barnyard, utilitário responsável pela leitura dos logs unificados e envio das informações para o banco de dados PostgreSQL.

Configurações utilizadas:

* Hostname: nids
* Interface de rede: eth0
* Endereço IP: 192.168.0.133
* Endereço de rede: 192.168.0.0/24

Ao final dos procedimentos a seguir, estarão instalados:

* PostgreSQL 8.1
* Snort Version 2.3.3 (Build 14)
* Barnyard Version 0.2.0 (Build 32)

Instalação PostgreSQL

Para instalar utilize:
# aptitude install postgresql-8.1

Crie a base de dados e o usuário que irá utilizá-la:
# su - postgres

Crie a base de dados:
$ createdb snort

Crie o usuário que será utilizado pelo Snort, usuário "snort":
$ createuser -P snort
Digite a senha para a nova role: snort123[ENTER]
Digite-a novamente: snort123[ENTER]
A nova role poderá criar um super-usuário? (s/n) n
A nova role poderá criar bancos de dados? (s/n) n
A nova role poderá criar novas roles? (s/n) n
CREATE ROLE

* Neste tutorial estou utilizando uma senha fraca, para instalações em produção recomendo utilizar senhas robustas, onde na sua criação utilize letras maiúsculas e minúsculas, números, símbolos com pelo menos dez caracteres.

Crie regra para acesso local à base de dados snort para o usuário snort.

* Também não recomendo o uso de nomes com fácil dedução, tanto para o banco de dados como para o usuário que o utiliza, em produção modifique isto também.

Como usuário root, edite o arquivo /etc/postgresql/8.1/main/pg_hba.conf, e abaixo da entrada:

(…)
# Database administrative login by UNIX sockets
local all postgres ident sameuser
(…)

Acrescente:
local snort snort md5

Salve o arquivo e saia.
Explicando:
local - Origem da conexão feita ao banco de dados;
snort - Nome da base de dados;
snort - Nome do usuário que tem permissão de acesso;
md5 - Método utilizado para autenticação.

Reinicie o serviço PostgreSQL:
# invoke-rc.d postgresql-8.1 stop
# invoke-rc.d postgresql-8.1 start

Verifique se o PostgreSQL está ouvindo na porta 5432 e aguardando por conexões locais:
# lsof -i -n -P | grep 5432

Logo, será configurado a estrutura para base de dados do Snort…

Instalação Snort

Para instalar o Snort com o suporte a PostgreSQL no Debian, utilize:
# aptitude install snort-pgsql

Serão feitas perguntas, na primeira irá questionar qual é sua rede, para este documento adotamos a seguinte rede:
192.168.0.0/24

Na segunda pergunta, responda NÃO, afinal não queremos que o Snort guarde seus log em um banco de dados e sim em um arquivo de log unificado para utilização com Barnyard, que demonstro logo a seguir.

Por precaução, faça uma cópia de segurança do arquivo de configuração:
# cp -av /etc/snort/snort.conf /etc/snort/snort.conf.original
# cp -av /etc/snort/snort.debian.conf /etc/snort/snort.debian.conf.original

Na distribuição Debian Etch, dentro de /etc/snort existe um arquivo chamado snort.debian.conf onde algumas configurações específicas são definidas, edite o arquivo e faça as seguintes modificações:

DEBIAN_SNORT_STARTUP="boot"
DEBIAN_SNORT_HOME_NET="192.168.0.0/24"
DEBIAN_SNORT_INTERFACE="eth0"

Explicando:
DEBIAN_SNORT_STARTUP – Diz ao Snort que deve iniciar na inicialização do sistema operacional;
DEBIAN_SNORT_HOME_NET - Define sua rede local;
DEBIAN_SNORT_INTERFACE - A interface que o snort ficará ouvindo.

Edite o arquivo snort.conf procure pela entrada var HOME_NET any e configure:

var HOME_NET 192.168.0.0/24

Definindo a forma de log que o Snort gravará os logs, para utilização em conjunto com o Barnyard é preciso que utilize o método de log unificado (unified log). Procure pelas linhas abaixo e descomente-as:

output alert_unified: filename snort.alert, limit 128
output log_unified: filename snort.log, limit 128

Salve o arquivo, saia.
Explicando:
filename - Nome do arquivo onde ficarão gravados os logs;
limit - Tamanho máximo até seu rotacionamento. (128mb)

O log unificado (unified log) faz com que o Snort grave suas mensagens em formato octal em um arquivo binário, com isto, ganha-se muito desempenho pois o Snort não precisa parar seu processamento de pacotes para executar os INSERTS no banco de dados.

* De acordo com algumas notas postadas em diversos blogs pela internet, não teremos esta perda de performance no Snort 3.0 pois utilizará um sistema de processamento diferente do atual, novas features e outras informações sobre o snort 3.0 ficam para um próximo post. ;)

Para verifcar onde o Snort grava seus arquivos de log, entre outras definições (Debian):
# cat /etc/default/snort

Para iniciar o Snort, remova antes o arquivo:
# rm /etc/snort/db-pending-config

Inicie o serviço do Snort:
# invoke-rc.d snort start

Verifique o status do serviço:
# invoke-rc.d snort status

O resultado deve ser este:
Status of snort daemon(s): eth0 (ok).

Criando estrutura para base de dados do Snort

Torne-se usuário postgres novamente:
# su - postgres

Com o script sql fornecido pelo pacote snort-pgsql, crie as tabelas necessárias:
$ zcat /usr/share/doc/snort-pgsql/create_postgresql.gz | psql -U postgres snort

Dê permissão somente para consultar, atualizar e inserir nas seguintes tabelas ao usuário snort:
$ psql -U postgres snort -c "GRANT INSERT, SELECT, UPDATE ON TABLE data,detail,encoding,event,icmphdr,iphdr,opt,reference,reference_system,schema,sensor,sig_class,signature,sig_reference,tcphdr,udphdr TO snort;"

E também para atualizar as tabelas sequenciais:
$ psql -U postgres snort -c "GRANT UPDATE ON reference_ref_id_seq,reference_system_ref_system_id_seq,sensor_sid_seq,sig_class_sig_class_id_seq,signature_sig_id_seq TO snort;"

Volte a ser usuário root:
$ exit

Instalação Barnyard

Barnyard foi desenvolvido com o objetivo de ler os arquivos de log unificados e enviar seu conteúdo ao banco, desta forma diminuindo o serviço "braçal" de inserir os logs no banco assim aumenando a performance do Snort como já foi mencionado.

Acesse o diretório:
# cd /usr/src/

E baixe o Barnyard:
# wget http://www.snort.org/dl/barnyard/barnyard-0.2.0.tar.gz

Descompacte e acesse o diretório:
# tar xvzf barnyard-0.2.0.tar.gz
# cd barnyard-0.2.0

Para instalar o Barnyard com suporte a PostgreSQL no Debian Etch, supra as dependências instalando os pacotes:
# aptitude install build-essential postgresql-server-dev-8.1

Para ativar o suporte a PostgreSQL utilize o parâmetro –enable-postgres ao configurar:
# ./configure –enable-postgres

Compile e instale:
# make && make install

Será instalado dentro de /usr/local/bin o executável barnyard e um arquivo de exemplo para configuração é criado no diretório /usr/src/barnyard-0.2.0/etc, mas não será utilizado.

Para organizar, crie e acesse o diretório:
# mkdir /etc/snort/barnyard
# cd /etc/snort/barnyard

Crie os arquivos de configuração para o Barnyard:
# vi barnyard.conf
config localtime
config hostname: nids
config interface: eth0
config sid-msg-map: /etc/snort/sid-msg.map
config gen-msg-map: /etc/snort/gen-msg.map
config class-file: /etc/snort/classifications.config
output alert_acid_db: postgres, database snort, server localhost, user snort, password snort123, detail full

Salve, saia e defina as permissões para o arquivo de configuração:
chown root:snort /etc/snort/barnyard/barnyard.conf
chmod 640 /etc/snort/barnyard/barnyard.conf

Crie o diretório e defina as permissões onde serão guardados os logs processados pelo Barnyard:
# mkdir /var/log/snort/processados
# chmod 2750 /var/log/snort/processados

Primeiramente faça o teste executando em dois terminais distintos o Barnyard sem a opção (-D) que o transforma em serviço.
Em um terminal, execute-o apontando para o arquivo de log unificado snort.log:
# /usr/local/bin/barnyard -c /etc/snort/barnyard/barnyard.conf -d /var/log/snort -a /var/log/snort/processados -f snort.log -w /etc/snort/barnyard/snort.log.bookmark

Em outro terminal execute apontando para o arquivo de log unificado snort.alert:
# /usr/local/bin/barnyard -c /etc/snort/barnyard/barnyard.conf -d /var/log/snort -a /var/log/snort/processados -f snort.alert -w /etc/snort/barnyard/snort.log.bookmark

Os terminais ficarão presos com uma mensagem similar a esta:
Barnyard Version 0.2.0 (Build 32)
Opened spool file ‘/var/log/snort/snort.log.1206731745′
Waiting for new data

Pare os dois Barnyards agora (Ctrl+C) e inicie-os como serviço.

Um apontando para o snort.log:
# /usr/local/bin/barnyard -c /etc/snort/barnyard/barnyard.conf -d /var/log/snort -a /var/log/snort/processados -f snort.log -w /etc/snort/barnyard/snort.log.bookmark -D

E outro apontando para snort.alert:
# /usr/local/bin/barnyard -c /etc/snort/barnyard/barnyard.conf -d /var/log/snort -a /var/log/snort/processados -f snort.alert -w /etc/snort/barnyard/snort.alert.bookmark -D

Explicando:
-c - Define o arquivo de configuração;
-d - Diretório onde será feito a busca pelos arquivos de log;
-a - Diretório onde serão guardados os aquivos que já foram processados;
-f - Arquivo de log unificado que o Barnyard processará;
-w - Arquivo utilizado para bookmark;
-D - Transforma-o em serviço.

Bookmark é utilizado para que o Barnyard lembre-se de onde parou caso ocorra algum problema, desta forma não sendo necessário processar novamente todo o arquivo de log.
O ambiente Snort, PostgreSQL e Barnyard está funcionando, abaixo demonstro uma forma de testar.

Colocando à prova

Para testar, de uma outra máquina faça uma varredura onde o Snort possa registrar algo, rode um Nmap:
# nmap -e <interface> -S <IP spoofado> -sX <IP do alvo>

Neste ambiente com estas configurações foi executado:
# nmap -e eth0 -S 10.10.10.10 -sX 192.168.0.133

Depois acesse a base de dados snort com usuário snort:
# psql -U snort snort

E faça uma consulta:
SELECT * from signature;

E também:
SELECT * from event;

Aparecerão informações registradas pelo Snort e enviadas pelo Barnyard.

Conclusão
A solução Snort, Barnyard e PostgreSQL é recomendada, quando bem posicionada na topologia. O Barnyard completa a solução do Snort, tornando-o mais rápido pois com a utilização dos logs unificados não se desperdiça tempo em executar sql’s para enviar seus logs ao banco, ganhando desta forma muito desempenho.

Referências

http://www.snort.org
http://www.postgresql.org
http://www.snort.org/dl/barnyard/
http://www.snorg.org.br/

Decidi postar este tutorial pois mesmo procurando muito na internet não encontrei informações de como utilizar o Barnyard em conjunto com o banco de dados PostgreSQL, espero que ajude outras pessoas.

Fiquem à vontade para sugestões, críticas e correções…

Obrigado! Abraços e até o próximo post! ;)

Quebrando a paranóia!

Posted in mensagem with tags on December 24, 2007 by ulissescastro

Saudações galera!

É isso ae… criei um blog, quem diria…

Como todo aficionado por segurança criar um blog utilizando o próprio nome e (argh!) sobrenome é uma grande barreira à ser quebrada.

Após algumas boas conversas e também experiências trocadas com amigo (Fernando Ike), decidi criar meu blog.

Este é meu pontapé inicial para colaborar e também retribuir tudo que o software livre e a comunidade tem me proporcionado ao longo de anos.

Neste momento não estou em um lugar onde posso filosofar e escrever muito, portanto finalizo aqui.

Ah! Claro, este blog utilizarei como um bloco de anotações onde registrarei todas as minhas experiências no mundo do software livre, segurança computacional e afins…

abraços e até o próximo… ;-)