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.
- A vítima acede ao email ou à SMS de phishing.
- As credenciais de acesso são introduzidas.
- As credenciais são enviadas para um backoffice gerido pelos atacantes.
- 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.
- Os atacante emitam o processo real com as credenciais da vítima, efetuado assim o primeiro passo de autenticação no portal do banco.
- 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.
- A vítima submete o token na respetiva página de phishing (landing-page solicitando o token).
- O token é enviado para o backoffice.
- O operador volta a receber uma notificação que o processo de autenticação está terminado.
- 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




















5 Replies to “Março 2020: Análise reversa da app android entregue com o phishing do Novo Banco”