2009-03-09 20:54:09

Back to 2007

A friend spoke to me via instant messanging about a prezo I did 2 years ago...
Like to share, share to like, here you can find the prezo which is about security threats and Cisco networks.
I hope you will enjoy the style!


Posté par Francois Ropert | Commenter le billet

2009-02-28 11:33:55

Silence in the wire

Moi non plus, je n'étais pas mort, j'étais simplement en léthargie. J'ai un nouveau boulot, c'est intéressant techniquement, les gens sont sympas et heureux d'être dans cette entreprise.
Le manager est un passionné, on peut apporter son café dans le bureau et vendredi c'est open croissant.
Pour le coup, ils attendent pas mal de moi et j'ai toujours autant pleins d'idées donc ça le fera :-)

Sinon des news en vrac, il y a des choses sympa:
- BGP en asdot 4 bytes sur les IOS et en Janvier 2009 tout est possible
- Attacking backbone technologies par ici (Avis subjectif chez Cisco ou Nico c'est mieux)
- DNSSEC ça commence à devenir sérieux ... avec l'oie DLV de l'ISC engraissée par le projet ITAR de l'ICANN
- Dans le dernier (IN)SECURE magazine, on parle de NAC et pourtant nous ne sommes pas en Avril. LoL? en tout cas dans la vie réelle chaque conversation autour du NAC finit en rigolade. Mais à que je vous ne prenne pas à dire une débilité du style "le NAC c'est mort-né" :)
- Ecriture pour un prochain MISC en cours... ça va flinguer du proto de routage dans les chaumières!
- Je me suis inscris pour aller à FRHACK. Pour les sceptiques du jour, non, on ne me paye pas pour dire ça, il faut arrêter de faire vos français ou vos CISSP et go FRHACK :)

Et pour finir ce billet, ce n'est pas vraiment une news mais plutôt une constante depuis plusieurs années que la VoIP est arrivée en entreprise.
Les gens ne comprennent toujours pas comment leur boîte a pu couler (comme si la crise ne suffisait pas) à cause d'un étudiant de l'ip phone qui a passé trop d'appels surtaxés à Cuba.
Ils devraient regarder le film Hackers et prendre de la graine des connaissances de The Phantom Phreak. Non mais c'est quoi ces gens so 1995.


Posté par Francois Ropert | Commenter le billet

2009-01-14 22:51:38

IOS series - ROMMON entrypoint are you there

FX a évoqué brièvement l'utilisation de la rommon mais c'est quoi?

En gros (appelé aussi définition 01net par certains), c'est le BIOS du routeur Cisco.
Et tout comme le BIOS, une mise à jour est plutôt fastidieuse et rarement nécessaire.
Les bugs correctifs en rommon existent mais ce sont des cas rare.
Par exemple, la lecture de certaines cartes flash tout d'un coup illisible ou encore un problème de gestion du DBUS sur certains route processor.
Les bugs sont dans la majorité des cas dûes à la gestion d'une carte ou d'un composant hardware.

La section .text de la rommon démarre à 0xfff00000+0x00010000 en ppc ou à 0xbfc00000 en mips.
en fff00000 se trouve la table de vecteurs d'exception.
Il y a des différences entre la table de vecteurs de ppc et du mips.
Mon image étant PPC, voici la liste des exceptions:

|---------------|------|-----|-------|--------------------------------|
| Vector number | Dec | Hex | Space | Assignment |
|---------------|------|-----|-------|--------------------------------|
| 0 | 00 | 000 | SP | Reset: initial SSP |
| 0 | 04 | 004 | SP | Reset: initial PC |
| 2 | 08 | 008 | SD | Bus error |
| 3 | 12 | 00C | SD | Address error |
| 4 | 16 | 010 | SD | Illegal instruction |
| 5 | 20 | 014 | SD | Zero divide |
| 6 | 24 | 018 | SD | CHK instruction |
| 7 | 28 | 01C | SD | TRAPV instruction |
| 8 | 32 | 020 | SD | Privilege violation |
| 9 | 36 | 024 | SD | Trace |
| 10 | 40 | 028 | SD | Line 1010 emulator |
| 11 | 44 | 02C | SD | Line 1111 emulator |
| 12 | 48 | 030 | SD | (Unassigned, reserved) |
| 13 | 52 | 034 | SD | (Unassigned, reserved) |
| 14 | 56 | 038 | SD | (Unassigned, reserved) |
| 15 | 60 | 03C | SD | Uninitialized interrupt vector |
| 16-23 | 64 | 04C | SD | (Unassigned, reserved) |
| 16-23 | 95 | 05F | SD | - |
| 24 | 96 | 060 | SD | Spurious interrupt |
| 25 | 100 | 064 | SD | Level 1 interrupt autovector |
| 26 | 104 | 068 | SD | Level 2 interrupt autovector |
| 27 | 108 | 06C | SD | Level 3 interrupt autovector |
| 28 | 112 | 070 | SD | Level 4 interrupt autovector |
| 29 | 116 | 074 | SD | Level 5 interrupt autovector |
| 30 | 120 | 078 | SD | Level 6 interrupt autovector |
| 31 | 124 | 07C | SD | Level 7 interrupt autovector |
| 32-47 | 128 | 080 | SD | TRAP instruction vectors |
| 32-47 | 191 | 0BF | SD | - |
| 48-63 | 192 | 0C0 | SD | (Unassigned, reserved) |
| 48-63 | 255 | 0FF | SD | - |
| 64-255 | 256 | 100 | SD | User interrupt vectors |
| 64-255 | 1023 | 3FF | SD | - |
|---------------|------|-----|-------|--------------------------------|


Certains parmi vous, devraient se dire "tiens ça me rappelle quelque chose ça...".
Et oui, surtout si vous avez déjà utilisé la commande cachée "test crash".

1 (crash router) Bus Error, due to invalid address access
2 (crash router) Bus Error, due to parity error in Main memory
3 (crash router) Bus Error, due to parity error in I/O memory
4 (crash router) Address Error, due to fetching code from odd address
5 (crash router) Jump to zero
6 (crash router) Software forced crash
7 (crash router) Illegal read of address zero
8 (crash router) Divide by zero
9 (crash router) Corrupt memory
C Enable crash router selection marked with (crash router)
R (crash router) User enter read bus error address
U (crash router) User enter write bus error address
W (crash router) Software watchdog timeout (*** Watch Dog Timeout ***)
w (crash router) Process watchdog timeout (SYS-2-WATCHDOG)


Le rommon est utilisé pour démarrer mais aussi pour redémarrer l'IOS.
Pour rappel, un routeur "bas de gamme" dans la gamme Cisco s'arrête "à la main" façon pull the plug.
Il n'y a donc pas de routine concernant l'arrêt du système mais quelques autres comme les systèmes de cache D-CACHE et I-CACHE, la érification de la DRAM, les déclarations d'instructions ou la routine de stack trace.

En RAM, le début de .text (par exemple) varie et les autres sections aussi. On trouve parfois 0x80010000 (mips) ou d'autres endroits dans la mémoire selon le modèle du routeur bien que la version de rommon soit identique.

.text:FFF00100 .globl start
.text:FFF00100 start:
.text:FFF00100 li %r3, 0xC00
.text:FFF00104 lis %r4, loc_FFF00C00@h
.text:FFF00108 addi %r4, %r4, loc_FFF00C00@l
.text:FFF0010C li %r5, 0x74
.text:FFF00110 bl sub_FFF03000
.text:FFF00114 li %r3, 0x500
.text:FFF00118 lis %r4, locret_FFF00500@h
.text:FFF0011C addi %r4, %r4, locret_FFF00500@l
.text:FFF00120 li %r5, 4
.text:FFF00124 bl sub_FFF03000
.text:FFF00128 li %r3, 0x900
.text:FFF0012C lis %r4, locret_FFF00900@h
.text:FFF00130 addi %r4, %r4, locret_FFF00900@l
.text:FFF00134 li %r5, 4
.text:FFF00138 bl sub_FFF03000
.text:FFF0013C bl sub_FFF03868

et voilà le point d'entrée du romcode, à la prochaine.


Posté par Francois Ropert | Commenter le billet

2009-01-05 19:28:13

IOS series - Entrypoint Are You There

L'IOS est malin. Il aime se cacher derrière des e_machine farfelus pour rebuter les reversers de red^Wseconde zone (blague de geek du cisco, ce n'est pas un groupe de hackers ou je ne sais quoi... ).
Du coup, voici l'output d' un binaire en C fait maison pour réparer l'en-tête ELF du binaire IOS.
La manip' a pour but d'ouvrir correctement l'IOS et admirer les opcodes en PPC dans son IDA.
n peut aussi bien le faire avec hte ou hexer mais bon je me suis dit "tiens on va coder un peu en C... ça fait pas de mal."

$ ./a.out C2600-IP.BIN
ELF###### IOS header fixer ######
Big Endian (MSB) IOS imagePowerPC image
Architecture: 2b00
C2600-IP.BIN image is PowerPC. Do you want to patch it? [y/N]
y
IOS binary image patched.
$

Un petit tour sous IDA et la magie opère...

# File Name : C:\Documents and Settings\pello\Bureau\cisco\C2600-IP.BIN
# Format : ELF (Executable)
#

# Processor : PPC
# Target assembler: GNU Assembler
# Byte sex : Big endian

L'entrypoint est en 0x80008000 ios <=12.4. L'EP se trouve dans la région MAIN qui est composée de plusieurs sections :

Region Manager:

Start End Size(b) Class Media Name
0x03700000 0x03FFFFFF 9437184 Iomem R/W iomem
0x60000000 0x607FFFFF 8388608 Flash R/O flash
0x80000000 0x836FFFFF 57671680 Local R/W main
0x80008098 0x80F5E27B 16081380 IText R/O main:text
0x80F5E27C 0x816F8A2F 7972788 IData R/W main:data
0x81660958 0x816F89CF 622712 Local R/W data:firmware
0x816F8A30 0x8192127F 2263120 IBss R/W main:bss
0x81921280 0x836FFFFF 31321472 Local R/W main:heap


Voici le contenu de la fonction start qui part de l'entrypoint jusqu'avant le début de main:text :

.text:80008000 stwu %sp, -0x18(%sp)
.text:80008004 mflr %r0
.text:80008008 stmw %r28, 0x18+var_10(%sp)
.text:8000800C stw %r0, 0x18+arg_4(%sp)
.text:80008010 mr %r29, %r3
.text:80008014 mr %r28, %r4
.text:80008018 lis %r11, off_811502A8@h
.text:8000801C lis %r9, -0x7E6E # 0x81921280
.text:80008020 addi %r9, %r9, 0x1280
.text:80008024 lis %r4, ((unk_816F8A30+0x10000)@h)
.text:80008028 addi %r4, %r4, -0x75D0 # unk_816F8A30
.text:8000802C lwz %r11, off_811502A8@l(%r11)
.text:80008030 mtctr %r11
.text:80008034 mr %r3, %r4
.text:80008038 subf %r4, %r4, %r9
.text:8000803C bctrl
.text:80008040 li %r0, 0x1002
.text:80008044 mtmsr %r0
.text:80008048 mfmsr %r9
.text:8000804C rlwinm %r0, %r9, 0,17,15
.text:80008050 mtmsr %r0
.text:80008054 bl sub_804AE21C
.text:80008058 bl sub_804AFE5C
.text:8000805C ori %r4, %r3, 0x900
.text:80008060 lis %r3, locret_80143B70@h
.text:80008064 addi %r3, %r3, locret_80143B70@l
.text:80008068 li %r5, 4
.text:8000806C bl sub_804B0BF4
.text:80008070 bl sub_8013CDB4
.text:80008074 bl sub_80145F90
.text:80008078 mr %r3, %r29
.text:8000807C mr %r4, %r28
.text:80008080 bl sub_80008098
.text:80008084 lwz %r0, 0x18+arg_4(%sp)
.text:80008088 mtlr %r0
.text:8000808C lmw %r28, 0x18+var_10(%sp)
.text:80008090 addi %sp, %sp, 0x18
.text:80008094 blr # saut dans main:text en 80008098


A bientôt au prochain numéro!


Posté par Francois Ropert | Commenter le billet

2009-01-02 11:51:24

2008 une annee fun pour le cirque de la securite

En 2008...
IPv6 commence à être pris au sérieux pendant ce temps un certain F.J. l'utilise déjà dans son lab depuis les années 1980, certains lecteurs n'étaient peut-être pas encore nés
Le kimsufi d'OVH est un repère de mécréants (le plus haut taux de box ownées au mètre carré?
Les gens découvrent BGP et l'ASN 32 bytes, le hardware et les dangers du low-level
La carte Cisco FWSM fonctionne...toujours pas
L'UC500 de Cisco arrive enfin à booter quand celui-ci n'a pas de câble console branché< br /> OSPFv2, SSL, BGP, DNS, la pile TCP/IP finlandaise c'est plutôt FAIL mais toujours pas EPIC bien que ce fût le fantasme de bon nombre de chercheurs cette année
Un train qui déraille et l'Internet américain flanche (Level3, AT&T et Verizon)
Cogent mérite toujours autant son surnom de slowgent
L'ICANN ne sait toujours pas comment effectuer un transit IPv4 vers IPv6 "We would agree that there is no clear consensus about what should be done regarding transition from IPv4 to IPv6"
La gestion protocolaire s'améliore de jour en jour dans scapy. C'est chouette!
BreakingPoint est l'entreprise qui m'a le plus intéressé cette année
Gliffy c'est bien
Si vous arrivez à garder votre attention sur les conférenciers du FRnog plus de deux minutes, félicitations! (néanmoins, excellent workaround lors de la dernière réunion)
Une dédibox hébergeant un blog Hentai s'improvise serveur DNS racine alternatif...(j'ai mesuré ma dédibox et elle ne dépasse guère les 350 requêtes par secondes)
La moitié des connexions Internet en E.A.U. est du 56k
IPv6 et firefox = 100% CPU
IPv6 ou le retour vers le web 1.0/Minitel (s/Yahoo/6ixy/)
Le network forensics c'est bien
La virtualisation, c'est de l'art et fait renaître le chapitre français du projet honeynet de ses cendres
Peter Packet est plus fort que Bruce Schneier et Chuck Norris
FaceBook héberge du phishing (ou pas)
Il paraît que j'ai rien loupé à infosecurity cette année. Je préfère lire le blog de Stéphane Bortzmeyer par temps de grève et le daily dose de l'IETF pendant les longues soirées d'Hiver
LaTeX est toujours utilisé, cette année j'ai fais du python, IOS est toujours monolithique et Linux a toujours des bugs "so fashion" (CVE-2008-0598 parmi tant d'autres)...
En attendant la prezo Cisco IOS attack and defense de FX qui devait être online depuis maintenant 3 jours d'après Gadi Evron et qui ne l'est toujours pas, espérons que 2009 soit encore moins conventionnel que 2008, bonne année.

PS: Je n'ai pas parlé de "la conférence qui a lieue a Besançon en 2009".
On a déjà eu assez de spams comme ça ;)

Posté par pello | Commenter le billet

2008-11-23 17:21:00

Carte heuristique securite Cisco IOS

Voici une carte heuristique créée avec freemind de sécurisation de routeurs Cisco IOS.

La carte est organisée par plans: le control plane, data plane, management plane et services plane.
Il y a trois niveaux de priorités: Le niveau 1 est une configuration commune et facile à implémenter.
Le niveau 2 ajoute une couche supplémentaire de sécurité par rapport au niveau 2 mais a plus de conséquences à prendre en compte lors de l'implémentation. Enfin, le niveau 3 est très spécifique.
La voici au format PNG et au format PDF.
Cette carte peut être reprise et utilisée par exemple dans vos supports de cours à condition d'indiquer la source par respect pour son auteur.
La fréquence de mise à jour n'est pas définie.

2008-11-23 17:00:51

MISC 40



Le MISC 40 est dispo dans les bons kiosques et j'ai écrit un article dedans.
Le sujet est la sécurité et les réseaux à très haut-débit.
Abordés dans mon article, les cartes réseaux utilisés pour capturer sur des réseaux multi-gigabits, les outils de collecte des données, l'analyse de ces données ainsi que le déploiement de la sécurité sur ce type d'infrastructure.
Cet article fait parti d'un dossier spécial réseau comprenant d'autres sujets très intéressants.

Bonne lecture!

Posté par pello | Commenter le billet

2008-04-07 12:12:12

BlackHat Europe 2008

De retour de voyage à Amsterdam avec Jérémy Lebourdais d'Edelweb pour la Black Hat Europe, nous sommes allé faire un compte-rendu de l'événement à l'OSSIR (Observatoire de la Sécurité des Systèmes d'Information et des Réseaux).
Les slides sont disponibles ici.

Posté par pello | Commenter le billet