hntool – uma ferramenta de segurança para Unixes
26 de Setembro de 2009, 0:00 - sem comentários aindaResolvi criar uma ferramenta para me ajudar a fazer hardening de servidores linux e facilitar a minha vida no trabalho. Assim nasceu o hntool (hardening tool), uma ferramenta escrita em python cujo objetivo é fazer uma análise simples do servidor e dizer quais as falhas de segurança que existem.
Todas as falhas são niveladas de acordo com risco que podem causar ao servidor. Falhas leves (low), médias (medium) e graves (high). Além destas categorias há mais duas: ok e info.
A ferramenta ainda está em um estágio bem inicial, mas resolvi compartilhá-la logo para ajudar aqueles que querem contribuir com algo e, claro, acelerar o desenvolvimento.
Algumas características:
- Criei uma estrutura bem modular, baseando-me em outro projeto que mantenho: o namcap. Acredito que com essa estrutura fica muito mais fácil manter e contribuir com o projeto.
- Não quero que o hntool realize nenhum hardening automaticamente. Quero apenas que ele me avise das falhas que existem. A decisão sobre o que (e como) fazer para consertar a falha cabe ao administrador do sistema.
- A intenção é fazer com que o hntool sirva para qualquer distribuição, mas no momento eu só tenho testado no Arch Linux.
Usando o hntool
Para testar o hntool é fácil. Baixe-o daqui e descompacte-o. Depois é só entrar no diretório descompactado e rodar:
# python hntool.py
Sim, você só precisa do python.
Segue um exemplo do resultado do hntool (clique para ampliar):
Acho que deu para entender onde quero chegar, né?
Como contribuir
Você pode contribuir com o hntool de diversas formas: enviando código, patchs, reportando bugs e pedindo recursos. Tudo isso pode ser feito através do bug tracker do github ou enviando um email para contato arroba hugodoria.org. Todo o código do projeto está disponível no github.
A ferramenta tabém está precisando de um ícone simples e bonito. Sou um zero à esquerda quando se trata de desenho e totalmente incapaz de fazer algo decente. Fica aí a dica. :P
Estrutura modular
Como falei, resolvi criar o hntool de forma modular. A estrutura de um modulo é, mais ou menos, assim:
import os class rule: def short_name(self): return "ssh" def long_name(self): return "Checks security problems on sshd config file" def analyze(self): check_results = [[],[],[],[],[]] ssh_conf_file = ['/etc/ssh/sshd_config', '/etc/sshd_config'] for sshd_conf in ssh_conf_file: if os.path.isfile(sshd_conf): fp = open(sshd_conf,'r') lines = [x.strip('\n') for x in fp.readlines()] # Checking if SSH is using the default port if 'Port 22' in lines or '#Port 22' in lines: check_results[1].append('SSH is using the default port') else: check_results[0].append('SSH is not using the default port') # Closing the sshd_config file fp.close() return check_results def type(self): return "config"
Explicando melhor:
- short_name(self): Uma string contendo o nome curto do modulo. Ele será usado, por exemplo, na hora de listar todos os módulos existentes (hntool -l).
- long_name(self) : Aqui é a descrição do módulo. Também será mostrada na listagem dos módulos.
- analyze(self): É aqui que fica o código de verdade. O resultado desse método deve ser sempre uma lista com 5 elementos, que correspondem aos níveis de segurança encontrados - ok, info, low, medium e high, respectivamente.
- type(self): Cada módulo será de um tipo. "files" para módulos que lidam com arquivos de texto simples(/etc/passwd, por exemplo) ou de configuração. "services" para módulos que lidam com serviços.
Há, também, um arquivo README explicando mais detalhes sobre o hntool. Obviamente, ele será melhorado com o tempo.
Bem, pessoal. É isso. Estarei sempre postando novidades desse projeto à partir de agora. :)
Scanner de vulnerabilidades do Joomla
24 de Setembro de 2009, 0:00 - sem comentários aindaRecentemente precisei "consertar" um portal hackeado, que usava o Joomla como CMS. Isso me levou a pesquisar mais sobre a segurança do mesmo e perceber que ele não é nada bom neste quesito.
Durante minha pesquisa encontrei o OWASP Joomla Vulnerability Scanner, um script capaz de:
- Detectar a versão do Joomla, PHP e do SO
- Procurar falhas de segurança no Joomla e em seus componentes
- Gerar relatórios em texto e html
- Atualizar sua base de vulnerabilidades
Requisitos
Para usar este scanner você só precisa de: perl, perl-libwww, perl-www-mechanize. Todos estão disponíveis nos repositórios das principais distribuições. Para instalá-lo no Arch faça:
# pacman -S perl perl-libwww perl-www-mechanize
Ah! E precisa, obviamente, do próprio scanner. É só baixá-lo daqui e descompactá-lo.
Usando o OWASP Joomla Vulnerability Scanner
O uso básido do scanner é:
$ ./joomscan.pl -u http://url-do-joomla
O joomscan te mostrará informações como:
Target: http://url-do-joomla
Server: Apache/2.2 (Debian) PHP/5.2.6-1+lenny3
X-Powered-By: PHP/5.2.6-1+lenny3## Fingerprinting in progress ...
~1.0.x htaccess.txt revealed [1.0.13 - 1.0.15]
~1.0.x joomla.javascript.js revealed [1.0.13 - 1.0.15]
~1.0.x moscode.xml revealed [1.0.0 - 1.0.13]* Deduced version range is : [1.0.13 - 1.0.13]
## 9 Components Found in front page ##
com_frontpage com_content
com_rsgallery2 com_docman com_contact
com_search com_banners com_poll
com_rssVulnerabilities Discovered
==========================# 1
Info -> Generic: htaccess.txt has not been renamed.
Versions Affected: Any
Check: /htaccess.txt
Exploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.
Vulnerable? Yes# 2
Info -> Core: Authentication Bypass Vulnerability
Versions effected: Joomla! 1.5.3 <=
Check: /administrator/
Exploit: Backend accepts any password for custom Super Administrator when LDAP enabled
Vulnerable? Yes# 3
Info -> CoreComponent: com_banners Blind SQL Injection Vulnerability
Versions effected: N/A
Check: /components/com_banners/
Exploit: /index.php?option=com_banners&task=archivesection&id=0'+and+'1'='1::/index.php?option=com_banners&task=archivesection&id=0'+and+'1'='2
Vulnerable? Yes
E por aí vai. Útil, não?
Para ver as outras opções do joomscan rode-o assim:
$ ./joomscan
Ou visite a página do projeto.
Software Freedom Day 2009, em Aracaju
11 de Setembro de 2009, 0:00 - sem comentários aindaO Software Freedom Day é um evento que tem como principal objetivo promover o uso de software livre, apresentando sua filosofia, seu alcance, avanços e desenvolvimento ao público em geral. Ele acontece simultaneamente em diversas cidades do mundo e, neste ano, Aracaju terá sua edição.
A grade de programação preliminar já está disponível e as inscrições podem ser feitas, gratuitamente, através deste endereço.
Neste ano o pessoal do PSL-BA virá em peso para o evento, com 3 palestrantes (Alexandro Silva, Cristiano Furtado e Rafael Gomes) e diversos participantes. Tenho certeza que faremos um ótimo evento. Conto com todos lá. :-)
Para maiores informações visite:
http://softwarefreedomday.org/teams/centralandsouthamerica/brasil/sergipe
Playstation 3
7 de Agosto de 2009, 0:00 - sem comentários aindaJá fazia algum tempo que estava desejando um video-game da nova geração. Eu estava em dúvida entre o Xbox 360 e o PS3 durante algum tempo. O Wii eu descartei logo de cara, pois já tinha ficado um tempo com um e o achei uma tremenda perda de tempo (95% do tempo ele ficava parado e encostado).
Depois de muito pesquisar e testar os video-games dos amigos, optei pelo Playstation 3. Estou adorando a plataforma e hoje tenho certeza que fiz a melhor escolha, baseado no que EU precisava, dentre os video-games da última geração.
Os fatores que me levaram a escolher o PS3, ao invés do Xbox, foram:
- Eu queria mais que um video-game. Queria uma central de multimidia. Algo para controlar vídeo, audio, fotos, jogos e tudo mais. Apesar de você "conseguir" fazer isso com o X, o PS3 é bem superior neste quesito;
- Hardware melhor: PS3 tem wireless, bluetooth e blueray. Três grandes estrelas que fazem muita diferença e que não existem nativamente no X. Além disso tem muito menos problemas que o Xbox;
- Integração com o PSP. Usar remote play com o PSP no PS3 é muito bacana;
- Preço mais camarada. Eu comprei o PS3 com 3 anos de garantia por bem menos que gastaria para comprar um X com a mesma garantia.
- Franquias: O PS3 tem algumas franquias exclusivas e que sou super fã: Gran Turismo, God Of War, Final Fantasy (que já não é mais exclusivo), Killzone, Resistance e, claro, a melhor de todas: Metal Gear Solid (o 4 é o melhor jogo da história). O X também tem algumas boas franquias, mas a única que realmente sou fã é Gears Of Wars (que jogo!!). Obviamente, esta questão de franquia varia muito de acordo com o gosto.
Por outro lado, há algumas coisas super bacanas no X e que não existem no PS3:
- Live: Não há o que discutir aqui. A live é bem superior ao combo PSN/Home do PS3 e acredito que seja o grande motivo de se ter um Xbox 360. A PSN/Home até oferece o básico - como partidas online, chat e compras, mas não vai muito além disso.
- Comunidade unida: eu achei a comunidade do Xbox mais unida que a do PS3. Há um grande portal e vários grupos sempre realizando partidas online. Mas talvez ainda seja cedo para eu afirmar isso, pois estou fazendo minhas amizades pelo PS3 agora.
Bem, é isso. Não quero convencer ninguém a comprar um PS3 e nem afirmar que ele é melhor que o 360. Na verdade, os dois são excelentes e, por isso, é muito importante analisar corretamente antes de decidir qual plataforma comprar. Tudo vai depender do que você espera de um video-game.
Ah! E se você tiver PS3 não esqueça de me adicionar na PSN. Meu login é hdoria.
New namcap version
16 de Julho de 2009, 0:00 - sem comentários aindaI just released a new namcap version (2.3). These are the changes: namcap (2.3)
- New tags:
elffile-not-in-allowed-dirs (FS#15299) gnome-mime-file (checks for GNOME mime files) mime-cache-not-updated (checks for update-mime-database calls) hicolor-icon-cache-not-updated (FS#15028) insecure-rpath (FS#14049) non-fhs-info-page (FHS compliance of installed info pages) pkgname-in-description (pkgname should not be in description) potential-non-fhs-info-page
- Removed tags:
missing-cvs-id maintainer-tags-for-tus-devs cvs-id-for-tus-devs
Added rule to look for .a files with wrong permissions Report dangling symlinks as an error [...]