Test della penna iOS / Android

12

Questa domanda potrebbe essere vaga, cioè perché non sono sicuro da dove cominciare.

Ci sono molti libri e corsi su Pentest che si concentrano su reti, sistemi e sistemi operativi come Windows, ma non sono stato in grado di trovare nulla su piattaforme mobili come iOS / Android.

Sono molto interessato a imparare su come pentestare e proteggere le piattaforme mobili. I contenuti in tempo reale (posizione, stato del telefono, chiamate telefoniche ...) sono informazioni preziose che lo rendono molto interessante.

A mio parere, a causa dell'hardware / componenti, le metodologie di penetrazione sono diverse quando si tratta di telefoni cellulari.

Come e dove potrei iniziare e possibile creare una futura professione sul pentest mobile?

    
posta Rick Rhodes 23.12.2011 - 01:24
fonte

3 risposte

11

Inizia con l'emulatore e il simulatore, che fanno parte degli SDK standard. Se preferisci determinati ambienti rispetto ad altri, ti attirerai verso un framework affidabile per testare con penna queste piattaforme.

Ad esempio, con un'app iOS, inizio sempre con iOS Simulator dopo aver creato il codice in Xcode. Ho impostato il mio sistema HTTP OS OS Mac OS X e il proxy SSL / TLS su localhost su cui eseguo Burp Suite Professional. Quindi avvio l'app e utilizzo la funzionalità Xcode DTrace trovata con lo strumento dtruss della riga di comando. Tendo a guardare i file plist con gli strumenti smartphonesdumbapps.

Con le app per Android, è simile. In questi giorni, vado avanti e indietro tra IntelliJ IDEA ed Eclipse, ma entrambi hanno punti di integrazione Android SDK molto utilizzabili. Per Eclipse, è ADT. Mi piace lanciare l'emulatore tramite l'ADT. Mi piace interagire con il filesystem e la memoria usando il DDMS, che è principalmente utile per il debug. Tuttavia, quando si tratta di tracciamento del software, tendo a saltare su una shell adb e ad analizzare i processi a cui sono interessato, insieme a un logcat simultaneo. Per il proxy, di solito utilizzo un blackhole DNS per creare un proxy trasparente per Burp Suite Professional utilizzando il flag -dns-server dell'emulatore. È utile anche guardare il manifest in ADT, specialmente per vedere le autorizzazioni e le intenzioni.

Gran parte di queste modifiche se non si dispone di una fonte realizzabile. Ancora peggio, potresti scegliere come target un'app con codice di auto-modifica o di autocontrollo. In queste situazioni, avrai bisogno di un approccio che prevede il disassemblaggio e la decompilazione dell'app. Per iOS, gli strumenti class-dump-z, otool, otx e i386codedump sono una scommessa sicura insieme a IDA Pro. Puoi trovare molte informazioni sulla decompilazione di app Android, anche se i debugger ARM e IDA Pro torneranno utili per quelle app che sono pesantemente investite in protezioni di codice auto-modificanti o autocontrollate. Ci sono molte informazioni su malware e strumenti relativi al malware sulla piattaforma Android che sono legati a questo tipo di problema. Ad esempio, esiste una mailing-list di malware per dispositivi mobili.

Alcune altre grandi risorse sono la documentazione per gli sviluppatori e il lavoro pratico. Pluralsight e Raywenderlich hanno alcuni tutorial eccellenti che coprono queste piattaforme: ho passato tutto il loro materiale. Ci sono molti libri dai libri di Syngress e OReilly su Android e iOS - molti dei quali trattano argomenti di sicurezza e di medicina legale abbastanza approfonditi. C'è un libro su Cocoa Application Security di Wrox Press che vale anche la pena, anche se datato. La maggior parte dei libri che trattano le basi dei linguaggi di base (Obj-C e Java) sarà utile, sebbene sia anche utile capire dove convergono i linguaggi ei concetti delle app per dispositivi mobili (ad esempio PhoneGap, MonoTouch e altri).

** AGGIORNAMENTO 26/03/2012 **

Tendo ad usare strumenti simili, anche se mi sono spostato maggiormente su DTrace-Toolkit e iprofiler / Instruments per le app iOS Simulator. Tendo a fare molto più lavoro usando cycript su un iPad 2 jailbroken, che è stato un apripista (specialmente insieme a class-dump-z). Per Android, credo di aver dimenticato di menzionare l'Activity Monitor, che è molto utile per lanciare intenti.

Molti runtime possono essere visualizzati / analizzati / modificati utilizzando il runtime Obj-C o Java / Smali, quindi la conoscenza di questi linguaggi e delle loro specifiche della piattaforma sui dispositivi di destinazione non è molto opzionale.

Occasionalmente, mi viene chiesto di eseguire il test delle app per le app che sono un altro formato (ad esempio AIR per iOS / Android, HTML5, Titanium, NDK e altri), ma di compilare come app native. In questa situazione, è meglio costruire (come avrebbe fatto lo sviluppatore originale) e / o eseguire il reverse engineering di ogni componente utilizzando una combinazione di analisi binarie, statiche e dinamiche. Potrebbe essere necessario utilizzare Flash Professional o un altro IDE / build-tool.

    
risposta data 25.12.2011 - 07:25
fonte
4

Il primo passo per attaccare un sistema è capire la sua superficie di attacco. Detto questo, i dispositivi mobili sono davvero così diversi? Gli exploit sono scritti per tutte le piattaforme software, tra cui app per piattaforme mobili . Gli exploit più comuni sono l'attraversamento di directory, quindi il buffer overflow.

Dovresti studiare ciò che è già stato fatto. Leggi il codice exploit, scrivi codice exploit.

    
risposta data 24.12.2011 - 01:24
fonte
1

Se fossi in te, inizierei definendo gli scenari di minaccia rilevanti per le piattaforme, quindi da lì puoi attribuire le metodologie, gli strumenti, le tecniche e gli approcci più rilevanti a ogni scenario.

La realtà è, come menzionato da espengra, così tanti approcci diversi possono essere usati per capire ogni aspetto della superficie d'attacco e dei vettori d'attacco che devi solo scomporre in diversi test. Non esiste un approccio "single test to rule them all" a questo o ad altri tipi di test.

Inizia creando il tuo albero di attacco contro il dispositivo (Google Schneier e gli alberi degli attacchi se non hai mai sentito prima quel termine). Trovo che uno strumento di mappatura mentale decente sia il modo migliore per gestirlo. Una volta che hai un albero, puoi perfezionare gli attacchi in gruppi e poi definire l'approccio di test primario a ciascun ramo principale.

    
risposta data 24.12.2011 - 01:21
fonte

Leggi altre domande sui tag