Apostila Aula01 PDF
Apostila Aula01 PDF
Apostila Aula01 PDF
Análise de Malwares
Instrutor:
Ronaldo Pinheiro de Lima
ronaldoplima@yahoo.com.br
@crimescibernet
Visão Geral do Curso
O curso tem como foco a engenharia reversa e análise de arquivos maliciosos da plataforma
Windows e também Web. Durante todo o treinamento serão apresentadas técnicas e ferramentas
(gratuitas) que auxiliarão o aluno na análise prática de malwares atuais dos mais diversos tipos.
Além do aspecto prático o aluno também terá contato com a teoria do funcionamento interno
(baixo-nível) de executáveis e do sistema operacional Windows. Serão tratados com mais detalhes
os tópicos Windows Internals, Rootkits e Antireversing, essenciais para a análise de malwares
avançados.
Aula 01
1. Introdução ....................................................................................................................................... 2
1.1. Tipos de códigos maliciosos .........................................................................................................2
1.2. Engenharia reversa de malware ....................................................................................................4
1.3. Análise estática e dinâmica (comportamental) .............................................................................5
1.4. Ferramentas ..................................................................................................................................5
1.5. Antireversing e anti-antivirus .....................................................................................................15
1.5.1. Polimorfismo ...........................................................................................................................16
1.5.2. Metamorfismo .........................................................................................................................16
1.5.3. Packers .....................................................................................................................................17
1.5.4. Cryptors ...................................................................................................................................17
1.5.5. Binders, Joiners ou Wrappers ..................................................................................................18
1.5.6. Strings Ofuscadas ....................................................................................................................18
CAPÍTULO 1 – INTRODUÇÃO | 2
1. Introdução
Vírus: é o tipo mais antigo de malware e tem se tornado menos popular nos dias atuais,
porém às vezes o termo ainda é utilizado de forma genérica para descrever todos os tipos de
malwares. Eles fazem cópias de si mesmos infectando outros arquivos legítimos do computador, ou
seja, se tornam parte de outros programas (geralmente executáveis). Uma característica importante é
que os vírus geralmente dependem da ação do usuário para se tornarem ativos e infectarem outros
computadores, diferente da maioria dos malwares atuais que utilizam Internet ou a rede local para
se replicarem.
Trojan horse: em português cavalo de Troia, foi na mitologia grega uma grande estátua,
utilizada como instrumento de guerra pelos gregos para obter acesso a cidade de Troia. A estátua do
cavalo foi recheada com soldados que, durante a noite, abriram os portões da cidade possibilitando
a entrada dos gregos e a dominação de Troia. Daí surgiram os termos "Presente de Grego" e
"Cavalo de Troia". No mundo dos malwares, um trojan é um programa normalmente recebido como
um "presente" (por exemplo, vídeos, fotos, jogos, etc.), que além de executar funções para as quais
foi aparentemente projetado, também executa outras funções normalmente maliciosas e sem o
conhecimento do usuário.
Trojan-Downloader: é um tipo de Trojan que existe somente para fazer download de outros
códigos maliciosos. Downloaders, ou Loaders como são conhecidos no meio hacker, geralmente são
instalados pelos atacantes quando eles obtêm acesso ao sistema pela primeira vez. O downloader irá
baixar e instalar outros malwares automaticamente.
Trojan-Banker: esse tipo de Trojan é muito comum no Brasil, 95% dos malwares
produzidos no país são desse tipo [1], são especializados em furtar dados referentes ao Internet
Banking. Tentam se passar por aplicativos ou sites dos bancos brasileiros para conseguirem capturar
senhas e demais credenciais de acesso a contas bancárias.
[1] http://oglobo.globo.com/tecnologia/bbr-ajuda-mas-malware-ainda-pode-infectar-aparelhos-3678255
Backdoor: código malicioso que se instala no computador para permitir o acesso remoto do
atacante. Permite ao atacante se conectar e executar comandos no computador infectado sem que o
usuário tenha conhecimento.
Rootkit: malware designado para ocultar sua presença e de outros códigos maliciosos no
sistema operacional. Utiliza-se de técnicas avançadas para dificultar a detecção por parte do
usuário, geralmente faz isso alterando funções internas do sistema operacional fazendo com que
passe despercebido pelas ferramentas anti-malware.
Phishing Scam: é um golpe que se utiliza de engenharia social com o envio de mensagem
não solicitado (spam) para se passar por uma instituição conhecida, como um banco, empresa ou
site popular, e que procura induzir o usuário a acessar páginas falsas ou instalar códigos maliciosos
projetados para furtar dados pessoais e financeiros. As palavras inglesas phishing (de "fishing",
pescaria) e scam (golpe) vêm de uma analogia criada pelos fraudadores, onde "iscas" (e-mails) são
usadas para "pescar" senhas e dados financeiros de usuários na Internet. No meio hacker, os
indivíduos especializados em desenvolver códigos maliciosos ou sites fraudulentos para furtar
informações bancárias é conhecido como "banker" e o especializado somente em cartões de crédito
é o "carder".
Spear Phishing: no phishing comum são enviados e-mails para tentar “pescar” senhas e
outros dados bancários das pessoas em geral, já no spear phishing (“pescaria com arpão”) são
enviados e-mails direcionados a alvos específicos, a mensagem é cuidadosamente montada para que
se passe por verdadeira dentro de uma empresa ou órgão.
Existem duas abordagens distintas, contudo complementares, que podemos utilizar para
analisar um malware. A primeira delas é chamada de análise estática, com ela analisamos um
artefato, na verdade um arquivo, sem executá-lo ou executando apenas pequenos trechos de seu
código com ajuda de debuggers. Nesse tipo de análise utilizamos diversas ferramentas para
conseguir extrair o máximo de informações possíveis do malware, geralmente essa abordagem
exige do analista um conhecimento maior dos formatos de arquivos envolvidos, do funcionamento
interno do sistema operacional e da linguagem assembly, porém dessa forma conseguimos extrair
informações mais detalhadas e avançadas do malware.
Já na análise dinâmica, também chamada de comportamental, executamos o arquivo e
monitoramos seu comportamento, interação e efeitos no sistema operacional hospedeiro, deixamos
o malware agir e observamos. Para isso contamos com a ajuda de diversas ferramentas que
capturam tráfego de rede, execução de processos, modificações no registro, sistema de arquivos,
etc., e no final da execução, ou após um determinado período de tempo definido por nós, são
exibidos os relatórios com os resultados.
Vale dizer que a análise dinâmica é fácil ser automatizada, os sites que analisam malwares
fazem isso, já a análise estática é muito difícil, a maior parte do trabalho é feito manualmente por
um analista. As empresas desse ramo, universidades ou mesmo as forças policiais (FBI) geralmente
possuem gigantescas base de dados com milhões de amostras que são analisadas automaticamente
pelo método dinâmico e os arquivos que fogem do padrão são separados e analisados manualmente
por uma pessoa através do método estático.
Um método não é melhor que o outro, eles são complementares. Às vezes é muito útil
utilizar a abordagem dinâmica para provar ou tirar uma dúvida do que foi encontrado com a análise
estática. Também podemos utilizar a análise estática para conseguir mais detalhes do que foi
apresentado com a abordagem dinâmica. Por isso é importante conhecer os dois métodos.
1.4. Ferramentas
malware, mas mesmo assim existem inúmeras criadas com outros propósitos que são muito úteis na
hora de lidar com um arquivo malicioso. Elas são categorizadas de acordo com suas
funcionalidades, muitas são bem completas e se encaixam em mais de uma categoria, vejamos
abaixo as características de cada uma e no decorrer do curso as conheceremos com mais detalhes.
Lembrando que todos os softwares utilizados são gratuitos e estão disponíveis na internet para
qualquer um fazer download.
Identificadores de Arquivos
Quando pretendemos analisar um arquivo suspeito não temos nenhuma informação prévia
sobre ele, não sabemos o formato do arquivo, para qual sistema operacional foi compilado ou se ele
possui alguma proteção. Não podemos confiar no nome do arquivo e nem em sua extensão, pois
isso é usado como engenharia social para enganar os menos atentos. Existem ferramentas,
classificadas genericamente como identificadores de arquivos, que podemos utilizar para obter um
perfil inicial do arquivo.
Elas recebem o arquivo suspeito como entrada e exibem informações detalhadas como:
formato do arquivo, compilador, linguagem de programação, proteções, cabeçalhos, sessões do
arquivo, etc. Algumas ainda dão dicas de como remover as proteções e permitem a instalação de
plug-ins.
- PEiD
Ferramenta gratuita para detecção de packers e compiladores. Inclui mais de 600 assinaturas para
detectar packers, cryptors e compiladores em arquivos do formato PE (executável do Windows).
Suporta a instalação de plug-ins como o Krypto ANALyzer (KANAL). O KANAL pode ser
utilizado para encontrar algoritmos de criptografia conhecidos em arquivos PE. Embora o projeto
do PEiD tenha sido descontinuado ainda é possível fazer o download da ferramenta.
Download: http://www.peid.info/.
- Exeinfo PE
Assim como o PEiD é uma ferramenta gratuita que também identifica packers e compiladores de
arquivos PE. Projeto atualizado que apresenta bons resultados e possui 617 assinaturas de detecção.
Uma vantagem é que ele quando identifica um packer dá dica de como encontrar o unpacker.
- file
Comando nativo de distribuições Linux para identificação de arquivos. Ideal para saber o tipo de
um arquivo desconhecido, às vezes consegue identificar a presença de packers. Possui versão
gratuita para Windows.
Download (Windows): http://gnuwin32.sourceforge.net/packages/file.htm.
Monitoramento do Sistema
Esse tipo de ferramenta está relacionado com a análise dinâmica do malware, envolve
tarefas como “snifar” a rede, monitorar o sistema operacional (SO), explorar e expor o que o
malware está fazendo. A maioria dessas ferramentas exibe informações coletadas pelo SO sobre o
malware e seu ambiente, devido à quase totalidade de comunicação do malware com o mundo
exterior ser feita através do SO, ele pode ser manipulado para extrair essa informação. Ferramentas
de monitoramento do sistema podem monitorar atividade de rede, acesso a arquivos, acesso ao
registro, criação de processos, além de objetos do SO como mutex, eventos e outros.
- Autoruns
Autoruns é um utilitário com uma longa lista de locais de inicialização automática de programas no
Windows. Malwares frequentemente se instalam em uma variedade de locais, incluindo o registro,
menu iniciar, e outros. Autoruns procura por vários locais possíveis e apresenta uma relatório em
uma interface gráfica. Use o Autoruns na análise dinâmica para ver onde o malware se instalou. A
ferramenta faz parte da Sysinternals Suite.
Download: http://www.sysinternals.com/.
- Capture BAT
É uma ferramenta de análise dinâmica para monitorar o malware enquanto ele ainda está rodando.
Capture BAT irá monitorar o sistema de arquivos, registro e atividades do processo. Você pode usar
listas de exclusão (incluindo muitas já predefinidas) para remover os resultados não desejados e
focar somente no malware que está analisando. Apesar de o Capture BAT não ter uma interface
gráfica muito sofisticada como o Process Monitor, é uma ferramenta open source, então você pode
modificá-la.
Download: http://www.honeynet.org/project/CaptureBAT.
- Process Explorer
É um poderoso gerenciador de tarefas do Windows que é utilizado para prover informações sobre os
processos que estão executando no sistema. Process Explorer pode mostrar as DLLs de processos
individuais, handles, eventos, strings e muito mais. Faz parte da Sysinternals Suite.
Download: http://www.sysinternals.com/.
- Process Hacker
É um poderoso gerenciador de tarefas similar ao Process Explorer, porém com muitas
funcionalidades adicionais. Ele pode buscar por strings e expressões regulares na memória, injetar
ou descarregar DLL, carregar um driver, criar ou iniciar um serviço e muito mais.
Download: http://processhacker.sourceforge.net/.
- Process Monitor
Process Monitor (procmon) é uma ferramenta de análise dinâmica útil para visualizar em tempo real
atividades no sistema de arquivos, registro e processos. Você pode utilizar filtros para remover
informações não desejadas do relatório. Faz parte da Sysinternals Suite.
Download: http://www.sysinternals.com/.
- Regshot
Ferramenta de análise dinâmica que permite tirar e comparar dois snapshots (estado ou “foto”) do
registro do sistema. Para usá-la, você simplesmente tira um snapshot do registro, executa o
malware, aguarda ele fazer as modificações no sistema, tira o segundo snapshot, e então compara os
dois. O regshot também pode ser utilizado para tirar e comparar dois snapshots de qualquer pasta do
sistema de arquivos que você especificar.
Download: http://sourceforge.net/projects/regshot/.
- TCPView
Ferramenta para mostrar graficamente listagens detalhadas de todas as conexões TCP e UDP
relacionadas com processos. Essa ferramenta é útil para análise de um malware porque permite
visualizar qual processo é proprietário de determinada conexão. TCPView pode ajudar você a
rastrear o nome de um processo quando sua máquina de análise se conecta a uma porta TCP e você
não tem ideia de qual é o responsável. Faz parte da Sysinternals Suite.
Download: http://www.sysinternals.com/.
- Wireshark
Wireshark é uma ferramenta open source de análise de pacotes de rede. Pode ser utilizada para
capturar o tráfego de rede gerado pelo malware e para analisar muitos protocolos diferentes. É a
ferramenta mais popular disponível livremente para capturar pacotes de rede, possui uma interface
completa e fácil de usar.
Download: http://www.wireshark.org/.
Disassemblers
Disassemblers são programas que recebem um arquivo binário executável como entrada e
geram como saída arquivos textuais que contém o código da linguagem assembly para o programa
inteiro ou parte dele. Esse processo é relativamente simples considerando que a linguagem
assembly é simplesmente o mapeamento textual da linguagem de máquina. Disassembly é um
processo baseado em processador, ou seja, cada arquitetura de CPU tem uma linguagem assembly
específica, mas alguns disassemblers suportam múltiplas arquiteturas diferentes. Um bom
disassembler é uma ferramenta essencial no kit do engenheiro reverso de malware, através dele
temos acesso ao código-fonte do malware (ainda que em linguagem de baixo-nível) o que auxilia o
seu entendimento e manipulação.
Download: http://www.hex-rays.com/products/ida/support/download_freeware.shtml.
Debuggers
Caso você já tenha feito algo em desenvolvimento de software já deve ter ouvido falar sobre
os debuggers. Um debugger é um software que permite que o desenvolvedor observe seu programa
enquanto ele está sendo executado. As duas maiores características de um debugger são a habilidade
de estabelecer breakpoints e a habilidade de navegar através do código.
Breakpoints permitem ao usuário selecionar uma função ou linha de código em qualquer
lugar no programa e instruir o debugger a parar a execução do programa assim que essa linha é
atingida. Quando ele atinge o breakpoint, o debugger para (break) e exibe o estado atual do
programa. Nesse ponto é possível liberar o programa para continuar a execução ou começar a
navegar através de seu código. Esse processo de “navegação” através do programa consiste em
executar uma linha de código de cada vez e congelar, permitindo ao usuário observar e até alterar
seu estado. Isso permite observar o fluxo exato do programa de uma forma mais lenta e apropriada
para a compreensão humana, já que o computador executada tudo isso bilhões de vezes mais rápido.
Instalando breakpoints e navegando por programas, os desenvolvedores podem assistir ao
programa de perto quando ele executa uma seção problemática do código e tentar determinar a
origem do problema. Como os desenvolvedores têm acesso ao código-fonte de seus programas,
debuggers comuns exibem o código-fonte na linguagem de programação de alto-nível que eles
estão utilizando, permitindo a manipulação desse código.
Para os engenheiros reversos de malware, o debugger é quase tão importante quanto para o
desenvolvedor de software, mas por pequenas razões diferentes. Os debuggers são utilizados no
modo disassembly, por essa razão esse tipo de debugger é conhecido como assembler-level
debugger. No modo disassembly um debugger utiliza um disassembler embutido para
“disassemblar” o código de máquina em tempo de execução. É possível executar linha a linha o
código assembly e “assistir” como a CPU executa cada instrução do malware. Essa capacidade de
saber o que está sendo executado é muito valiosa para a análise do malware, inclusive para entender
trechos mais complexos de seu código ou ainda para tentar remover determinadas proteções do
código. Ao decorrer do curso utilizaremos bastante debuggers.
- OllyDbg
OllyDbg é um dos mais utilizados debuggers para análise de malware. É um user-mode x86
debugger com uma interface gráfica. Inúmeros plug-ins estão disponíveis para o OllyDbg, como por
exemplo o OllyDump muito utilizado para unpacking de malwares.
Download: http://www.ollydbg.de/.
- Immunity Debugger
O ImmDbg é um user-mode debugger disponível gratuitamente. É derivado do código-fonte do
OllyDbg 1.1, possui pequenas modificações da GUI do OllyDbg e um interpretador Python
completamente funcional com uma API que permite escrever e rodar scripts nessa linguagem.
Download: http://www.immunityinc.com/products-immdbg.shtml.
- WinDbg
WinDbg é o debugger completo mais popular, distribuído gratuitamente pela Microsoft. Você pode
utilizá-lo para debugar malware em user-mode, kernel-mode, x86 e x64. O WinDbg não tem a
interface gráfica robusta como o OllyDbg, ao invés disso possui uma interface de linha de
comandos. Muitos analistas de malware optam por usar o OllyDbg para user-mode debugging e o
WinDbg para kernel debugging. WinDbg pode ser baixado independente ou como parte do
Windows SDK.
Download: http://msdn.microsoft.com/.
Descompiladores
- DeDe
Popular descompilador para executáveis compilados em Delphi. Possui interface gráfica onde é
possível visualizar o nome original do projeto Delphi, a versão utilizada, forms encontrados,
funções e mais. Ainda permite salvar o projeto em formato nativo do Delphi o que permite posterior
abertura na IDE. Apesar de nem sempre apresentar resultados satisfatórios é muito útil para
recuperar GUIs de malwares.
Download:
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml.
- VB Decompiler Pro
Descompilador para executáveis compilados com a linguagem de programação Visual Basic.
Recupera funções, forms, nome do projeto e permite salvar o projeto para posterior utilização com o
Visual Basic.
Download: http://www.vb-decompiler.org/products/pt.htm.
- Hex-Rays Decompiler
Apesar de ser uma ferramenta paga (e cara, 2.239,00 USD) vale à pena citar a título de
conhecimento. O Hex-Rays Decompiler é um poderoso plug-in para o IDA Pro que tenta converter
código assembly em código amigável para humanos, uma espécie de pseudocódigo em C. Por
exemplo, com o uso do plug-in 100 linhas de código assembly podem se transformar em apenas 8
linhas de código C. O plug-in é muito útil para decifrar complexos algoritmos de criptografia. É a
melhor ferramenta no mercado para descompilação, mas não é livre de falhas.
Para mais informações: http://www.hex-rays.com/.
Memory Forensics
tipo são as ferramentas que realizam a captura da RAM do computador, elas fazem uma cópia
idêntica de tudo o que está na memória, ou de apenas de um determinado processo, e salva em um
arquivo para posterior análise, esse processo é conhecido como dump de memória. O segundo tipo
de ferramenta é responsável pela análise da memória capturada, a partir do arquivo de dump ela
consegue reconstruir todas as informações que estavam originalmente na RAM do sistema e nos
exibir de forma amigável, permitindo variadas opções de buscas e listagens.
- LordPE
É uma ferramenta gratuita para realizar o dump de um executável na memória, com ele é possível
selecionar um processo que esteja em execução e copiá-lo inteiro ou parcialmente. Ele permite
editar o arquivo PE e pode ser utilizado para corrigir um programa que foi copiado da memória com
outra ferramenta. Ferramenta bastante utilizada para unpacking de malware.
Download: http://www.woodmann.com/collaborative/tools/index.php/LordPE.
- Memoryze
Ferramenta gratuita criada pela empresa MANDIANT para forense de memória. Memoryze pode
adquirir e/ou analisar toda a memória física ou apenas à referente a um processo, em um sistema em
execução ou em um dump de memória salvo. Também pode detectar rootkits e os hooks que eles
instalam. Para visualizar a saída gerada pela ferramenta Memoryze é necessário fazer download
também da ferramenta Audit Viewer, o que torna o processo de análise rápido e mais intuitivo.
Download: http://www.mandiant.com/products/free_software/memoryze/.
- Volatility Framework
É uma coleção de ferramentas open source escritas em Python para live análise de dumps de
memória. Esse conjunto de ferramentas é útil para análise de malware pois pode ser utilizada para
extrair DLLs injetadas em processos, detectar rootkits, encontrar processos ocultos, e muito mais. O
Volatility possui muitos usuários e colaboradores, então novos recursos estão constantemente sendo
desenvolvidos.
Download: http://code.google.com/p/volatility/.
Além dessas categorias existem ferramentas diversas que auxiliam em alguma tarefa
específica da análise do malware. Podemos citar algumas úteis para o arsenal do analista de
malware.
Diversas
- CFF Explorer
Uma ferramenta designada para permitir a edição de arquivos PE de forma fácil. Útil para editar a
seção resources, adicionar imports, ou escanear por assinaturas.
Download: http://www.ntcore.com/.
- Dependency Walker
Ferramenta de análise estática para explorar DLLs e funções importadas por malwares. Constroi um
diagrama em formato de árvore hierárquica com todas as DLLs que serão carregadas na memória
quando o malware executar.
Download: http://www.dependencywalker.com/.
- Editores Hexadecimais
Editores hex permitem editar e visualizar arquivos contendo dados binários. Existem muitos
editores disponíveis alguns gratuitos e outros não, é necessário comparar as características de cada
para descobrir o mais apropriado. Como sugestão de ferramenta gratuita para Windows pode-se
baixar o HxD Hex Editor, que possui uma boa interface gráfica e bom desempenho.
Download: http://mh-nexus.de/en/hxd/.
- Import REConstructor
ImpREC é uma ferramenta útil quando se está realizando o unpacking manual de um malware. A
import address table (IAT) é frequentemente danificada quando é feito o unpacking manual através
- PEview
PEview é uma ferramenta gratuita para visualizar as estruturas do arquivo PE. Você pode ver o
cabeçalho PE, seções individuais e as tabelas de import/export.
Download: http://www.magma.ca/~wjr/.
- Resource Hacker
É um utilitário gratuito para análise estática, com ele é possível visualizar, renomear, modificar,
adicionar, excluir e extrair informações da seção resources de binários do tipo PE. Devido aos
malwares frequentemente extraírem uma DLL, ou um driver da seção resources em tempo de
execução, essa ferramenta é muito útil para extrair essas seções sem a necessidade de executar o
código malicioso.
Download: http://www.angusj.com/resourcehacker/.
- Strings
Ferramenta de análise estática para examinar strings em ASCII e Unicode em arquivos binários.
Utilizar Strings é frequentemente um jeito fácil de obter uma visão alto-nível das capacidades do
malware, mas esse está com algum packer ou ofuscação Strings não tem muita utilidade. O
comando Strings já vem nativo em todas as distribuições Linux e no Windows e possível fazer o
download da ferramenta, ela faz parte da Sysinternals Suite.
Download: http://www.sysinternals.com/.
forma de proteção, dentro do código de um malware pode haver uma lista de outros malwares que
são desinstalados assim que o computador é infectado, mantendo pra si o controle total do
computador da vítima.
São utilizadas variadas técnicas para proteger e esconder o conteúdo original do arquivo, já é
bem comum utilizarem mais de uma camada de proteção em um código para terem certeza que ele
se permanecerá indetectável. Os mecanismos de antireversing mais conhecidos são packers,
cryptors (criptografia) e binders, joiners ou wrappers. Também são utilizadas técnicas como
polimorfismo e metamorfismo para se manterem distantes dos programas antivírus. Vejamos a
seguir o que cada técnica significa e posteriormente em outras aulas explorá-las com mais detalhes.
1.5.1. Polimorfismo
1.5.2. Metamorfismo
do autor) é que cada versão do artefato malicioso é radicalmente diferente das outras. Isso faz com
que seja muito difícil para os desenvolvedores dos antivírus utilizar qualquer tipo de detecção por
assinatura.
Metamorfismo requer um poderoso mecanismo de análise de código que precisa estar embutido
dentro do programa malicioso. Esse mecanismo escaneia o código do programa e gera uma
diferente versão dele em tempo de execução cada vez que o programa é duplicado. A parte
inteligente aqui é o tipo de modificações feitas pelo programa. Um mecanismo metamórfico pode
executar uma enorme variedade de alterações no programa malicioso, não precisa nem dizer que as
alterações são realizadas no programa todo inclusive no próprio mecanismo. Em resumo,
combinando diversas técnicas, um mecanismo metamórfico pode criar malware realmente flexíveis
que pode ser muito difícil de localizar e identificar.
1.5.3. Packers
1.5.4. Cryptors
criptografia outra diferença dos packers é que eles geralmente não possuem algoritmos de
compressão de dados, não têm como objetivo diminuir o tamanho do arquivo.
Binder (também conhecido como joiner ou wrapper) em ambiente Windows recebe como
entrada um arquivo executável (geralmente malicioso) e outro arquivo qualquer (geralmente
benigno), e junta os dois formando um só arquivo executável. O autor pode determinar qual arquivo
será executado e se essa execução será oculta ou não, além de determinar em qual pasta será
copiado, quais ações a serem tomadas com os dois arquivos, etc. Por exemplo o atacante pode
combinar o arquivo malicioso com um arquivo JPG, quando a vítima executá-lo será aberta a
imagem JPG e o arquivo malicioso pode ser executado de forma oculta para não levantar suspeita.
Esse pode ser um mecanismo efetivo para distribuição de malwares.
Veremos nos capítulos posteriores que quando um programa é compilado seu código-fonte é
transformado em uma linguagem que o computador entenda, geralmente chamamos isso de
linguagem de máquina. Mesmo com essa transformação alguns elementos originais do código-fonte
do programa permanecem iguais, isso se a aplica para as cadeias de caracteres, mais conhecidas
como strings. Strings podem conter URLs, endereços de e-mails, conexões com servidores de banco
de dados, nomes de usuários e senhas, etc. Sabendo que essas informações podem permanecer
visíveis nos executáveis mesmo após o processo de compilação, os autores de malwares passaram a
adotar medidas para ofuscar o conteúdo dessas strings. Geralmente isso é feito através de
algoritmos de criptografia, antes de compilar o programa o atacante seleciona as strings originais do
código-fonte, as insere em programas cryptors de strings, pega o resultado (a string criptografada) e
substitui a original do código por essa nova. Feito isso, antes de usar cada string criptografada do
código ele faz uma chamada para uma função de descriptografia, que em tempo de execução irá
reverter o processo retornando a string original. Essa técnica será tratada em detalhes nos próximos
capítulos.