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 !
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
- DMVPN over GETVPN avec KS COOP (redondance) et KS Forwarding
- EAP-TLS avec Autorité de certification autonome (Standalone CA) sous Windows 2003
- Static subnet NAT avec VRF pour monter des ‘PODs’ (LAB)
- Capture WiFi en mode monitor sous windows, et capture par process
- Comment taper un point d’interrogation ‘?’ dans un mot de passe ?
- IPSEC High Availability Stateful Failover avec VTI
- Exemple GETVPN avec utilisation du CA server IOS
- Vente de matériel cisco : ip phone 7960, 3550 PoE, AP 1131Ag
- Prise en main d’un IDS 4215 et utilisation IDM sous Windows 7
- Vidéo de configuration 802.1X + PEAP sous ACS pour un AP Wifi aironet

avril 9th, 2009 at 16:43
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
avril 9th, 2009 at 19:20
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.
avril 10th, 2009 at 10:12
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
avril 10th, 2009 at 10:13
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>
avril 10th, 2009 at 10:57
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/
avril 10th, 2009 at 12:14
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.
avril 14th, 2009 at 17:01
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