Você está na página 1de 36

Experincia em misso crtica de misso crtica Pioneira no ensino de Linux distncia Parceira de treinamento IBM Primeira com LPI

I no Brasil + de 30.000 alunos satis eitos !econ"ecimento internacional Ino#a$o com %ac&erteen e Boteconet
www.4linux.com.br 2 / 36

Anlise de malware com Software Livre


Fernando Merc s

www.4linux.com.br

3 / 36

2o final da min%a #alestra


As !" #rimeiras #er$untas $an%ar&o um botton do 'ux. Sorteio do curso ()nvesti$a*&o Forense +i$ital , 42./A+01

Preencha o cupom que est junto ao folheto que voc Se voc j preencheu, ele j est aqui na urna. O ganhador deve estar presente at o quinto sorteio. Se n o

recebeu na entrada da palestra;

estiver presente, ganhar o se!to sorteado.

www.4linux.com.br

4 / 36

Anlise de malware
3 4ue 5 um malware6
" #$alicious soft%are&, um soft%are indejesado geralmente

com inten'(es nada nobres como roubo de informa'(es, replica' o, comprometimento do sistema etc.

3 4ue 5 anlise de malware6


" ) a tcnica de documentar o comportamento de um soft%are

suspeito sem seu c*digo+fonte.

www.4linux.com.br

" / 36

Malware no Linux existe6


,inter, ,inu!-.indose, /iesel, 0oin, $ight1, 2dore, Slapper, 3or4, $illen... 567 8!istem vrios mal%ares para o sistema do pinguim, mas a quantia n o realmente grande se comparada 9 quantidade de mal%ares para o :anelas.

) bom se preparar enquanto tempo. ;<

www.4linux.com.br

6 / 36

A$enda
7 + 2nlise esttica e reconhecimento do local 7.2 + ,ho are 1ou= 0om a ferramenta file 7.3 + >usca abusada de strings 7.4 + ?aio+! com o objdump 2 + >inrio protegido, e agora= 2.7 + 8!emplo de @des<compacta' o com pac4er livre 2.2 + Outras prote'(es possAveis 3 + ?astreando os passos 3.3 + 0ome'ando do come'o 3.2 + 8ntendendo as calls e as s1scalls 3.3 + /ocumenta' o do comportamento @ou Bte pegueiB<
www.4linux.com.br - / 36

Anlise esttica e recon%ecimento do local

www.4linux.com.br

8 / 36

:%o are ;ou6


2 maioria dos tipos de arquivo possui um (ma$ic number1 para identifica' o, localiCado logo nos primeiros b1tes.

2 ferramenta file 5D7 est presente em todas as distribui'(es EFG-.inu!. 8la utiliCa a biblioteca libmagic como #core& para reconhecer tipos de arquivo.

$ file /etc/hosts /etc/hosts: ASCII English text $ file /bin/ls /bin/ls: ELF 64-bit LSB executable, x 6-64, !e"sion # $S%S&', ()na*icall) lin+e( $uses sha"e( libs', fo" ,-./Linux /060# , st"i11e(

www.4linux.com.br

9 / 36

:%o are ;ou6


O file n o se limita a identificar o tipo de arquivo, mas d vrias informa'(es sobre alguns tipos, como o caso de binrios 8.H.

Script do Fautilus #Eet info& para agiliCar o reconhecimento;

23/bin/bash info45file 6$#65 ls45ls -l 6$#65 7c457c 6$#65 si8e45ls -lh 6$#6 9 cut -(6 6 -f:5 8enit) --info --text46;$ file;n$info;n;n;$ 7c;n$7c;n;n;$ ls;n$ls6 --title46$# $$si8e'6

www.4linux.com.br

7! / 36

<usca abusada de strin$s


Era'as ao conjunto binutils 5I7, temos uma ferramenta livre chamada strings, que nos e!ibe todos os te!tos dentro de um arquivo qualquer, inclusive binrios.

$ st"ings /bin/ls 9 tail <=:<>:<S <*/<(/<) <%-<*-<( in!ali( suffix in <s<s a"gu*ent 5<s? in!ali( <s<s a"gu*ent 5<s? <s<s a"gu*ent 5<s? too la"ge xst"tol0c @ A4 st"tolBbase CC st"tolBbase A4 D6 xst"toul xst"tou*ax
www.4linux.com.br 77 / 36

<usca abusada de strin$s


2 anlise de strings e!tremamente importante. Fela podem constar informa'(es essenciais para o mal%are como nomes /FS, caminhos e nomes de diret*rios e arquivos etc.

0onhecendo esta #falha&, os criadores de mal%are frequentemente encriptam as strings, de forma que uma anlise esttica n o ajuda muito;

$ st"ings -a -t x bina")0exe 9 tail -4 # @b6 7a,$x # @f6 7:/Ex # #F6 !!Ex # D#4 GFtx

Jeremos como desencriptar essas strings mais 9 frente.


www.4linux.com.br 72 / 36

>aio?@ com o ob=dum#


O pacote binutils contm vrios aplicativos interessantes para a anlise de mal%are, dentre eles;

ob=dum# objcop1 nm readelf siCe strings strip

O objdump uma ferramenta poderosa, que e!ibe muitas informa'(es sobre o binrio, como veremos a seguir. 2s outras ferramentas tambm s o muito Kteis e ficam como li' o de casa. ;+<

www.4linux.com.br

73 / 36

>aio?@ com o ob=dum#


$ obH(u*1 -( *al7a"e 9 g"e1 -AD@ *ain
@@@@@@@@@@4@@: I <main>: 4@@: I: 1ush <"b1 4@@: : *o! <"s1,<"b1 4@@: b: sub $@x#@,<"s1 4@@: f: *o!l $@x/ /DD/6e,-@x#@$<"b1' 4@@:F6: *o!l $@x/I/ 6e/f,-@xc$<"b1' 4@@:F(: *o!l $@x/I/f/e//,-@x $<"b1' 4@@:a4: *o!7 $@x/6/ ,-@x4$<"b1' 4@@:aa: *o!b $@x@,-@x/$<"b1' 4@@:ae: lea -@x#@$<"b1',<"ax 4@@:b/: *o! <"ax,<"(i 4@@:b:: callJ 4@@:D4 <decrypt> 4@@:ba: lea -@x#@$<"b1',<"ax 4@@:be: *o! <"ax,<"(i 4@@:c#: callJ 4@@4D <remove@plt> 4@@:c6: *o! $@x@,<eax 4@@:cb: lea!eJ 4@@:cc: "etJ
www.4linux.com.br 74 / 36

>aio?@ com o ob=dum#


Fo slide anterior vemos um disassem'l( da fun' o main)* com o objdump. 2qui importante notar; Os nomes das fun'(es foram identificados, ent o est o no binrio compilado. S o os s(m'ols.

O disassem'l( esttico. O c*digo n o rodou.

O grep na main foi proposital, mas a e!ecu' o de um binrio n o come'a na main. 2tente para a saAda do objdump sem o grep e voc ver que tem muito c*digo antes da main ser chamada.

O objdump utliCa sinta!e 2LML no disassem'l(.


www.4linux.com.br 7" / 36

Sintaxe )ntel com o $db


$ g(b -J *al7a"e $g(b' set (isasse*bl)-fla!o" intel $g(b' (isasse*ble main @x4@@: I 1ush "b1 @x4@@: *o! "b1,"s1 @x4@@: b sub "s1,@x#@ @x4@@: f *o! KELMK NOM P"b1-@x#@Q,@x/ /DD/6e @x4@@:F6 *o! KELMK NOM P"b1-@xcQ,@x/I/ 6e/f @x4@@:F( *o! KELMK NOM P"b1-@x Q,@x/I/f/e// @x4@@:a4 *o! ELMK NOM P"b1-@x4Q,@x/6/ @x4@@:aa *o! B%OE NOM P"b1-@x/Q,@x@ @x4@@:ae lea "ax,P"b1-@x#@Q @x4@@:b/ *o! "(i,"ax @x4@@:b: call @x4@@:D4 <decrypt> @x4@@:ba lea "ax,P"b1-@x#@Q @x4@@:be *o! "(i,"ax @x4@@:c# call @x4@@4D <remove@plt> @x4@@:c6 *o! eax,@x@ @x4@@:cb lea!e @x4@@:cc "et
www.4linux.com.br 76 / 36

<inrio #rote$idoA e a$ora6

www.4linux.com.br

7- / 36

BacCer livreD EB@


8!istem muitas formas de proteger o binrio de olhares curiosos e claro que o criador de mal%are n o quer ningum bisbilhotando seu arquivo, pois este poder descobrir como ele funciona, criar uma vacina, denunciar para onde os dados s o enviados etc. Gma prote' o bem comum o pac4er, que comprime um e!ecutvel e dificulta muito a anlise. O Knico pac4er de c*digo aberto que conhe'o o GPN 5O7, por isso vou utiliC+lo em nosso mal%are. $ obH(u*1 -( *al7a"eB1ac+e( *al7a"eB1ac+e(: file fo"*at elf64-x 6-64
www.4linux.com.br 78 / 36

BacCer livreD EB@


0omo o GPN um pac4er open source, para remov+lo basta usar o pr*prio comando up!; $ u1x -( *al7a"e 2gora o objdump e outras ferramentas de anlise j conseguem e!ibir as informa'(es que buscamos pois o e!ecutvel est em seu estado original.

www.4linux.com.br

79 / 36

3utras #rote*Fes
2lm dos pac4ers, e!iste uma srie de tcnicas para prote' o de binrios, dentre elas; 0r1pters. Obfusca' o. /umm1 code. JirtualiCa' o. 0?0.

2t o presente momento, ferramentas para .inu! mais rebuscadas para prote' o de binrios n o s o comumente distribuAdas, mas n o se sabe o que h de ferramentas fechadas-individuais por aA. ;+<

www.4linux.com.br

2! / 36

>astreando os #assos

www.4linux.com.br

27 / 36

Gome*ando do come*o
2qui abordaremos a anlise dinPmica, ou seja, vamos rodar o mal%are, passo+a+passo, num ambiente controlado, para identificar seu comportamento. Para isso, ser usado um poderoso debugger e disassembler livre, o 8/> 5Q7. 2o abrir o mal%are no 8/>, paramos em seu inAcio @n o a main, lembra=<.

Podemos buscar strings direto pelo 8/>, caso ainda n o tenhamos feito com o strings. Para isso, basta um 0L?.RS, que vai carregar o plugin String Search.

www.4linux.com.br

22 / 36

Gome*ando do come*o

www.4linux.com.br

23 / 36

/ntendendo as calls
O 8/> j coloca um brea4point na main automaticamente. Para conferir, veja a tela do >rea4point $anager @0L?.R><;

www.4linux.com.br

24 / 36

/ntendendo as calls
Podemos mandar rodar o mal%are no 8/> @HS< e aguardar parar no inAcio da fun' o principal ent o. Tsto voc pode faCer sem medo, n o= Podemos e!ecutar linha a linha com o HU e em V!OVVQae, vemos que o endere'o de uma string interessante armaCenada em ?2N;

www.4linux.com.br

2" / 36

/ntendendo as calls
.ogo abai!o temos uma bendita 02... $as o que isso=

Wualquer chamada para fun' o gera uma 02.. em 2ssembl1.

O c*digo desviado para o endere'o apontado pea 02.. e, ap*s um ?8L, volta para a instru' o logo abai!o 9 chamada da 02...

Os parPmetros de fun' o s o passados para a 02.. atravs da pilha @stac4<.


O retorno pode variar, mais geralmente dado em ?2N.

www.4linux.com.br

26 / 36

/ntendendo as calls

2 e!ecu' o ser desviada para a instru' o em V!OVVQIO e os parPmetros podem ser vistos na janela #Stac4& do 8/>.

www.4linux.com.br

2- / 36

s;scalls
: as s1calls s o chamadas 9s rotinas providas pelo SO, por e!emplo, para imprimir uma string na tela.

2lguns e!emplos s o; setuid@<, e!it@< e for4@<.

Podem ser utiliCadas diretamente pelo mal%are, j que este ficar preso 9 arquitetura @n o comum mal%are portvel ;<.

8!istem uma tabela do tipo W?+card com todas as s1scalls do .inu! 5X7. O site original 5Y7 estava for a dor ar @OVI< no dia em que escrevi este slide.

www.4linux.com.br

28 / 36

s;scalls
Wuando o binrio n o tem os s1mbols, o objdump, readelf, hte e nem mesmo o gdb s o capaCes de e!ibir o nome da fun' o em quest o, o que um problema. : o 8/>, consegue pois possAvel gerar s1mbols para cada biblioteca presente.

Tmportante notar que fun'(es 2FST 0 s o %rappers para s1scalls.

Hun' o 2FST 0

s1scall

8!emplo;

remove@<

unlin4@<

www.4linux.com.br

29 / 36

+ocumenta*&o
/ocumentar o comportamento de um binrio um trabalho demorado, porm de m!ima utilidade. 2s vantagens s o;

!oll'ac& de a'(es. 0ria' o de vacinas. 2prendiCado. $assagem no ego. ;<

www.4linux.com.br

3! / 36

3#ortunidades

8mpresas de anti+vArus. Erupos de resposta a incidentes. Zrg os pKblicos e militares. Limes de seguran'a de empresas privadas.

www.4linux.com.br

37 / 36

>efer ncias
567 http;--en.%i4ipedia.org-%i4i-.inu![mal%are 5D7 http;--%%%.dar%ins1s.com-file5I7 http;--%%%.gnu.org-soft%are-binutils5O7 http;--up!.sourceforge.net 5Q7 %%%.codefVV.com-projects\debugger 5X7 http;--%%%.mentebinaria.com.br-files-s1scall+table.pdf 5Y7 http;--%%%.bigfoot.com-]jialong[he

www.4linux.com.br

32 / 36

Fonte do #seudo?malware
!oi( (ec")1t$cha" sPQ' R int iS fo" $i4@S iAst"len$s'S iTT' sPiQ U4 @x4#S V int *ain$' R int i, HS /W Oenta "e*o!e" 6/sbin/ifconfig6 W/ cha" a"JPQ 4 6n/2$/n$?;60/?$C6S (ec")1t$a"J'S "e*o!e$a"J'S V "etu"n @S

FOL2; Para o GPN comprimir esse c*digo foi acrescido com vrias fun'(es inKteis.
www.4linux.com.br 33 / 36

>efer ncias
567 http;--en.%i4ipedia.org-%i4i-.inu![mal%are 5D7 http;--%%%.dar%ins1s.com-file5I7 http;--%%%.gnu.org-soft%are-binutils5O7 http;--up!.sourceforge.net 5Q7 %%%.codefVV.com-projects\debugger 5X7 http;--%%%.mentebinaria.com.br-files-s1scall+table.pdf 5Y7 http;--%%%.bigfoot.com-]jialong[he

www.4linux.com.br

34 / 36

Ber$untas6

^$ente>inaria %%%.mentebinaria.com.br

www.4linux.com.br

3" / 36

Muito obri$adoH

fernando.merces^Olinu!.com.br %%%.Olinu!.com.br %%%.hac4erteen.com t%itter.com-O.inu!>? Lel; QQ+66+D6DQ+OYOY


www.4linux.com.br 36 / 36