Download - 4linux Palestra Engenharia-Reversa
-
8/6/2019 4linux Palestra Engenharia-Reversa
1/32
1/2 Tutorial: Engenharia Reversaem sistemas GNU/Linux
Fernando Mercs
VOL DAY II
-
8/6/2019 4linux Palestra Engenharia-Reversa
2/32
2/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
3/32
3/2
Agenda
O que ER? Por que reverter no GNU/Linux O formato ELF e ferramentas de anlise Um pouco de arquitetura e Assembly Bsico com NASM
Tcnicas de ER Fishing
Byte patching
Unpacking
-
8/6/2019 4linux Palestra Engenharia-Reversa
4/32
4/2
Agenda Debugging
Consideraes finais Documentao e recursos Perguntas
-
8/6/2019 4linux Palestra Engenharia-Reversa
5/32
5/2
Engenharia Reversa
o processo de obter informaessobre o funcionamento de umdispositivo, objeto ou sistema atravs
da anlise de sua estrutura, funes erecursos. No caso de software, representa o
aprendizado das funes ecomportamento de um programa sempossuir seu cdigo-fonte.
-
8/6/2019 4linux Palestra Engenharia-Reversa
6/32
6/2
Por que reverter no Linux?
Desenvolvimento de softwares livrescom base em softwares proprietrios,como os baseados em protocolos
fechados ou drivers restritos. Anlise de malware, estudo do
comportamento de binrios edebugging de aplicaes sem cdigo-fonte.
-
8/6/2019 4linux Palestra Engenharia-Reversa
7/32
7/2
O formato ELF
Formato padro utilizado nos binriosdo *nix.
Organiza o binrio e estabelece regras
para sua formao e interpretao noSO.
O binrio ELF apresenta um cabealho
e uma rea de dados que, na sua formacompleta, contm:
-
8/6/2019 4linux Palestra Engenharia-Reversa
8/32
8/2
O formato ELF
Tabela de cabealhos do programa, quedetermina o offset onde um segmentoinicia e termina.
Tabela de cabealhos das sees, queespecifica as sees dentro dossegmentos, como:
.text .data
.bss
-
8/6/2019 4linux Palestra Engenharia-Reversa
9/32
9/2
O formato ELF
Os segmentos contm as sees. As sees abrigam bytes que podem
ser cdigo, dados ou at comentrios.
Porm, existem bytes fora de qualquerseo, os chamados bytes rfos.
-
8/6/2019 4linux Palestra Engenharia-Reversa
10/32
10/2
O formato ELF
Especificao disponvel na internet. Existem outros formatos de binrios,
inclusive para Linux como o FatELF (no
nativo), alm da especificao ELF64.
-
8/6/2019 4linux Palestra Engenharia-Reversa
11/32
11/2
O formato ELF
$ file /etc/resolv.conf
/etc/resolv.conf: ASCII text
$ file /bin/ls
/bin/ls: ELF 64 bit LSB
executable, x86 64, version 1
(SYSV), dynamically linked (usesshared libs), for GNU/Linux
2.6.18, stripped
-
8/6/2019 4linux Palestra Engenharia-Reversa
12/32
12/2
O formato ELF
$ readelf h /lib/libc.so.6
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00
00 00 00
Class: ELF64
OS/ABI: UNIX System V
Type: DYN (Shared object file)
-
8/6/2019 4linux Palestra Engenharia-Reversa
13/32
13/2
O formato ELF
O readelf pode exibir os cabealhossees do binrio com a opo -S e oscabealhos do programa com a opo
-l. Tambm possvel fazer um dump em
hexa do contedo das sees.
-
8/6/2019 4linux Palestra Engenharia-Reversa
14/32
14/2
O formato ELF
O readelf pode exibir os cabealhossees do binrio com a opo -S e oscabealhos do programa com a opo
-l. Tambm possvel fazer um dump em
hexa do contedo das sees.
-
8/6/2019 4linux Palestra Engenharia-Reversa
15/32
15/2
O formato ELF
$ objdump d tato
00000000004006c8 :
4006c8: sub $0x8,%rsp
4006cc: callq 40079c
4006d1: callq 400830
4006d6: callq 400a70
4006db: add $0x8,%rsp
4006df: retq
-
8/6/2019 4linux Palestra Engenharia-Reversa
16/32
16/2
O formato ELF
strings um programa capaz delocalizar strings dentro de um binrio.
HT Editor (hte) um poderoso editor
interativo de binrios ELF, capaz deanalisar binrios e interpretar oassembly em 32-bits.
-
8/6/2019 4linux Palestra Engenharia-Reversa
17/32
17/2
Arquitetura
Instrues, opcodes. Registradores de uso geral, contadores,
flags de estado, apontadores. Pilha (stack). Modos de endereamento, por
exemplo: Base + deslocamento Por registrador
Indexado
-
8/6/2019 4linux Palestra Engenharia-Reversa
18/32
18/2
Assembly
Definida na arquitetura domicroprocessador.
A visualizao depende da capacidade
do disassembler. Sintaxes AT&T e Intel. Tire da cabea que assembly difcil!
Quem programa em assembly humano sim!
-
8/6/2019 4linux Palestra Engenharia-Reversa
19/32
19/2
Assembly
Empurrando para a pilha: PUSH Recuperando da pilha: POP Copiando dados: MOV Aritimtica: ADD, SUB, MUL, DIV Incremento: INC
Comparao: CMP / TEST Salto incondicional: JMP Saltos condicionais: JE, JNE, JG, JNG, JL...
-
8/6/2019 4linux Palestra Engenharia-Reversa
20/32
20/2
Assembly
Chamando sub-rotinas: CALL Return: RET Chamando interrupes: INT OU exclusivo: XOR Lendo um endereo: LEA
21/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
21/32
21/2
Fishing
Pescar algo na memria principal ou emregistradores.
til para observar o que dado usado
em determinada operao ou o retornode uma funo especfica. Algo um pouco mais paupvel que um
dump de memria.
22/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
22/32
22/2
Byte patching
Modificar e salvar bytes num programa,modificando seu comportamento ou osdados com os quais trabalha.
til para observar o que dado usadoem determinada operao ou o retornode uma funo especfica.
23/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
23/32
23/2
Unpacking
Comprime o executvel. Dificulta/impossibilita a leitura direta
por um disassembler. Embaralha as sees e em alguns
casos, protege bem o binrio. Quando o binrio executado, o cdigo
do packer descompacta o cdigooriginal do binrio em memria,permitindo sua execuo.
24/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
24/32
24/2
Unpacking
O processo automtico conta comauxlio de programas que conhecem opacker para remov-lo.
No processo manual o engenheiroreverso precisa chegar num estadoonde todo o executvel original estejana memria e dump-lo para o disco,
gerando um novo executvel,descompactado, mas ainda precisofixar suas tabelas e endereos.
25/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
25/32
25/2
Injeo de cdigo
Consiste em injetar cdigo ASM pararealizar determinada tarefa comocolocar um software para logar por
exemplo. Uma tcnica buscar um hole (vrios
bytes 0 em seqncia), criar umafuno ali e desviar o cdigo do
programa para l, respeitando a pilha eos registradores.
26/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
26/32
26/2
Debugging
Sempre aliado a um bom disassemblerpara um resultado melhor.
gdb, IDA Pro e EDB. Permite execuo instruo por
instruo, observando-se o estado dosregistradores e pilha de memria, alm
de recursos como breakpoints, memorybreakpoints e tracing.
27/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
27/32
27/2
Projeto open source. Debugger de uso geral. Indicado para aplicaes sem source.
Similar ao OllyDbg.
28/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
28/32
28/2
KeyGen
Um timo exerccio para compreenderum software compilado vencerdesafios chamados de keygenme.
Para vencer, preciso entendercompletamente a lgica do programa edescobrir sua chave.
Lembrando que no se deve fazer issoem softwares protegidos. ;)
29/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
29/32
29/2
KeyGen
possvel fazer um keygen comqualquer linguagem que se conhea,inclusive BASH scripting.
30/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
30/32
/
Documentao e recursos
http://asm.sourceforge.nethttp://linuxreversing.org
http://codef00.com
www.reverse-engineering.net
www.slideshare.net/nandu88
31/2
http://asm.sourceforge.net/http://linuxreversing.org/http://codef00.com/http://www.reverse-engineering.net/http://www.slideshare.net/nandu88http://www.slideshare.net/nandu88http://www.reverse-engineering.net/http://codef00.com/http://linuxreversing.org/http://asm.sourceforge.net/ -
8/6/2019 4linux Palestra Engenharia-Reversa
31/32
Oportunidade
Espionagem muito utilizada na rea militar. A indstria de anti-vrus investe milhes para se
antecipar s ameaas.
Voc de segurana? Quer usar esse know-howpara outra rea? Inovao gera necessidade deER.
Quer um hobby que evolua mais seuconhecimento em segurana?
32/2
-
8/6/2019 4linux Palestra Engenharia-Reversa
32/32
Obrigado
Fernando Mercs
twitter.com/FernandoMerces
twitter.com/4LinuxBR
Tel: 55-11-2125-4747
mailto:[email protected]://www.4linux.com.br/http://www.hackerteen.com/http://www.hackerteen.com/http://www.4linux.com.br/mailto:[email protected]