Escolar Documentos
Profissional Documentos
Cultura Documentos
Reconhecimento internacional
2 / 36
Anlise de malware
com Software Livre
Fernando Mercs
www.4linux.com.br
3 / 36
www.4linux.com.br
4 / 36
Anlise de malware
O que um malware?
* Malicious software, um software indejesado geralmente
www.4linux.com.br
5 / 36
www.4linux.com.br
6 / 36
Agenda
1 - Anlise esttica e reconhecimento do local
1.2 - Who are you? Com a ferramenta file
1.3 - Busca abusada de strings
1.4 - Raio-x com o objdump
2 - Binrio protegido, e agora?
2.1 - Exemplo de (des)compactao com packer livre
2.2 - Outras protees possveis
3 - Rastreando os passos
3.3 - Comeando do comeo
3.2 - Entendendo as calls e as syscalls
3.3 - Documentao do comportamento (ou "te peguei")
www.4linux.com.br
7 / 36
Anlise esttica e
reconhecimento do local
www.4linux.com.br
8 / 36
$ file /etc/hosts
/etc/hosts: ASCII English text
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64,
version 1 (SYSV), dynamically linked (uses
shared libs), for GNU/Linux 2.6.18, stripped
www.4linux.com.br
9 / 36
#!/bin/bash
info=`file "$1"`
ls=`ls -l "$1"`
wc=`wc "$1"`
size=`ls -lh "$1" | cut -d" " -f5`
zenity --info --text="\$ file\n$info\n\n\$
wc\n$wc\n\n\$ ls\n$ls" --title="$1 ($size)"
www.4linux.com.br
10 / 36
11 / 36
12 / 36
objdump
objcopy
nm
readelf
size
strings
strip
www.4linux.com.br
13 / 36
14 / 36
15 / 36
16 / 36
Binrio protegido, e
agora?
www.4linux.com.br
17 / 36
18 / 36
www.4linux.com.br
19 / 36
Outras protees
Alm dos packers, existe uma srie de tcnicas para proteo
de binrios, dentre elas:
Crypters.
Obfuscao.
Dummy code.
Virtualizao.
CRC.
www.4linux.com.br
20 / 36
Rastreando os passos
www.4linux.com.br
21 / 36
Comeando do comeo
Aqui abordaremos a anlise dinmica, ou seja, vamos rodar o
malware, passo-a-passo, num ambiente controlado, para
identificar seu comportamento. Para isso, ser usado um
poderoso debugger e disassembler livre, o EDB [5].
Ao abrir o malware no EDB, paramos em seu incio (no a
main, lembra?).
www.4linux.com.br
22 / 36
Comeando do comeo
www.4linux.com.br
23 / 36
Entendendo as calls
O EDB j coloca um breakpoint na main automaticamente. Para
conferir, veja a tela do Breakpoint Manager (CTRL+B):
www.4linux.com.br
24 / 36
Entendendo as calls
Podemos mandar rodar o malware no EDB (F9) e aguardar
parar no incio da funo principal ento. Isto voc pode fazer
sem medo, no?
Podemos executar linha a linha com o F8 e em 0x4005ae,
vemos que o endereo de uma string interessante
armazenada em RAX:
www.4linux.com.br
25 / 36
Entendendo as calls
Logo abaixo temos uma bendita CALL. Mas o que isso?
www.4linux.com.br
26 / 36
Entendendo as calls
www.4linux.com.br
27 / 36
syscalls
J as sycalls so chamadas s rotinas providas pelo SO, por
exemplo, para imprimir uma string na tela.
www.4linux.com.br
28 / 36
syscalls
Quando o binrio no tem os symbols, o objdump, readelf, hte
e nem mesmo o gdb so capazes de exibir o nome da funo
em questo, o que um problema. J o EDB, consegue pois
possvel gerar symbols para cada biblioteca presente.
Exemplo:
Funo ANSI C
syscall
remove()
unlink()
www.4linux.com.br
29 / 36
Documentao
Documentar o comportamento de um binrio um trabalho
demorado, porm de mxima utilidade. As vantagens so:
Rollback de aes.
Criao de vacinas.
Aprendizado.
Massagem no ego. :)
www.4linux.com.br
30 / 36
Oportunidades
Empresas de anti-vrus.
www.4linux.com.br
31 / 36
Referncias
[1] http://en.wikipedia.org/wiki/Linux_malware
[2] http://www.darwinsys.com/file/
[3] http://www.gnu.org/software/binutils/
[4] http://upx.sourceforge.net
[5] www.codef00.com/projects#debugger
[6] http://www.mentebinaria.com.br/files/syscall-table.pdf
[7] http://www.bigfoot.com/~jialong_he
www.4linux.com.br
32 / 36
Fonte do pseudo-malware
void decrypt(char s[])
{
int i;
return 0;
33 / 36
Referncias
[1] http://en.wikipedia.org/wiki/Linux_malware
[2] http://www.darwinsys.com/file/
[3] http://www.gnu.org/software/binutils/
[4] http://upx.sourceforge.net
[5] www.codef00.com/projects#debugger
[6] http://www.mentebinaria.com.br/files/syscall-table.pdf
[7] http://www.bigfoot.com/~jialong_he
www.4linux.com.br
34 / 36
Perguntas?
@MenteBinaria
www.mentebinaria.com.br
www.4linux.com.br
35 / 36
Muito obrigado!
fernando.merces@4linux.com.br
www.4linux.com.br
www.hackerteen.com
twitter.com/4LinuxBR
Tel: 55-11-2125-4747
www.4linux.com.br
36 / 36