Este artigo descreve e analisa os detalhes da app android entregue junto com o phishing do Novo Banco durante o primeiro trimestre de 2020.

Durante o primeiro trimestre de do ano 2020 enumeras campanhas de phishing envolvendo os bancos Portugueses foram alavancadas pelos criminosos.

Lista de campanhas fraudulentas publicadas durante o 1º trimestre de 2020

12/03 – Caixa Geral Depósitos
13/02 – Millennium BCP e Montepio
20/01 – Montepio e Millennium BCP
14/01 – Santander e Novo Banco
12-2019/01-2020: Lampion Trojan
(…)

Desde o dia 27 de fevereiro de 2020 que uma aplicação móvel Android tem sido disseminada em emails de phishing personificando o Novo Banco.

Figura 1: Landing page do dia 27 de fevereiro de 2020.

 

Qual a principal vantagem de uma aplicação Android ao invés de uma simples página de phishing solicitando credenciais?

A resposta não é imediata, mas devido às diversas camadas de proteção durante o processo de autenticação que um sistema nos impõe hoje em dia, existe a necessidade de validar a autenticidade e legítimidade durante essa ação. Para o fazer, é usado geralmente um fator de segunda autenticação – e que corresponde a uma SMS recebida no telemóvel do utilizador – o que valida de imediato a origem/legitimidade da potencial autenticação no sistema.

Como exemplo, uma simples landing-page de phishing, que solicite as credenciais de acesso, necessita de um processo semi-automatizado ou totalmente manual para a recolha do próximo fator de autenticação – a SMS enviada para o telemóvel da vítima.

Figura 2: Processo semi-automatizado/manual de um típica campanha de phishing via landing-page.

 

Como é possível observar pelo esquema da Figura 2, o processo é demorado, e muita das vezes complicado de gerir pelos criminosos. De uma forma simplificada, são necessários 10 passos para que uma autenticação com sucesso no homebanking do banco seja realizada com sucesso.

  1. A vítima acede ao email ou à SMS de phishing.
  2. As credenciais de acesso são introduzidas.
  3. As credenciais são enviadas para um backoffice gerido pelos atacantes.
  4. Os atacantes (neste caso em modo de operador) são avisados que um novo “cliente” está online no backoffice – isso representa uma nova infeção.
  5. Os atacante emitam o processo real com as credenciais da vítima, efetuado assim o primeiro passo de autenticação no portal do banco.
  6. O serviço legítimo do banco, conhece o número de telefone da vítima, e envia o token (PIN) referente ao segundo fator de autenticação.
  7. A vítima submete o token na respetiva página de phishing (landing-page solicitando o token).
  8. O token é enviado para o backoffice.
  9. O operador volta a receber uma notificação que o processo de autenticação está terminado.
  10. O atacante completa o segundo fator de autenticação no portal do banco.

 

Em contraste, o mesmo processo executado através de uma aplicação Android acaba por resolver o problema do segundo fator de autenticação do ponto de vista do atacante, uma vez que a aplicação android maliciosa, por si só, pode fazer a gestão das SMS do telemóvel do utilizador agora infetado.

Figura 3: Processo de infeção durante uma campanha de phishing via APK malicioso.

 

Como é possível observar, através deste tipo de cenários apenas são necessários 5 passos para que um atacante consiga uma autenticação valida no portal do banco com as credenciais da vítima.

 

Modus Operandi do APK malicioso personificando o Novo Banco

No dia 12 de março de 2020, surgiu uma outra campanha utilizando um APK Android malicioso distribuído através de mensagens de email e SMS.

Figura 4: Landing page de phishing para descarregar o APK malicioso (hxxps://nb-cadastro[.]com/app/NB_Security.apk).

 

A landing-page entrega ao utilizador um conjunto de instruções bastantes simples:

Segurança NovoBanco.

Identificamos que este dispositivo ainda não utiliza o novo aplicativo de segurança NovoBanco.

Este app, é de uso obrigátorio e deve ser instalado imediatamente no seu dispositivo.

Clique no botão abaixo para realizar o download e instalação do app.

----
Permitir instalação.

Em alguns dispositivos é necessário permitir a instalação de aplicativos externos.

Se for o seu caso, siga os passos abaixo, para prosseguir com a instalação.

• 1- Aceda: Configurações » Segurança
• 2- Localize e selecione a opção "Fontes Desconhecidas"
• 3- Volte a esta tela, e realize o download e os procedimentos de instalação.

 

APK malicioso: NB_Security.apk
MD5: 8bd9618426a23fff857a5aa909791462

Figura 5: Detalhes do APK malicioso.

 

Como é possível observar, a aplicação Android corre em qualquer tipo de dispositivo desde que o target SDK seja superior à versão 5. Este detalhe garante o aumento do escopo de infeção do ponto de vista malicioso.

A aplicação solicita privilégios em demasia e desadequados para o que se propõe fazer. Esse tipo de detalhes pode ser observado no manifest da aplicação.

<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="10" android:versionName="3.4" android:installLocation="internalOnly" package="pt.bn20.ptz" platformBuildVersionCode="28" platformBuildVersionName="9"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="26" />
    <supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <application android:label="20Novoban" android:icon="@drawable/icon">
        <activity android:label="20Novoban" android:name=".main" android:launchMode="singleTop" android:screenOrientation="unspecified" android:windowSoftInputMode="stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".starter" />
        <receiver android:name=".starter$starter_BR" />
        <service android:name=".bulacha" />
        <receiver android:name=".bulacha$bulacha_BR">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <activity android:label="20Novoban" android:name=".webview" android:launchMode="singleTop" android:screenOrientation="unspecified" android:windowSoftInputMode="stateHidden" />
        <service android:name=".httputils2service" />
        <receiver android:name=".httputils2service$httputils2service_BR" />
    </application>
</manifest>

 

Em detalhe, a vítima ao instalar a aplicação no seu smartphone confere à aplicação:

  • A leitura de SMS (usado para obter o token/PIN referente ao segundo fator de autenticação)
  • O acesso à Internet para uma comunicação com o C2 e landing-page; 
  • Criação de serviços em background no smartphone; e
  • Controlo da vibração e sleep para evitar que o smartphone vibre quando receber a SMS com o token e/ou fique em sleep impedindo, assim, que a app maliciosa aceda ao gestor de SMS e envie o token para o C2.

 

Figura 6: Permissões exigidas pela aplicação. 

 

Em detalhe, existe um conjunto de classes JAVA que contém o core da aplicação maliciosa, nomeadamente:

  • pt/bn20/ptz/starter.java
  • pt/bn20/ptz/main.java
  • pt/bn20/ptz/b4xbitset.java
  • pt/bn20/ptz/b4xorderedmap.java
  • pt/bn20/ptz/webview.java
  • pt/bn20/ptz/msgboxtemplate.java
  • pt/bn20/ptz/b4xset.java
  • pt/bn20/ptz/httpjob.java
  • pt/bn20/ptz/httputils2service.java
  • pt/bn20/ptz/bulacha.java
  • pt/bn20/ptz/b4xbytesbuilder.java

 

A aplicação maliciosa possui 2 atividades, 3 serviços e 3 receivers. Em seguida são enumerados os detalhes mais importantes aqui identificados.

 

Atividades

.main : Atividade lançada em primeiro plano;
.webview : Atividade utilizada para lançar a landing-page de phishing do banco.

Figura 7: Atividade webview – pedaço de código.

 

Serviços

.starter: Serviço que obtém do C2 o link da landing-page (pode ser dinâmico) para depois ser renderizado na atividade .webview. Neste serviço está também define a estrutura de dados utilizada e que armazena informação sobre a vítima mais tarde enviada para o C2, assim como, validações adicionais sobre o dispositivo móvel.

Figura 8: Pedaço de código  do serviço .starter.

 

Como é possivel observar, a rotina _service_create() valida se a versão alvo do Android da vítima está contemplada na lista hardcoded, e depois descarrega a URL da landing-page do C2.

public static String _service_create() throws Exception {
      Common.LogImpl("8393219", "inicia tudo", 0);
      _nomemaquina = _xgerarstringsaleatorias(14);
      _versaoandroid = _getandroidversion();
      _url2 = "http://186.235.91[.]100/extras/nb_link_lyly.txt";
      if (_xhttputilsconnect4.IsInitialized()) {
          return "";
      }

 

A URL da página de phishing do C2 é a seguinte. De notar, que ele pode ser alterada dinâmicamente de forma a evitar blacklists.

Figura 9: URL da landing-page do banco

 

O servidor C2 está localizado no Rio de Janeiro, Brazil, confirmando assim a origem da ameaça.

 

Figura 10: Geolocalização do C2.

 

 

.bulacha : Classe que implementa os métodos utilizados para exfiltração de informação, gestão de SMS, etc.

Assim que o serviço é criado, é comunicado com o C2 que o dispositivo está operacional, e alterado o volume do dispositivo infetado para que a vítima não se aperceba de qualquer atividade potencialmente suspeita.

Figura 11: Rotina _Service_create() do serviço bulacha.

Assim que a SMS for recebida depois de a vítima introduzir as credenciais na landing-page do banco, o sistema do banco envia o token/PIN para o telemóvel do utilizador agora infetado.

A aplicação maliciosa possui um timer, que executa de x em x segundos, e que valida a última SMS recebida.

Figura 12: Timer executado de x em x segundos para validar as SMS recebidas.

 

Logo após, os dados são exfiltrados e enviados para o C2 via uma solicitação HTTP – POST.

Figura 13: Callbacks para exfiltração de dados para o C2.

 

A aplicação maliciosa envia os detalhes para o C2 via uma solicitação HTTP-POST.

Figura 14: Trecho de código do método POST executado durante a exfiltração de dados para o C2.

 

Finalmente, a gestão de credenciais e tokens das vítimas é realizada no servidor C2 disponível online no seguinte endereço de IP: hxxp://186.235.91[.]100.

Figura 15: C2 server login page.

 

Não se conhece até ao momento, o número de vítimas desta campanha fraudulenta.

Aos utilizadores, sugere-se mais uma vez alguma sensibilidade e análise quando confrontados com situações desta natureza.

Em caso de suspeita partilhe a situação com as autoridades ou através do formulário disponível aqui.

 

Mitre Att&ck Matrix

 

Indicadores de Compromisso (IOCs)

File Name: NB_Security.apk
MD5: 8bd9618426a23fff857a5aa909791462
Size: 1.15MB

hxxps://net24apk[.]website
hxxps://nb-cadastro[.]com
hxxp://186.235.91[.]100/extras/nb_link_lyly.txt
hxxp://186.235.91[.]100/controls/nb/control.php?message=
hxxp://186.235.91[.]100/controls/nb/sms.php?apelido=
hxxp://186.235.91[.]100/controls/nb/sms
hxxp://186.235.91[.]100/controls/nb/control.php?message=2

C2
hxxp://186.235.91[.]100

Mysql phpmyadmin
hxxp://186.235.91[.]100/phpmyadmin/index[.]php

Outros IOCs:
package="pt.bn20.ptz"
<service android:name=".bulacha" />
<receiver android:name=".bulacha$bulacha_BR">
pt/bn20/ptz/bulacha.java

 

 

Sandbox Online

https://www.joesandbox.com/analysis/215097/0/html

https://www.virustotal.com/gui/file/fae34dd516a00dc0c2c2cc8e5a026648f3a60db66cc3c480ff605daf04e25d1c/detection