Cette question pourrait être vague, c'est parce que je ne suis pas sûr de savoir où commencer.
Il y a beaucoup de livres et de cours sur la concentration pentest sur les réseaux, les systèmes et les systèmes d'exploitation tels que Windows, mais je n'ai pas pu trouver quoi que ce soit sur des plates-formes mobiles telles que iOS/Android.
Je suis très intéressé par l'apprentissage sur les plateformes mobiles pentestes et sécurisées. Le contenu en temps réel (emplacement, état téléphonique, appels téléphoniques ...), sont des informations précieuses, ce qui le rend très intéressant.
À mon compréhension, grâce au matériel/composants, les méthodologies de pénétration sont différentes lorsque vous traitez avec des téléphones mobiles.
Comment et où aurais-je pu commencer et possibles à créer une future profession sur mobile pentest?
Commencez avec l'émulateur et le simulateur, qui font partie des SDK standard. Si vous préférez certains environnements sur d'autres personnes, vous allez graviter dans un cadre fiable pour tester ces plateformes.
Par exemple, avec une application iOS, je commence toujours par le simulateur iOS après la construction du code en Xcode. J'ai défini mon proxy HTTP et SSL/TLS My Mac OS X sur localhost où je gère Burp Suite Professional. Ensuite, je lance l'application et utilise la fonctionnalité Xcode Dtrace trouvée avec l'outil Dtruss de la ligne de commande. J'ai tendance à regarder les fichiers de plis avec les outils SmartPhonesDumbApps.
Avec Android Apps, c'est similaire. Ces jours-ci, je vais aller d'avant en arrière entre Intellij IDEA et Eclipse, mais les deux ont très utilisables Android Points d'intégration SDK. Pour Eclipse, c'est ADT. J'aime lancer l'émulateur via l'ADT. J'aime interagir avec le système de fichiers et la mémoire à l'aide du DDMS, qui est principalement utile pour le débogage. En ce qui concerne le débogage. En ce qui concerne le débogage. En ce qui concerne le débogage. En ce qui concerne le débogage. En ce qui concerne le débogage. En ce qui concerne le traitement du logiciel. cependant, j'ai tendance à sauter sur une coquille adb et à la rythme des processus qui m'intéressent, avec un logcat simultané. Pour proxy, j'utilise généralement un Blackhole DNS pour créer un proxy transparent à Burp Suite Professional à l'aide de l'émulateur - Drapeau du serveur. Il est utile de regarder le manifeste en ADT également, surtout pour examiner les autorisations et les intentions.
Une grande partie de ces changements si vous n'avez pas de source constructible. Pire encore, vous pourriez cibler une application qui a un code auto-modifiant ou auto-vérifiant. Dans ces situations, vous aurez besoin d'une approche qui implique la désassemblage et la décompilation de l'application. Pour IOS, les outils de classe-Dumk-z, Otool, OTX et I386CODEDUMDump sont un pari sûr avec IDA Pro. Vous pouvez trouver beaucoup d'informations sur décompiling Android applications, bien que ARM Debuggers et IDA Pro seront utiles pour ces applications qui sont fortement investies dans l'auto-investissement. Protections de code modifiant ou auto-vérifiant. Il y a beaucoup d'informations sur les logiciels malveillants et les outils autour de logiciels malveillants sur le Android liée à ce type de problème. Par exemple, il y a un malware mobile-logiciel mobile Liste de diffusion.
Certaines autres ressources excellentes sont la documentation du développeur associée à un travail pratique. Pluralsight et Raywenderlich ont d'excellents tutoriels qui couvrent ces plates-formes - j'ai traversé tout leur matériel. Il existe de nombreux livres de Syngress et de livres d'Oréilly sur Android et iOS - dont beaucoup couvrent des sujets de sécurité et de criminalistique de manière assez en profondeur. Il y a un livre sur la sécurité des applications de cacao de Wrox Press qui est également Vaut un look, bien que daté. La plupart des livres couvrant les bases des langues de base (Obj-C et Java) seront utiles, bien qu'il soit également bon de comprendre où les langues et les concepts mobiles convergent (par exemple, PhoneGap, MonoTouch, et al).
** Mise à jour 3/26/2012 **
J'ai tendance à utiliser des outils similaires, même si j'avais ramifié davantage sur les applications DTrace-Toolkit et IProfiler/Instruments pour iOS Simulator. J'ai tendance à faire beaucoup plus de travail en utilisant CYCLY sur un iPad 2 jailbreaké, qui a été un ouvre-vêtement (en particulier avec la classe de classe-Z). Pour Android, je crois que j'ai oublié de mentionner le moniteur d'activités, qui est très utile pour lancer des intentions.
Beaucoup de temps d'exécution peut être visualisé/analysé/modifié à l'aide de l'exécution Obj-C ou Java/Smali, la connaissance de ces langues et de leurs spécificités de la plate-forme sur les périphériques cibles n'est pas très facultative.
De temps en temps, je suis demandé aux applications du stylo-test qui sont un autre format (E.G. Air pour iOS/Android, HTML5, Titanium, NDK, et al) mais compiler comme des applications indigènes. Dans cette situation, il est préférable de construire (comme aurait le développeur original) et/ou ingénieur inversé chaque composant utilisant une combinaison d'une analyse binaire, statique et dynamique. Cela peut nécessiter l'utilisation de Flash Professional ou d'un autre outil IDE/Build-Outil.
La première étape d'attaquer un système consiste à comprendre sa surface d'attaque. Cela étant dit, les appareils mobiles sont-ils vraiment tous ceux qui sont différents? Les exploits sont écrits pour toutes les plates-formes logicielles, y compris Applications pour les plates-formes mobiles . Les exploits les plus courants sont les traverser des répertoires, puis des débordements tampons.
Vous devriez étudier ce qui a déjà été fait. Lisez le code Exploit, écrivez le code Exploit.
Si j'étais vous, je commencerais en définissant les scénarios de menace pertinents pour les plates-formes, à partir de là, vous pouvez attribuer les méthodologies, outils, techniques et approches générales les plus pertinentes pour chaque scénario.
La réalité est, comme mentionné par Espengra, de nombreuses approches différentes peuvent être utilisées pour comprendre chaque aspect de la surface d'attaque et les vecteurs d'attaque que vous avez juste besoin de le casser dans différents tests. Il n'y a pas de "test unique pour les gouverner toutes" approche de cet autre type de test.
Commencez en construisant votre arbre d'attaque contre l'appareil (Google Schneier et des arbres d'attaque si vous n'avez jamais entendu parler de ce terme auparavant), je trouve un outil de cartographie décent de la meilleure façon de gérer cela. Une fois que vous avez un arbre, vous pouvez affiner les attaques en groupes, puis définir l'approche principale de test de chaque branche principale.