Visão geral do curso
Introdução
termo malware
intenção
atividades
danos
3 Aula 01
Tipos de código maliciosos
características comuns
difícil definição
Vírus
mais antigo
termo genérico
cópias para infectar arquivos
depende de ação do usuário
4 Aula 01
Worm
auto-replicam
exploram vulnerabilidades
Spyware
coleta dados de navegação/computador
Trojan horse
presente de grego
funções ocultas
Trojan-Downloader
instalados no primeiro acesso
Trojan-Dropper
códigos maliciosos embutidos no próprio trojan
5 Aula 01
Trojan-Banker
95% no Brasil
Backdoor
acesso remoto
Bot/Botnet
acesso remoto para enviar comandos
ataques
Ransomware
criptografa dados e solicita “resgate”
Scareware
assustar o usuário, rogue ou fake security software
Rootkit
ocultar presença, técnicas avançadas
6 Aula 01
Nation-Sponsored Malware
Cyberweapons / CyberWar
Inutilizar computador da vítima
Utilizada frequentemente em sistemas industriais:
nuclear, energia, abastecimento (SCADA)
Cyber Espionage / Cyber Surveillance
Coletar todos os tipos de dados
Ex.: Stuxnet, DuQu, Flame, FinFisher, [next here]
http://www.finfisher.com
7 Aula 01
Fraudes
Pharming
redirecionamento do usuário para páginas falsas
DNS falso
Phishing Scam
spam
assuntos do momento
Spear Phishing
pesca com arpão
8 Aula 01
Engenharia Reversa
extrair conhecimento
algo que foi perdido ou sem acesso
descobrir segredos dos concorrentes
Engenharia Reversa de Malware
dissecar o malware
olhar internamente
entender suas funcionalidades
habilidades específicas (curiosidade)
9 Aula 01
Análise Estática e Dinâmica
estática
sem execução *
conhecimentos mais avançados
dinâmica
execução, comportamento
monitoramento do SO
automatização
métodos complementares
10 Aula 01
Ferramentas
poucas próprias
gratuitas
Identificadores de arquivos
perfil do arquivo
compiladores e proteções
Ex.: PEiD, Exeinfo PE, RDG, file
11 Aula 01
Monitoramento do sistema
análise dinâmica
rede, arquivos, registro, processos, objetos
Exemplos:
Autoruns, Process Explorer
Process Hacker, Process Monitor, Regshot
TCP View, Wireshark
12 Aula 01
Disassemblers
gera textos com código assembly
baseado em arquitetura (processador)
Ex.: IDA Pro Free
Debuggers
observar programas e ambiente
breakpoints e navegar no código
assembler level debugger
13 Aula 01
Debuggers (cont.)
assistir a CPU
user-mode e kernel-mode debuggers
Ex.: OllyDbg, Immunity Debugger, WinDbg
Descompiladores
produzir código de alto-nível
compilação perde informações
Ex.: DeDe, VB Decompiler Pro, Hex-Rays *
14 Aula 01
Memory Forensics
memória física (RAM)
retirada de proteções
captura e análise
Exemplos:
LordPE
MoonSols Windows Memory Tookit
Memoryze
Volatility Framework
15 Aula 01
Ferramentas diversas
CFF Explorer
Dependency Walker
Editores hexadecimais (HxD)
Import REC
PEview
Resource Hacker
Strings
FakeNet
16 Aula 01
Antireversing e anti-antivírus
evitar ER, detecção e “fogo amigo”
camadas
sempre realizam o processo inverso
Polimorfismo
criptografa o malware
cada cópia uma chave diferente
evitar detecção por assinaturas
falhas: memória e algoritmo de criptografia
17 Aula 01
Metamorfismo
criptografia do malware
código todo é modificado a cada cópia
inclusive o algoritmo criptográfico
difícil detecção
Packers
comprime e criptografa o malware
adiciona rotina de descompressão (EP)
unpacking na memória
18 Aula 01
Crypters
algoritmo criptográfico no código
não faz compressão
FUD (Fully Undetectable)
Anti-TUDO (VM, Debugger, Sandbox...)
Comercializados com “garantias” FUD
Brazil!
http://thebestfudcrypters.blogspot.com/
http://crypters.net/
19 Aula 01
Binders, Joiners ou Wrappers
junta dois arquivos (malicioso e legítimo)
determina execução oculta
Strings Ofuscadas
strings permanecem no código compilado
criptografia de informações importantes
descriptografia em run-time
20 Aula 01
Estruturas Internas dos Softwares
complexidade
camadas de abstração
programação menos baixo-nível
Níveis de abstração
esconder detalhes para a camada acima
compilação: alto-nível para baixo-nível
3 Aula 02
Níveis de abstração
4 Aula 02
Níveis de abstração
6 Linguagens interpretadas Java, Python, .NET
5 Linguagens de alto-nível C, C++, VB, Pascal
4 Linguagens de baixo-nível Assembly
3 Código de máquina Opcodes (Hex) 8B EC
2 Microcódigo Firmware
1 Hardware Circuitos físicos
5 Aula 02
Engenharia Reversa
compilação:
alto-nível (5) p/ código de máquina (3)
malware no disco:
código de máquina (3)
disassembly:
código de máquina (3) p/ ling. baixo-nível (4)
assembly: classe de linguagens (processador)
malwares utilizam mais Intel x86 32-bit
6 Aula 02
Arquitetura x86
7 Aula 02
Memória Principal (RAM)
Stack (pilha): variáveis locais e
parâmetros de funções, controle do
fluxo do programa.
Heap: memória dinâmica do
programa.
Código: instruções executadas pela
CPU.
Dados: dados globais, estáticos, do
programa.
8 Aula 02
Formato das Instruções
Mnemônico Operando destino Operando origem
MOV ECX, 0x42
LEA EDX, [EBP-28]
SUB ESP, 0x0C
PUSH EBP
XOR EAX, EAX
JMP 0X41414141
Opcodes
Instrução MOV ECX, 0x42
Opcodes B9 42 00 00 00
9 Aula 02
Endianness (ordenação dos bytes)
little-endian
arquitetura Intel x86, AMD64
byte menos significativo primeiro
ex.: 127.0.0.1 – 0x0100007F
big-endian
TCP/IP, RISC, Motorola
byte mais significativo primeiro
ex.: 127.0.0.1 – 0x7F000001
10 Aula 02
Operandos
Imediatos 0x42 0x00401828 0x0C
Registradores EAX ECX EBP
Endereços memória [0x0012F8D4] [ECX] [EBP+0x08]
Registradores
uso geral: execução do programa
segmentados: mapear seções da memória
flags: tomadas de decisão
instruction pointer: próxima instrução a ser executada
11 Aula 02
Registradores x86
Registradores Registradores Flags de Instruction
de uso geral segmentados status pointers
EAX (AX, AH, AL) CS EFLAGS EIP
EBX (BX, BH, BL) SS
ECX (CX, CH, CL) DS
EDX (DX, DH, DL) ES
EBP (BP) FS
ESP (SP) GS
ESI (SI)
uso geral: apesar do nome seguem alguns padrões
conveções dos compiladores: retorno de funções no EAX,
divisão com EAX e EDX, controle da pilha ESP e EBP, etc.
12 Aula 02
Registradores x86
13 Aula 02
Flags: EFLAGS – registrador de status
32 bits, cada bit é uma flag
controlar a execução e operações da CPU
ligada: 1, desligada: 0
ZF: 1 quando operação igual a 0, outros resultados é 0
CF: 1 quando resultado muito grande ou pequeno p/
operando, outros resultados é 0
SF: 1 quando resultado é negativo e 0 quando positivo
TF: debugging, se for 1 a CPU executa debugging
14 Aula 02
EIP, Instruction Pointer
contador do programa
endereço da próxima instrução a ser executada
Em um ataque, controle o EIP e seja feliz!
15 Aula 02
A Pilha (Stack)
memória para funções: variáveis locais, parâmetros
controle do fluxo do programa
PUSH (empilha), POP (desempilha)
PUSHA e POPA (16-bit), PUSHAD e POPAD (32-bit) - todos
LIFO, last in, first out
ESP (stack pointer) e EBP (base pointer)
alocação de endereços top-down
[EBP-valor] = variável local
[EBP+valor] = parâmetro
16 Aula 02
Chamadas de funções
execução do programa é transferida para a função
forma da pilha depende do compilador
mais comum: cdecl
prólogo: epílogo:
PUSH EBP MOV ESP, EBP
MOV EBP, ESP POP EBP
SUB ESP, valor RET
17 Aula 02
Sequência de chamada de função
1. PUSH argumentos (parâmetros)
2. CALL function_address
EIP é colocado na pilha e aponta p/ início da função
3. Prólogo da função
4. Função executa
5. Epílogo (= LEAVE)
6. RET (retira o endereço de retorno e coloca no EIP)
7. Programa continua a execução de onde parou
18 Aula 02
Exemplo de código em C e Assembly
int main(int argc, char* argv)
programateste.exe -r filename.txt
argc = 3
argv[0] = programateste.exe
argv[1] = -r
argv[2] = filename.txt
int main(int argc, char* argv[]){
if (argc != 3) { return 0; }
if (strncmp(argv[1], “-r”, 2) == 0)
{
DeleteFileA(argv[2]);
}
return 0;
}
3 Aula 03
Exemplo de código em C e Assembly
4 Aula 03
Mais informações: arquitetura x86 e assembly
Manuais Intel
Descrição detalhada das arquitetura, ambiente de programação,
registradores, memória, instruções, otimizações de compiladores, etc.
Downloads: http://intel.ly/u7ZHpu e http://intel.ly/x1cLz5.
Livro Art Of Assembly
Conteúdo completo e detalhado sobre a linguagem. Está disponível online
para ser baixado gratuitamente.
Download: http://www.artofasm.com/index.html.
5 Aula 03
Obrigado!
A explicação detalhada de todos os tópicos está na apostila.
Ronaldo Pinheiro de Lima
crimesciberneticos.com@gmail.com
http://www.crimesciberneticos.com
@crimescibernet
21 Aula 02