Radare2 (également connu sous le nom de r2 ) est un framework complet pour la rétro-ingénierie et l'analyse de binaires ; composé d'un ensemble de petits utilitaires qui peuvent être utilisés ensemble ou indépendamment de la ligne de commande . Construit autour d'un désassembleur de logiciel informatique qui génère du code source en langage assembleur à partir de code exécutable par machine, il prend en charge une variété de formats exécutables pour différentes architectures de processeur et systèmes d'exploitation .
Histoire
Radare2 a été créé en février 2006, dans le but de fournir une interface de ligne de commande libre et simple pour un éditeur hexadécimal prenant en charge les décalages 64 bits pour effectuer des recherches et récupérer des données à partir de disques durs , à des fins d'investigation. Depuis lors, le projet a évolué avec l'objectif de fournir un cadre complet pour l'analyse des binaires tout en adhérant à plusieurs principes de la philosophie Unix .
En 2009, la décision a été prise de le réécrire complètement, pour contourner les limitations de la conception initiale. Depuis lors, le projet a continué de croître, et a attiré plusieurs développeurs résidents.
En 2016, le premier r2con a eu lieu à Barcelone , rassemblant plus de 100 participants, avec diverses conférences sur diverses fonctionnalités et améliorations du framework.
Radare2 a fait l'objet de nombreuses présentations lors de plusieurs conférences de sécurité de haut niveau, comme le recon, hack.lu , 33c3 .
Caractéristiques et utilisation
Radare2 a une courbe d'apprentissage abrupte puisque ses principaux exécutables binaires sont exploités par la ligne de commande et ne dispose pas d'une interface graphique propre. Construit à l'origine autour d'un éditeur hexadécimal, il dispose désormais d'une multitude d'outils et de fonctionnalités, ainsi que de liaisons pour plusieurs langues. Entre-temps, il dispose d'une interface utilisateur Web et le projet d'interface utilisateur graphique officiel de Radare2 s'appelle Iaito.
Analyse statique
Radare2 est capable d'assembler et de désassembler de nombreux programmes logiciels, principalement des exécutables, mais il peut également effectuer des comparaisons binaires avec des graphiques, extraire des informations telles que des symboles de relocalisation et divers autres types de données. En interne, il utilise une base de données NoSQL nommée sdb pour suivre les informations d'analyse qui peuvent être déduites par Radare2 ou ajoutées manuellement par l'utilisateur. Puisqu'il est capable de traiter des binaires malformés, il a également été utilisé par les chercheurs en sécurité logicielle à des fins d'analyse.
Analyse dynamique
Radare2 dispose d'un débogueur intégré de niveau inférieur à celui de GDB . Il peut également s'interfacer avec GDB et WineDBG pour déboguer les binaires Windows sur d'autres systèmes. De plus, il peut également être utilisé comme débogueur de noyau avec VMWare .
Exploitation de logiciels
Radare2 peut être utile aux développeurs d' exploits car il dispose d'un désassembleur et d'un débogueur de bas niveau . Le logiciel dispose de fonctionnalités qui aident au développement d'exploits, comme un moteur de recherche de gadgets ROP et une détection d'atténuation . En raison de la flexibilité du logiciel et de sa prise en charge de nombreux formats de fichiers, il est souvent utilisé par les équipes de capture de drapeaux et d'autres personnels axés sur la sécurité. Radare2 peut également aider à créer des shellcodes avec son outil « ragg2 », similaire à metasploit .
Interface utilisateur graphique (GUI)
Le projet Iaito a été développé comme la première interface utilisateur graphique (GUI) dédiée pour Radare2 ; il a été dérivé par Cutter en tant que deuxième interface utilisateur graphique (GUI) développée pour Radare2. Lorsque le projet Cutter a été séparé du projet Radare2 à la fin de 2020, Iaito a été redéveloppé pour être l' interface utilisateur graphique (GUI) officielle actuelle de Radare2 maintenue par les membres du projet Radare2.
Architectures/formats pris en charge
- Formats de fichiers reconnus
- COFF et dérivés, y compris Win32/64/ PE générique
- ELF et dérivés
- Mach-O ( Mach ) et dérivés
- Cartouches Game Boy et Game Boy Advance
- MZ ( MS-DOS )
- Classe Java
- Lua 5.1 et bytecode Python
- Vidage du cache dyld
- Dex ( exécutable Dalvik )
- Format Xbox xbe
- Binaires Plan9
- Machine virtuelle WinRAR
- Système de fichiers comme la famille ext , ReiserFS , HFS+ , NTFS , FAT , ...
- Formats de fichiers DWARF et PDB pour stocker des informations de débogage supplémentaires
- Amiga Hunk
- Binaire brut
- Ensembles d'instructions
- Famille Intel x86
- Architecture ARM
- Série Atmel AVR
- Baise cérébrale
- Motorola 68k et H8
- Ricoh 5A22
- MOS 6502
- Machine virtuelle PSOS pour cartes à puce
- Machine virtuelle Java
- MIPS : mipsb/mipsl/mipsr/mipsrl/r5900b/r5900l
- PowerPC
- Famille SPARC
- Série TMS320Cxxx
- Noyau RISC d'Argonaut
- Intel série 51 : 8051/80251b/80251s/80930b/80930s
- Zilog Z80
- CR16
- Radio Silicium de Cambridge (CSR)
- AndroidVM Dalvik
- DCPU-16
- Code d'octet EFI
- Game Boy (type z80)
- Bytecode Java
- Malbolge
- MSIL/CIL
- Nios II
- SuperH
- Spc700
- Systèmez
- TMS320
- V850
- Espace blanc
- XCore