Ir para o conteúdo

Já comentamos em Drops anteriores sobre a existência de ferramentas que verificam se nosso projeto possui alguma vulnerabilidade conhecida.

Mas, o que podemos fazer quando uma biblioteca que a gente usa é na verdade um malware?

Veja no vídeo de hoje – com um caso real – o motivo pelo qual você precisa verificar a segurança das bibliotecas que utiliza em seu projeto!

Nós como desenvolvedores gostamos de usar o tempo inteiro bibliotecas de terceiros para nos ajudar em projetos. Já falamos um milhão de vezes aqui que sempre tem que cuidar as seguranças dessas bibliotecas, pois elas têm vulnerabilidades. 

Já falamos tanto isso que hoje nós vamos te mostrar um exemplo real de problemas que acontecem, se você não cuidar disso e instalar algumas dessas dependências que tem algum problema. 

Hoje, vamos mostrar um caso que eu peguei de uma biblioteca maliciosa. Um dos servidores de aplicação que eu pude ajudar, começou a apresentar alguns comportamentos estranhos. Começamos a analisar tudo e um dos pontos que a gente focou foram as bibliotecas deste software. 

Então havia uma biblioteca que quando era deletada, voltava. Meio estranho né, mas tudo bem. Resolvemos analisar essa biblioteca. 

Então vamos lá…

Nós temos aqui o plug-in que foi utilizado dentro desse framework e ele, teoricamente, é apenas um plug-in do google maps. Até agora tudo normal, porém começamos a olhar algumas questões do código. 

Um dos arquivos, que é bastante estranho, é esse “fieldskey.php”. Ao olhar aqui, a gente percebe que tem um código não muito comum, na verdade esse código está ofuscado, digamos “criptografado”. 

Tá vendo que tem um “eval” aqui? Bem ele significa: “Me entregue um texto. Se esse texto for um código, eu vou tentar executá-lo como um código”. Mas a pergunta que fica aqui é, por que uma biblioteca open source do google maps precisaria ofuscar o código dessa maneira se é uma biblioteca aberta?  

Bem, a maioria das linguagens tem esse “eval”, que evitamos utilizá-lo por problemas de vulnerabilidade ou porque códigos maliciosos podem ser injetados por ali e aqui, não foi diferente. No caso, o código dessa biblioteca é propositalmente malicioso.

Então o que fizemos foi trocar o “eval” para um “print”. Nesse momento, descobrimos que aquele código ali é de fato um código, e ele tem uma série de instruções que começamos a analisar, chegando em um ponto bastante estranho. Perceba que, “backconnect” no mundo da segurança parece ser algo semelhante a “backdoor”, uma forma de infiltrar no seu código. 

Começamos a olhar um pouquinho mais o código. Então temos aqui um “remote address”, ou seja de onde vem para onde vai, como é o endereço IP desse atacante ou da vítima. Uma porta no seu computador “12345”, estranho. 

Olha só, porque ele está tentando usar PerI, C, Phyton ou Php, tentando escolher esse tipo de linguagem de programação? Bem provável que ele está tentando ver quais são as linguagens de programação instaladas na máquina. Se alguma delas estiver instalada na máquina eu consigo executar o código em, pelo menos, alguma delas. 

A coisa fica ainda pior. Perceba essa variável chamada “back connect”. Ela possui um termo muito estranho, mas possui um padrão. Normalmente quando têm dois iguais no final desse texto, significa que é um “base 64”. Por que o pessoal utiliza o “base 64”? Tu tem um texto e converte ele para um outro texto que é único. Isso serve muito para tentar esconder alguma coisa ali dentro para os outros não encontrarem usando as pesquisas da tua IDE ou pesquisa de arquivo. Por exemplo, pesquisar no arquivo a palavra password, se ele utilizar o “base 64” vai ficar no modelo diferente e você não vai encontrar na sua pesquisa.

Bem, achei bastante estranho esse dado estar aqui, afinal o que tem aqui dentro?

Todas as linguagens de programação, praticamente, tem uma forma de desencodar um “base 64”.

 O que é desencodar um “base 64”? Pegar aquele valor que está naquele formato estranho e voltar a sua forma original, a gente consegue fazer isso online também. Então o que eu fiz, eu peguei e fui ver o que tem por baixo desse texto estranho.

Ao realizar um decode, eu percebo que é um outro código em Perl, que tenta abrir uma conexão da sua máquina como atacante. Olha como ficou essa malandragem aqui! 

Ele ta usando um código que está em “base 64, ele vai destransformar para que tu não consiga saber que é um código e, depois, ele vai tentar executar esse código na sua máquina, abrindo um backdoor. 

O que é isso? 

Ao tentar executar esse código, ele abre uma conexão na sua máquina, permitindo que um atacante externo possa se conectar ao seu computador.  A partir dali, ele tem grandes poderes. Ele pode ver tudo que você digita, pode controlar a sua máquina, pode instalar programas, criptografar seu disco e assim por diante. 

Talvez você deva estar pensando que esses plug-ins vão ficar somente no ambiente de produção, errado! Se você está desenvolvendo na sua máquina e for instalar esses plug-ins para continuar desenvolvendo, isso vai ser executado na sua máquina também. Detalhe, você está de home office? Provavelmente você está usando o seu computador pessoal ou o da empresa ligado à rede corporativa. Então, esse plug-in vai ser executado e vai ter acesso, não só ao seu computador, mas a toda a rede em que você está conectado. Nesse momento,  as empresas acabam tomando o pênalti, pois é mais fácil atacar um computador de uma pessoa e, através dele, entrar em uma rede corporativa, do que tentar atacar a própria rede corporativa. 

Então o que eu devo fazer? A gente já falou sobre isso, mas vamos reforçar. 

Sempre que você for instalar uma biblioteca package no seu projeto, verifique se possui vulnerabilidades. Uma das coisas que você pode utilizar é o Snyk, você escolhe o tipo de biblioteca que você quer e verifica se possui vulnerabilidades ou não. Lembrando que, muitos problemas de bibliotecas que são maliciosas são instaladas porque houve um erro de digitação no nome. Preste muita atenção no momento em que você for instalar uma lib no seu projeto. 

Ficamos por aqui hoje e continua aí porque tem mais Drops de Segurança vindo pela frente.  

#BeSafe

Até o próximo Drops!

Outras publicações