Simulando redes Cisco com Dynamips

Dynamips é um emulador de roteadores Cisco Open Source, que funciona com arquitetura cliente – servidor. O modulo cliente é o Dynagen, que tem como função interpretar o arquivo de configuração da rede (arquivo com extensão .net, pode ser gerado manualmente ou usando o GNS3) e envia-lo ao servidor Dynamips para queo cenário seja emulado.

Instalação do Dynagen

Para instalar o Dynagen temos duas alternativa:

Usar o instalador de pacotes padrão de sua distribuição Línux. Exemplo:

Para derivados de Red Hat (Fedora, Centos, Red Hat):

#yum install dynagen

Para distribuições baseada em Debian:

#aptitude install dynagen

Caso a sua distribuição não tenha o Dynagen ou o Dynamips em seu repositório, podemos obter os pacotes  AQUI.

Faça o download do código fonte do Dynagen e execute os seguintes passos:

  1. Descompacte o pacote que contem o código fonte;
  2. Abra o terminal;
  3. vá ate a pasta que contem os fontes;
  4. Execute o arquivo configure. (Para executa-lo, digite ./configure, caso não tiver permissão execute: chmod +x configure, e em seguida ./configure);
  5. Se não ocorrer erros compile o Dynagen com make (isso pode demorar alguns minutos);
  6. Finalmente instale com make install;

Para usar o Dynamips não é necessário instala-lo (pois ele já vem compilado). Basta baixar o arquivo binário, dar permissão para execução e pronto:

$chmod +x dynamips.bin

Preparando o laboratório

O primeiro passo para montar um laboratório com o Dynamips é ter as imagens do IOS dos roteadores que deseja simular. Caso você não tenha as imagens do IOS do roteador, você pode fazer igual a um amigo do cunhado de uma conhecida do primo da minha vizinha e procurar no 4shared ou em torrent no isoHunt. Obtendo as imagens temos que criar um cenário para simular.

Criando cenários  para o Dynamips

Para criar cenários precisamos criar um arquivo de configuração com extensão .net. A estrutura desse arquivo é essa (Atenção os colchetes são para da sintaxe do arquivo!!! Os valores em itálico são variáveis e em negrito são constantes):

[endereço do host que esta executando o Dynamips]

[[ porta que o servidor Dynamips está utilizando ]]

Um arquivo pode conter vários modelos de router, para cada modelo deve se identificar o nome do modelo e a imagem.

[[Modelo do Router que deseja simular]]

image=path da imagem

[[ROUTER nome_do_route]]

model = modelo do router

console = porta para acesso via telnet

aux = porta auxiliar para acesso via telnet

Para fazer conexões entre os Router da rede devemos especificar as interfaces dos router que vamos usar para o conexão. exemplo:

e0/0 = R2 e0/0

Esse exemplo conecta a interface ethernet 0/0 do router que estamos configurando com outro router chamado R2.

Apos terminar de descrever o cenário desejado, devemos iniciar o Dynamips. Execute com a seguinte sintaxe:

$./dynamips -H 7200

-H => Habilitado o modulo hipervisor;

7200 => A porta que o servidor usará.

Com o dynamips rodando podemos executar o dynagem para enviar o cenário:

$dynagen CENARIO.net

Se não ocorrer nenhum erro no arquivo do cenário devera aparecer a seguinte mensagem do shell:

Network successfully loaded

Dynagen management console for Dynamips and Pemuwrapper 0.11.0
Copyright (c) 2005-2007 Greg Anuzelli, contributions Pavel Skovajsa

=>

Digite o comando list para lista os router da rede.

Para acessar um router da rede bastar usar o cliente Telnet:

$telnet 127.0.0.1 port_do_router

Anúncios

Tutorial sobre o wireshark

O Wireshark é um sniffer multi-uso que pode ser usado tanto para ver o trafego em portas USB como principalmente para o trafego de redes. É um software baseado na lib-pcap (ou winpcap para Windows) e pode ser encontrado aqui .

Usando o wireshark
É provavelmente o sniffer de redes mais usado do mundo, isso provavelmente se deve aos seguintes fatos:

  • É um sniffer multiplataforma pode ser executado em ambiente Windows ou Unix LIke;
  • Não necessidade de nenhuma configuração complexa para seu funcionamento;
  • Tem uma interface gráfica amigável;

Para iniciar um captura você deve escolher qual interface de rede será usada para a captura do trafego daa rede (em LInux o wireshark deve ser executado por um usurio com poderes de root, pois ele ira alterar o modo da interface de rede escolhida para promiscuo – nesse estado o sistema não apenas captura os pacotes direcionados para sua placa de rede, como tambem todos os outros pacotes que estiverem trafegenado pela rede no momento).

Para iniciar uma nova captura vá em Capture->Interface, escolha uma interface de rede e clique em start.

Para parar a captura vá em Capture->stop.

Filtros

Além das característica s que cita anteriormente outro atrativo do wireshark é a facilidade de criar filtros para os pacotes capturado. Essa aplicação é util para criação de estatistas ou analise do trafego de rede.

Exemplo de alguns filtros comuns são:

ip.src == ip1 and  ip.dst == ip2

Só exibe os pacotes que tiveram a ooriigem em ip1 e destino em ip2

tcp.port == porta1

Lista todos os pacotes tiveram origem ou destino na porta1.

http

Lista todos os pacotes http .

Você também pode  usar a função Expression para criar filtros mais específicos.

Analise

Se vocẽ quiser analisar o fluxo de informação  de maneira mais detalhada pode usar as opções Analyze -> Follow TCP Stream ou Follow UDP Stream.

Estatisticas

No wireshark é possível criar basicamente 2  tipo de fluxo que mostra a direção do fluxo de rede e gráfico de trafego.

Para criar um gráfico de fluxo clique Statistics-> Flow grafics.

Apagar senha de Root no Mysql

Se vocẽ instalou o mysql e ficou um certo tempo se usa-lo e acabou esquecendo a senha de root que escolheu durante a instalação, não se desespere, basta seguir os os passos abaixo.

1. Pare o servidor Mysql (caso já esteja rodando):

#/etc/init.d/mysql stop

2. Inicie o servidor Mysql em modo de segurança e use –skip-grant-tables para pular as tabelas de usuario no momento do loggin.

#mysql_safe –skip-grant-tables

3. Execute o cliente Mysql  sem usuário:

$mysql

4. Ao entrar no shell do Mysql, selecione o banco de dados mysql:

mysql> use mysql;

5. Muda o campo senha do usuário root da tabela user:

mysql> update user set password = password(‘novaSenha’) where user=’root’ and host=’localhost’;

6. De um flush para gravar os dados alterados:

mysql> flush privileges;

Pode sair do cliente, reinicie o Servidor e pronto a senha de root esta alterada.

 

 

Usando o Kismet

O Kismet é um poderoso sniffer para rede wi-fi. É uma ferramenta útil tanto por crackers para colher pacotes de uma rede como por um administrador para verificar vulnerabilidade existente. O kismet poder ser baixado AQUI , ou baixando do repositório de sua distro.

Se estiver usando Debian e derivados:

#aptitude install kismet

Se estiver usando Red Hat e derivados:

#yum install kismet

Apos   a instalação deve-se configurar o arquivo kismet.conf da seguinte maneira:

# vim /etc/kismet/kismet.conf

Nesse exemplo eu optei por usar o vim, mas você pode escolher o editor de sua preferencia.

Altere a linha

source=rt8180,wlan0,addme

onde:

rt8180 é o driver da minha placa wireless;

wlan0 é o nome da interface de rede wireless;

addme é o nome que você quer a dar o conexão.

Apos realizar as configurações necessárias, o kismet pode ser executado (lembrete, deve-se executar o kismet sem esta conectado a nenhuma rede wireless):

Os pacotes são armazenados em /var/log/kismet/ para uma analise posterior.

Converterimagem .bin e .cue em .iso

As vezes ao fazer o download de algum arquivo, ele vem no famigerado formato .bin e .cue, esse formato não pode ser montado de maneira simples com o uso do mount (caso do .iso). Quem usa windows pode pode usar a versão full do nero ou outro software com suporte para essa formato.
Para variar existe um ferramenta simples e open-source que pode realizar essa função no Línux, o bchunk.
Você pode baixar o bchunk AQUI .

Também pelo instalar pelo repositorio da sua distro, se estiver usando Debian e derivados basta usar:

#aptitude install bchunk

O modo generico de usar o bchunk é esse:

$ bchunk arquivo.bin arquivo.cue arquivo.iso

Apos algum tempo (depende do tamanho do arquivo), será gerada uma imagem iso, no diretório corrente.

Introdução ao Python

Python é uma linguagem de programação de alto nível[3], interpretada, imperativa, orientada a objetos, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.[1] Atualmente possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation. Apesar de várias partes da linguagem possuírem padrões e especificações formais, a linguagem como um todo não é formalmente especificada. O padrão de facto é a implementação CPython.

A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. Prioriza a legibilidade do código sobre a velocidade ou expressividade. Combina uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros (Django, twisted e etc).

O nome Python teve a sua origem no grupo humorístico britânico Monty Python[4], criador do programa Monty Python’s Flying Circus, embora muitas pessoas façam associação com o réptil do mesmo nome (em português, píton ou pitão).

Por ser uma linguagem interpretada é necessário ter o interpretador Python instalado em seu computador, baixe o interpretador aqui e instale, caso você use alguma distro Línux provavelmente já deve ter o Python instalado.

Para iniciar o interpretador Python abra o terminal e execute:

$ python

Ao executar esse comando o interpretador Python é executado.

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

Por enquanto vamos usar esse ambiente para aprendizado.

Brincando com variáveis

Se você está acostumado com C/C++,  JAVA ou C#, vai achar estranho o uso de tipagem dinâmica. Python tem suporte a todos os tipos nativos do JAVA  (inteiro, número de ponto flutuante, carácter, Strings) e também tem suporte nativo a listas e pilhas (como em LISP). Abaixo vamos ver exemplos de variáveis:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> teste = 5
>>> print teste
5

No exemplo acima nós atribuímos o valor 5 a variável teste. Agora vamos atribuir uma string a variável teste:

>>> teste = ‘alface’
>>> print teste
alface

Agora vamos apelar um pouco, transformando a variável teste em uma lista de Strings:

>>> teste = [‘huguinho’,’zezinho’,’luizinho’, ‘tio-patinhas’]
>>> print teste
[‘huguinho’, ‘zezinho’, ‘luizinho’, ‘tio-patinhas’]

Isso é tipagem dinâmica.

Criptografia de disco em linux

Uma boa pratica de segurança da informação é manter uma partição do disco criptografada, essa prática ajuda a dificultar o acesso do atacante a dados sigilosos. Como mostrei em outra postagem, com acesso fisico no computador alvo é fácil logar como root e ter acesso a todos os dados do sistema. Esse problema é facilmente resolvido com criptografia.
Em Lĩnux existem duas excelentes ferramentas: o Truecrypt com versões disponiveis para windows e Línux, e o dm-crypt que usa o suporte à criptografia do kernel apartir da versão 2.6.
Nesse post vou mostar a maneira mais simples para criar uma partição criptografada usando aes e ripemd160.

Primeiro use o crypsetup para criptografar a partição escolhida. Ele vai pedir para digitar a chave que vc deseja usar para criptografar a partição.

$sudo cryptsetup create label /dev/particao_escolhida

Agora é necessario criar um sistema de arquivo para a nova partição:

#mkfs.ext4 /dev/mapper/crypto

Pronto agora é só montar a partição com mount:

#mount /dev/mapper/label /mnt/

Para monta-la de novo apos reiniciar o sistema é só usar:

#cryptsetup create label /dev/particao_escolhida
#mount /dev/mapper/label /mnt/

Em outro post eu explicarei um pouco sobre o mecânismo e os algoritmos utilizados no cryptsetup.