sexta-feira, 30 de novembro de 2012

OpenSAMM o que é e para que serve?

O SAMM[1] é um framework aberto para ajudar as organizações a formular e implementar uma estratégia para a segurança de software, foi originalmente desenvolvido por Pravir Chandra, um consultor independente de segurança de software. Após o seu lançamento ele foi integrado a OWASP (Open Web Application Security Project) que ficou conhecido como Open SAMM.

O Open SAMM foi projetado para ser bem flexível assim podendo ser utilizado em pequenas, médias e grandes empresas e utilizando qualquer estilo de desenvolvimento, podendo ser aplicado para projetos individuais ou para toda uma organização. 

Ele possui recursos que o ajudarão em:
  • Avaliar as práticas de segurança da organização
  • Elaborar um programa de segurança de software balanceado
  • Definir e medir atividades relacionadas a segurança na organização
O Open SAMM especifica quatro funções de negócios críticos, cada um com três práticas de
segurança, são elas:

Visão Geral do OpenSAMM

Governança

São as atividades da gerência, que seria examinar os grupos de desenvolvimento e também gerenciar os níveis dos negócios estabelecidos pela empresa.
.
Estratégia e Métricas: Definição da estratégia que será utilizada para a garantia de software ou seja criar definições de metas de segurança e também estudar os riscos da empresa. 
Políticas e Conformidade: Entender as diretrizes/políticas e regulamentá-las nos padrões de seguranças, também fazer auditorias para descobrir se algum projeto não está dentro das expectativas. 
Orientação e Educação: Ensinar as pessoas que estão envolvidas no desenvolvimento do software como desenvolver e implementar um software mais seguro, o OpenSAMM também indica que uma boa alternativa para melhorar o desempenho é através de objetivos para cada funcionário.

Construção

Definir metas e criar os software dentro dos padrões. Isso inclui o gerenciamento do produto, a especificação do nível da arquitetura, design e implementação.
.
Modelagem de Ameaças: Identificar e entender os níveis de risco na funcionalidade do software no ambiente em que ele será executado, a partir dos detalhes conseguidos ficara mais fácil tomar decisões. 
Requisitos de Segurança: Definir qual será o comportamento esperado a respeito da segurança do software, definindo cada processo por níveis e fazer auditorias para garantir que todas as especificações de segurança estão sendo utilizadas. 
Arquitetura Segura: Projetar softwares seguros por padrões, reutilizando os componentes assim os riscos de segurança do software serão drasticamente reduzidos.

Verificação

Verificações e testes nos produtos durante o desenvolvimento do software, garantindo uma boa qualidade do software.

Revisão de Arquitetura: Avaliar a segurança da arquitetura do software, permitindo assim detectar problemas logo no inicio. Quando se resolve o problema no inicio se reduz também o tempo e dinheiro que seria gasto a procura desse problema. 
Revisão de Código: Inspecionar os códigos fontes a fim de encontrar potenciais falhas no software que ocorreu no desenvolvimento. O Code Review seria uma revisão mais profunda já que na hora do desenvolvimento também acontece algumas revisões, outra função é estabelecer uma base para uma codificação mais segura. 
Testes de Segurança: Testar o software a procura de vulnerabilidades, para garantir que os resultados serão os esperados quando estiver em execução, basicamente seria a fase de teste a procura de qualquer tipo de erro.

Implantação

Gerenciar a liberação do software, ou seja, essa função serve para saber se o produto vai chegar de acordo com o que foi especificado para o usuário final.

Gerenciamento de Vulnerabilidades: Gerenciar os relatórios de vulnerabilidades e incidentes operacionais ganhando assim uma base de dados dos problemas que já ocorreu, se por acaso acontecer novamente ficará mais fácil resolver. 
Proteção de Ambiente: Garantir que o software será executado corretamente no ambiente de produção, reforçar a segurança da infraestrutura e implementar atualizações de segurança. 
Capacitação Operacional: Procurar todo tipo de informação que possa afetar a segurança do software e comunicar aos desenvolvedores, assim detalhando os impactos que possam ocorrer para os usuários e operadores.

Comparação entre SAMM e a ISO / IEC 27034

A ISO/IEC 27034[2] é um padrão internacional para ajudar as organizações a implementar mecanismos de segurança durante todo o ciclo de vida do seu desenvolvimento. A tabela abaixo mostra o relacionamento dos recursos do SDL (Secure Development Lifecycle) com as 12 práticas de segurança do OpenSAMM. O losango grande indica um forte relacionamento com um tópico da ISO/IEC 27034 enquanto o losango pequeno indica um fraco relacionamento: 

De acordo com o Colin Watson, autor da comparação, a ISO/IEC 27034 está mais relacionada com a ideia de um programa de segurança de software específico para organizações, junto com uma abordagem baseada em risco para aplicar segurança em diferentes aplicações.


Referências




Autor do Post

Luan Souza é graduando do curso de Sistemas de Informação da Universidade Federal da Paraíba (UFPB). Apaixonado pela área de Segurança da Informação desde pequeno, pratica Futebol Americano e curte uma boa balada.

terça-feira, 27 de novembro de 2012

Conviso - Patrocinando Eventos










Aconteceu em São Paulo nos dias 20 e 21 de Outubro de 2012, o H2HC. Organizado por profissionais e/ou pessoas que estão diretamente ligadas a pesquisas e desenvolvimento na área de segurança da informação. O evento propôs a troca de informação entre os participantes sobre segurança da informação.

Esse ano o evento também contou com diversos keynotes internacionais, que apresentaram trabalhos de pesquisa sobre a área. A grande novidade deste ano foi a modalidade dual track, onde aconteceram duas palestras ao mesmo tempo e isso trouxe uma liberdade para os participantes que puderam escolher o track que mais interessava.

       Sua 9ª edição teve como principais atrações:

  • Explorar técnicas de desenvolvimento segurança Telecom e telefone phreaking 
  • Fuzzing e teste de segurança de aplicativo 
  • Os testes de penetração, aplicação e segurança Web 
  • Técnicas para desenvolvimento de software e sistemas seguros 
  • Hardware hacking, sistemas embarcados e outros dispositivos eletrônicos 
  • Exploração Mobile, dispositivos Symbian, P2K e tecnologias bluetooth 
  • Análise de vírus, Worms e todos os tipos de malwares 
  • Engenharia reversa 
  • Rootkits 
  • Segurança em Wi-Fi e ambientes VoIP 
  • Informações sobre segurança em smartcard, RFID e similares 
  • Abordagem técnica de sistemas operacionais alternativos 
  • Segurança em SCADA e ambientes industriais e redes "obscuras" 
  • Criptografia exploração Lockpicking, trashing, segurança física e urbana 
  • Privacidade na Internet, e espionagem


        Fotos do Evento H2HC:


         da esquerda para direita: Antonio Cooler ; Ulisses Castro; Roberto Soares; Wagner Elias; Leandro Rocha.



         da esquerda para direita: Luan Souza; Carlos Ramos; Tiago Ferreira; Wagner Elias.














Security Leaders 2012 – Congresso, Exposição e Premiação de Líderes e Profissionais de Segurança da Informação e Risco, sua terceira edição ocorreu nos dias 7 e 8 de novembro em São Paulo.O evento discutiu os desafios de negócios e as tendências em soluções e serviços de segurança, e reuniu especialistas do setor em painéis de debates.

Durante o Security Leaders  foram discutidos diversos assuntos relacionados à segurança da informação, dentre eles:

  • Os diferentes modelos de cloud computing e os aspectos de Segurança da Informação;
  •  Os desafios de como garantir a segurança sob a visão da mobilidade, redes sociais e computação em nuvem; 
  • Serviços compartilhados, uma abordagem estratégica da segurança;
  • O big data traz uma nova realidade para os ambientes empresariais;
  • Projetos de segurança, que precisam contemplar as exigências e vulnerabilidades dos grandes volumes de dados; 
  • Ameaças e segurança de última geração: o novo cenário; 
  • Redes sociais: medidas de segurança e riscos para o negócio.


        Fotos do Evento Security Leaders:














Este sera o próximo evento patrocinado pela CONVISO, mais uma edição do PoaSec Open Day que acontecera no dia 1° de Dezembro. O tema principal a ser discutido será Segurança da Informação e Direito Digital versus Crimes Cibernéticos.

O evento será realizado no John Bull Pub (Av. Cristóvão Colombo, 545 – Floresta), em Porto Alegre, a partir das 9h. Serão quatro sessões no formato de talk show, com duração de de 1h30 sobre um tema específico e debate junto ao público.

segunda-feira, 19 de novembro de 2012

Um pouco sobre teste de parâmetros em aplicações web


 Introdução

Neste artigo vamos abordar testes em entradas de dados em uma aplicação web. Durante o artigo teremos uma explanação de como algumas ferramentas funcionam para testar sua aplicação web.

Quando falamos de testes em entradas de aplicações Web, muitos pensam em TDD (Test Driven Development), logo alguns iram citar até o Selenium. Embora o Selenium tenha poder para nos ajudar, o uso do browser seria na maioria dos casos inútil. Lembre-se que nosso foco é testar entradas para verificar existência de padrões nas respostas, julgando a segurança da aplicação e não a funcionalidade de uma aplicação.


Ferramentas

Embora seja interessante reinventar a roda por motivos de aprendizado ou otimização, temos em nosso alcance um grande número de ferramentas que podem ajudar nos testes.

Uma das ferramentas disponíveis é o Burp Suite, com ele poderíamos usar o intruder, para alterar os valores dos parâmetros de uma request HTTP e analisar a resposta buscando por padrões que são característicos de uma aplicação vulnerável.

Além do Burp, temos scanner de vulnerabilidades como o Skipfish e Arachni que fazem a tarefa de mapeamento do alvo bem como um "sitemap", ou seja, é feita a abstração de todas as URLs do alvo de forma recursiva,  e analisado os dados para identificar uso de entradas e, de forma automática, é feito um teste nas entradas encontradas.

Reinventando a roda, mas por um bom motivo

Pensando no aprendizado apresento a vocês o 0d1n, uma ferramenta para testar entradas em aplicações web. Essa aplicação possui código fonte simples por ter poucas funções, e usa libCurl pela praticidade para executar uma request e obter  a resposta.

Supondo que você use algum derivado de unix siga os seguintes passos:

 $ wget http://0d1n.googlecode.com/files/0d1n_stable_v9.zip
 $ unzip -e 0d1n_stable_v9.zip; cd 0d1nstable
 $ make

lembrando que você precisa da "libCurl", caso esteja em um linux derivado de debian, por exemplo, basta o seguinte comando para instalar:

 $ apt-get install libcurl-dev

Estamos preparados para usar o programa conforme a Figura 1.

 $ ./0d1n

Figura 1


Como usar a ferramenta


O caractere “!” é um indicador de onde você deseja injetar os valores que estão na sua lista de payloads.

Exemplo:

site.com/site.jsp?login=admin&pass=!

Neste caso o programa irá trocar todos os “!” por strings que estão presentes em uma determinada lista(chamamos de lista de payloads), enviaria um "request" e procuraria determinadas strings que estão em "response2find". Se contiver qualquer string do "response2find" será salvo em um log o "response".

Outro exemplo:

http://site.com/index.jsp?var=1&feijoada=3
http://site.com/index.jsp?var=!&feijoada=!

Logo se a primeira linha da lista de payloads for ” or 1=1” nosso programa irá executar:
site.com/index.jsp?var= or 1=1&conviso=3

Para testar parâmetros POST usamos o argumento -P e o argumento -h seria o local onde receberia o POST.

Exemplo:

-h ‘http://site.com/index.jsp ‘ –P ‘var=!&var2=!&var3=teste’

Prova de Conceito

Para testar a ferramenta vamos usar o DVWA. Com o DVWA rodando vamos alterar o Security Level para Low no menu Security Level.

Antes, precisamos do Cookie da sessão do DVWA, pois para explorar o XSS preciamos estar autenticado na aplicação. Portanto logue no sistema e salve o “cookie jar”. Para isso podemos usar o plugin Export Cookie do firefox.

Tendo o Cookie da sessão em mãos definimos um alvo. Agora vamos explorar um reflected XSS na url  http://localhost/dvwa/vulnerabilities/xss_r  executando o seguinte comando:

$ ./0d1n -h ‘http://localhost/dvwa/vulnerabilities/xss_r/?name=!‘ -p payloads/list.txt -f response2find/find.txt -c cookies_dvwa.txt -o dvwa

Para analisar o resultado abrimos o arquivo "tables/hammer.html".


Nas linhas da tabela da Figura 2 podemos ver o padrão que buscamos no conteúdo da página e clicando nela podemos identificar uma requisição onde o payload XSS foi executado e demonstra que a aplicação é vulnerável a XSS conforme a Figura 3.

Figura 2 

Figura 3

Um pouco sobre o código fonte

Com uso simples de "sockets" podemos nos comunicar usando protocolo HTTP, automatizando o envio de entradas e analise das respostas.

Vamos analisar o código fonte do programa em "spider.c" (linha 46) onde é feito a  construção da request com libCurl usando macros para setopt.

// injeta payload
    make=payload_injector( (POST?arg[4]:arg[0]),line,old);
    curl = curl_easy_init();
    curl_easy_setopt(curl,  CURLOPT_URL, POST?arg[0]:make);
// caso seja post
     if(POST)
      curl_easy_setopt(curl, CURLOPT_POSTFIELDS, make);
// escreve o "response" na memória
    curl_easy_setopt(curl,  CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
    curl_easy_setopt(curl,  CURLOPT_WRITEDATA, (void *)&chunk);
// caso seja definido useragent
    if(arg[6]!=NULL)
    {
     curl_easy_setopt(curl,  CURLOPT_USERAGENT, arg[6]);
    } else {
     curl_easy_setopt(curl,  CURLOPT_USERAGENT, "Mozilla/5.0 (0d1n v0.1) ");
    }
 // para comprimir os dados e ganhar desempenho
    curl_easy_setopt(curl,  CURLOPT_ENCODING,"gzip,deflate");
// caso queira usar cookiejar
    if(arg[3]!=NULL)
    {
     curl_easy_setopt(curl,CURLOPT_COOKIEFILE,arg[3]);
     curl_easy_setopt(curl,CURLOPT_COOKIEJAR,arg[3]);
    } else {
     curl_easy_setopt(curl,CURLOPT_COOKIEJAR,"odin_cookiejar.txt");
    }
    curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1);
//caso queira carregar um certificado
    if(arg[7]!=NULL)
    {
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1);
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);
     curl_easy_setopt(curl, CURLOPT_CAINFO, arg[7]);
    } else {
     curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,0);

Na linha 104, temos uma busca pela string de "response2find/*" dentro do response, repare que não usamos a função strstr(), e sim bitap, que procura uma substring aproximada a de um determinado padrão.

if(chunk.memory && bitap_search(chunk.memory,line2))

Conclusão

Concluímos então que com a simplicidade dessa ferramenta, podemos facilmente entender o funcionamento de um teste de entradas de uma aplicação de web, ver as etapas do teste de forma transparente. 


Autor do Post

Antonio Costa "Cooler_" é desenvolvedor em ASM,C,Common Lisp,Perl e outras linguagens, foi um dos escritores da e-zine cogumelo binário,é um dos fundadores do grupo de estudo e pesquisa BugSec, já palestrou em alguns eventos como OWASP,YSTS e Bsides, Nas suas horas livres gosta de tomar todynho e colecionar gibis, brinca com microcontroladores AVR e eletrônica, apesar de ser perna de pau nunca recusa uma boa pelada dia de domingo.

terça-feira, 6 de novembro de 2012

WAF - Criando assinaturas com o ThreadFix

Neste artigo iremos abordar como utilizar a ferramenta ThreadFix [1] para auxiliar no gerenciamento de Web Application Firewalls e demonstrar a criação de regras (assinaturas) a partir de relatórios de scanners automatizados. Para isso, além do ThreadFix v.1.0.1, iremos utilizar também o WAF BIG-IP ASM 11.1.0 [2] da F5 e também o Arachni v0.4.1.2 [3] como nosso scanner de vulnerabilidades em aplicações web.


O ThreadFix é uma ferramenta que auxilia no gerenciamento de vulnerabilidades de software através da agregação de informações, criação de assinaturas e geração de virtual patches para facilitar um melhor controle na manutenção das vulnerabilidades das suas aplicações. Existem duas formas de download na página do projeto (zip e war). Neste tutorial iremos utilizar a versão .zip que basta apenas extrair e rodar o arquivo de inicialização threadfix.sh (ou threadfix.bat dependendo do sistema que estiver sendo utilizado) para inicializar o programa. Após isso, o script irá abrir automaticamente seu navegador padrão na seguinte URL: https://localhost:8443/threadfix/.


Você provavelmente irá receber um alerta do certificado SSL, que é gerado na primeira vez que você executa o ThreadFix e por isso é necessário adicionar a sua lista de certificados confiáveis para continuar. As credenciais de login são user para usuário e password para senha, simples não?

Figura 1 - Tela de login do ThreadFix




Se estiver implantando o ThreadFix em um ambiente de produção ou que seja acessível pela rede, é recomendado trocar imediatamente o usuário. Para isso, basta acessar o menu Configuration > Manager Users e adicionar o novo usuário. Não se esqueça de remover o usuário user depois de criar o novo!




Figura 2 - Criando um novo usuário

Feito isso, iremos agora adicionar o nosso Web Application Firewall. No menu WAFs existe a opção de adicionar o seu WAF, onde adicionaremos o BIG-IP ASM. Você só precisa definir um nome e escolher o tipo. Atualmente é possível adicionar os seguintes WAFs no ThreadFix:
  • BIG-IP ASM
  • DenyAll rWeb
  • Imperva SecureSphere
  • Snort
  • ModSecurity



Figura 3 - Adicionando um WAF no ThreadFix

Após adicionado o WAF, iremos adicionar a aplicação que será protegida e o scanner que será utilizado. Para adicionar uma aplicação, é necessário criar uma equipe primeiro, que é o grupo de pessoas responsáveis pela aplicação. Caso não tenha nenhuma equipe criada ainda, na página inicial do sistema é possível criar uma nova equipe através do link “Add Team”.

Figura 4 - Adicionando equipes no ThreadFix

Feito isto, agora você pode adicionar a sua aplicação no link “Add Application” dentro da sua equipe. Para a aplicação é necessário definir Nome, URL e o WAF (aquele que criamos anteriormente)

Figura 5 - Adicionando aplicações no ThreadFix

Feito isto, iremos agora importar o log da análise do Arachni feita na aplicação que será protegida pelo nosso BIG-IP ASM para o ThreadFix. A Arachni foi scanner de vulnerabilidades escolhido para este tutorial, mas também é possível utilizar diversos outros scanners para criar as regras automatizadas. Segue abaixo uma tabela retirada diretamente do site do ThreadFix que mostra os diversos scanners suportados bem como seu nível de maturidade na integração com a ferramenta:

Scanner NameVersionAlphaBetaStableVendor-supported
Acunetix WVS
Arachni0.4.x
Burp Suite1.4
HP WebInspect9.10
IBM Rational AppScan8.0 - 8.6
Mavituna Security Netsparker
OWASP Zed Attack Proxy1.3.2
Skipfish2.08
Tenable Nessus4.4
Qualys WAS
Veracode
WhiteHat Sentinel
w3af

Tabela 1 - Scanners que podem ser utilizados no ThreadFix

Para adicionar o log do Arachni, é necessário estar na página da sua aplicação e escolher a opção “Upload Scan”, selecionar o scanner utilizado (neste caso Arachni) e clicar no botão “Add Channel”. Após clicar em “Add Channel” irá aparecer a opção de escolher um arquivo para realizar o upload (o resultado do scan).

Figura 6 - Realizando o upload de um scan

Dependendo do tamanho do arquivo, pode demorar um pouco para que ele seja processado pelo ThreadFix. Lembrando que o resultado da análise do scanner deve estar em XML para que o parser possa ser feito e as regras para o WAF possam ser criadas corretamente. Depois de adicionado o scan, é assim que ele irá aparecer no ThreadFix:

Figura 7 - Inclusão de scans das aplicações

Caso o resultado do scan possua vulnerabilidades como XSS, SQL Injection, entre outras onde seja possível gerar assinaturas para o WAF utilizado, então você pode gerá-las e adicionar a política do seu site. Para isso, basta ir no menu WAFs, selecionar o WAF criado e clicar no botão Generate WAF Rules que as assinaturas serão criadas automaticamente e exibidas logo abaixo na página:

Figura 8 - Geração de assinaturas do WAF a partir do resultado do scanner

Neste caso, ele criou duas assinaturas contra XSS devido às duas vulnerabilidades encontradas no scanner na Figura anterior. Com as assinaturas em mãos, você pode agora baixá-las e importá-las para o seu WAF e adicionar as assinaturas em uma política já existente ou criar uma nova política para sua aplicação e adicioná-las. Lembrando que as assinaturas aqui geradas são unicamente baseadas no resultado do seu scanner. Ou seja, elas não são suficientes para proteger sua aplicação e por isso ainda é necessário que um analista configure corretamente a fim de retirar falsos positivos e realizar o processo de tunning.

No ASM, no menu Application Security > Security Policies, existe a opção de importar políticas caso deseje iniciar uma nova política ou tenha modificado uma política existente e esteja atualizando-a. 
Figura 9 - Importando as regras para o ASM

Feito isto, você irá adicionar as novas assinaturas à política da sua aplicação de acordo com as vulnerabilidades que foram encontradas pelo scanner de vulnerabilidades, tornando-a assim mais eficiente e permitindo que a equipe de desenvolvimento tenha mais tempo para corrigir as falhas encontradas.

O gerenciamento de WAFs é um processo trabalhoso e demorado. Este artigo visa apenas auxiliar o analista na criação das regras utilizando uma abordagem diferente. Muitos Web Application Firewalls já vem com uma lista de assinaturas pré-definidas que podem ser adicionadas a política de cada aplicação e vai depender do trabalho do analista para que elas possam ser configuradas corretamente.


[1] - http://code.google.com/p/threadfix/

[2] - http://www.f5.com/products/big-ip/big-ip-application-security-manager/overview

[3] - http://arachni-scanner.com/



Autor do Post

Magno (Logan) Rodrigues é lider do capítulo da OWASP na Paraíba e especialista em Segurança da Informação. Estudou Segurança e Forense Computacional nos EUA e tem interesse em artes marciais e investimentos. Gosta de escutar música e tomar caipirinha na praia nas horas vagas.