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

Um pensamento sobre “A importância da linguagem Python para profissionais de segurança

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s