Não deixe de conferir as postagens antigas
nas sessões ao lado!!! --->


quarta-feira, 26 de março de 2014

Analise de Malware – Parte2

Prólogo

Estarei apresentando uma série de artigos voltados para o estudo básico de malware, o meu objetivo não é esgotar o assunto e sim colocar em discussão o que fazer para combater e até mesmo evitar estas pragas virtuais e acredito que a melhor forma de se combater qualquer mal é estudando e debatendo sobre o mesmo, por isso deixo em aberto os comentários. E quero deixar claro que também não sou nenhum especialista, estou em processo de aprendizagem e podemos estar sujeitos a erros.

Na parte2 estaremos estudando:
+ Técnicas de análise de malware;
+ Programas Packeado;
+ Portable Executable File Format.

Técnicas de Análise de Malware

Vamos agora verificar os modos de análise de malware, isso não quer dizer que usarei todas as técnicas na série de artigos propostos, não é esse o objetivo, estarei focando em algumas técnicas, aquelas que me ajudam no meu cotidiano, as outras técnicas fica por conta de cada um que pode achar necessário usar em seu estudo de caso em particular.

Analise estática básica: Este é um método que gosto de usar, acho de primordial importância, nesta técnica podemos encontrar muitas informações do malware e a partir dessas informações escolher as ferramentas que usaremos na etapa seguinte, o objetivo é checar o arquivo/programa suspeito e verificar o seu conteúdo, nesta primeira etapa quase sempre, já é possível definir se o arquivo/programa apresenta alguma ameaça.

Analise estática avançada: Consiste na engenharia reversa do arquivo/programa suspeito, checar o seu conteúdo, em assembly, verificar a ordem de execução e descobrir o que ele faz, nesta análise é possível já saber qual é o comportamento que terá quando for executado.

Analise Dinâmica Básica: Esta técnica é a mais divertida, e o meu foco, é onde rodamos o malware e observamos o seu comportamento no sistema operacional, essa observação é realizada por programas auxiliares que checarão parte individuais do sistema colhendo e gerando logs de tudo que acontece, quando terminado a analise, será possível saber todas as alterações realizadas pelo arquivo/programa suspeito.

Analise Dinâmica Avançada: Essa técnica é preciso debugar o código malicioso, para que se possa examinar detalhes de seu interior, com o objetivo de extrair informações detalhadas de seu comportamento e alterações no sistema operacional e na rede local. Essa técnica é usada quando não se consegue obter informações suficientes nas técnicas anteriores.

Programas “Packeado”

O motivo do autor do malware, ofuscar o código malicioso e/ou packear é na verdade para dificultar sua detecção e análise.

Programas Packeado: quando o programa packeado roda, um pequeno subconjunto de programas é descompactado e é executado. Esse método é dificilmente detectado na análise estática.

Figura 1 - O arquivo da esquerda é o arquivo executável original, já do lado direito já podemos verificar "Wrapper Programs", onde está o malware “pakeado” neste programa.
Imagem Ref. “Pratical Malware Analysis – Michael Sikorski e Andrew Honig” pag. 13.

Portable Executable File Format

O formato PE é usado no MS Windows, como arquivo executável, objetct code e DLL. A estrutura do PE contém informações necessárias para o MS Windows carregar e gerenciar o núcleo executável, quase todos os executáveis para MS Windows tem o formato do PE, salvo alguns formatos antigos que raramente conterá um malware, ou talvez sim!
O PE inicia no cabeçalho que inclui informações sobre o código, tipo de aplicação, DLL requeridas e espaço em disco necessário. As informações d cabeçalho do PE é de grande importância para o analista de malware.

Os programadores para não precisar reimplementar uma determinada função já existe em outro programa, cria-se então o import Link, a biblioteca pode ser linkada estaticamente, pela runtime ou de forma dinâmica. Conhecer como o código da biblioteca esta linkada é crucial para entender como as bibliotecas do HEAD PE estão linkadas e assim é possível saber as dependências do malware, em um efeito em escada, é possível saber quais partes do Sistema Operacional é ativado, como por exemplo, interface de rede, alteração de registro e etc.


Por: Edilson Feitoza

Quem sou eu:
Graduado em Redes de Computadores e especialista em Gestão de Projetos em TI.
Atualmente trabalha como Administrador de Redes em uma empresa no ramo de papéis e cadernos e professor universitário nos cursos de Sistema de informação e Analise e Desenvolvimento de Software.

segunda-feira, 17 de março de 2014

Analise de Malware – Parte1

Introdução
Estarei apresentando uma série de artigos voltados para o estudo básico de malware, o meu objetivo não é esgotar o assunto e sim colocar em discussão o que fazer para combater e até mesmo evitar estas pragas virtuais e acredito que a melhor forma de se combater qualquer mal é estudando e debatendo sobre o mesmo, por isso deixo em aberto os comentários. E quero deixar claro que também não sou nenhum especialista, estou em processo de aprendizagem e podemos esta sujeitos a erros.

Motivação
A minha motivação de estudar esse assunto e posteriormente escrever, é devido a grande ocorrência dessas pragas que por muitas vezes consegue burlar até mesmo o antivírus e outras vacinas e ferramentas que deveriam barrar esses vermes, causando desesperos em usuários despreparados e por muitas vezes vieram até mim pedindo ajuda.

Referência:
Todo o estudo desenvolvido, tem como base o livro “Pratical Malware Analysis – Michael Sikorski e Andrew Honig” pode ser encontrado neste link: http://www.amazon.com/Practical-Malware-Analysis-Dissecting-Malicious/dp/1593272901
Essa primeira parte do artigo está voltada fundamentação de alguns conceitos importantes para compreender todo o desenvolvimento dos artigos sequenciais.

Na parte1 estaremos estudando:
+ O que é malware;
+ Tipos de malware;
+ Detectando o malware na rede;

O que é malware?
Todo software que tem como objetivo causar algum dano, roubo, perda ou lentidão do sistema ou da rede de dados de uma empresa, órgão público, usuário comum ou qualquer um outro, pode ser considerado um “malware”, como podemos observar, não importa muito a sua forma de agir, porque pode ser um vírus, trojan horse, worms, root kits, scareware spyware. A forma ou técnica de analise depende apenas de seu objetivo.

Tipos de malware
Quando e estudo sobre analise de malware, é preciso e necessário, em um determinado momento, separa-los por características comuns para facilitar no momento de escolher o laboratório assim como as ferramentas usadas para cada tipo de malware, segue abaixo uma pequena categoria para nos ajudar a entender os tipos/características existentes, alguns já ossos velhos conhecidos:
Backdoor: Se instala e permite que o atacante tenha acesso para rodar programas no sistema local;
Botnet: Muito semelhante ao Backdoor, permite o atacante ter acesso a máquina local, podendo redirecionar comando em um alvo comum a outro Botnets;
Downloader: Esse é o mais comum entre usuário desavisados, esse código malicioso quando baixado e executado, ele baixa outros programas maliciosos que não precisa necessariamente da autorização do usuário para se instalarem e infectarem o sistema;
Information-Stealing Malware: O objetivo é roubar senhas de e-mail, banco, autenticação de rede, rede social, usando técnicas de sniffers, keyloggers e outros.
Launcher: Objetivo é carregar outros programas maliciosos para a memória, faz de forma não comum mesclando o uso de técnicas stealth para garantir o maior acesso ao sistema;
RootKit: O grande objetivo dele é esconder outros códigos maliciosos, com gatilhos que permitem apenas que o antivírus, por exemplo, apenas cheque os arquivos limpos e ocultando os maliciosos;
Scareware: O objetivo desse é forjar uma infecção ou um outro dano qualquer e dessa forma coagir a pessoa a comprar o software para se livrar da praga;
Spam-Sending: Usa o PC do usuário como um distribuidor de spam;
Worm ou vírus: programa malicioso que pode se reproduzir e infectar várias partes do sistema podendo até mesmo causar danos sérios;
De uma forma geral, os malwares podem pertencer a mais de uma categoria (ou ter mais de uma característica), podem ser classificados de acordo com seu comportamento/ação.

Detectando ação de malware na rede
Para se detectar a ação de malware em uma rede de dados, será preciso desenvolver uma base de assinaturas, que pode ser de 2 formas:

Assinaturas baseado em Host: Também conhecido como “indicador”, é usado pra detectar ações maliciosas em computadores. Os indicadores frequentemente identifica arquivos criados ou modificados por malware ou por mudanças realizadas pelo próprio sistema. Enquanto o antivírus olha o interior dos programas e arquivos em busca de uma assinatura maliciosa, o indicador observa apenas o comportamento do sistema o incomodo dessa técnica é que se tem mito falso positivo, já que o indicador não vai conseguir diferenciar a ação do sistema com a do malware;
Assinaturas baseado em Rede: Essa técnica tem como objetivo de monitorar o trafego de rede, e dessa forma checar detectar comportamento estranhos. Esse técnica ela é muito mais eficiente e oferece uma maior taxa de detecção e pouco falso positivo.

Por: Edilson Feitoza

Quem sou eu:
Graduado em Redes de Computadores e especialista em Gestão de Projetos em TI.
Atualmente trabalha como Administrador de Redes em uma empresa no ramo de papéis e cadernos e professor universitário nos cursos de Sistema de informação e Analise e Desenvolvimento de Software.

terça-feira, 11 de março de 2014

Você sabe como seu PC navega na Internet?

Muitas pessoas já me perguntaram sobre como funciona ou "qual é a magica?" do processo de acesso a um website, abaixo explicarei detalhadamente como seu computador faz para requisitar e receber uma pagina da Internet (através do uso de um sniffer de rede), mas antes segue um overview sobre alguns conceitos técnicos (caso queira pular os conceitos técnicos clique aqui!!!):

Endereço MAC (Media Access Control Address)-> Também conhecido como endereço físico, ele pertence a camada 2 (modelo OSI) e é composto por 6 conjuntos de 2 dígitos hexadecimais, ex: 52:54:00:12:35:02. Esse endereço é gravado na memoria ROM da interface de rede e o sistema operacional lê esse valor e o utiliza. Os primeiros 3 conjuntos identificam o fabricante e os 3 demais identificam a interface. O MAC é um endereço único, ou seja, não deveria existir dois endereços MAC iguais, mas sabemos que existem alguns casos onde o MAC é alterado, como por exemplo, num ataque do tipo MAC spoofing ou porque você simplesmente preferiu altera-lo (já peguei um caso que haviam duas interfaces do mesmo fabricante com MAC iguais e tive de alterar).

Endereço IP (Internet Protocol Address)-> Também conhecido como endereço lógico, ele está associado a camada 3 (modelo OSI) e no IPv4 é composto por 4 octetos, ou seja, tem 32bits. Em uma rede TCP/IP tem a função de identificar um ativo na rede e encaminhamento dos dados.

ARP (Address Resolution Protocol)-> Protocolo com a função de descobrir um endereço físico baseado num endereço logico, ou seja, descobrir o endereço MAC da interface de rede do IP que será destinado o pacote. Note que o nome do comando que interage com o ARP no sistema operacional é o justamente o nome do protocolo ("arp") em Windows ou unix-like.

TCP (Transmission Control Protocol)-> Protocolo pertencente a camada 4 (modelo OSI), é orientado a conexão, garante a entrega dos pacotes de forma ordenada, faz verificação de erros, etc.

UDP (User Datagram Protocol)-> Protocolo sem orientação a conexão (não usa o three-way handshake), não garante a entrega, ordem ou proteção contra duplicação, sendo responsabilidade da aplicação que usa o UDP fazer estes tratamentos. Para o leitor não achar este protocolo ruim, um bom exemplo de sua utilidade seria em uma transmissão de áudio (dados em tempo real), pois caso o pacote se perca no meio do caminho é melhor continuar reproduzindo o áudio do que tentar recuperar o pacote (por isso que geralmente bom ou ruim é relativo). E como o TCP, ele pertence a camada 4 do modelo OSI.

Three-way handshake-> O protocolo TCP usa o three-way handshake para realizar um processo de conexão entre um cliente (IP e porta de origem) e um servidor (IP e porta de destino).

DNS (Domain Name System)-> Quando o tipo do registro DNS for do tipo "A", sua função é descobrir o endereço IP a partir de um nome (ou seja, um domínio ou subdomínio, ex: www.debian.org). Sem o DNS lembrar-se dos endereços dos websites seria muito mais difícil, pois por exemplo, você precisaria digitar no navegador http://140.211.15.34 ao invés de http://www.debian.org, precisaria decorar um novo IP caso fosse alterado o IP deste website, não conseguiria utilizar o recurso de virtual hosts baseado em URLs de um servidor WEB (ex: apache) etc, ou seja, DNS facilita em muito a nossa vida.

Bom, chega de teoria e vamos analisar algumas informações coletadas em nível de rede...

No ambiente montado para este artigo foi utilizado wireshark para captura dos pacotes enviados/recebidos e uma maquina virtual com as seguintes informações:
IP Fixo: 10.0.2.15/24 com MAC 08:00:27:02:E9:C0
Default GW: 10.0.2.2 com MAC 52:54:00:12:35:02
DNS Server: 208.67.222.222 (OpenDNS)

Abaixo segue os pacotes enviados e recebidos pela maquina virtual (VM) quando solicitou via browser (mais conhecido como navegador) o acesso ao website www.debian.org:

Fig. 1 - Clique na imagem para maximiza-la.

Abaixo segue descrição por pacote, baseado na Fig. 1 acima:

Pacote 1-> Como o website encontra-se hospedado na Internet é necessário que a VM envie as requisições direcionadas a Internet para seu default gateway. Como essa é a primeira vez que a VM irá se comunicar com o gateway ela enviou um pacote do tipo "ARP Request" com origem na camada 2 08:00:27:02:E9:C0 e origem na camada 3 10.0.2.15 e destino na camada 2 FF:FF:FF:FF:FF:FF (Broadcast) e destino na camada 3 10.0.2.2 (veja as 2 origens e os 2 destinos na Fig.2 abaixo), perguntando para a rede interna quem tem o endereço IP 10.0.2.2 (Default GW), ou seja, todos os ativos presentes nessa rede (10.0.2.0/24) receberam esse pacote pelo fato do mesmo ser do tipo broadcast.
Fig. 2 - Mais detalhes do pacote 1.

Pacote 2-> Somente o ativo de rede que detem o IP 10.0.2.2 respondeu para o endereço MAC da VM (através de um "ARP Reply") qual é o endereço MAC da interface configurada com o IP 10.0.2.2. Nesse momento a VM coloca o IP e MAC do Default GW em seu cache de tabela ARP e a mesma já pode enviar as requisições de acesso para a Internet, pois já conhece o MAC do gateway. Nesse caso o pacote tem como origem na camada 2 52:54:00:12:35:02 e na camada 3 10.0.2.2 e destino na camada 2 08:00:27:02:E9:C0 e na camada 3 10.0.2.15 (veja Fig.3 abaixo), o que faz do mesmo um pacote do tipo unicast.
Fig. 3 - Mais detalhes do pacote 2.

Pacote 3-> Como a VM não acessou esse website ainda ela não conhece o endereço IP do mesmo (ou seja, não está em seu cache DNS local), sendo assim ela envia um pacote do tipo "DNS query" para o endereço do DNS Sever 208.67.222.222 perguntando qual é o endereço IP (registro do tipo A) do website www.debian.org. Na Fig. 4 abaixo fica claro como que um pacote é encaminhado (roteado) para a Internet pelo gateway, como podemos observar, a origem na camada 2 e 3 representa a VM, e o pacote é analisado pelo Default GW porque o destino informado na camada 2 é o endereço MAC da interface de rede do Default GW e o mesmo é roteado para a Internet porque o destino na camada 3 é o IP do DNS Server da OpenDNS (esse é um dos motivos de IP ter Internet no nome e o gateway identificar que o pacote deve ser roteado e não tratado localmente, pois para ser tratado localmente o IP de destino deveria ser 10.0.2.2).
Fig. 4 - Mais detalhes do pacote 3.

Pacote 4-> O DNS Server 208.67.222.222 responde a solicitação feita pela VM com um "DNS response" informando que os endereços IP para o nome www.debian.org são: 140.211.15.34 e 128.31.0.51 (a resposta teve 2 IPs devido a utilização de round-robin DNS para o registro www.debian.org, suas vantagens básicas seriam o balanceamento de carga e a alta disponibilidade). 

Pacote 5-> A VM então envia um pacote SYN com destino ao IP 140.211.15.34 e porta 80 TCP para iniciar o three-way handshake.

Pacote 6-> O webserver em execução no IP 140.211.15.34 e porta 80 TCP responde com um SYN+ACK para continuar o processo do three-way handshake.

Pacote 7-> Completando o three-way handshake (processo de conexão) a VM envia um pacote ACK com destino ao IP 140.211.15.34 e porta 80 TCP. A partir deste momento a VM e o webserver em execução no IP 140.211.15.34 podem trocar informações.

Pacote 8-> Em seguida a VM envia um pacote contendo a solicitação (GET / HTTP/1.1) feita pelo browser para o IP 140.211.15.34 na porta 80 TCP, ou seja, finalmente faz o pedido de visualização do conteúdo do diretório raiz (informado por exemplo, pelo parâmetro DocumentRoot do webserver Apache) do website.

Pacote 9 em diante-> É apresentado no browser a pagina central (geralmente o arquivo padrão index.html, mas nesse caso foi index.en.html, pois na solicitação enviada não continha nome de arquivo, quando isso acontece o webserver mostra o conteúdo do arquivo padrão presente no diretório, informado por exemplo, pelo parâmetro DirectoryIndex do Apache) do website www.debian.org com suas respectivas informações, imagens, links para outros setores do website, etc.

Enjoy!...

NOTA: Um leitor atento provavelmente percebeu que este artigo apenas descreveu um exemplo prático do uso e da relação entre IP e MAC numa rede TCP/IP, do protocolo ARP, serviço DNS, roteamento e o three-way handshake.

Para maiores detalhes veja os links abaixo:

quinta-feira, 6 de março de 2014

Descobrindo o fabricante da sua interface de rede pelo MAC

Você pode consultar qual o fabricante (ou empresa subsidiária) da sua interface de rede informando os 3 primeiros conjuntos (sem os ":" ou com os "-") do endereço MAC da mesma no seguinte website:

http://standards.ieee.org/develop/regauth/oui/public.html

Segue abaixo um exemplo de uma consulta onde podemos ver que o fabricante é a Dell:



Enjoy!...
 
BlogBlogs.Com.Br