
cabin análise parcial
Antes de começar a ler, tenho que fazer este anúncio: POR FAVOR, LEVE TUDO O QUE VOCÊ LER COM UMA PITADA DE SAL, POIS NÃO SOU UM desenvolvedor SymbianOS nem nada familiarizado com o ambiente SymbianOS
Mas por que analisar algo tão antigo assim? Bem, porque é a forma mais fácil de entrar no hacking remoto, já que hoje em dia esse tipo de merda é feito com ndays/0days que valem 1 milhão 🤑🤑🤑. E porque ainda não tenho a experiência necessária para fazer esse tipo de coisa.
Beleza, agora que tiramos essa merda do caminho, vamos nessa. Que diabos é Cabir? É um Bluetooth-worm que roda em celulares Symbian. Para aqueles que se perguntam que diabos é um celular Symbian e essa porra toda. Bem, basicamente é um telefone que roda ARM, nadinha de novo debaixo do sol :) Informações mais concisas (https://en.wikipedia.org/wiki/S60_(software_platform))
Agora, tivemos a sorte de o código-fonte disso estar online (cortesia do vxug) (SymbianOS.Cabir.7z). Vamos usar isso como referência, mas, sinceramente, foda-se isso. Uma das outras razões pelas quais faço isso é porque quero mexer com ARM. Então vamos ver isso sob uma perspectiva de source/assembly/emulator/debugging/sniffing.
Beleza, então #1 Como diabos compilamos o código-fonte?
Bem, isso não é tão complicado...
Primeiro instale o carbide ++(http://www.mediafire.com/file/6z54qrceef73x9s/Carbide_cpp_v2_7_en.exe/file)(de https://gist.github.com/artem78/cb2b9650af186844f7b5654964676284)
em seguida, instale qualquer engine perl
em seguida, instale o nokia pc suite(https://www.usitility.com/nokia-pc-suite/)
instale o SDK(http://www.mediafire.com/file/9uc7fjb2ynmxlud/s60v3.1_SDK.zip/file )
instale o plugin c/c++ (https://ia800905.us.archive.org/7/items/nokia_sdks_n_dev_tools/s60_open_c_cpp_plug_in_v1_7_en.zip)
E voilà, temos o ambiente :)
Ps: é melhor usar Windows 7, pois aparentemente no Windows 10 as coisas quebram e não funcionam corretamente
Infecção em ambiente real
A definir
Para esta parte, saiba que você precisa fazer jailbreak (sim, você ouviu certo, jailbreak) no seu celular. Como isso acontece?
Análise de engenharia reversa
Beleza, então como diabos se compila essa porra? Ótima pergunta. O que eu fiz foi rodar primeiro o ABLT.BAT na pasta caribe\group, assim
Beleza, o próximo passo é ir até onde o SDK está instalado, identificar a pasta da plataforma (S60_3rd_fp1) no meu caso, encontrar a pasta epoc32, ir para a pasta build, escolher a pasta user, a pasta do nome de usuário e depois mais duas ou três outras pastas, e você deve acabar em uma pasta que se parece com isso
Este é o caminho atual, que deve ser aproximadamente semelhante ao que você deveria estar (C:\Symbian\9.2\S60_3rd_FP1\Epoc32\BUILD\Users\pwn\Desktop\CabirSourceCodes\caribe\group)
Beleza, em seguida precisamos entrar na pasta caribe (ou como você nomeou o código-fonte) e você encontrará uma pasta com nomes diferentes, como visto aqui
Sobre o que é isso? Bem, basicamente quando rodamos o ablt.bat pela primeira vez (até hoje não sei a finalidade, mas tudo bem), obtemos diferentes opções de plataforma para construir nosso arquivo pkg, a partir do qual geraremos nosso arquivo sis. No caso aqui, vemos GCCE e WINSCW. Se você rodar por padrão o comando ablt.bat build, ele criará para WINSCW (que é o nome de codinome dado à plataforma do emulador). Para o propósito de aprender a compilar o código-fonte, usaremos GCCE por enquanto, mas o processo é o mesmo se você escolher fazer para, sei lá, plataforma ARM, para poder enviar para o seu celular. Então, basicamente, ablt build arm_whatever e depois faça exatamente os mesmos passos até aqui. Beleza, agora vamos para a pasta GCCE
vá para a pasta urel e deve haver um arquivo chamado caribe.app. A partir daí, você quer abrir uma linha de comando e executar
Então, o que isso faz??? Bem, basicamente rodamos o makesis, que gera um arquivo sis para que possamos instalá-lo no nosso celular. E por que um arquivo sis a partir do código-fonte do caribe? Bem, basicamente precisávamos especificar o caribe.pkg para o makesis. Beleza, então por que todo esse trabalho para chegar à pasta build blá blá blá? Bem, porque você precisa especificá-la no parâmetro -d para que ele possa gerar o arquivo .sis
Beleza, então esse método só funciona no SDK v3, ao qual este write-up se refere. Aparentemente, enquanto eu estava experimentando, um dev de um servidor Discord dedicado a Symbian apontou que o Cabir é codificado para o SDK v2, e sendo assim, o que apresentei aqui será inútil..... isso está a definir até eu conseguir falar com ele... porque ele está bem offline no Discord ultimamente...
Beleza, então como se faz engenharia reversa de um arquivo .sis?
sIMPLESMENTE, um arquivo .sis é um arquivo compactado. Então... usamos o aplicativo siscontents para descompactar e depois jogamos o arquivo .app no ida.
Perspectiva de assembly
Então, o processo inteiro se parece com isto
Então, agora vamos para essa pasta e logo em seguida temos o arquivo app.app
Beleza, se você jogar no ida.
Beleza, então basicamente um exe ARM. QUE LOUCURA! PRÓXIMO, POR FAVOR! HMM SIM, POR FAVOR ~~~
tEM símbolos no arquivo, sim!!! bem, sim, porque por algum motivo estranho compilamos o binário com símbolos de depuração, demos sorte!
E como basicamente temos o código e tal, o processo de engenharia reversa é quase o mesmo descrito no capítulo de análise de código-fonte :)
Ponto de vista do sniffing