Criando um HotSite com GIMP

Criando um HotSite com GIMPO Gimp, GNU Image Program, é o editor de imagens principal do projeto GNU. Além de uso em design gráfico ele também pode ser uma mão na roda na hora de desenvolver projetos para a Web.

Para demonstrar alguns recursos interessantes deste excelente Software Livre, vamos criar um hotsite, um tipo de página muito comum em ações de propaganda e excelente modelo para página de aterrissagem – aquelas que recebem visitantes que acabaram de clicar em um anúncio. Os hotsites são essencialmente visuais, por isso boas imagens, um editor gráfico profissional e muito talento fazem grande diferença na hora de produzir este tipo de trabalho. Como nosso objetivo é aprender recursos do Gimp, vamos usar um layout bem minimalista.

CLIQUE AQUI para acessar a matéria completa.

Data: nov. 2013
Fonte: sejalivre.org

Auditando Aplicações: Análise Estática de Códigos

Cada vez mais serviços estão sendo direcionados para plataforma web, sendo assim acabamos ficando dependentes ainda mais destas aplicações. Estes sistemas tem que ser cada vez mais onipresentes (quero acessá-los de qualquer lugar – cloud) confiáveis (quero que ele faça o que ele precisa fazer) e ágeis (quero que façam isso rápido!).

Qual a consequência disto? A consequência imediata é: sistemas cada vez mais complexos. Quando digo complexo não me refiro tão somente a complexidade do código fonte ou o seu desenvolvimento, mas também a complexidade inerente ao serviço em si. Cada vez mais APIs, cada vez mais plugins, cada vez mais sistemas interconectados e interdependentes.

Uma vez que a complexidade entrou na equação ela traz o seu efeito colateral: situações inesperadas.  Quando temos um ciclo de vida em nossa aplicação que não contempla o devido cuidado com segurança, temos implicações de diversos níveis. A maior delas é que em geral problemas que a primeira vista são simples e pequenos, acabam se tornando  verdadeiros pesadelos.

Análise Estática do Código consiste basicamente em antever problemas de segurança efetuando uma auditoria no código, sem executá-lo. Isso pode se tornar uma tarefa muito trabalhosa, especialmente quando o desenvolvedor não tem experiência com segurança e se não existe um framework de desenvolvimento seguro em uso no projeto.

As aplicações web são alvos constantes de ataques, quase que 24 horas por dia. Temos estatiscas de que muitas vezes, 60% do tráfego diário que chega a um website é gerado por bots que em sua grande maioria estão procurando por scripts vulneráveis para efetuar ataques, comprometer o servidor e a aplicação e fazê-la parte de sua rede de zumbis. Não seria nada legal ter seu e-Commerce em uma lista de hosts que estão disseminando Malwares para os usuários. Isto pode comprometer gravemente seus negócios.

Para auxiliar desenvolvedores neste árduo processo de análise estática, temos algumas aplicações muito interessantes e que podem realmente trazer a tona, muitas vezes problemas de segurança que não eram imaginados durante o desenvolvimento. Talvez aquele “warning” que seu compilador cuspiu na tela e você pensou “ah mas é apenas um warning, não tem nada de grave ai..” esconda muito mais do que imagina J

RIPS – Analisador Estático de vulnerabilidades em código fonte de Scripts PHP

RIPS é uma ferramenta escrita em PHP para encontrar vulnerabilidades em aplicações PHP utilizando o conceito de análise estática do código. Utilizando tokenização e parseando todos os arquivos de código PHP, ele consegue transformar seu código fonte PHP em program model e detectar sinks sensíveis (pontecialmente funções vulneráveis) que poderiam ser manipuladas por um userinput (influenciada por um usuário malicioso) durante o fluxo do programa. Além disto, baseado  na estrutura de output de uma vulnerabilidade encontrada, RIPS também oferece um framework integrado de code audit  para que você possa fazer uma análise manual.

Entre algumas das features apresentas pelo RIPS temos:

RIPS consegue identificar por padrão diversas vulnerabilidades em sua aplicação, em sua grande maioria as listadas no OWASP Top 10 são identificadas. Segue abaixo uma pequena lista das principais vulnerabilidades identificadas pela aplicação:

  • Code Execution
  • Command Execution
  • Cross-Site Scripting
  • Header Injection
  • File Disclosure
  • File Inclusion
  • File Manipulation
  • LDAP Injection
  • SQL Injection
  • XPath Injection

A interface de auditoria de código do RIPS consiste de algumas funcionalidades muito interessantes, entre elas podemos citar:

  • Estatísticas referentes ao Scans e as vulnerabilidades da aplicação
  • Linhas de código vulneraveis são agrupadas
  • Descrição das Vulnerabilidades com exemplo de código, PoC e patch
  • Engine que permite a criação do Exploit para explorer a vulnerabilidade encontrada
  • Exibição gráfica de arquivos (conectada pelos includes)
  • Exibição gráfica de funções (conectadas pelas calls)
  • userinput list (parámetros da aplicação)
  • visualização do código fonte com destaque em funções e parametros

Entre muitas outras que permitem que você faça o debug da aplicação utilizando inclusive expressões regulares. Efetuando a análise estática do código com RIPs, você consegue rapidez ao executar a análise (executar uma análise estática manualmente pode ser dolorosamente demorado).  Você consegue identificar blind/non-blind SQL exploitation, detectar backdoors em seu código entre outras vantagens.

Aplicação sendo analisada – Temos os resultados Preliminares com o número de funções vulneráveis.

Visualização gráfica dos Arquivos  – Interligação ocorre através dos Includes.

Engine permite criar Exploits para gerar PoC da vulnerabilidade.

Download + Instalação

O Download pode ser feito a partir do site http://rips-scanner.sourceforge.net

Para utilizar o RIPs você precisa primeiramente de um webserver local com suporte a PHP (tendo em vista que você é um desenvolvedor PHP, você já deve ter um J ).

Feito isto basta baixar a ultima versão estável , extrair os arquivos em seu Document Root do servidor web e acessar a interface, disponível em: <http://ip_servidor/rips>, e iniciar as análises.

Data: out. 2013
Fonte: y2h4ck.wordpress.com

Conheça o Andrubis, uma solução para executar Apps Android de forma simples em uma sandbox

Anubis é um projeto on-line, que foi desenvolvido pelo Laboratório de Sistemas de Segurança Internacional, e se concentra na análise de binários para os mais diversos tipos de sistemas operacionais. A área de segurança on-line, foi primeiro fornecendo capacidades de análise executáveis ​​do Windows PE, mas a partir de meados de 2012, começou a apoiar os apps Android também.

O módulo Android, que vem sob o codinome Andrubis, oferece a seus usuários uma maneira simples de executar aplicativos Android em uma sandbox em pleno funcionamento, que faz vários testes e gera um relatório detalhado para o arquivo APK carregado. Cada relatório é dividido nas seguintes categorias:

1. Informações gerais; 2.Static Analysis Report

Atividades:

  • Serviços
  • Receptores de radiodifusão
  • Permissões necessárias
  • Permissões utilizadas
  • Características
  • URLs.

3. Dynamic Analysis Report: os relatórios estão disponíveis em ambos os formatos HTML e XML. Captura de dados PCAP também são fornecidos para download.

Com informações de Net-Security e Under-Linux.

Data: out. 2013
Fonte: revista.espiritolivre.org

A importância da linguagem Python para profissionais de segurança

07-06-2013_python-logo-master-300x282

De acordo com algumas observações elementares e outras mais relevantes feitas por Adrian Birsan, pesquisador de segurança do InfoSec Institute, a linguaguem Python é bastante valorosa e agrega um conhecimento muito grande a todos os que se destinam a estudá-la, e posteriormente, colocar em prática esse conhecimento que passaram a adquirir.

Como muitos de nós somos sabedores, Python é uma linguagem de programação orientada a objeto interativo. Ela é muito fácil de aprender e é uma linguagem de alto nível, além de ser extremamente poderosa. Python pode ser executada em Windows, Linux, UNIX, Mac OS X e está livre para usar (mesmo para fins comerciais), uma vez que é baseada em uma licença open source. Ela pode ser usada para escrever ferramentas e scripts personalizados para fins especiais, ao realizar a avaliação de um aplicativo de segurança.

Programação e Disponibilidade de Scanners

Existem scanners de vulnerabilidade comerciais disponíveis no mercado, que podem ser utilizados para a descoberta de vulnerabilidade. No entanto, tais scanners de vulnerabilidade têm suas próprias limitações e até mesmo os scanners mais avançados, por certas vezes, não são capazes de fornecer uma cobertura completa. Isso faz com que o trabalho de um testador de penetração torne-se um pouco mais difícil. Este é o momento onde os scripts / ferramentas personalizadas surgem. Eles ajudam a preencher as lacunas criadas pelo scanner, já que eles são personalizados para atender a aplicação de destino.

Deve-se notar aqui, que todas as ferramentas personalizadas escritas para finalidade específica usando linguagens como Python, não devem ser um substituto para scanners de vulnerabilidade, e, idealmente, devem ser utilizadas para além desses scanners, com a intenção de obter os melhores resultados.

Importância das Funcionalidades de Python para os Pentesters

O objetivo deste artigo é apresentar aos testadores de penetração de aplicações Web com Python e explicar ao mesmos como Python pode ser usado para fazer solicitações HTTP personalizadas – que por sua vez, podem ser expandidas para o desenvolvimento de scripts / ferramentas personalizadas que podem ser desenvolvidas para condições especiais, onde os scanners falharem. Os leitores serão introduzidos em bibliotecas, que podem ajudar um testador de penetração a fazer solicitações HTTP personalizadas, contando com a utilização do Python.

Configurando o Ambiente

Neste artigo, Birsan não irá entrar em detalhes sobre a configuração do ambiente. Se você é um usuário de Linux ou Mac, as chances são altas de que você não precisará instalar Python, uma vez que normalmente ele vem pré-instalado. Para verificar se o Python está instalado em seu sistema, inicie o prompt de comando e digite “python”; se Python vier realmente pré-instalado, o interpreter vai mostrar imediatamente.

Os usuários do Windows podem fazer o download do instalador do URL acima mencionado, e instalar o Python. Para tornar ainda mais fácil o uso de Python, os usuários do Windows podem adicionar Python para o path do sistema, editando uma variável de ambiente. Uma vez feito isso, os usuários podem simplesmente sair do prompt de comando – independentemente do diretório de trabalho atual e ainda serem capazes de invocar o interpreter Python.

Módulos Python para Solicitações HTTP

Python tem vários módulos que podem ser usados ​​para gerar solicitações HTTP personalizados. Nós vamos cobrir dois desses módulos que podem ser usados ​​para o desenvolvimento de scripts personalizados , e pode disparar as nossas cargas , juntamente com a realização das mesmas ações que um testador de penetração realiza manualmente – a única diferença sendo , isso é feito por um script em vez de um manual tentativa .

httplib

Este módulo foi renomeado para httplib.client no Python 3; no entanto uma vez que neste artigo está sendo usada a versão 2.7 como exemplo, o módulo será mantido mesmo como httplib. Normalmente, este módulo não é usado diretamente, mas ao invés do módulo urllib, ele é usado internamente para fazer solicitações HTTP. No entanto, os usuários interessados ​​podem sempre usá-lo.

Para podermos enviar pedidos personalizados, é necessário seguir os seguintes passos:

1. Importar a biblioteca – Antes de utilizar uma biblioteca, é preciso importá-la. Uma vez que neste caso, vai ser utilizada a biblioteca httplib para enviar solicitações HTTP e receber as respostas de volta, é preciso importá-la.

2. Criar uma conexão – Uma vez importada, é possível começar a usá-la imediatamente. Dessa forma, é necessário criar um objeto de conexão em primeiro lugar. Isto pode ser conseguido usando o método httpConnection().

3. Enviar um pedido HTTP – até agora, nenhum pedido HTTP foi enviado. Para fazer isso, é preciso usar o método request (). Isto é, quando o pacote HTTP que foi criado for enviado pela rede para o servidor web de destino, utilizando o método passado como um argumento (no nosso caso GET) .

4. Obter uma resposta HTTP – Agora que já foi enviado o pedido, podemos usar getresponse () para obter a resposta do servidor. Este método irá retornar um objeto de resposta HTTP de volta, e a partir do momento em que ler, vai enviar a saída gerada pelo servidor.

urllib2

urllib2 é um pouco diferente da biblioteca httplib quando se trata de criar e enviar solicitações HTTP. Nesse caso, não há a necessidade de abrir uma conexão e, ao invés de importar, nós podemos fazer um pedido diretamente. Isto é muito mais simples quando comparado com httplib. Sendo assim, sugere-se que os usuários façam uso de urllib2 como é recomendado até mesmo pela própria comunidade Python.

Ressaltando que os leitores devem passar a documentação do Python, para entender quais as funções são suportadas pelo módulo urllib2 no sentido de explorar todo o potencial desta biblioteca, e utilizá-lo durante a criação de suas próprias ferramentas ou scripts. Na sequência, vem uma ferramenta de injeção SQL de amostra que foi criada apenas para fins de demonstração. Ela atinge a página de login do site e injeta um “simple payload”:

1. import urllib

2. import urllib2

3. location = “http://test_target.site/login.aspx”

4. values = {“username”:”‘”,”password”:”password”,”btnSubmit”:”Login”}

5. data = urllib.urlencode(values)

6. req = urllib2.Request (location,data)

7. response = urllib2.urlopen (req)

8. page_data = response.read()

9. print page_data

Facilidade na Projeção de Ferramentas Personalizadas

O script acima é apenas para mostrar a facilidade com que é possível criar ferramentas personalizadas. Além disso, esse script está longe de ser perfeito e vai precisar de muita modificação antes de ser utilizado na prática. Ele só aciona um pedido, enquanto que na vida real a ferramenta deve disparar várias solicitações por iteração sobre a “payload list”. Dessa forma, ele fica como uma espécie de “exercício” para os leitores a percorrer bibliotecas e as funções que ele suporta, para entender como eles podem criar suas próprias ferramentas.

Trabalhando com Cookies e Headers HTTP

A ferramenta da vida real também terá que cuidar do processo de gerenciamento de sessão e, portanto, precisa também lidar com os cookies e outros headers HTTP como referências, tipos de conteúdo, dentre outros elementos. Birsan disse ainda que também precisará iterar sobre a lista de URLs repetidamente, até que todas as nossas cargas sejam disparadas, uma por uma, para cada parâmetro, a fim de assegurar a cobertura.

Considerações Executivas

Python é uma linguagem fácil de aprender, que pode ser muito útil para os testadores de penetração criarem suas ferramentas personalizadas. Assim, os usuários podem criar códigos reutilizáveis ​​usando orientação a objetos do Python, que pode ajudá-los a criar classes que podem ser tanto herdadas quanto estendidas. Python não só pode ser usado para scripting rápido para alcançar pequenas tarefas de automação, mas também para criar vulnerabilidades de classe empresarial, nos processos de digitalização do cotidiano.

Com informações de Net-Security e Under-Linux.

Data: out. 2013
Fonta: revista.espiritolivre.org

Facilidades que o Ubuntu oferece para programadores

Algumas facilidades que o Ubuntu oferece para programadores

Algo que está em crescimento constante é o mercado de desenvolvimento web, desde criações de simples sites até complexos sistemas de gerenciamento e gestão, com isso a necessidade de profissionais capacitados é fundamental para que o ritmo não se quebre, e sempre sai nos noticiários como o mercado está remunerando bem. Ou seja, se você tem interesse de ingressar nessa área, saiba quais são as vantagens que o Ubuntu ou qualquer outro sistema Linux podem oferecer.

Unity te poupa MUITO tempo

Facilidades que o Ubuntu oferece para programadores

Realizar ações através do teclado o torna mais produtivo. Imaginemos a seguinte situação: Estou procurando uma pasta no qual estão os arquivos do meu trabalho de faculdade, porém como temos diversas pastas dentro de pastas, passamos aproximadamente de 10 a 20 segundos procurando com o mouse clicando (Home -> Documentos -> Trabalhos -> Faculdade -> TCC -> Projetos -> Site -> index.html). Pode parecer ridículo, mas pare e pense quantas vezes já aconteceu isso? Claro que também podemos pensar em deixar a pasta em um lugar mais simples como na Área de trabalho por exemplo, mas deixando exposta podem outras pessoas modificar ou deletar seus arquivos importantes.

O sistema de busca do Unity é poderosos, através do ‘Command‘ do teclado ele abre rapidamente, e digitando apenas palavras chave já encontramos diversos arquivos, poupando tempo precioso.

Conhecer os atalhos e comandos do terminal é fundamental

Existem alguns comandos simples que fazem uma enorme mágica quando navegamos por pastas. Vejamos alguns:

  • Cd: Entra na pasta selecionada. | cd ~: Volta a pasta raiz. | cd ../: Volta a pasta anterior.
  • Ls: Lista os arquivos da pasta em que se encontra.
  • cat: Mostra o conteúdo do arquivo.
  • Mkdir: Cria uma nova pasta.

Temos diversos outros, mas considero esses fundamentais. Imagine você toda hora que quer criar uma nova pasta tem que clicar com o botão direito do mouse e selecionar a opção de criação? Se ao invés disso fizesse ‘mkdir projetos‘ e pronto. Fácil não?

Estabilidade, velocidade e ferramentas = facilidades

Existem diversas ferramentas gratuitas excelentes, veja por exemplo a quantidade de editores e IDE’S que temos, basta entrar na central de programas e ir na categoria ferramentas do desenvolvedor: Geany, Bluefish, Eclipse, Ninja IDE, Sublime Text, Eric IDE, Vim, entre outros. Em sua grande maioria estáveis, rápidas, maleáveis, com diversos plugins que turbinam o processo. Além disso há diversos outros projetos open source que vão agregando gradativamente durante o desenvolvimento.

Se tem conhecimento sobre programação, existe os testes, e quando rodados em sistemas Linux é muito mais rápido do que no Windows por exemplo. E se tem diversos projetos que não podem se misturar, trabalhar com Virtual Machine junto com Vagrant é excelente no Linux.

Estes são alguns exemplos. Diga nos comentários outras facilidades que encontra diariamente em seu processo de desenvolvimento.

Data: out. 2013
Fonte: ubuntudicas.com.br