programming and hacking android and... · 2019-07-05 · programming and hacking android fabrizio...

50
PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT

Upload: others

Post on 24-Jun-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

PROGRAMMING AND HACKING ANDROID

Fabrizio Cornelli HT

Page 2: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

FABRIZIO CORNELLI [email protected]

Page 3: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

CV

Filibusta LUG (1997)

Laurea a Crema (2002)

Direttore tecnico, Enterprise Tech

QA Manager, HT

Page 4: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

PRIMA REGOLA DI HT NON SI PARLA DI HT

Page 5: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Fondata nel 2003

…anche Internet sbaglia

Page 6: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Sommario

Diventare un Ingegnere del Software

Pensare come un Hacker

Come scrivere un APT su Android

Page 7: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

INGEGNERE DEL SOFTWARE “finché va quel tant che basta, tùchel no, senò el se guasta”

Page 8: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Come si diventa

Università

Letteratura

Comunità

Progetti open source

Page 9: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Alcuni dicono

Scegline due: fatto bene, veloce, che costa poco

Chiunque può scrivere codice che un computer riesce a capire. Un buon programmatore riesce a scrivere un codice comprensibile anche per altri programmatori. [M. Fowler]

Page 10: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

HACKER “Ogni tecnologia sufficientemente avanzata è

indistinguibile dalla magia”

Page 11: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Come si diventa

Sicurezza, architetture e crittografia

H / V / C forum

Conferenze (def con, blackhat, hack-tic)

Ambienti protetti di test

Page 12: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Alcuni dicono

Una persona intelligente risolve i problemi, una saggia li evita.

Page 13: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Ing. SW | Hacker

Costruttivo Decostruttivo

RTFM Manuale Fuorviante

Progetta Prototipa

Comunità Indipendente

Linguaggi alto livello

Linguaggi basso livello

Page 14: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Valori condivisi

Programmazione

Studio intenso e quotidiano

Attenzione ai dettagli

Fantasia e immaginazione

Page 15: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Ipotesi antropologica

Page 16: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Allevatore | Cacciatore

Stanziale Opportunista

Crede nella Tradizione Innovativo

Paziente Dotato di Iniziativa

Collaborativo Indipendente

Page 17: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Programmatore

Pensa come un hacker: costruisci un prototipo innovativo

Scrivi come un ingegnere del software: fai evolvere l’idea in un prodotto

Page 18: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

ARCHITETTURA ANDROID

Page 19: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea
Page 20: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea
Page 21: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea
Page 22: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Boot

ROM / Boot loader

kernel

drivers

fs

init (user space)

zygote / dalvik /ART

daemons

GC

Page 23: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Dalvik

Process VM

register based

Java -> bytecode -> dex

APK

Each app its copy

JIT

Page 24: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Android Runtime (ART)

.dex -> elf

AOT

Page 25: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

APK

Zip file

classes.dex : Code, *.class

Manifest

Resources / Assets /Licence

Libs

Signature

Page 26: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

ANDROID DEVELOPMENT

Page 27: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Android Studio

Piattaforma IntelliJ

gradle / ant

emulatori

Page 28: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

ADB

Android Debug Bridge

Richiede che il device sia in "Debug Mode"

shell

pull

push

install

logcat

reboot

Page 29: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

REVERSING

Page 30: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Strumenti

Decompilatori : jd-gui, dad, jeb

Dissettori Apk : androguard, apktool

Piattaforme di reversing: IDA, Radare

Analizzatori di rete: Wireshark, ettercap, tcpdump,

burp

Page 31: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

apktool

decode apk

build apk

Internamente usa smali /baksmali

Serve usare jarsigner

Page 32: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

smali

.method public static main([Ljava/lang/String;)V .registers 2 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const-string v1, "Hello World!" invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V return-void .end method

Page 33: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

SCRIVERE UN APT Advanced Persistence Threats

Page 34: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Anatomia

Software

Target specifico

Nascosto

Raccoglie dati nel tempo

Command and Control

Page 35: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Ciclo di vita

Configurazione

Costruzione del pacchetto

Installazione

Esecuzione

Persistenza

Raccolta e inoltro dei dati

Disinstallazione

Page 36: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Imparare dal malware

http://contagiominidump.blogspot.it/

Virus Total

Androguard DatabaseAndroidMalwares

Page 37: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

HACKING ANDROID

Page 38: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Ottenere i privilegi

Privilegi dichiarati nel Manifest

Flash dell’OS

Usare un local to root exploit

Usare un system exploit

Page 39: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Esecuzione al boot

Manifest

OS (root)

Page 40: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Raccogliere i dati

Android API

Prendere le informazioni sul fs (root)

Cercare le informazioni in memoria (root)

Page 41: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Comunicazione

Canale di comunicazione protetto e nascosto

Android API?

Page 42: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Strumenti

Configurazione:

Costruzione del pacchetto:

Installazione:

Esecuzione:

Persistenza:

Raccolta e inoltro dei dati:

Disinstallazione:

Page 43: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

REALIZZARE UN PRODOTTO

Page 44: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Agile programming

Page 45: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Fasi dello sviluppo

Software Engineer

Hacker

Progettazione

Prototipizzazione

Architettura

Test e Mantenimento

Page 46: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Mantenere il codice

Versionamento

Continuous integration

Automatic build

Test automatici e code coverage

Installazione automatica

Page 47: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Protezione dagli hacker

Anti reversing

Polimorfismo

Cifratura e offuscamento

Packing

Virtualizzazione del codice

Page 48: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

NOW HIRING

Page 49: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

you didn’t see anything…

Page 50: PROGRAMMING AND HACKING ANDROID and... · 2019-07-05 · PROGRAMMING AND HACKING ANDROID Fabrizio Cornelli HT . FABRIZIO CORNELLI zeno@hackingteam.com . CV Filibusta LUG (1997) Laurea

Links

http://learnlinuxconcepts.blogspot.com/2014/02/android-boot-sequence.html

http://www.amazon.com/Android-Hackers-Handbook-Joshua-Drake/dp/111860864X

http://www.nyxbone.com/malware/android_tools.html

Stackoverflow

xdadevelopers