domingo, 14 de dezembro de 2014

Projeto Corba - Enviando comandos remotos

Introdução

No início deste semestre na faculdade recebemos a missão de criar um projeto utilizando os conceitos do CORBA, dentro da matéria de Projetos de Redes e Sistemas Distribuídos.

O fato é que a literatura encontrada foi apesar de não ser tão pouco, era relativamente confusa, e levando em conta a minha falta de habilidade com programação, mesmo sem um trabalho em grupo, a tarefa tornou-se ainda mais complicada.

O trabalho passou por fases nas quais a ideia inicial era aproveitar uma implementação do CORBA já existente dentro do apache, passando por um projeto de caixa eletrônico, um hello world em um momento mais desesperado, e por fim acabou saindo como uma interface para envio de comandos remotos para máquinas Windows.

Este post é especialmente dedicado para aqueles que por ventura estejam enfrentando este mesmo desafio e espero que possa facilitar o trabalho de outros estudantes.

Afinal de contas, WTF é esse CORBA?

CORBA é a abreviado de Common Object Request Broker Architecture, uma arquitetura padrão criada pelo OMG, Object Management Group, não não é Oh My God, com o objetivo de estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Ou seja, é um padrão que tenta tornar simples a troca de dados entre máquinas com diferentes sistemas, buscando esta comunicação de forma transparente ao usuário, fazendo com que o CORBA seja um dos modelos mais populares de objetos distribuídos.

Uma das grandes vantagens que vi durante os estudos sobre o CORBA é o fato dele realmente buscar a integração transparente entre os sistemas, de forma que até mesmo a linguagem de programação dos cliente e servidor podem ser diferentes, característica essa que seus concorrentes como o RPC e RMI não possuem.
Para mais informações sobre o CORBA faça o download do material utilizado na apresentação deste trabalho que está no final da página, além disso uma pesquisa em outros sites é sempre uma boa pedida nesses casos.


Implementação

Partindo para a parte prática do trabalho, que foi onde realmente encontramos as dificuldades, vou descrever como fiz a implementação do código e algumas pequenas alterações também para deixar a ferramenta final mais prática.

Antes de iniciar, gostaria de deixar claro que NÃO ESCREVI ESTE CÓDIGO, eu encontrei ele pronto na internet, o link onde está o código original está nas referências no final do post, tudo o que fiz além da implementação dele foi criar algumas coisas para que seu uso fosse facilitado.

O código em questão foi escrito em Java, seu objetivo é criar um meio para que através de uma máquina Linux, seja possível enviar comandos remotos para uma máquinas Windows, de maneira bem semelhante a um rootkit, porém com um detalhe bastante importante, devido a estrutura desta aplicação, as ferramentas de antimalware não o viram como algo malicioso, ou seja, ela pode se usada de forma incorreta, ter um potencial destrutivo considerável.

Para facilitar aqueles que quiserem implementar este mesmo código, no final do post estarei colocando o link para download de todos os pacotes que utilizei no processo.

Implementando o Cliente - Linux

Para implementação do cliente, utilizei uma máquina virtual com o CentOS 7 instalado, uma das partes chatas do processo é com certeza a instalação do Java, e é justamente neste ponto que vamos iniciar.

1 - Preparando o ambiente
Antes de iniciar a instalação dos componentes para nosso laboratório com o CORBA, recomendo que sejam feitos alguns ajustes no sistema operacional, lembrando que o foco destes ajustes é simplesmente tornar a tarefa mais fácil, de forma que estaremos desconsiderando completamente neste momento recomendações de segurança, uma vez que estaremos desabilitando o firewall e selinux.
Para desabilitar o firewall e evitar que o mesmo seja ativado novamente quando reiniciarmos vamos utilizar o seguinte comando:

# chkconfig firewalld off

Lembrando que o comando acima somente marca o firewall para não ser iniciado no boot, ou seja neste momento ainda estamos com ele ativado, porém como reiniciaremos nossa máquina depois não precisamos nos preocupar com isso.

Agora vamos desabilitar o SELINUX, para isso vamos editar seu arquivo de configuração, no caso eu prefiro utilizar o vim para estas edições, porém ele não está instalado por padrão, caso queira utilizar ele deve primeiro instalar com o comando yum install vim. Para prosseguir com a configuração do SELINUX vamos utilizar os seguintes comandos:

# vim /etc/selinux/config

Após abrir o arquivo de configuração, procure pelo parâmetro SELINUX e coloque o valor como disabled.

Por último vamos atualizar nosso sistema operacional com o seguinte comando:

# yum update

Após concluir todas estas etapas reinicie com o seguinte comando:

# reboot.

Seu sitema agora está pronto para iniciarmos as implementações do CORBA, recomendo que faça o download do pacote contendo tudo o que utilizaremos link abaixo:

https://sourceforge.net/projects/corba-commander/


Após fazer o download descompacte ele com o seguinte comando:

# tar -vzxf corba.tar.gz

Dentro da pasta descompactada você encontrará todos os pacotes que utilizaremos, incluindo o instalador do java.

2 - Instalação do Java
Neste laboratório utilizei o pacote jdk-8u25-linux-x64.rpm disponível para download no site da Oracle.
Para instalação do pacote utilize o seguinte comando:

# yum -y localinstall jdk-8u25-linux-x64.rpm



3 - Implementação do cliente
Após instalado o java, utilizaremos o comando idlj para criar a estrura de stubs e sckeletons da nossa aplicação, primeiro entre na pasta onde estão os fontes e sem seguida execute o seguinte comando:

/usr/java/jdk1.8.0_25/bin/idlj -fall Commander.idl

Após executar o comando você poderá ver que um novo diretório foi criado com o nome de Commander, dentro dele estarão os stubs e sckeletons.
Agora vamos compilar os pacotes do java com o seguinte comando:

Compilando cliente # javac Cliente.java

Compilando servidor
# javac Server.java

Aqui está um dos problemas que encontrei na implementação, quando tentei compilar o cliente no linux e o servidor depois no windows, tive problemas na compilação do servidor, porém quando compilei os dois no linux e mandei para o windows tudo já compilado não tive nenhum problema posterior.

Após compilar, copie tudo para a máquina Windows.


Implementando o Servidor - Windows

Na máquina Windows não precisamos compilar nada, para facilitar a a execução eu criei dois arquivos executávei, um chamado tns.exe e outro Commander.exe.

Ambos os arquivos na verdade são arquivos BAT que após sua criação usei o Advanced Bat to EXE para empacotar, desta forma a execução ficou mais prática, segue abaixo o conteúdo do arquivo tns.exe

@ECHO OFF
SET PORT="2000"

tnameserv -ORBInitialPort %PORT%

Note que o arquivo tns.exe definimos qual é a porta de comunicação e em seguida iniciamos o serviço tnameserv, este serviço é responsável pela comunicação entre nomes do cliente com o servidor, bem parecido com um DNS.

Abaixo segue o conteúdo do Commander.exe

@ECHO OFF
SET CORBA="c:\Corba Project\Commander"
SET PORT="2000"
netsh firewall set opmode disable
cd %CORBA%

java Server -ORBInitialHostlocalhost -ORBInitialPort %PORT%

Dentro do arquivo Commander.exe primeiro temos a desativação do firewall com o comando netsh, em seguida iniciamos nossa aplicação java definindo como porta de comunicação a mesma porta que informamos no tns.exe, no nosso caso 2000.


Executando o Servidor - Windows

O primeiro passo é executar o dentro do servidor o arquivo tns.exe, após sua execução verifique na lista de processos se o tnameserve.exe está em execução. Após confirmado execute o Commander.exe, repare que após executar o Commander.exe o firewall do windows deve ter sido desativado.

Executando o Cliente - Linux

Após confirmada a execução do servidor, na máquina linux execute o Commander.sh com o comando abaixo:

# sh Commander.sh

Informe o IP do cliente e a porta, no nosso caso ficou definida como 2000, e em seguida basta começar a enviar os comandos.

Este script foi criado para facilitar a execução do cliente pois originalmente a cada comando enviado ele encerrava e precisava ser aberto novamente, abaixo segue o conteúdo do script.


echo "Informe o ip/hostname do servidor: "; read SERVER
echo "Informe a porta de conexao: "; read PORT

while true; do
java Client -ORBInitialHost $SERVER -ORBInitialPort $PORT ;

sleep 5;

done;

Demonstração


Downloads

Referências






domingo, 5 de outubro de 2014

Preview do Windows 10 possui Keylogger para ver todos os seus passos

****ESTE ARTIGO É UMA TRADUÇÃO DO SITE http://thehackernews.com/****
****PARA ACESSAR O ARTIGO ORIGINAL CLIQUE NO LINK ABAIXO****



Esta semana, a Microsoft anunciou a próxima versão de seu sistema operacional, chamado WIndows 10, e atravpes de seu programa "Insider Program" liberou o WIndows 10 Technical Preview a fim de coletar feedback dos usuários e ajudar a moldar a versão final do sistema operacional, mas existe algo realmente ERRADO!

"Dentro do programa Insider da Microsoft você vai ter todas as últimas previews Windows eles estiverem disponíveis. Em troca, nós queremos saber o que você pensa. Você vai ter um aplicativo fácil de usar para nos dar o seu feedback, o que ajudará a guiar-nos ao longo do caminho." Retirado do site da Microsoft.

Bem, quantos de vocês realmente leram os "Termos de Serviço" e documentos de "Política de Privacidade" antes de baixar a versão preview do Windows 10? Eu acho que nenhum de vocês, porque a maioria dos usuários têm o hábito de ignorar que os parágrafos longos e basta clicar em "I Agree" e depois em "Next", que não é uma boa prática.

Você realmente sabe quais permissões você concedeu a Microsoft através da instalação grátis da edição Windows 10 Technical Preview? É claro que você não faz. Bem, adivinhem, você vendeu tudo, inclusive sua alma!!

PERMISSÃO PARA KEYLOG

Se você não tem conhecimento da política de privacidade da Microsoft, então agora você deve prestar atenção para o que a política diz. A Microsoft está observando cada movimento seu no mais recente Windows 10 Technical Preview, Graças a partes da política de privacidade da Microsoft, o que indica que a gigante da tecnologia está usando um keylogger para coletar e usar os dados dos usuários de diversas formas sem que o usuário perceba.

"Se você abrir um arquivo, podemos coletar informações sobre o arquivo, o aplicativo usado para abrir o arquivo, e quanto tempo leva para ser usado para fins tais como a melhoria do desempenho, ou [se] inserir um texto, nós pode coletar caracteres digitados, podemos coletar caracteres digitados e usá-los para fins tais como a melhoria do autocomplete e verificação ortográfica", afirma a política de privacidade.

Essencialmente, aceitando a política de privacidade do Windows 10 você está permitindo a Microsoft rastrear os arquivos e registrar suas teclas. Isso significa que, se você abrir um arquivo e digitar algo, a Microsoft tem acesso ao que você digita e as informações do arquivo dentro. 

Isso poderia ser provavelmente uma das razões pelas quais a empresa insistiu que o Windows Technical Preview não fosse instalado em computadores que são usados ​​todos os dias.

Recolhimento de outros dados 

Mas espere! Espere! Não apenas isso, a Microsoft diz que pode recolher ainda mais dados. A empresa vai estar assistindo seus aplicativos para compatibilidade, e recolher informação de voz quando você usa a falar um texto. Esta informação será utilizada para melhorar o processamento da fala, de acordo com a Microsoft.

"Quando você adquirir, instalar e utilizar o Programa, a Microsoft coleta informações sobre você, seus dispositivos, aplicações e redes, e sua utilização desses dispositivos, aplicações e redes", afirma o política de privacidade. "Exemplos de dados que coletamos incluem seu nome, endereço de e-mail, preferências e interesses; navegação, busca e arquivo histórico; dados de Chamadas e SMS; configuração de dispositivos e sensores;e uso de aplicativos"

No entanto, as empresas de tecnologia continuam a desenvolver uma linha fina sobre a questão da privacidade e coleta de dados e com base nas informações que a Microsoft recolhe, poderiam ter milhares de combinações de nome de usuário e senha armazenados em um banco de dados em algum lugar. Mas pode muito bem ver um feedback do público para esta nova tentativa de extrair dados de usuários.

No entanto, é claramente sabido que eles não vão usar esses dados para acessar as contas dos usuários de banco ou rede privada da empresa, mas o fato de que a empresa está coletando dados por todos os meios, poderia abrir um caminho para alguém roubar e usar indevidamente as informações para os seus próprios fins.

Embora o feedback coletado no Technical Preview do Windows só ocorrera dentro do período de Technical Preview, conhecido por WinBeta. Assim que o Windows 10 for ao público como RTM, as coeltas de dados da Microsoft serão removidas do sistema operacional. 

Se você quiser testá-lo, você pode baixar o Windows 10 Preview Edition Aqui.

terça-feira, 26 de agosto de 2014

Dicas para certificação MTA 98-365

Introdução

Depois da aprovação nas provas LPIC 101 e 102 que renderam as certificações CompTIA Linux+, LPIC-1 e Novel CLA surgiu um novo desafio, fazer uma certificação Microsoft. Apesar de ser usuário Linux há anos, no que se trata de arquitetura de servidores sempre procuro manter um pé em cada barco procurando ser o mais versátivo possível, mesmo que meu foco de trabalho e estudos sejam sempre as tecnologias opensource.

A primeira dúvida foi qual certificação escolher, visto que a "árvore" de certificações da Microsoft é bem mais complexa do que a LPI, resumindo a Microsoft possui 3 títulos, e a obtenção de cada um deles depende de certa quantidade de certificações acumuladas, não sou especialista nisso, mas segue uma rápida explicação do que são eles:


  • MTA: Microsoft Tecnologies Associate, é a certificação de entrada, sendo que possui foco em 3 áreas que são desenvolvimento, banco de dados e infraestrutura. Para maiores informações recomendo a leitura deste post que está no TechNet onde o Átila Arruda do site atillaarruda.com.br faz uma excelente explicação sobre este tema.Clique aqui
  • MCSA: Microsoft Certified Solutions Associate, no caso do Windows Server 2012, para este título são exigidas 3 certificações, sendo elas:
    • 410 - Installing and Configuring Windows Server 2012
    • 411 - Administering Windows Server 2012
    • 412 - Configuring Advanced Windows Server 2012 Services
  • MCSE: Microsoft Certified Solutions Expert, este título é dividido em várias áreas, sendo elas:
    • Server Infrastructure
    • Desktop Infrastructure
    • Private Cloud
    • Data Platform
    • Business Intelligence
    • Messaging
    • Communication
    • SharePoint
Vou pegar como exemplo a Server Infrastructure, onde para obter tal título é necessário, além de ter previamente o título de MCSA, obter as seguintes certificações:
    • 413 - Designing and Implementing a Server Infrastructure
    • 414 - Implementing an Advanced Server Infrastructure

Como no momento meu objetivo não é seguir a carreira de certificações Microsoft, optei por uma das provas de entrada do Windows Server 2008 R2, a MTA 98-365 Windows Server Administration Fundamentals.

Esta prova aborda os seguintes assunto:
  • Entender a instalação do servidor
  • Entender as funções do servidor
  • Entender o Active Directory
  • Entender o armazenamento
  • Entender o gerenciamento de desempenho do servidor
  • Entender a manutenção do servidores
Para mais detalhes sobre o que é cobrado, recomendo a leitura do link abaixo:

Materiais

Apesar de encontrar alguns cursos online para esta certificação, acabei optando por usar o material que encontrei juntamente com o Fernando Thomasella disponível na Internet.
Sobre os materais que encontramos, basicamente foram:

  • Livro: com 222 páginas, o livro pode ser encontrado para download no link abaixo, confesso que não li ele antes de fazer a prova, olhando ele posteriormente vi que seu conteúdo é bem completo.
    Download do Livro
  • Study Guide: disponível no site da certiport, certiport.com, em português. Possui algumas explicações sobre a prova e perguntas nos mesmos moldes das cobradas na avaliação (embora com um nível de dificuldade bem mais baixo)
  • Slides: estes foram um dos mais úteis na minha opinião, estão originalmente disponíveis somente em inglês, porém como optei por fazer minha prova em português, aproveitei para fazer um trabalho voluntário de tradução do material, praticamente todos os slides traduzidos podem ser encontrados no link a seguir, Material PT-BR, o pacote completo com os slides pode ser encontrado no link a seguir, juntamente com os slides você encontrará alguns cadernos de exercícios bastante úteis também, Material US.
  • MVA: o Microsoft Virtual Academy, como o próprio nome já diz é um ambiente de aprendizagem virtual da Microsoft, os cursos são gratuitos, rápidos e objetivos, fiz os seguintes cursos dentro desde ambiente:
    • Students to Business: infraestrutura de TI
    • Noções básicas sobre instalação de servidores
    • Introdução ao Active Directory

Métodos de estudo

Como citado anteriormente meu maior  foco de estudo foram os slides, como estavam em inglês aproveitei para traduzir eles para portugues e desta forma estudar ao mesmo tempo.
Em resumo meus estudos basearam-se em:
  • Tradução dos slides.
  • Cursos citados anteriormente na MVA.
  • Simulados.
Encontrei poucos simulados para esta prova, o mais completo encontrei no site iheadgo.com, que aliás possui simulados várias certificações.

Um comentário sobre o simulado é que não vi muita utilidade neste caso, o conteúdo das questões dele está bem mais complexo do que na prova em sí.

A prova

As provas são aplicadas pela Prometric (prometric.com) e pela Certiport (certiport.com), para pagamento das provas é necessário um cartão internacional, sendo que o custo é de de cada uma delas é de U$ 76,00 mais IOF.
Pelo próprio site você já pode escolher o local e horário de sua prova, no meu caso que sou de Londrina-PR o mais próximo era em Maringá, porém após o agendamento tive um problema pois o certo de avaliação de Maringá foi descredenciado, em contato diretamente com a Prometric fiz o reagendamento de minha prova para um dos centros de avaliação em Curitiba sem grandes transtornos. No meu caso fiz a prova pela Prometric, porém fiquei sabendo que existe um centro de avaliação da Certiport em Londrina, porém não consegui confirmar esta informação uma vez que ao entrar em contato com a instituição a pessoa que me atendeu não soube informar se aplicavam provas da Microsoft e não deu o retorno que se comprometeu com a informação.
A provas é composta de 36 questões, com pesos diferentes, e tempo de 45 minutos, não existem questões abertas, e determinadas questões podem ter mais de uma opção correta.
A prova pode ser feita em vários idiomas, apesar de ter ouvido que a tradução das provas era precária não encontrei nenhum problema com ela.
Fiz minha prova na Wyse Training (wisetraining.com.br), localizada bem no centro de Curitiba, onde fui muito bem recebido e atendido.
Ao chegar ao local, caso não esteja sendo utilizada a sala de avaliação é possível adiantar as provas, antes de entrar seus pertences como celular, mochila, relógio e etc são deixados na recepção e é solicitado que o celular fique desligado. Dentro da sala existe somente um computador e assim que entrei ele já estava pronto para inciar a prova, após passar por algumas telas com explicações a prova realmente começa.
Não vi grandes dificuldades na prova, na verdade achei uma prova bastante justa, de acordo com os materias disponibilizados. Terminei ela relativamente rápido, sendo que cheguei ao centro por volta de 8:00 e entre ser atendido, me identificar e começar a prova não levei mais do que 30 minutos sendo aprovado com a pontuação de 8.7.

Certificação

No mesmo dia recebi por e-mail minhas credenciais para acessar o Microsoft Certification Member Sites, onde é possível fazer o download dos certificados, sim dos no plural pois são gerados dois, um MCP e um MTA, comprar produtos com a logo das certificações, gerar uma assinatura para o e-mail e outras opções.

No momento estou aguardando a chegada dos certificados pelo correio, que segundo me informaram leva de 15 a 30 dias.


sábado, 12 de julho de 2014

Montando uma máquina para SandBox

Introdução

Montei este documento há mais ou menos um ano atrás com o intúito de dar algumas dicas para pessoas que tinham interesse em começar a analisar malwares e não sabiam como montar uma máquina para sandbox e agora estou aproveitando para postar ele aqui no blog.

O que é uma sandbox:

Embora existam muitas ferramentas no mercado oferencendo soluções de sandbox, este é mais um conceito 
do que uma ferramenta, sandbox é uma área onde é possível executar e analisar ameaças sem que sejam danificados servidores e estações em produção.
Caso você seja muito insano, pode usar sua própria máquina como sandbox, porém recomendo que seja utilizado um ambiente virtualizado para tal propósito, a seguir estarei descrevendo algumas recomendações para quem deseja iniciar suas análises.

Ambiente necessário:


  • Hypervisor - recomendo o uso do VirtualBox por ser gratuíto, porém nada impede que seja utilizado outro como o VMWare Workstation por exemplo.
  • SO - utilize o sistema operacional MS de sua preferência, lembrando que determinadas ameaças podem ter comportamentos diferentes em certas versões do MS Windows, recomendo o uso do MS Windows XP Professional SP3 por ser uma das mais genéricas nesses casos, um ambiente ideal de sandbox seria na verdade de várias máquinas com diversos sistemas.
  • Firewall - Utilize uma solução de firewall de sua preferência, para evitar o contato da sandbox com sua rede local, recomendo o uso de um firewall linux com iptables ou o PFSense pela facilidade de configuração para os que tiverem menos intimidade com o shell do linux.
  • Programas diversos - estes programas serão utilizados na análise comportamental das ameaças.
    • NMap: verifica portas abertas.
    • Wireshark: analisa o tráfego de rede.
    • Filemon: monitora acessos em arquivos.
    • Procmon: monitoramento de processos em execução.
    • Regmon: monitora alterações no registro.
    • Procexp: explora processos em execução.
    • TCPView: monitora as conexões de rede.
    • Winalysis: faz um snapshot do status atual da máquina (permissões, entradas de registro, conteúdo de arquivos, etc) e compara com o status após a infecção pelo malware.
Outro detalhe importante é lembrar que não devemos instalar nenhum tipo de anti-virus ou ferramenta semelhante uma vez que nossa intenção é justamente analisar o comportamento do vírus.

Montagem do Ambiente

Passo 1 - Configuração do Firewall.

Após a instalação do VirtualBox cria primeiramente a máquina virtual que servirá de firewall, não são necessários grandes recursos para esta, no meu caso uso como firewall do meu ambiente de sandbox um PFSense com 256MB de memória, disco dinâmico de 30GB e uma CPU. Um detalhe importante nesta etapa é criar esta máquina com duas placas de rede, sendo que uma delas deve ser configurada como NAT ou Bridge, que estará se comunicando com sua rede local para que nossa sandbox tenha acesso a internet, e outra como Rede Interna (intnet), para aqueles que nunca utilizaram esta segunda opção, ela simula um switch no qual as máquinas virtuais estarão conectadas.

Passo 2 - Configuração da SandBox

Configure sua máquina virtual com recursos suficientes para que a mesma não trave durante a execução das análises, no meu caso utilizo com 2GB de memória, disco dinãmico de 80GB e uma CPU. Faça a instalação normal do Windows XP e em seguida instale as ferramentas listadas acima em Programas Diversos, configure a placa de rede como Rede Interna também para que fique conectada ao nosso Switch virtual, caso tenha configurado seu firewall como DHCP server sua sandbox deve receber um ip dele. Após todas as instalações concluídas faça um snapshot da sua sandbox, este processo é de extrema importância pois após cada análise devemos retornar para este snapshot para limparmos qualquer alteração feita pelo malware analisado.

Passo 3 - Divirta-se

Está pronto, seu ambiente de análise de malwares está feito, para a execução de uma análise recomendo as seguintes práticas:
  • Feche qualquer aplicação de sua sandbox que possa se comunicar com a rede.
  • Abra o wireshark e tenha certeza de que o tráfego gerado por ela é mínimo.
  • Execute uma varredura com o NMap e documente as portas abertas atualmente.
  • Abra o Winalysis e faça um snapshot do sistema operacional.
  • Abra o Procmon e Procexp e documente os processos atualmente abertos, ambos tem opções para exportar os dados para arquivos de texto.
  • Execute a ameaça que deseja analisar.
  • Procure no wireshark por comunicações de rede iniciadas após este processo, neste ponto é necessário ter certo conhecimento de análise de tráfego e protocolos de rede.
  • Utilize a opção test do Winalysis para comparar o status atual com antes da infexção.
  • Procure no procmon e procexp por novos processos iniciados e verifique o que foi alterado.
  • Faça uma nova varredura com o NMap e verifique se alguma porta de comunicação foi aberta.
  • Após terminar o processo restaure o snapshot da sua sandbox.

Outra dica importante é fazer um desses testes listados acima por vez, sempre retornando o snapshot da máquina antes de fazer o próximo teste, desta forma poderá ver melhor o que está acontecendo, por exemplo, infecte a máquina e analise o tráfego com o Wireshark, volte o snapshot, em seguida infecte novamente e faça a análise com o Winalysis e assim por diante.

Este ambiente para análise é bem simples e resumido, com o tempo sua capacidade de análise vai aumentando e você passa a ir mais fundo nas investigações, inclusive incluindo nestas atividades a análise do próprio executável do vírus através de ferramentas de debug como o ollydbg e analisadores de executáveis como o PEV, PE Studio ou similares.

Para aqueles que tiverem interesse recomendo também a leitura do site http://mentebinaria.com.br/ do Fernando Mercês, lá existem alguns artigos sobre análises de malwares, inclusive dois também comentando sobre a criação de máquinas para análise. Outro site que também recomendo a leitura é o http://www.numaboa.com.br, na seção de informática dele tem um artigo muito útil sobre a estrutura de arquivos executáveis.

domingo, 29 de junho de 2014

Dicas para Certificação LPIC-1

Introdução

Recentemente fiz minhas provas LPIC 101 e 102, e felizmente fui aprovado, como todo candidato ao exame tive muitas dúvidas sobre o que estudar, que tipo de material utilizar, fazer ou não um curso, dentre outros, encontrei muitas dicas e materiais na internet, e neste post gostaria de fazer uma compilação dos métodos e materiais que utilizei e deram certo para mim.

Cursos

Em minha busca por um bom curso encontrei vários com boa reputação como o 4Linux (http://www.4linux.com.br) por exemplo. A 4Linux mantém o site LPI Brasil (http://www.lpibrasil.com.br), já havia feito anteriormente um curso com eles de PenTest e gostei muito.
Além do curso da 4Linux exitem também o curso do Uirá Ribeiro (http://www.certificacaolinux.com.br), já tinha bastante tempo que eu vinha recebendo algumas malas diretas sobre seu curso e algo que me chamou muito a atenção foi o fato de estar divulgando a certificação 3x1 (CompTIA, Novell e LPIC), com um preço muito atrativo, boa reputação na rede e a recomendação de um amigo que fez o curso e foi aprovado nos exames, esta foi minha opção de curso.
Após a aquisição do curso, hoje no valor de R$239,00, recebi meu login para acesso às aulas online e o código de rastreamento de meu Livro.
As aulas online são previamente gravadas e somam um total de 50 horas de curso, abordando os temas para os exames 101 e 102, necessários para a obtenção da certificação, juntamente com cada aula temos acesso ao download de um mapa mental do conteúdo, a indicação dos comandos abordados na aula e dos capítulos do livro correspondentes e uma série de exercícios de laboratório para fixação do conteúdo, sendo que cada aula é corrigida e as respostas comentadas pelo professor, ao final do curso é emitido um certificado da própria escola de conclusão do preparatório, podendo ser baixado em PDF ou solicitado em versão impressa com custos de R$ 39,00. Apesar das aulas previamente gravadas o conteúdo é muito bom e qualquer dúvida pode ser tirada via chat, e-mail e até mesmo facebook. Além disso o pacote conta também com dois simulados com 80 questões da prova 101 e 107 questões da prova 102.
Alguns dias após a compra chegou pelos correios sem nenhum contratempo o livro do curso, na época o livro estava em sua 3ª edição, escrito pelo próprio professor Uirá e com prefácio de Jon "Maddog" Hall, o volume é muito bem feito, com cerca de 530 páginas e um excelente impressão, o livro aborda o conteúdo e todas as aulas online de maneira ainda mais detalhada.

Métodos de estudo

Obviamente, os métodos de estudo são muito particulares, o que funciona para uma pessoa pode não funcionar para outra. No meu caso tenho uma facilidade maior de fixação quando uso a informação para algo prático, ou escrevo a mesma. Levando em conta que grande parte da prova é baseada em comandos e caminhos de arquivos, o fato de ser usuário Linux há muito tempo ajudou bastante, porém me surpreendi com a quantidade de comandos diferentes que conheci durante os estudos.
Basicamente meus estudos basearam-se em:
  • Curso da certificacaolinux.com.br
  • Simulados.
Acabei não utilizando tanto os mapas mentais quanto gostaria, porém fiz todas as aulas e respondi a todos os laboratórios. Nas duas últimas semanas de estudo fiz um intensivo baseado somente na resposta de simulados, neste caminho encontrei alguns sites bem interessantes de simulados:

  • http://www.lpibrasil.com.br/simulados - Site mantido pela 4Linux com várias dicas para o caminho de certificação, nesta página temos aopção para o simulado das duas provas sendo que cada um tem em torno de 30 perguntas.
  • http://www.stato.blog.br/wordpress/?page_id=277 - Este blog contém vários tutoriais de comando e no link acima um simulado de 75 questões para a prova 101.
  • http://www.fuctura.com.br/jogolpi - Jogo no estilo Show do Milhão com perguntas dos exames 101 e 102.
  • http://www.armbrust.eti.br - Este foi o meu favorito por vários motivos, primeiro pela quantidade de questões, são 142 da prova 101 e 178 da prova 102, depois pela forma do simulado, sendo o mais próximo da prova real, sendo que ao final não são mostradas as respostas certas ou erradas, somente a porcentagem de acertos em cada assunto abordado, porém em outra área do site temos a lista de todas as perguntas com as respostas para conferência, e por fim o que mais chama atenção neste site, que é o fato de sua proposta de ter um conteúdo atualizado pelos próprios candidatos que já fizeram os exames, sendo que se vocẽ tem alguma questão que acha importante pode enviar para que seja incluída no simulado.
Um dos métodos que utilizei durante os simulados foi utilizando o site armbrust.eti.br, sendo que após responder cada questão verificava se estava correto, caso estivesse errada, anotava para revisar depois o assunto utilizando o livro do curso, além disso fiz uma impressão de todas as perguntas e respostas do site para estudos "Off-Line".
Uma boa dica também é estudar com muita atenção tanto a pergunta quanto a resposta, pois elas podem estar invertidas na prova, por exemplo, no simulado você pode encontrar:

Qual das opções abaixo é uma saída válida para o comando df -h
A - /dev/sda6        14G  8.9G  4.5G  67% /
B - xxxx
C -yyy

E na prova você pode encontrar.

Digite o comando que produz a saída:
/dev/sda6        14G  8.9G  4.5G  67% /
Digite somente o comando sem parâmetros ou outras opções.
R:

A prova

As provas são aplicadas pela Pearson Vue (http://www.pearsonvue.com), para pagamento das provas é necessário um cartão internacional, sendo que o custo de cada uma delas é de U$ 170,00 mais IOF.
Pelo próprio site você já pode escolher o local e horário de sua prova, no meu caso que sou de Londrina-PR o mais próximo era em Maringá, sendo que caso seja necessário o cancelamento da prova ou adiamento também poderão ser feitos pelo próprio site da Pearson.
As provas são compostas de 60 questões cada, com pesos diferentes, inclusive havendo a possibilidade de existirem questões de peso 0 conforme é informado no início da prova, caso o aluno erre todas as questões de um determinado assunto sua pontuação será bastante prejudicada pois demonstra que existe uma área de conhecimento que o mesmo não tem nenhum domínio, o tempo para execução das provas é de 90 minutos, ao final da última questão, temos mais 10 minutos para responder 12 questões de uma pesquisa demográfica da Pearson, sendo que o resultado do exame só é exibido após respondermos estas 12 questões.
A prova pode ser feita em vários idiomas, tinha pensado em fazer em inglês pois ouvi muitas pessoas dizerem que a tradução para português não era boa, antes de fazer a prova fiz algumas pesquisas e descobri que caso opte por português, tanto a pergunta quanto a resposta são exibidas nos dois idiomas, inglês e português.
Fiz minha prova na Sergio Yamada Computação (http://sergioyamada.com.br), onde fui muito bem recebido e atendido por todos os funcionários, que inclusive me ofereceram a sala de reuniões da escola para estudar antes da prova 102 quando me viram com a apostila sentado na recepção.
Ao chegar ao local, caso não esteja sendo utilizada a sala de avaliação é possível adiantar as provas, antes de entrar seus pertences como celular, mochila, relógio e etc são trancados dentro de um armário do qual a chave fica o tempo todo com você, dentro da sala existem somente dois computadores, um utilizado pelo funcionário para liberar sua prova, outro para a execução da prova, antes de iniciar é coletada sua assinatura em uma prancheta digital (estilo aquela do Detram) e tirada uma foto, é disponibilizada também uma prancheta para rascunho. Após a liberação da prova o funcionário deixa a sala retornando somente quando você terminar a mesma ou caso você levante sua mão dentro da sala.
Algumas questões do simulado estavam presentes na prova, porém o conhecimento diário e os estudos do curso também foram muito importantes, na minha prova 102, que também contempla assuntos relacionados à redes de computadores, caiu somente uma questão que exigisse algum tipo de calculo (quantidade de hosts de uma rede).

Certificação

Como fiz a opção da prova pela CompTIA, o resultado positivo na prova me dá direito a 3 certificação como comentei anteriormente, cerca de 2 dias após a execução da prova, o certificado da CompTIA já está disponível no site, sendo que posteriormente fica disponível o LPIC e por último é necessário utilizar o seu número de identificação na LPI para registrar o certificado Novell e dentro de algunas dias os certificados e demais itens chegam pelos correios, como os meus ainda não chegaram não tenho como dizer quanto tempo leva.

Conclusão

Em resumo, a prova é bastante complexa, com vários detalhes que podem determinar o sucesso ou não, escolha um bom material, faça muitos simulados e principalmente, tenha contato com o sistema operacional, muitas perguntas de comandos e arquitetura podem ser respondidas baseadas na experiência de uso.
A certificação é um diferencial para profissionais de TI, onde o que vemos muito são vagas nas quais o título de sua formação acadêmica não importa, desde que seja em tecnologia, além de ser uma forma de validar seus conhecimentos.

quinta-feira, 5 de junho de 2014

CVE-2014-0224 - Mais uma falha no OpenSSL

 

CONSIDERÇÕES INICIAIS 
Este conteúdo foi baseado no material divulgado pelo próprio Masashi Kikuchi, responsável pela identificação desta falha e está disponível na íntegra no endereço abaixo:

http://ccsinjection.lepidum.co.jp/blog/2014-06-05/CCS-Injection-en/index.html

O QUE É A FALHA?
basicamente a falha consiste no fato de que o OpenSSL aceita um ChangeCipherSpec (CCS) inapropriado durante o início da conexão (handshake), ainda segundo o autor este Bug existe desde a primeira versão do OpenSSL.

Em um processo de handshake correto o cliente e o servidor trocam mensagens, sendo que o CCS deve ser enviado no momento correto, porém o servidor OpenSSL pode aceitar um CCS em outros momentos caso receba, desta forma um atacante pode explorar este comportamento para que possam decodificar e/ou modificar dados no canal de comunicação.

Abaixo segue um trecho extraído do site do próprio OpenSSL
 
OpenSSL Security Advisory [05 Jun 2014]
========================================

SSL/TLS MITM vulnerability (CVE-2014-0224)
===========================================

An attacker using a carefully crafted handshake can force the use of weak
keying material in OpenSSL SSL/TLS clients and servers. This can be exploited
by a Man-in-the-middle (MITM) attack where the attacker can decrypt and 
modify traffic from the attacked client and server.

The attack can only be performed between a vulnerable client *and*
server. OpenSSL clients are vulnerable in all versions of OpenSSL. Servers
are only known to be vulnerable in OpenSSL 1.0.1 and 1.0.2-beta1. Users
of OpenSSL servers earlier than 1.0.1 are advised to upgrade as a precaution.

OpenSSL 0.9.8 SSL/TLS users (client and/or server) should upgrade to 0.9.8za.
OpenSSL 1.0.0 SSL/TLS users (client and/or server) should upgrade to 1.0.0m.
OpenSSL 1.0.1 SSL/TLS users (client and/or server) should upgrade to 1.0.1h.

Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
researching this issue.  This issue was reported to OpenSSL on 1st May
2014 via JPCERT/CC.

The fix was developed by Stephen Henson of the OpenSSL core team partly based 
on an original patch from KIKUCHI Masashi.

segunda-feira, 2 de junho de 2014

Análise do Pishing Banco do Brasil

INTRODUÇÃO
Esta semana está bem corrida devido à alguns compromissos e já estava me perguntando se ia ser possível cumprir a meta de 2 posts por semana quando chega no meu e-mail uma amostra de um phishing encaminhada por um cliente utilizando o Banco do Brasil como isca.
Sandbox preparada e vamos iniciar a análise, eis que ao clicar no link no corpo do e-mail vem a surpresa, "Cade o malware?". Pois bem, este e-mail não tem malware para download, script malicioso ou algo do tipo, fui seguindo o site para o qual fui direcionado como se estivesse caindo no golpe e simplesmente não tem nenhum malware, o que é o golpe então?
A resposta da pergunta é bem simples, ao clicar no link do e-mail fui direcionado para um clone "quase" perfeito do site do Banco do Brasil, realmente o cracker teve muito cuidado ao fazer a cópia do site, alguns pontos obviamente denunciam a fraude, porém ao pensar no meu próprio comportamento ao acessar meu bankline percebi que alguns deles passariam despercebidos.

ANALISANDO O E-MAIL
Fiz questão de destacar na screenshot do e-mail o primeiro ponto ao qual deveríamos nos atentar, o rementente, que neste caso veio de auto-atendimento-bb@gmail.com, vamos ignorar o fato de que os bancos informam aos usuários através de seus sites e canais de comunicação que nunca enviam e-mails para seus usuários, neste ponto temos um detalhe bem interessante apesar do e-mail do remetente ser do GMail, o nome de exibição está como Banco do Brasil S/A, levando em conta que alguns clients de e-mail ou webmails exibem somente este nome e deixam o endereço oculto, um usuário desavisado poderia não perceber este detalhe.

Analisando os links temos a seguinte URL:

http://haishen517.com/data/article/-/?6e60001ffd&view=att&th=1463cceb67f2f760&attid=0.1&disp=inline&safe=1&zw&saduie=AG9B_P-iXV68qEUTpMbs6CY92Azm&sadet=1401493847519&sads=GjWjfwwkzyfFzTZC9qLTl5rvA6e60001ffd&view=att&th=1463cceb67f2f760&attid=0.1&disp=inlin

Uma coisa que podemos notar é que ao clicar no link, o próprio Google Chrome nos avisa de que trata-se de um phishing como mostra a imagem abaixo.



Vamos levantar algumas informações osbre o domínio deste link, haishen517.com.
Utilizando a ferramenta whois descobrimos algumas informações sobre ele:

   Domain Name: HAISHEN517.COM
   Registrar: HICHINA ZHICHENG TECHNOLOGY LTD.
   Whois Server: grs-whois.hichina.com
   Referral URL: http://www.net.cn
   Name Server: DNS11.HICHINA.COM
   Name Server: DNS12.HICHINA.COM
   Status: ok
   Updated Date: 13-feb-2014
   Creation Date: 13-feb-2014
   Expiration Date: 13-feb-2015

Resumindo as informações, trata-se de uma empresa Chinesa do ramo alimentício, não consegui identificar exatamente o produto comercializado pois tem uma aparência bem estranha.


Estas informações nos levam a crer que provavelmente foi explorada alguma vulnerabilidade no site ou webserver e o cracker utilizou o mesmo para hospedar seu phishing.

Fiz uma rápida análise no domínio utilizando o Subgraph Vega, e em alguns minutos mais de 400 falhas graves foram encontradas no site, sendo 398 relacionadas a Cross-Site Script e duas informando que seus formulários trafegam os dados, incluindo usuários e senhas em texto plano, um detalhe é que ao verificar estes dados a análise ainda não havia chegado em 50%.



Seguindo em frente ignorei o aviso do chrome e descobri que nosso site chines tinha somente uma index que me redirecionou para um segundo site:

http://www.ischiaprenota.it/script/cache/5195e223ddabe0c03549faf9667a3.timthumb.txt/3549fa3549fa3549fa//index.php?6e60001ffd&view=att&th=1463cceb67f2f760&attid=0.1&disp=inline&safe=1&zw

Verificando o domínio com o whois temos:

Domain:             ischiaprenota.it
Status:             ok
Created:            2012-04-11 18:27:39
Last Update:        2014-05-24 10:50:09
Expire Date:        2015-04-11

Registrant
  Name:             Zeus Travel S.r.l.
  Organization:     Zeus Travel S.r.l.
  ContactID:        ARU84051R-779456
  Address:          Via Giovanni Mazzella, 181
                    FORIO D'ISCHIA
                    80075
                    NA
                    IT
  Created:          2012-04-11 18:27:37
  Last Update:      2012-04-11 18:27:37

Admin Contact
  Name:             Gianluca Borrelli
  Organization:     Zeus Travel S.r.l.
  ContactID:        ARU58042A-313808
  Address:          via C. Colombo, 19
                    LACCO AMENO
                    80076
                    NA
                    IT
  Created:          2012-04-11 18:27:38
  Last Update:      2012-04-11 18:27:38

Acessando o domínio podemos ver que trata-se de uma rede de Hoteis da Itália, ou seja mais um site comprometido hospedando phishing.

Fiz uma análise neste domínio também utilizando o Vega, e mais uma vez antes mesmo dos 50% da análise várias falhas graves foram encontradas como SQL Injection e Cross Site Scripting.



ANÁLISE DO PISHING


Como mostra a imagem acima a cópia do site está muito bem feita, sendo que não existem erros na formatação ou outros detalhes que possam chamar a atenção inicialmente, o único ponto que notei neste momento foi que nenhum dos links funciona, porém nenhum deles exibe erros, ao clicar somos direcionados novamente para o mesmo site, as duas Dropdown onde é possível selecionar o país e o titular da conta também não funcionam, era justamente sobre esses detalhes que comentei no início quando disse que certos detalhes realmente teriam passado despercebidos pensando no processo que eu mesmo faço ao acessar o internet banking, eu nunca clico em nada no corpo do site por exemplo.

Meu primeiro teste foi preencher os campos de agencia e conta com "0", e mais uma demonstração do capricho do cracker, o formulário tem uma função em java script tanto para o campo de agencia quanto para o campo de conta que valida os números digitados, segue abaixo a função:

function macTools() {
if ( document.form.pac01.value == "" || 
document.form.pac01.value == "Agência" ||
document.form.pac01.value.length < 6 || 
document.form.pac01.value == "0000-0" || 
document.form.pac01.value == "1111-1" || 
document.form.pac01.value == "2222-2" ||
document.form.pac01.value == "3333-3" || 
document.form.pac01.value == "4444-4" || 
document.form.pac01.value == "5555-5" || 
document.form.pac01.value == "6666-6" || 
document.form.pac01.value == "7777-7" || 
document.form.pac01.value == "8888-8" || 
document.form.pac01.value == "9999-9"){
alert ("Agencia invalida!");
document.form.pac01.focus(); return false;
}
if (document.form.pac02.value == "" || 
document.form.pac02.value == "Conta" ||
document.form.pac02.value.length < 5 || 
document.form.pac02.value == "000000000" || 
document.form.pac02.value == "111111111" || 
document.form.pac02.value == "222222222" || 
document.form.pac02.value == "333333333" || 
document.form.pac02.value == "444444444" || 
document.form.pac02.value == "555555555" || 
document.form.pac02.value == "666666666" || 
document.form.pac02.value == "777777777" || 
document.form.pac02.value == "888888888" || 
document.form.pac02.value == "999999999"){
alert ("Conta invalida!");
document.form.pac02.focus(); return false;
}

Tentei uma sequencia de números mais parecida com um número de conta real e funcionou.

Em seguida foi exibido um novo formulário, agora pedinco a senha do autoatendimento com 8 dígitos.

Mais uma vez tentei uma senha simples e fui novamente informado de que minha senha não era válida, abaixo o trecho de código que faz a verificação dela:

<script language="javascript">
function macTools() {
if (document.form.pac03.value == "" || 
document.form.pac03.value.length < 8 || 
document.form.pac03.value == "00000000" || 
document.form.pac03.value == "11111111" || 
document.form.pac03.value == "22222222" || 
document.form.pac03.value == "33333333" || 
document.form.pac03.value == "44444444" || 
document.form.pac03.value == "55555555" || 
document.form.pac03.value == "66666666" || 
document.form.pac03.value == "77777777" || 
document.form.pac03.value == "88888888" || 
document.form.pac03.value == "99999999"){
alert ("Senha de autoatendimento, invalida!");
document.form.pac03.focus(); return false;
}
}
</script>

Ao colocar uma senha mais complexa, um novo formulário pedindo novas informações.


Novamente o formulário está repleto de funções para verificação dos dados, inclusive do CPF que tive algumas dificuldades para digitar um que desse como válido, veja que ao digitar todos os dados agora o cracker ter as seguintes informações de sua conta:
  1. Agencia
  2. Conta
  3. Senha da internet
  4. Telefone Celular
  5. CPF
  6. Senha do cartão
  7. Senha do auto atendimento
Estas informações são mais do que suficientes para que o mesmo execute operações bancárias como saques, transferências e pagamentos.

Ao informar estes últimos dados, mais dados solicitados:



Depois de confirmar este últimos dados somos direcionados para uma última página com o seguinte aviso:





CONCLUSÃO
A análise deste e-mail veio bem a calhar neste momento, ontem pela manhã estava justamente tendo uma conversa com um cliente sobre este tipo de situação, a pergunta principal é, como podemos nos proteger em um caso deste?

Vale lembrar que o site clonado foi muito bem feito, com formulários cheios de validações de dados, com a formatação correta e outros detalhes que dificultam muito a identificação da fraude por usuários leigos.

Primeiramente, somente com a proteção tradicional de um antimalware este ataque não teria sido barrado, uma vez que não existe malware envolvido, estar atendo aos avisos que o próprio sistema pode lhe dar é sempre importante, lembrando que neste caso o próprio Chrome havia nos avisado de que era um phishing. Outro ponto importante é sair da proteção convencional e começar a pensar na segurança em camadas, neste caso somente uma ferramenta que pudesse analisar o tráfego de e-mail, ou uma ferramenta que pudesse analisar a navegação poderiam ter ajudado, tenho citado nos outros posts as ferramentas da Trend Micro por fazer parte da rede de parceiros desta empresa, desta forma são as ferramentas que melhor conheço e posso recomendar, neste caso as funcionalidades dos recursos do Web Reputation e do Mail Reputation teriam sido de grande ajuda, mas independente e ferramentas, o que deve existir é a política de segurança.