Novo malware PyPI usa bytecode Python compilado para evitar a detecção

Views: 504
0 0
Read Time:3 Minute, 55 Second

Em uma nova reviravolta nos ataques à cadeia de suprimentos de software, os pesquisadores descobriram um pacote Python escondendo malware dentro do código compilado, permitindo que ele fuja de medidas comuns de detecção.

Em 17 de abril, os pesquisadores relataram um pacote chamado “fshec2” aos administradores do repositório de código aberto Python PyPI. Pacotes maliciosos não são novos – ou particularmente raros – no PyPI, mas ao contrário do lote deles, o fshec2 continha toda a sua funcionalidade maliciosa dentro de seu código compilado, tornando difícil identificá-lo como má notícia.

Os administradores do PyPI removeram imediatamente o pacote. Ao fazê-lo, eles “também reconheceram esse tipo de ataque como interessante e reconheceram que não havia sido visto anteriormente”, escreveu Karlo Zanki, engenheiro reverso da ReversingLabs, em um relatório publicado em 1º de junho.

“Esse comportamento é um pouco mais sofisticado e mostra que os invasores estão evoluindo e prestando atenção nas melhores detecções que estão sendo implementadas”, diz Ashlee Benge, diretora de defesa de inteligência de ameaças da ReversingLabs, acrescentando que “provavelmente continuaremos a ver esse tipo de ataque aumentar no futuro”.

Desembalagem fshec2

A genialidade do fshec2 está em como ele dispensa as convenções básicas de uma boa higiene hacker.

Por exemplo, bandidos tendem a não distribuir malware ostensivo na Web – isso seria um problema. Em vez disso, eles plantam ferramentas que, ao se conectarem a um computador alvo, se conectam de volta aos seus servidores C2 e acionam o download de código malicioso — que pode ser ransomware, um roubador de informações, você nomeia.

Além disso, para esconder suas verdadeiras intenções, os hackers costumam usar ofuscação de código – pegando quaisquer pistas que os mocinhos possam pegar e transformando-as em espaguete.

Por outro lado, o fshec2 front carregava suas funcionalidades maliciosas e não dependia de ferramentas de ofuscação.

O pacote continha três arquivos — dois arquivos de código-fonte não excepcionais e um terceiro arquivo mais interessante, “full.pyc”. Dentro do full.pyc havia um método chamado “get_path”, que, explicaram os pesquisadores, “executa algumas das funções maliciosas comuns observadas em outros pacotes PyPI maliciosos que analisamos”, incluindo a coleta de nomes de usuário, nomes de host e listagens de diretórios e o download de comandos de um servidor remoto.

Como fshec2 conseguiu esconder a malícia de get_path? O bit crucial aqui é que os arquivos PYC não contêm código-fonte, mas bytecode compilado.

O problema com o código de bytes

Bytecode é uma representação do Python, compilado como um conjunto de instruções para a Máquina Virtual Python. Em um sentido simplificado, ele existe em algum lugar entre o código-fonte e ser um binário de máquina.

O bytecode bruto não é amigável ao olho humano — get_path, por exemplo, não pode ser encontrado em forma legível em nenhum lugar dentro do fshec2. E assim também é capaz de contornar por scanners de software.

O PyPI ainda não contabiliza malwares escondidos em bytecode, explica Benge, porque “na última década, esses arquivos ficaram cada vez mais complicados e enormes. É muito lento, muitas vezes, tentar digitalizar um arquivo tão grande. Então isso cria esse dilema: quanto atraso você quer que seu usuário experimente?”

Quanto ao software de segurança de terceiros, acrescenta, “outro problema é o tipo de ficheiro. Eu nem poderia dizer quantos tipos de arquivos existem neste momento – há todos os tipos de obscuros. E, muitas vezes, as soluções de segurança não têm realmente os recursos para olhar para os tipos menos comumente vistos.”

PyPI: Lutando contra ciberatacantes

“Neste momento, o pobre PyPI está realmente sob fogo”, observa Benge. “Houve um grande aumento nesse tipo de ataque em geral, onde estamos vendo bibliotecas Python maliciosas serem aproveitadas para servir malware.”

No ano passado, especialmente, os agentes de ameaças têm inventado novos tipos de pacotes Python maliciosos e até mesmo anunciado abertamente seus produtos malignos no repositório. As más notícias têm chegado com tanta frequência para o PyPI que, no início deste mês, a comunidade de segurança interpretou um desligamento de rotina como um ataque cibernético massivo.

Em resposta, a Python Software Foundation tem investido em segurança mais do que nunca, criando novas funções para especialistas em segurança dedicados. E na semana passada, o PyPI anunciou que, até o final do ano, os usuários que carregam e mantêm projetos e organizações serão obrigados a proteger suas contas com autenticação de dois fatores.

Benge está otimista com esses desenvolvimentos. “Agora se torna um pouco mais difícil do que apenas empurrar uma biblioteca maliciosa para o PyPI e esperar que alguém a baixe. Agora estamos vendo que esses caras têm que trabalhar um pouco mais.”

FONTE: DARK READING

POSTS RELACIONADOS