Muitos usuários de computador macOS ainda estão confiantes de que suas máquinas não precisam de proteção. Pior ainda, os administradores de sistema em empresas onde os funcionários trabalham com hardware Apple costumam ter a mesma opinião.
Na conferência Black Hat USA 2020, o pesquisador Patrick Wardle tentou desiludir o público desse equívoco apresentando sua análise de malware para macOS e construindo uma cadeia de exploit para assumir o controle de um computador Apple.
Microsoft, macros e Mac
Uma das formas mais comuns de atacar computadores que executam o macOS é por meio de documentos com macros maliciosas – ou seja, por meio de aplicações do Microsoft Office. Na verdade, apesar da disponibilidade dos próprios aplicativos de produtividade da Apple, muitos usuários preferem usar o Microsoft Office. Alguns o fazem por hábito; outros para fins de compatibilidade com os documentos que seus colegas criam.
Claro, todo mundo sabe há muito tempo sobre a ameaça potencial representada por documentos que contêm macros. Portanto, tanto a Microsoft quanto a Apple possuem mecanismos para proteger o usuário.
A Microsoft alerta os usuários quando eles abrem um documento que contém uma macro. Além disso, se mesmo assim o usuário decidir habilitar a macro, o código é executado em uma sandbox, o que, de acordo com os desenvolvedores da Microsoft, evita que o código acesse os arquivos do usuário ou cause outros danos ao sistema.
Por parte da Apple, a empresa introduziu vários novos recursos de segurança na versão mais recente de seu sistema operacional, o macOS Catalina. Em particular, isso inclui quarentena de arquivos e “notarização“, que é uma tecnologia que impede a abertura de executáveis de fontes externas.
Basicamente, essas tecnologias, combinadas, devem ser suficientes para evitar qualquer dano de macros maliciosas. Na teoria, tudo parece bastante seguro.
Uma cadeia de exploits puxa a macro para fora da sandbox
Na prática, entretanto, muitos mecanismos de segurança são implementados de forma bastante problemática. Portanto, os pesquisadores (ou invasores) podem encontrar métodos para contorná-los. Wardle ilustrou sua apresentação demonstrando uma cadeia de exploits.
1. Burlando o mecanismo que desativa macros
Veja, por exemplo, o sistema que avisa o usuário quando detecta uma macro em um documento. Na maioria dos casos, funciona como os desenvolvedores pretendiam. Mas, ao mesmo tempo, é possível criar um documento no qual a macro seja iniciada automaticamente e sem qualquer notificação do usuário, mesmo que as macros tenham sido desabilitadas nas configurações.
Isso pode ser feito usando o formato de arquivo Sylk (SLK). O formato, que usa a linguagem macro XLM, foi desenvolvido na década de 1980 e foi atualizado pela última vez em 1986. No entanto, os aplicativos da Microsoft (por exemplo, Excel) ainda suportam Sylk por razões de compatibilidade com versões anteriores. Essa vulnerabilidade não é nova e foi descrita em detalhes em 2019.
2. Escapando da sandbox
Como já dissemos, um invasor pode executar uma macro de maneira invisível. Mas o código ainda é executado dentro da sandbox isolada do MS Office. Como pode um hacker atacar o computador de qualquer maneira? Bem, acontece que não é muito difícil escapar da sandbox da Microsoft em um Mac.
É verdade que você não pode modificar arquivos já armazenados em seu computador a partir da sandbox. No entanto, pode criá-los. Esse exploit já foi usado para escapar da área restrita antes e parece que a Microsoft lançou uma atualização para fechar a vulnerabilidade. No entanto, o problema não foi realmente resolvido, como um exame mais detalhado do patch mostrou: A correção resolveu os sintomas, bloqueando a criação de arquivos de dentro de locais que alguns dos desenvolvedores consideravam inseguros, como na pasta LaunchAgents, que é o local de armazenamento para scripts que são iniciados automaticamente após uma reinicialização.
Mas quem decidiu que a Microsoft levou em consideração todos os “locais perigosos” ao criar a patch? Acontece que um script escrito em Python e iniciado a partir de um documento do Office – e, portanto, executado dentro de uma sandbox – poderia ser usado para criar um objeto chamado “Login Item”. Um objeto com esse nome é iniciado automaticamente quando o usuário efetua login no sistema. O sistema inicia o objeto, então ele será executado (em) fora (/em) da sandbox do Office e, assim, dribla as restrições de segurança da Microsoft.
3. Burlando os mecanismos de segurança da Apple
Portanto, agora sabemos como executar secretamente uma macro e criar um objeto Login Item. Obviamente, os mecanismos de segurança do macOS ainda evitam que a backdoor, que foi criada por um processo suspeito de dentro da sandbox não confiável seja iniciado, certo?
Por um lado, sim: os mecanismos de segurança da Apple realmente bloqueiam a execução do código obtido dessa forma. Por outro lado, há uma solução alternativa: se você inserir um arquivo ZIP como um item de login, no próximo login o sistema descompactará automaticamente o arquivo.
Tudo o que o invasor precisa é escolher o local correto para descompactar o arquivo. Por exemplo, o arquivo pode ser colocado no mesmo diretório que as bibliotecas do usuário, uma etapa acima daquele onde os objetos do tipo Launch Agent devem ser armazenados (aqueles que a Microsoft considera corretamente perigosos). O próprio arquivo pode incluir um diretório denominado LaunchAgents, contendo o script do Launch Agent.
Depois de descompactado, o script é colocado na pasta LaunchAgents para ser executado na reinicialização. Tendo sido criado por um programa confiável (o Archiver) e não tendo atributos de quarentena, ele pode ser usado para iniciar algo mais perigoso. Os mecanismos de segurança nem mesmo impedirão a execução deste arquivo.
Como resultado, um invasor pode lançar um mecanismo por meio do shell de comando Bash para obter acesso remoto (obtendo assim o chamado shell reverso). Este processo Bash pode ser usado para baixar arquivos, que também não terão o atributo quarentena, permitindo que o invasor baixe código verdadeiramente malicioso e execute-o sem quaisquer restrições.
Em resumo:
- Um invasor pode iniciar secretamente uma macro mal-intencionada sem exibir nenhum aviso ou fazer perguntas ao usuário, mesmo se a execução da macro estiver desabilitada nas configurações. Tudo o que o invasor precisa é que um usuário baixe um documento do Office e o abra.
- Em seguida, o invasor pode escapar da sandbox do Microsoft Office e criar um objeto Login Item e um arquivo com o Launch Agent, que é executado automaticamente fora da sandbox no próximo login.
- Com apenas algumas etapas, o invasor pode facilmente contornar os mecanismos de segurança da Apple, extraindo um objeto do tipo Launch Agent de um arquivo ZIP. Tendo, assim, evitado os mecanismos de segurança do sistema, o programa pode então baixar e executar a parte de “combate” do código malicioso.
Como você pode se proteger contra macros maliciosas no macOS
Obviamente, o pesquisador relatou suas descobertas à Apple e à Microsoft, e ambas as empresas discretamente fizeram correções, sem divulgá-las ou mesmo atribuir identificadores CVE oficiais às vulnerabilidades. Mas a situação sugere que, com um estudo cuidadoso dos mecanismos de segurança, é bem possível encontrar métodos para burlá-los
No passado, o macOS era considerado corretamente como mais seguro, mas isso se deu menos por seus mecanismos de segurança particularmente avançados, e mais como resultado de invasores que, em geral, o ignoraram. No entanto, os computadores Apple se tornaram muito mais populares, inclusive no ambiente corporativo e, portanto, os ataques que visam o macOS estão se tornando muito mais interessantes para os cibercriminosos.
Portanto, para permanecer seguro, você não precisa apenas manter seu sistema e todos os softwares atualizados, mas também usar soluções de segurança que podem detectar e neutralizar atividades suspeitas. Por exemplo, nossa linha de produtos de segurança, tanto para usuários domésticos quanto para clientes corporativos incluem versões para macOS.