Emulation d’ASA avec QEmu sous windows

Note: Je vous conseille vivement l’utilisation de l’image VMWare asa qui est beaucoup plus simple (voir http://bmigette.fr/2008/11/30/asa-emulation-part-2/)

Introduction

Cet article à pour but de montrer comment émuler un asa cisco avec QEmu, qui est un émulateur de CPU Divers. QEmu est prévu pour fonctionner à la base sous Unix, mais il existe un portage sous windows:


http://www.h7.dion.ne.jp/~qemu-win/

Vous aurez aussi besoin des outils Unixutils, qui sont un portage des outils linux les plus utilisés sous windows (grep, ls, rm…)
http://sourceforge.net/projects/unxutils/

Téléchargez et extrayiez les fichiers dans un même dossier (les binaires unixUtils doivent être avec les binaires QEmu) ou téléchargez le fichier suivant:
http://bmigette.fr/files/ASAEmu.zip

Pour plus de facilitée, voilà comment je vais organiser mes dossiers:

  • d:\asa => Le dossier contenant les scripts de lancement, et deux dossiers, un pour les images ASA, et un pour les binaires QEmu
  • d:\asa\ASAOS => Dossier contenant les images. Chaque image sera placée dans un sous dossier du même nom sans l’extension, par exemple, pour l’image de cet article, asa802-k8.bin, je vais créer un dossier d:\asa\ASAOS\asa802-k8 dans lequel je vais copier mon image asa802-k8.bin. Ceci permettras de lancer facilement différentes versions d’ASA.
  • d:\asa\QEmu => Dossier des binaires QEmu et UnixUtils.

Si vous ne respectez pas cette architecture (le chemin d:\asa n’est pas important), il vous faudra modifier vos scripts.

Lancement de l’émulation:

Il vous faut tout d’abord vous procurer une image ASAOS. Je vais utiliser l’image asa802-k8.bin pour cet exemple.

Script de création des images QEmu:

Tout d’abord, créez un fichier .bat nommé qemu_img_create.bat (à placer dans le dossier d:\asa) avec dedans:

@echo offECHO MD5 Cheksum.\QEmu\md5 .\ASAOS\%1\%1.bin.\QEmu\hexdump -C .\ASAOS\%1\%1.bin > .\ASAOS\%1\%1.hd.\QEmu\grep "1f 8b 08 00 1d" .\ASAOS\%1\%1.hd.\QEmu\ls -la .\ASAOS\%1\%1.bin.\QEmu\tail -c 13334352 .\ASAOS\%1\%1.bin > .\ASAOS\%1\%1.gz.\QEmu\gzip -d .\ASAOS\%1\%1.gzcd ASAOS\%1\..\..\QEmu\cpio -i --make-directories < %1cd ..\...\QEmu\qemu-img create .\ASAOS\%1\FLASH 256M.\QEmu\gzip .\ASAOS\%1\%1

Ce script à pour but de créer les images nécessaires à l’émulation de l’ASA par QEmu. Pour l’appeler, utilisez la commande:

qemu_img_create.bat asa802-k8

En admettant que le dossier d:\asa\asa802-k8 existe et que l’image asa802-k8.bin est bien située dedans.

NOTE: Ce script est à utiliser qu’une seule fois ! Vous pourrez ensuite directement lancer votre ASA via le script suivant !

Script de lancement de l’émulation:

Créez un autre fichier .bat dans le répertoire d:\asa nommé launchasa.bat avec dedans:

@echo offstart /B "Qemu" .\QEmu\qemu -L .\QEmu -hda .\ASAOS\%1\FLASH -hdachs 980,16,32 -kernel .\ASAOS\%1\vmlinuz -initrd .\ASAOS\%1\%1 -m 256 --no-kqemu -append "auto nousb ide1=noprobe bigphysarea=16384 console=ttyS0,9600n8 hda=980,16,32" -serial telnet::%2,server,nowait.\launchtelnet.bat localhost %2exit

Ce script va servir à lancer l’émulation de l’asa. Pour lancer, utiliser la commande suivante:

launchasa.bat asa802-k8 666

Ou 666 sera le port à utiliser pour se connecter en telnet. Ceci permettras de lancer plusieurs instances.

Script de lancement du client telnet:

Ce script sert uniquement à lancer un client telnet autre que celui par défaut. Si vous voulez utiliser le client par défaut, mettez dedans:

start telnet %1 %2

Pour utiliser SecureCRT

start C:\progra~1\vandyk~1\SecureCRT\SecureCRT.EXE /T /telnet %1 %2

Le fichier devra s’appeler launchtelnet.bat

Lancement de l’émulation:

Une fois vos fichiers créés, que vous avez bien placé l’image asa802-k8.bin dans le répertoire d:\asa\ASAOS\asa802-k8, ouvrez une console dans le dossier d:\asa et tapez:

D:\asa>qemu_img_create.bat asa802-k8
D:\asa>launchasa.bat asa802-k8 666

Si tout s’est bien passé, vous devriez avoir une emulation de l’asa en cours !

Ce que vous devriez avoir

Ce que vous devriez avoir

Super! Ca marche ! Tout du moins nous avons un asa émulé, mais il est pour l’instant impossible de connecter notre asa vers dynamips ou autre…

Certains d’entre vous auront peut être remarqué que nous avons d’ailleurs des erreurs:

Cisco Adaptive Security Appliance Software Version 8.0(2)Cannot open interface card (media_ethernet/port/id/0)pix_idb_create: Unable to get link capabilities 0pix_idb_create: Unable to get nic_stats for port 0Cannot open interface card (media_ethernet/port/id/1)pix_idb_create: Unable to get link capabilities 1pix_idb_create: Unable to get nic_stats for port 1Cannot open interface card (media_ethernet/port/id/2)pix_idb_create: Unable to get link capabilities 2pix_idb_create: Unable to get nic_stats for port 2Cannot open interface card (media_ethernet/port/id/3)pix_idb_create: Unable to get link capabilities 3pix_idb_create: Unable to get nic_stats for port 3Cannot open interface card (media_ethernet/port/id/4)pix_idb_create: Unable to get link capabilities 4pix_idb_create: Unable to get nic_stats for port 4Cannot open interface card (media_ethernet/port/id/5)pix_idb_create: Unable to get link capabilities 5pix_idb_create: Unable to get nic_stats for port 5

Bien, voyons comment nous allons ajouter des interfaces à notre ASA.

Emulation d’interfaces:

Interfaces UDP (pour dynagen/mips):

QEmu permet l’utilisation de tunnels UDP comme interfaces. Il y a un port source, et un port destination, que vous devrez choisirs. Dynamips permet la même chose, il faudra que le port source de dynamips soit le port de destination de QEmu, et vice versa. Voici les syntaxe:

Sous windows, vous aurez besoin de ce fichier:

http://bmigette.fr/files/newqemu_win.rar

Merci à l’auteur:

http://7200emu.hacki.at/viewtopic.php?t=4088

extrayez les fichiers, puis renommez qemu.exe en qemuudp.exe, puis copiez les fichiers qemuudp.exe, msys-1.0.dll et msys-z.dll dans votre répertoire QEmu

#QEmu -net nic,vlan=1,macaddr=00:aa:00:00:02:01,model=i82559er -net udp,vlan=1,sport=10000,dport=10001,daddr=127.0.0.1#Dynagen:[[router R0]]f0/0=NIO_udp:10001:127.0.0.1:10000

On voit ici que dynagen utilise le port 10001 comme port source, et le port 10000 comme port de destination, et vice versa pour QEmu.

Voici le script modifié de lancement de l’asa pour le support des interfaces (nous l’appeleront launchasanic.bat):

@echo offstart /B "Qemu" .\QEmu\qemuudp -L .\QEmu -hda .\ASAOS\%1\FLASH -hdachs 980,16,32 -kernel .\ASAOS\%1\vmlinuz -initrd .\ASAOS\%1\%1.gz -m 256 --no-kqemu -append "auto nousb ide1=noprobe bigphysarea=16384 console=ttyS0,9600n8 hda=980,16,32" -net nic,vlan=1,macaddr=00:aa:00:00:02:01,model=i82559er -net udp,vlan=1,sport=10000,dport=10001,daddr=127.0.0.1-netnic,vlan=2,macaddr=00:aa:00:00:02:02,model=i82559er -net udp,vlan=2,sport=10002,dport=10003,daddr=127.0.0.1 -serial telnet::%2,server,nowait.\launchtelnet.bat localhost %2

Vous pouvez bien entendu ajouter plus d’interfaces… Veillez à modifier les mac et les vlans, ainsi que les ports udp

Exemple:

Topologie dynagen:

ghostios   = Truesparsemem  = True

[localhost]    [[2620]]        image = ..\images\C2600-I-.BIN        ram = 32        idlepc=0x803ae3b4

    [[ROUTER R1]]        model = 2620        f0/0=NIO_udp:10001:127.0.0.1:10000 #interface 1 de l'asa

    [[ROUTER R2]]        model = 2620        f0/0=NIO_udp:10003:127.0.0.1:10002 #interface 2 de l'asa

Pour lancer l’émulation:

./launchasanic.bat asa802-k8 666

Interfaces pcap (pour relier votre asa vers une carte réseau):

Téléchargez la version de QEmu supportant les interfaces PCAP, puis copiez qemupcap.exe dans le répertoire QEmu (voir les liens, ou télécharger l’archive en début d’article).

Voici à quoi devrait ressembler votre lanceur (launchasapcap.bat):

@echo offstart /B "Qemu" .\QEmu\qemupcap -L .\QEmu -hda .\ASAOS\%1\FLASH -hdachs 980,16,32 -kernel .\ASAOS\%1\vmlinuz -initrd .\ASAOS\%1\%1.gz -m 256 --no-kqemu -append "auto nousb ide1=noprobe bigphysarea=16384 console=ttyS0,9600n8 hda=980,16,32" -net nic,vlan=0,model=pcnet,macaddr=00:aa:00:00:01:01 -net pcap,vlan=0,ifname=\Device\NPF_{A1712F16-98C7-4ADF-ABD6-E50EFA287BB3} -serial telnet::%2,server,nowait.\launchtelnet.bat localhost %2

Pour le lancer, comme pour les autres:

./launchasapcap.bat asa802-k8 666

Il est évident que l’identifiant pcap de votre carte réseau changera, il faudra donc remplacer la valeur suivante:

ifname=\Device\NPF_{A1712F16-98C7-4ADF-ABD6-E50EFA287BB3}

Pour avoir la liste de vos identifiants pcap de vos différentes cartes réseau, installez dynagen, puis lancez le racourcis network devices list.

Un exemple de topologie dynagen reliée sur une interface:

ghostios   = Truesparsemem  = True

[localhost]

    [[2620]]           image = ..\images\C2600-I-.BIN        ram = 32        idlepc=0x803ae3b4

    [[ROUTER R1]]        model = 2620        f0/0=NIO_gen_eth:\Device\NPF_{A1712F16-98C7-4ADF-ABD6-E50EFA287BB3} #loop0

Cela peut permettre par exemple de relier dynagen et qemu sur une interface loopback si vous ne voulez pas utiliser de tunnels udp, ou alors de relier une des extrêmité vers une carte physique afin de sortir vers un réseau physique…

Liens:

http://7200emu.hacki.at/viewtopic.php?t=4936

http://7200emu.hacki.at/viewtopic.php?t=4088

http://7200emu.hacki.at/viewtopic.php?t=4936&postdays=0&postorder=asc&start=15#19505

Recent Entries

7 Responses to “Emulation d’ASA avec QEmu sous windows”

  1. wolverine Says:

    salut

    j’ai essayer de suivre ton tutoriel mais il doit y avoir des étape que tu à sautées car l’étape Lancement de l’émulation: ne donne rien

  2. Bastien Migette Says:

    Bonjour, sois plus précis dans ton erreur si tu veux que j’éssaie de t’aider. Sinon, essaie la méthode avec VMWare qui est plus simple et plus performante.

  3. wolverine Says:

    bonjour,

    tout d’abord je précise que je suis sous XP peu être que ce n’est pas le bon environnement

    j’ai télécharger ton archive : http://bmigette.fr/files/ASAEmu.zip
    que j’ai décompresser dans c:\asa

    j’ai insérer l’image asa802-k8.bin comme suit : C:\asa\ASAOS\asa802-k8 asa802-k8.bin

    puis dans une console msdos j’ai exécuter la commande : C:\asa>qemu_img_create.bat asa802-k8 C:\asa>launchasa.bat asa802-k8 6666

    le script se déroule avec quelques erreurs mais il se déroule
    par contre la fenêtre d’émulation n’apparait pas

  4. wolverine Says:

    je te joint l’affichege de la console

    C:\asa>qemu_img_create.bat asa802-k8 C:\asa>launchasa.bat asa802-k8 6666

    gzip: .\ASAOS\asa802-k8\asa802-k8.gz: decompression OK, trailing garbage ignored
    ..\..\QEmu\cpio: Removing leading `/’ from member names
    ..\..\QEmu\cpio: vmlinuz not created: newer or same age version exists
    ..\..\QEmu\cpio: Removing leading `/’ from member names
    ..\..\QEmu\cpio: System.map not created: newer or same age version exists
    ——-coupé
    ..\..\QEmu\cpio: asa/scripts/format_flash.sh not created: newer or same age version exists
    ..\..\QEmu\cpio: Removing leading `/’ from member names
    ..\..\QEmu\cpio: asa/scripts/fsck_flash.sh not created: newer or same age version exists
    61039 blocks

    C:\asa>

  5. Bastien Migette Says:

    As tu bien téléchargé QEmu ? Quelles sont les erreurs des fichiers .bat ?
    Sinon encore une fois, regarde la méthode VMWare, qui est plus performante et plus simple:
    http://bmigette.fr/2008/11/30/asa-emulation-part-2/

  6. Bastien Migette Says:

    Salut, désolé tes autres commentaires étaient passé à la trappe (anti spam…)
    Bref, j’avais fait une erreur de frappes, les lignes:
    C:\asa>qemu_img_create.bat asa802-k8 C:\asa>launchasa.bat asa802-k8 6666 ne sont pas qu’une seule commande mais 2, donc il faut taper:
    C:\asa>qemu_img_create.bat asa802-k8
    et une fois que c’est fait, tu peux lancer ton asa avec:
    C:\asa>launchasa.bat asa802-k8 6666
    Par la suite, utilise uniquement cette dernière commande.

    J’ai mis à jour l’article.

  7. wolverine Says:

    bonjour,

    et bravo l’artiste ça à fonctionner j’ai pu avoir l’affichage de la console asa
    par contre un petit detail : j’ai fait un test en modifiant le nom de asa avec la commande conf t , hostname asa1
    puis quand j’ai voulu enregistrer les modification
    il m’a afficher le message suivant:
    ciscoasa# conf t
    ciscoasa(config)#
    ciscoasa(config)# hostname asa1
    asa1(config)#
    asa1(config)# end
    asa1#
    asa1# copy run
    asa1# copy running-config sta
    asa1# copy running-config startup-config

    Source filename [running-config]?
    Cryptochecksum: 86cb8d3d 31c0f0ad 60ee3848 9fbf000c

    %Error copying system:/running-config (Not enough space on device)
    asa1#

    aurai tu une piste
    en te remerciant encore

Leave a Reply

Le temps imparti est dépassé. Merci de recharger le CAPTCHA.