Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD

413 views

Published on

Palestra realizada pelo Anderson Nascimento aka andersonc0d3 durante a 2a. edição da Nullbyte Security Conference em 21 de novembro de 2015.
Resumo:
Redshift é um novo projeto de um rootkit desenvolvido para o sistema operacional FreeBSD. Seu objetivo é ser um rootkit fácil de se utilizar, flexível e que se mantém atualizado as técnicas atuais. Esta palestra discutirá o processo de desenvolvimento assim como o conceito de um rootkit e as principais técnicas utilizadas.

Published in: Technology
  • Multiple Time Lotto Winner Shocks The System�Reveals All!  http://t.cn/Airfq84N
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD

  1. 1. 1
  2. 2. Redshift Um rootkit para o kernel do FreeBSD Anderson Eduardo andersonc0d3@gmail.com 2
  3. 3. Agenda ★ sobre mim ★ Rootkit ○ tipos de rootkit ★ Redshift ○ O que é isso? ○ Comandos ○ técnicas ○ Módulos ★ Demonstração ★ Detecção ★ Futuro ★ dúvidas? 3
  4. 4. sobre mim ★ quem? Email: Anderson eduardo < andersonc0d3@gmail..com > Twitter: @andersonc0d3 Github: @andersonc0d3 ★ O que eu faço? Security researcher ★ Principais interesses kernel, rootkit, virtualização, sistemas operacionais, ciência da computação skateboard, matemática, física, neurociência ★ Anteriormente Security analyst (Conviso application security, 3 anos) Exploit for CVE-2012-0217 (sysret) EXploit for CVE-2012-4576 (Freebsd’s linux compat subsystem ioctl) 4
  5. 5. Motivação e AVISO LEGAL Este é o resultado de um trabalho pessoal e sem revisões prévias, nascido e mantido pelo seu único desenvolvedor, como uma forma de estudar os assuntos de seu interesse. Sendo assim, erros poderão ser cometidos nesta apresentação e peço desculpas desde já. Gostaria também de mencionar que este rootkit não tem nenhuma relação com outra pessoa ou entidade a não ser seu único desenvolvedor. 5
  6. 6. Modos de operação de uma CPU ★ real mode ○ 16 bits ○ sem rings de proteção ○ acesso total ao hardware ★ protected mode ○ rings ○ paginação ○ 32 bits - 4G ★ virtual 8086 ○ DOS ★ long mode/IA-32e ○ paginação - 256 TB ○ Sem segmentação ○ amd64 canonical address - 48 bits de endereçamento ○ 64 bits registradores gerais etc.. ○ sub modo de compatibilidade 32 bits http://www.intel.com/Assets/en_US/PDF/manual/253668.pdf 6
  7. 7. Modos de operação de uma CPU ★ SMM ○ 16 bits ○ SMRAM ■ Área da memória RAM somente acessível em SMM mode, invisível para o sistema operacional ○ Saved state map ○ SMI Handler provido pela BIOS/UEFI ○ usado para gerenciar erros críticos: energia/voltagem/aquecimento/erros do chipset por exemplo. http://www.intel.com/Assets/en_US/PDF/manual/253668.pdf 7
  8. 8. Modos de operação de uma CPU http://www.intel.com/Assets/en_US/PDF/manual/253668.pdf 8
  9. 9. Níveis de privilégio - modo protegido https://en.wikipedia.org/wiki/Protection_ring#/media/File:Priv_rings.svg 9
  10. 10. Rootkit “A rootkit is a collection of computer software, typically malicious, designed to enable access to a computer or areas of its software that would not otherwise be allowed (for example, to an unauthorized user) while at the same time masking its existence or the existence of other software.” https://en.wikipedia.org/wiki/Rootkit 10
  11. 11. Rootkit https://en.wikipedia.org/wiki/Rootkit 11
  12. 12. Tipos de rootkit ★ ring 3 - userland ★ ring 0 - kernel/bootkit ★ ring -1 - hypervisor ★ ring -2 - SMM (System management mode) ★ ring -3 - Intel management/manageability engine (ME) ★ hardware/Firmware rootkits 12
  13. 13. tipos de rootkit - ring 3 ★ ring 3 - userland ○ Sobrescrever/alterar binário do sistema operacional ■ ps, ls, netstat, top, last, w ■ sshd ■ apached/httpd ■ smbd ○ Ptrace() syscall 13
  14. 14. tipos de rootkit - ring 0 ★ ring 0 - kernel/bootkit ★ Necessário acesso root ○ Carregar módulo no kernel ○ sobrescrever bootloader ★ principal vetor de ataque para outros níveis ★ Acesso total ao hardware ★ bootkits ○ Utilizado para atacar o kernel, e.g: desabilitar patchguard ○ interceptar senhas e ataques contra full-disk encryption - Stoned bootkit [1] ○ infecta MBR/VBR, altera (hook) IVT da BIOS, carrega bootloader do sistema operacional, reganha acesso 14
  15. 15. tipos de rootkit - ring 0 ★ Exemplos de rootkits em ring 0 ○ redshift (FreeBSD) ○ suckit ○ diamorphine (Linux 2.6/3.X) [2] ○ babykit [3] ○ sutersu ○ stoned bootkit ○ e muito mais... 15
  16. 16. tipos de rootkit - ring -1 https://en.wikipedia.org/wiki/Protection_ring 16
  17. 17. tipos de rootkit - ring -1 ★ bluepill [4] ○ Joanna Rutkowska ○ windows vista x64 ○ Amd pacifica ★ subvirt [5] ○ Universidade de michigan and microsoft ○ windows xp e linux ★ vitriol [6] ○ dino dai zovi ○ Mac-os x ○ Intel vt-x 17
  18. 18. tipos de rootkit - ring -2 ★ ring -2 - SMM (System management mode) ○ loic duflot [7] ■ Ataque para OpenBSD usando SMM para desabilitar securelevel¹ ○ A Real SMM Rootkit: Reversing and Hooking BIOS SMI Handlers, phrack edição 66, artigo 11 [8] 18
  19. 19. tipos de rootkit - ring -3 ★ ring -3 - management engine / vpro based ★ Alexander Tereshkin e Rafal Wojtczuk ○ Introducing Ring -3 Rootkits [9] ■ Q35 chipset Q3'07 ■ independente da CPU ■ Ativo mesmo em S3 ■ Acesso remoto ■ Acesso a memória via DMA 19
  20. 20. tipos de rootkit - hardware/firmware rootkits ★ BIOS/UEFI ○ How Many Million BIOSes Would you Like to Infect? [10] ○ Persistent BIOS Infection, phrack edição 66, artigo 7, anibal sacco e alfredo ortega [11] ○ DE MYSTERIIS DOM JOBSIVS Mac EFI Rootkits, snare [12] ○ A Real SMM Rootkit: Reversing and Hooking BIOS SMI Handlers [8] ★ PCI ○ John Heasman, Implementing and detecting PCI ROOTKITs [13] ○ João Batista e Bruno cardoso, Low level playground [14] ★ SCADA ○ stuxnet 20
  21. 21. rootkits ★ QUem usa? ○ Lenovo, SONY e muitos outros que ainda não foram descobertos :) 21
  22. 22. tipos de rootkit - Caso da lenovo http://www.zdnet.com/article/lenovo-rootkit-ensured-its-software-could-not-be-deleted/ 22
  23. 23. tipos de rootkit - Caso da sony http://www.zdnet.com/article/lenovo-rootkit-ensured-its-software-could-not-be-deleted/ 23
  24. 24. tipos de rootkit - Caso Eddie Raymond Tipton http://arstechnica.com/tech-policy/2015/04/prosecutors-suspect-man-hacked-lottery-computers-to-score-winning-ticket/ 24
  25. 25. Redshift - O que é isso? ★ Rootkit pessoal para o kernel do freebsd (ring 0) ★ FreeBSD 10 ★ Userland handler ★ Nasceu em 2015 ★ Fácil de usar, flexível, atualizado, constante desenvolvimento, estável ★ Confiável, open-source ★ overlabs# ./redshift_handler COMMAND MODULE ARGS TECHNIQUE 25
  26. 26. Redshift exemplos ★ overlabs# ./redshift_handler load ★ overlabs# ./redshift_handler status ★ overlabs# ./redshift_handler enable hide_module redshift syscall ★ overlabs# ./redshift_handler enable hide_process “./sniffer” syscall ★ overlabs# ./redshift_handler enable hide_FILE “senhas.txt” syscall ★ overlabs# ./redshift_handler enable give_root vsyscall ★ overlabs# ./redshift_handler status hide_module ★ overlabs# ./redshift_handler unload 26
  27. 27. Redshift comandos ★ enable/disable ○ Habilita ou desabilita um módulo específico ★ load/unload ○ Carrega/descarrega o rootkit do kernel ★ Status ○ Status atual 27
  28. 28. Redshift comandos ★ enable/disable ○ ./redshift_handler enable hide_file passwords.txt syscall ○ ./redshift_handler enable hide_process NULL 666 syscall ○ ./redshift_handler enable give_root vsyscall ★ load/unload ○ ./redshift_handler load ○ ./redshift_handler unload ★ Status ○ ./redshift_handler status 28
  29. 29. Redshift técnicas ★ syscall ○ Altera o syscall handler de uma syscall específica ★ vsyscall ○ Altera o interrupt handler e simula uma syscall ★ debug registers ○ ALtera o interrupt handler de debug e simula uma syscall virtual ★ driver ○ Altera o handler específico do driver 29 ★ - Falta integrar ao redshift
  30. 30. Técnica syscall ★ Altera syscall handlers ○ tabela de syscalls tem permissão de escrita ○ Ao desabilitar restaura o handler original ★ Fácil de detectar ○ Verificar se a tabela de syscalls foi alterada, checar integridade 30
  31. 31. Técnica syscall ★ Hide_module ○ Altera as system calls para o redshift, 9 system calls ○ Restaurar os handlers originais, 9 system calls 31
  32. 32. Técnica syscall ★ hide_file ○ Altera as system calls para o redshift 32
  33. 33. Técnica syscall ★ hide_file ○ Restaurar os handlers originais 33
  34. 34. técnica vsyscall - virtual syscall ★ substitui o interrupt handler ○ Interrupt descriptor table (IDT) - x86 ○ MSR LSTAR e MSR CSTAR - x86_64 ★ Simula uma syscall ○ simula a criação de uma nova syscall, Não altera a tabela das syscalls. ★ Fácil de detectar ○ Verificar alterações no MSR LSTAR 34 ★ - Falta integrar ao redshift
  35. 35. Técnica vsyscall - virtual syscall ★ Alterando o MSR MSR_LSTAR 35
  36. 36. Técnica vsyscall - virtual syscall ★ Restaurando o handler original 36
  37. 37. Técnica debug registers ★ A melhor técnica a ser implementada no Redshift ○ Mais furtividade ○ Mais controle do sistema, permite se retirar silenciosamente ★ Técnica Bem descrita na phrack edição 65, artigo 08. [15] ★ outros rootkits ○ mood-nt, darkangel ○ DR rootkit, Immunity Inc [16] 37
  38. 38. Técnica debug registers http://www.intel.com/Assets/en_US/PDF/manual/253668.pdf 38
  39. 39. Técnica debug registers http://www.intel.com/Assets/en_US/PDF/manual/253668.pdf 39
  40. 40. Técnica alterar driver ★ Driver do teclado ★ ALtera funções dinÂmicas do driver/kernel ○ Virtual file system (VFS) file operations etc. ★ Processo de detecção árduo ○ conhecer detalhes do sistema operacional e do driver 40 ★ - Falta integrar ao redshift
  41. 41. Redshift modules ★ hide_file ○ Permite ao atacante esconder arquivos ★ hide_process ○ Permite ao atacante esconder processos por PID ou nome do processo ★ hide_module ○ permite ao atacante esconder módulos carregados no sistema ★ Give_root ○ Permite ao atacante ganhar acesso root ★ Keylogger ○ Permite ao atacante capturar teclas pressionadas no teclado ★ Disable mitigations ○ permite ao atacante desabilitar mitigações do sistema (securelevel, map_at_zero) ★ Escape sandbox ○ Permite ao atacante desabilitar sandbox capsicum do sistema 41 ★ - Falta integrar ao redshift
  42. 42. Redshift modules - HIDE_FILE ★ Esconde arquivos ★ Utiliza técnica de alterar a tabela de syscalls ★ Ideia principal Alterar o handler da syscall getdirentries ★ Altera ao total 12 system calls ★ bypassável se usando link simbólicos ○ A ser corrigido em breve ★ ./redshift_handler enable hide_file “senhas.txt” syscall 42
  43. 43. Redshift modules - HIDE_FILE 43
  44. 44. Redshift modules - HIDE_PROCESS ★ Esconde processo por PID ou nome do processo ★ Evita ptrace() e kill() ★ Utiliza técnica de alterar a tabela de syscalls ★ userland obtém lista de processos através da interface sysctl ○ altera sysctl handler para o redshift 44
  45. 45. Redshift modules - HIDE_PROCESS ★ Habilitando módulo ★ Desabilitando módulo 45
  46. 46. Redshift modules - HIDE_MODULE ★ Esconde módulos ★ Utiliza técnica de alterar a tabela de syscalls ★ Altera 9 system calls, utilizadas pelo comando kldstat ○ kldstat(), kldfind(), kldnexT(), kldfirstmod(), modstat(), modfind(), modnext(), modfnext() 46
  47. 47. Redshift modules - GIVE ROOT ★ Permite escalação de privilégios ★ Utiliza a técnica vsyscall ★ Altera o MSR (Machine SPecific register) ○ Específico para cada cpu, utilizar processor affinity (cpuset) ao executar o handler ○ cpuset -l CORE ./redshift_handler enable give_root vsyscall 47
  48. 48. Redshift modules - GIVE ROOT 48
  49. 49. Redshift Demonstração 49
  50. 50. Detecção e fraquezas ★ Olhar as alocações dinâmicas ○ vmstat -m ○ A ser corrigido em breve ★ Bypass do módUlo hide_file usando links simbólicos ○ ./redshift_handler enable hide_filE senhas_clientes.txt syscall ○ ln -s senhas_clientes.txt abcd; cat ABCD ○ A ser corrigido em breve (namei API) ★ Redshift somente altera o kernel do sistema operacional, mascarando a visão do usuário do sistema. Uma análise mais aprofundada permite o bypass de todos os módulos do redshift 50
  51. 51. Detecção e fraquezas ★ KLDsym 51
  52. 52. Detecção e fraquezas - KLDSYM 52
  53. 53. Futuro do redshift ★ Networking ○ Gerenciamento do rootkit remotamente ■ ./redshift_handler COMMAND MODULE ARGUMENT TECHNIQUE IP ★ Suporte a código 32 bits ★ Melhorar furtividade ★ Mais técnicas de hook ★ Persistência? ★ Descer o nível - TLB SPLIT, SMM, UEFI/BIOS e virtualização ★ Melhorar comunicação handler -> redshift ★ Melhorar código ★ portar para linux? ★ Corrigir bugs ○ Implementar mecanismos de locking para evitar races ○ melhorar interface entre handle e o redshift 53
  54. 54. Referências 1. Stoned bootkit a. https://www.blackhat.com/presentations/bh-usa-09/KLEISSNER/BHUSA09-Kleissner-Sto nedBootkit-SLIDES.pdf 2. Diamorphine a. https://github.com/m0nad/Diamorphine 3. BABYKIT a. https://github.com/rick2600/babykit 4. Introduction to bluepill a. https://www.coseinc.com/en/index.php?rt=download&act=publication&file=Introduci ng%20Blue%20Pill.ppt.pdf 5. SubVirt: Implementing malware with virtual machines a. http://web.eecs.umich.edu/~pmchen/papers/king06.pdf 6. Hardware virtualization rootkit a. https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Zovi.pdf 7. Using CPU System Management Mode to Circumvent Operating System Security Functions a. http://fawlty.cs.usfca.edu/~cruse/cs630f06/duflot.pdf 8. A Real SMM Rootkit: Reversing and Hooking BIOS SMI Handlers a. http://phrack.org/issues/66/11.html 9. Introducing Ring -3 Rootkits a. http://me.bios.io/images/6/61/Ring_-3_Rootkits.pdf 10. How Many Million BIOSes Would you Like to Infect? a. http://www.legbacore.com/Research_files/HowManyMillionBIOSWouldYouLikeToInfe ct_Full2.pdf 54
  55. 55. Referências 11. Persistent BIOS Infection a. http://phrack.org/issues/66/7.html 12. DE MYSTERIIS DOM JOBSIVS Mac EFI Rootkits a. http://ho.ax/De_Mysteriis_Dom_Jobsivs_Black_Hat_Paper.pdf 13. implementing and detecting PCI rootkit a. https://www.blackhat.com/presentations/bh-dc-07/Heasman/Paper/bh-dc-07-Heasma n-WP.pdf 14. Low Level Playground a. http://www.h2hc.org.br/repositorio/2008/Joao.pdf 15. Mistifying the debugger, ultimate stealthness a. http://phrack.org/issues/65/8.html 16. DR rootkit a. http://seclists.org/dailydave/2008/q3/215 55
  56. 56. Obrigado! Dúvidas? 56

×