• Nenhum resultado encontrado

2.3 T´ ECNICAS DE AN ´ ALISE DE MALWARE

2.3.9 ANALISANDO PROGRAMAS WINDOWS MALICIOSOS

A maioria dos malware possui como alvo plataformas Windows e estabelece uma co- labora¸c˜ao intensa com o sistema operacional. Uma compreens˜ao da arquitetura do Windows permite identificar poss´ıveis indicadores de malware. Desse maneira, moni- torar a forma que os artefatos acessam o sistema operacional viabiliza determinar o prop´osito do exemplar.

Nesta se¸c˜ao, detalham-se algumas maneiras que os malware usam as funcionalidades do Windows. Essa an´alise concentrar-se nas funcionalidades mais relevantes para a an´alise de malware.

2.3.9.1 WINDOWS API

Windows API ´e um amplo conjunto de funcionalidades que permite que aplica¸c˜oes interajam com o sistema operacional. Esse conjunto ´e importante para an´alise de arte- fatos, uma vez que estes precisam acessar essas fun¸c˜oes para executar suas atividades maliciosas.

Uma das formas mais comuns pela qual os malware interagem com o sistema opera- cional ´e criando e modificando arquivos. Atividades no sistema de arquivos podem revelar informa¸c˜oes importantes acerca do comportamento do malware. Por exemplo, se o artefato cria um arquivo e armazena h´abitos de navega¸c˜ao do usu´ario, o programa ´e provavelmente alguma forma de spyware.

A Microsoft provˆe v´arias fun¸c˜oes para acessar o sistema de arquivo, como a CreateFile que ´e usada para criar ou abrir arquivos, ou a WriteFile empregada para escrever em arquivos.

2.3.9.2 REGISTRO DO WINDOWS

O registro do Windows ´e usado para armazenar informa¸c˜oes do sistema operacio- nal e configura¸c˜ao de programas. Assim como o sistema de arquivos, o registro ´e uma boa fonte de dados que pode revelar informa¸c˜oes ´uteis sobre a funcionalidade do malware. As primeiras vers˜oes do Windows usava arquivos ini para armazenar in- forma¸c˜oes de configura¸c˜ao. O registro foi criado como um banco de dados hier´arquico de informa¸c˜oes para melhorar o desempenho, e sua importˆancia tem crescido `a medida que mais aplica¸c˜oes utilizam para armazenar dados. Quase todas as informa¸c˜oes de configura¸c˜ao do Windows s˜ao armazenadas no registro, incluindo redes, driver, startup, conta de usu´ario, entre outras. Frequentemente, malware usam o registro para dados de persistˆencia ou de configura¸c˜ao. Os artefatos adicionam entradas no registro que permitem que ele seja executado automaticamente quando o computador inicia. De-

vido ao tamanho do registro, h´a v´arias formas de o malware us´a-lo para persistˆencia. Existem alguns termos importantes de registro:

• Root key - O registro ´e dividido em cinco se¸c˜oes de n´ıvel superior chamada de chaves-raiz. `As vezes, os termos HKEY e hive tamb´em s˜ao utilizados. Cada uma das chaves de raiz tem um prop´osito particular, conforme explicado a seguir. • Subkey - ´E como uma subpasta dentro de uma pasta;

• Key - ´E uma pasta no registro que pode conter outras pastas ou valores. As Root key e Subkey s˜ao ambas Key;

• Value entry - ´E um par ordenado com um nome e valor;

• Value ou data - S˜ao os dados armazenados em uma entrada de registro.

O registro ´e dividido em cinco Root key:

• HKEY LOCAL MACHINE (HKLM) - Armazena configura¸c˜oes que s˜ao globais para a m´aquina local;

• HKEY CURRENT USER (HKCU) - Guarda as configura¸c˜oes espec´ıficas para o usu´ario atual;

• HKEY CLASSES ROOT - Mantˆem informa¸c˜oes de defini¸c˜ao de tipos;

• HKEY CURRENT CONFIG - Armazena as configura¸c˜oes sobre a configura¸c˜ao de hardware atual, especificamente diferen¸cas entre a configura¸c˜ao atual e a padr˜ao;

• HKEY USERS - Define configura¸c˜oes para o usu´ario padr˜ao, novos usu´arios e o atual.

As duas chaves de raiz (Root key) mais frequentemente utilizadas s˜ao HKLM e HKCU. Algumas chaves s˜ao virtuais e fornecem uma maneira para fazer referˆencia a informa¸c˜oes de registro subjacente. Por exemplo, a chave ´e HKEY CURRENT USER realmente armazenada em HKEY USERS\SID, em que SID ´e o identificador da seguran¸ca do usu´ario conectado no momento. Por exemplo, uma sub-chave popular, HKEY LOCAL

MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, cont´em uma s´erie de valores que s˜ao executados automaticamente quando um usu´ario se loga. A chave raiz ´e HKEY LOCAL MACHINE, que armazena as subchaves do software, Microsoft, Windows, CurrentVersion e Run.

Malware usa frequentemente fun¸c˜oes de registro que s˜ao parte da API do Windows a fim de executar automaticamente quando o sistema ´e inicializado. Seguem-se as fun¸c˜oes mais comuns do registro:

• RegOpenKeyEx - Abre um registro para edi¸c˜ao e consulta. Existem fun¸c˜oes que permitem consultar e editar uma chave de registro sem abri-lo, mas a maioria dos programas usam RegOpenKeyEx de qualquer maneira;

• RegSetValueEx - Adiciona um novo valor ao registro e define seus dados; • RegGetValue - Retorna os dados para uma entrada de valor no Registro.

Ao observar essas fun¸c˜oes em um malware, deve-se identificar o registro-chave que est´a sendo acessado. Al´em das chaves de registro para executar na inicializa¸c˜ao, muitos valores de registro s˜ao importantes para a seguran¸ca e as configura¸c˜oes do sistema.

2.3.9.3 NETWORKING APIs

Malware, normalmente, baseia-se em fun¸c˜oes de rede para fazer seu trabalho, e h´a muitas fun¸c˜oes da API do Windows para comunica¸c˜ao de rede. ´E importante reconhe- cer e compreender as fun¸c˜oes de rede comuns, para que se possa identificar o que um programa mal-intencionado est´a fazendo quando essas fun¸c˜oes s˜ao acessadas.

Das op¸c˜oes de rede do Windows, malware frequentemente usa Berkeley soquetes, fun- cionalidade que ´e quase idˆentica em sistemas Windows e Unix. A funcionalidade da rede Berkeley soquetes no Windows ´e implementada nas bibliotecas Winsock, princi- palmente em ws2 32.dll. Dessas, as fun¸c˜oes socket, connect, bind, listen, accept, send, e recv s˜ao as mais comuns.

H´a sempre dois lados para um programa de rede: o lado do servidor, que mant´em um socket a espera de conex˜oes de entrada, e o lado do cliente , que se conecta a esse

socket. Malware pode estar em um desses. No caso de aplica¸c˜oes do lado do cliente que se conectam a um socket remoto, existir´a um chamada de socket seguido por uma chamada connect, seguido pelo send e recv quando necess´ario. Para um aplica¸c˜ao que ”escuta”conex˜oes de entrada, as fun¸c˜oes socket, bind, listen e accept s˜ao chamadas nessa ordem, seguido pelo send e recv, conforme necess´ario. Esse padr˜ao ´e comum tanto para software maliciosos quanto para n˜ao maliciosos.

Al´em do API Winsock, existe uma API de n´ıvel superior chamado de WinINet API API. As fun¸c˜oes de API do WinINet s˜ao armazenados em Wininet.dll. Se um programa importa fun¸c˜oes dessa DLL, ele est´a usando APIs de rede de n´ıvel superior. A API WinINet implementa protocolos como HTTP e FTP na camada de aplica¸c˜ao. Pode-se ganhar uma compreens˜ao do comportamento do malware com base nas conex˜oes que se abrem.

• InternetOpen ´e usado para inicializar uma conex˜ao com a Internet;

• InternetOpenUrl ´e utilizado para conectar a um URL (que pode ser uma p´agina HTTP ou um recurso FTP);

• InternetReadFile funciona semelhante `a fun¸c˜ao ReadFile, permitindo que o pro- grama possa ler dados de um arquivo baixado da Internet.

Malware pode usar a API WinINet para se conectar a um servidor remoto e obter mais instru¸c˜oes para a execu¸c˜ao.

Documentos relacionados