H2HC8 - The Gardener Project
Transcrição
H2HC8 - The Gardener Project
The Gardener Project Finding Binary Planting Footprints in the Garden of your PC Tony Rodrigues, CISSP, CFCP inv.forense no gmail www.octanelabs.net Quem sou ? • Tony Rodrigues, CISSP, CFCP, Security+ • Gestor/TI e Consultor em Segurança de Informações • Perito/Investigador/Pesquisador em Computação Forense do OctaneLabs • Blog: http://forcomp.blogspot.com Line Up Só de Feras ! Tony Zoom 500x Tony Zoom 1000000x Tony Micróbios causam Dor de Barriga ... Portanto, não durma na minha palestra !!! Agenda • Introdução – O que é Binary Planting – O que não é Binary Planting • Implicações da Vulnerabilidade • Binary Planting nos Detalhes • Forense de Binary Planting • Projeto Jardineiro • Conclusões O que é Binary Planting ? • Ataque que consiste em executar código arbitrário na máquina da vítima, plantando em locais específicos arquivos maliciosos para que sejam dinamicamente carregados como parte legítima de aplicações vulneráveis Trabalhando dinamicamente bem Estática ou implícita Dinâmica ou explícita LoadLibraryEx Atacando com o Binary Planting DLL maliciosa O que não é Binary Planting • Não é sobrescrita de arquivos – Se fosse possível sobrescrever, o alvo seria o executável, ora ... • Não é DLL Preloading ou DLL unsafe Loading – O problema não afeta somente DLLs • Não é DLL Hijacking ou DLL Spoofing – Em alguns casos, a DLL não existe no sistema operacional O que não é Binary Planting • Não depende só de Engenharia Social – Não se trata de enganar o usuário para clicar em um .exe • Não afeta somente o Windows – Outros SOs possuem mecanismos semelhantes • Chamadas dinâmicas de código • Localização de bibliotecas pelo nome Características • Ataque do tipo Non-Control-Data – Executa código sem destruir o fluxo normal • Exploração Local e Remota • Muitas aplicações vulneráveis • Não requer privilégios administrativos • Antiga, bastante conhecida • Práticas ruins de Programação + Comportamento inadequado do SO = Ownado Podemos ignorar essa vulnerabilidade ? • Exploit depende de poucos fatores – Não envolve muitas ações do usuário – Em alguns casos, basta abrir um arquivo de dados • A quantidade de aplicações vulneráveis é enorme – Prática costumeira de carregar a DLL para ver se ela existe ainda é muito usada – DLL Chain Loading – PlugIns, AddOns, etc Prática ruim ainda é endossada Prática ruim ainda é endossada Novinho em folha ! You can test for the presence of the functions associated with a feature. To test for the presence of a function in a system DLL, call the LoadLibrary function to load the DLL. Then call the GetProcAddress function to determine whether the function of interest is present in the DLL. Andrew !! find this guy and ... Podemos ignorar essa vulnerabilidade ? • Ações de mitigação dos fabricantes foram não eliminaram os riscos – Hotfix MS CWDIllegalInDLLSearch – Problemas na expansão de variáveis na PATH • Correção real do bug é extremamente custoso – Estima-se em milhões de linhas a serem analisadas Podemos ignorar essa vulnerabilidade ? • Exploits vão na contramão do que o usuário está acostumado/ensinado – O usuário aciona arquivos comuns de dados (musicas, vídeos, documentos, etc) • Ataque funciona em Protected Mode sem emitir nenhum alerta – Possível sem usar duplo-clique – Ataques combinados • Clickjacking • Carpet Bomb Ataque baseado em Binary Planting Novinho em folha ! Pequena Grande Lista de Aplicações Vulneráveis Outra Lista de Aplicações Vulneráveis Outra Lista de Aplicações Vulneráveis Software de Forense – Ooops ! Outra Lista de Aplicações Vulneráveis Software de Segurança – Oh-Oh ... E para quem dizia que BP era inofensivo ... Stuxnet usou ! Stuxnet e Binary Planting • The threat then scans subfolders under the hOmSave7 folder. In each of them, Stuxnet drops a copy of a DLL it carries within its resources. This DLL has a particular name (we’ll refer to it as “xyz.dll”). • Stuxnet then modifies a Step7 data file located within the project folder structure. Following this final step, the infection process is complete. • When an infected project is opened with Simatic manager, the modified data file will trigger a search for the previously mentioned xyz.dll file. The following folders are searched in the following order: – The S7BIN folder of the Step7 installation folder – The %System% folder – The %Windir%\system folder – The %Windir% folder – Subfolders of the project’s hOmSave7 folder • If the xyz.dll file is not found in one of the first four above locations, the malicious DLL will be loaded and executed by the manager. This DLL file acts as a decryptor and loader for the copy of the main DLL located in xutils\listen\xr000000.mdx. This strategy is very similar to the DLL Preloading Attacks that emerged in August Eis então ... Binary Planting 101 Chamando dinamicamente uma DLL • Carregando uma DLL – LoadLibrary() – LoadLibraryEx() • Path absoluta ou relativa – LoadLibrary(“c:\Windows\System32\xxx.dll”); – LoadLibrary(“xxx.dll”) Essa chamada é vulnerável Ordem de Busca de DLL 1. Diretório de onde a aplicação foi iniciada 2. Windows\System32 3. Windows\System 4. Windows 5. Diretório Corrente (CWD ou .) 6. Diretórios da PATH Dá para manipular maliciosamente Exemplificando • LoadLibrary(“xyz.dll”) 1. Diretório de onde a aplicação foi iniciada 2. Windows\System32 3. Windows\System 4. Windows 5. Diretório Corrente (CWD ou .) 6. Diretórios da PATH Localizou em c:\Common\xyz.dll Explorando • Atacante prepara xyz.dll maliciosa • Manipula CWD, apontando para o local da xyz.dll maliciosa • Ela é executada • LoadLibrary(“xyz.dll”) 1. Diretório de onde a aplicação foi iniciada 2. Windows\System32 3. Windows\System 4. Windows 5. Diretório Corrente (CWD ou .) 6. Diretórios da PATH Mas a maliciosa será encontrada primeiro e executada A xyz.dll legítima está aqui em c:\Common\xyz.dll Manipulando o CWD • Duplo-clique em um arquivo no Explorer • Caixas de diálogo de Abrir Arquivo ou Salvar Como • Última localização de abertura ou salva de arquivo • Comando CD do command • Atalhos • CreateProcess e ShellExecute Manipulando o CWD Ataque local Manipulando o CWD Remotamente • Pode ser feito – Acessando compartilhamentos SMB • Comum estar bloqueado externamente no firewall • Útil como ataque interno – Acessando via WebDAV • Muitas vezes liberado para acesso externo • Ao alcance de atacantes remotos Compartilhando via SMB WebDAV a serviço do Binary Planting WebDAV a serviço do Binary Planting BP com outros arquivos • Afeta executáveis com path relativa – CreateProcess(“Programa.exe”) – ShellExecute(“Programa.exe”) – _spawn*p* e _exec*p* • São ainda mais vulneráveis – CWD é o segundo a ser buscado no CreateProcess – CWD é o primeiro a ser buscado nos outros ! BP acontece também com não-executáveis • Java Runtime Environment (JRE) – Suporta arquivos de configuração • .hotspotrc e .hotspot_compiler – Esses arquivos são carregados do CWD • Parâmetro OutOfMemoryError – Indica um comando para ser executado caso dê erro de memória BP acontece também com não-executáveis • Explorando – Criamos um .hotspotrc com o parâmetro OutOfMemoryError apontando para um .exe malicioso – Criamos uma página html que instancia uma classe java que sempre causa estouro de memória – Colocamos no mesmo diretório a página html, a classe java, o arquivo malicioso e o .hotspotrc – O usuário é motivado a carregar a página html • Isso faz o CWD do browser apontar para nosso diretório • O JRE vai herdar esse CWD e ler o .hotspotrc de lá BP acontece também com não-executáveis Duplo clique aciona carrega classe JRE provoca .hotspotrc malicioso .exe malicioso Binary Planting e Componentes COM • Componentes ficam configurados no Registry – São acionados pelo GUID (CoCreateInstance) – O registry indica o binário que será acionado – Special Folders fornecem formas avançadas de exploração Path relativa == vulnerável BP x COM • Explorando – Atacante cria um diretório remoto, adicionando o GUID específico de Special Folder – Atacante coloca nesse diretório a dll maliciosa • Deskpan.dll no WinXP • EhTrace.dll no Win7 – Ataque possibilitado por • duplo clique (diretório malicioso vira CWD) • dois cliques simples (necessita de clickjacking) – Não emite nenhum alerta do browser ! BP x COM – IE9 Protected Mode – Usuário navega por página maliciosa que obfusca acesso ao diretório com BP+GUID de Special Folder • Primeiro clique torna o arquivo selecionado e altera o CWD • Segundo clique aciona Impressão desse arquivo – Operação não causa alertas • VERCLSID.exe instancia GUID do Special Folder – Está na Lista Branca do browser ! – GUIDs específicos chamam PSISDECD.dll que chama ehtrace.dll – A ehtrace.dll maliciosa é carregada do diretório do atacante Hotfix MS • CWDIlegalInDLLSearch – Chave de Registry que permite evitar a busca de DLLs no CWD • Também pode impedir a carga de DLLs em WebDAV ou UNC remotos – Configurações gerais e por programa – Ajuda a mitigar o problema em aplicações não corrigidas • SetDllDirectory – Função de API que altera a ordem de busca de DLLs – Ajuda a mitigar o problema sem grandes alterações no fonte SetDllDirectory • Ordem de busca SetDLLDirectory(“c:\qqpath\”) – diretório onde a aplicação foi executada – c:\qqpath\ – Windows\System32 – Windows\System – Windows – PATH SetDllDirectory • Ordem de busca SetDLLDirectory(“”) • Retira completamente o CWD da busca – diretório onde a aplicação foi executada – Windows\System32 – Windows\System – Windows – PATH Problemas do Hotfix • Ajuda mas não resolve completamente • Bug das variáveis que não expandem na PATH – Afetam várias versões de Windows – Ex: %CommonProgramFiles% deve expandir para c:\Program Files\Common Files – Se a variável não se expandir, ela vira uma path relativa • O atacante pode criar remotamente diretórios iguais à path não expandida • O Binary Planting funcionará caso haja chamada a uma DLL que não exista Explorando mesmo com Hotfix • Atacante cria diretório remoto com – Arquivo de dados da aplicação vulnerável – Subdiretórios %SystemRoot%\System32\Wbem (literalmente com os sinais de %) – Coloca nesse subdir a DLL maliciosa • O usuário é estimulado a clicar no arquivo de dados – Isso torna o diretório remoto como o CWD • Se %SystemRoot%\System32\Wbem estiver na PATH e %SystemRoot% não expandir – Ataque com sucesso ! Forense de Binary Planting Que importância tem ? • Descobrir a causa raiz é importante – Um dos objetivos em Computação Forense – Faz parte do Follow Up em Resposta a Incidentes • Em IR – Sem descobrir a causa raiz, o incidente se repetirá – Incidentes repetidos -> CSO sem emprego ... • Em Computação Forense – Ao descobrir a causa raiz, pode-se evitar alegações de negligência do usuário (phishing) Mapeamento dos vestígios – SysInternals ProcMon Vestígios na Memória • Processos que foram alvos possuem módulos carregados remotamente – Ou então fora do local habitual • Os módulos maliciosos carregados podem ser recuperados – Fuzzy Hash pode ajudar na identificação de módulos maliciosos Vestígios na Memória • Arquivos de dados abertos pelo processo – Módulo (DLL) carregada a partir do mesmo diretório de um arquivo de dados • Conexões de Rede – Poderá indicar a origem do arquivo de dados e da DLL maliciosa Vestígios de Rede • Necessitam de monitoramento prévio para captura • Pacotes coletados irão conter – Arquivo de dados da aplicação – DLL carregada remotamente – Origem do ataque • Obviamente, ataques locais não deixam esse vestígio ... :O Vestígios de Disco • Aplicações vulneráveis podem ser localizadas no disco – Filtragem por “known bad” – ACROS Security disponibiliza hashset Vestígios de Disco • Arquivos maliciosos plantados estarão presente no disco – Eles são carregados para um diretório de cache webdav da máquina • Vista/Win7: \Windows\ServiceProfiles\LocalService\AppData\Local \Temp\TfsStore\Tfs_DAV • WinXP: :\Documents and Settings\LocalService\Local Settings\Temporary Internet Files Vestígios do Sistema Operacional • Recent Files – Em caso de acionamento por duplo clique, o atalho criado referenciará uma path remota • Em ataques locais resta a correlação de paths • Prefetch – O arquivo binário carregado (DLL) terá path remota – Poderá ter também referencia remota ao arquivo de dados • Em ataques locais resta a correlação de paths Vestígios do Sistema Operacional • Registry – Path remota no MRU do Open/Save As • Ou na MRU da aplicação explorada – Arquivo executado indicado no UserAssist – Path remota no ShellBags UserAssist ShellBags MRUs – Programa executado MRUs – Arquivo de dados acessado Projeto Jardineiro Projeto Jardineiro • Foco em Pesquisa Forense de Binary Planting – Ferramentas – Localização de novos artefatos • Jardineiro – Aplicativo Forense – Correlação de vestígios • Humus – Aplicativo de busca estática de aplicações vulneráveis Jardineiro – Aplicativo • Investigador fornecerá – Dump de memória; e/ou – Pcap do monitoramento de rede; e/ou – Imagem Forense; e/ou – Artefatos específicos • Arquivos de Registry • Arquivos de Atalho do Recent • Arquivos de Prefetch • Aplicação examinará artefatos fornecidos – Por correlação, irá indicar a presença de BP Desafios da Análise Dinâmica • Exige monitoramento completo – Algumas funções podem não ser ativadas imediatamente (Slow Binary Planting) – Alguns sw não identificam vulnerabilidades justamente por isso • Ex: SMSNIFF x DLLHijackAuditor – Extensões não registradas impedem identificação dinâmica automatizada • É a base do DLLHijackAuditorKit Nirsoft SMSniff é vulnerável DLLHijackAuditor Não identificou automaticamente DLLHijackAuditor Só localizou após intervenção DLLHijackAuditorKit • Criado por HD Moore/Metasploit • Testa apenas tipos de extensões registradas – Vulnerabilidade pode ser acionada por Open File em arquivo não registrado ... • SMSniff x DLLHijackAuditorKit – Extensão .ssp do SMSniff raramente está registrada – Arquivo .cfg pode estar registrado a muitas outras aplicações – Não vai acusar vulnerabilidade Humus • Investigação estática de Aplicações vulneráveis – Seguirá .exe e DLLs dependentes – Indicará aplicações e componentes com a vulnerabilidade de Binary Planting – Não requer execução da aplicação Status do projeto • Sendo lançado hoje no H2HC8 ! • Necessita de colaboradores – Coders • Perl, Python, C, Assembly ??? – Testers • Voluntários ?!? Conclusão Binary Planting é um problema significativo porque: Pode ser explorado facilmente Pode ser explorado remotamente Há muitas aplicações vulneráveis Correções efetivas podem ser inviáveis O Jardineiro é um projeto de código livre para Forense de Binary Planting O projeto precisa de colaboradores ! Referências • DllHijackAuditorKit – http://blog.metasploit.com/2010/08/better-faster-stronger.html • DLLHijackAuditor – http://securityxploded.com/dllhijackauditor.php • Binary Planting - The Official Web Site – http://www.binaryplanting.com/ • ACROS Security Blog – http://blog.acrossecurity.com/ • CWDIllegalInDllSearch – http://support.microsoft.com/kb/2264107 • Remote Binary Planting – Hack In The Box Amsterdam 2011 • Automatic Detection of Vulnerable Dynamic Component Loadings – http://www.cs.ucdavis.edu/research/tech-reports/2010/CSE-2010-2.pdf • Exploit Database – http://www.exploit-db.com/dll-hijacking-vulnerable-applications/ Referências II • Corelan Team – http://www.corelan.be/index.php/2010/08/25/dll-hijacking-kb-2269637the-unofficial-list/ • Universal way to bypass Group Policy by Limited User – http://dsecrg.blogspot.com/2011/07/universal-way-to-bypass-grouppolicy-by.html • Stuxnet Infection of Step 7 Projects – http://www.symantec.com/connect/blogs/stuxnet-infection-step-7projects • Windows Applications Insecure Library Loading – http://secunia.com/advisories/windows_insecure_library_loading/ • Operating System Version – http://msdn.microsoft.com/en- us/library/windows/desktop/ms724832(v=vs.85).aspx Sugestões de Leitura http://forcomp.blogspot.com http://www.e-evidence.info OctaneLabs • O que é OctaneLabs ??? • Grupo de Pesquisa Open Source em Computação Forense e Resposta a Incidentes OctaneLabs • Objetivos • Fomentar a pesquisa em Computação Forense no Brasil • Promover Projetos Open Source com foco em Computação Forense e Investigação Digital • Ministrar Treinamentos em CF • Consultoria, Perícia e Investigação Digital OctaneLabs • Projetos em andamento • MUFFIN • Byte Investigator • Data Juicer • Jardineiro • Myriad • Projetos esperando por você • Slacker++ • FSJuicer • Langoliers We Want YOU ! www.octanelabs.net @octanelabs Obrigado ! inv.forense arroba gmail ponto com (Tony Rodrigues)