破解和模拟CISCO ASA操作系统
破解和模拟CISCO ASA操作系统
原著:阿锅同学
发表:Netemu社区
申明:转载注明出处,仅限学习与研究之用,请勿用于商业用途
备注:结尾给出PDF文档,以及所需软件
相关文档;用Qemu来虚拟ASA设备(详细)
Qemu模拟ASA802(讨论帖非应用)
欢迎在后面跟帖出实质性讨论,请勿灌水及无关回复
1:
1.
破解CISCO ASA操作系统
工作前的准备:
①Linux操作系统环境
②ASA 二进制文件(bin)
准备工作完成, 那么下面我们就可以开始如何破解出ASA bin文件中的一个完整的linux系统,关于CISCO对PIX和ASA里使用了开源程序的说明和列表:
http://www.cisco.com/en/US/products/ps6120/prod_release_note09186a008086944e.html
根据上面这个地址,可以清楚的看出ASA 操作系统是一个linux系统的改造过来的,基于linux 内核版本为2.6.
OK,让我们开始吧
Step by step:
①
进入Linux系统,从cisco官方下载 asa802-k8.bin,验证其MD5值.
命令:
# md5sum asa802-k8.bin
a94c3eff8c6d12d6ae6d1be9ba2ea529
asa802-k8.bin

2008-4-10 22:23
Cisco 官方网站MD5截图;

2008-4-10 22:23
2: 使用hexdump输出asa802-k8.bin 十六进制数据流,将其输入到一个指定文件中.
命令:
# hexdump -C asa802-k8.bin > asa802-k8.hd

2008-4-10 22:23
3:
利用grep在生成的asa802-k8.hd 16进制文件中搜索串“1f 8b 08 00 1d”.
命令:
# grep “1f 8b 08 00 1d” asa802-k8.hd
001228b0 1f 8b 08 00 1d 3d 73 46 00 03 ec 3a 6d 54 14 57

2008-4-10 22:23
4:
①
首先获取asa802-k8.bin文件的大小,然后使用10进制的文件大小数减去16进制头
001228b0,得到最后N bytes 数(10进制).

2008-4-10 22:28
得到asa802-k8.bin文件大小为14524416 字节.
下面我们可以使用linux下非常实用的脚本语言Perl来帮助计算145244160-0×001228b0
命令:
| # perl -e ‘$x=14524416-0×1228b0;print “$x\n”‘ 13334352 |

2008-4-10 22:28
这样我们就得到了偏移量 13334352
5:
使用tail 获取asa802-k8.bin 中CPIO镜像文件(一种linux文件系统压缩格式)
命令:
#tail -c 13334352 asa802-k8.bin > asa802-k8.gz

2008-4-10 22:28
这时文件夹内已经生成了一个gzip压缩格式文件.
6:
使用gzip解压asa802-k8.gz
命令:
| #gzip -d asa802-k8.gz |

2008-4-10 22:28
这时我们发现文件夹内已经包含一个asa802-k8的CPIO镜像文件.接下来使用cpio命令解压该文件.
7:
使用cpio解压
命令:
|
cpio -i –make-directories –no-absolute-filenames < asa802-k8 |

2008-4-10 22:30
OK,下面可以看到当前文件夹内出现了一个标准的文件系统,可以使用ls查看:

2008-4-10 22:30
下面需要做的是一些编辑相关文件,之后在将这个文件系统打包,然后使用Qemu这个虚拟机来引导它.
8:编辑相关文件(etc/init.d/rcS 注意此文件并非linux根下的/etc,而是解压asa802-k8所得的文件系统内的/etc),打包文件系统.
命令:
|
# vim etc/init.d/rcS |

2008-4-10 22:30
看的内容为上面,那么我们应该使用vim来编辑它(当然也可以使用别的编辑工具,如gedit 等等).编辑后的内容如下:

2008-4-10 22:30
确认:wr保存退出
注意拷贝出vmlinuz内核文件(模拟需要它来引导)
下面进行打包ASA文件系统工作.
打包命令:
|
# find . | cpio -o -H newc | gzip -9 > /home/bzzjh/asa802.gz |

2008-4-10 22:34
到这里asa802-k8.bin这个二进制文件已经完全的被破解出来,我们可以很清晰的发现,Cisco ASA的操作系统就是个Linux系统,唯一的只是在asa文件夹内的两个asa的操作程序,lina和lina_ monitor (后面关于模拟部分会执行lina_ monitor这个程序).
1.
利用Qemu引导(模拟)Cisco ASA Linux 文件系统.
准备工作:
①
Qemu 程序(附件中提供)
②
破解出来的ASA Linux文件系统asa802.gz (附件中提供)
③
内核:vmlinuz (附件中提供)
因为我们日常工作都是使用windows系统,下面模拟部分我转到windows下系统进行
GO !!
首先打开附件文件夹:

2008-4-10 22:34
你看到内容如上图,之后打开asaemu:

2008-4-10 22:34
asa802-k8是我们通过上面的步骤破解出来的asa文件系统.
这里需要说明一下:破解的步骤不能在windows环境中进行,虽然像cpio这样的程序都有一个windows的移植版,但是无法创建linux下的链接文件!
Ⅰ.点击创建Disk.cmd 文件.
之后该文件夹内将会生成一个asa802.vmdk 大小为64.0 KB的文件.
Ⅱ.鼠标右键选种3.ASA802.bat 文件,点编辑
我们将看到该批处理文件的主体内容如下 :
我们将看到该批处理文件的主体内容如下 :
|
..\qemu.exe -L ..\bios -hda asa802.vmdk -hdachs 980,16,32 -kernel vmlinuz -initrd asa802-k8.gz -m 256 –no-kqemu -append “auto nousb ide1=noprobe bigphysarea=16384 console=ttyS0,9600n8 hda=980,16,32″ |
注意上面方框内的命令其实是为一行,只是因为换行的缘故.注意灰色部分请不要改动
可以进行修改的部分是粉红色部分和深蓝色部分
下面解释一下粉红色部分和深蓝色部分的意思:
–net nic,vlan=0,model=i82557b,macaddr=00:aa:00:00:02:01
在asa中创建一个网卡,型号为intel i82557b,vlan号为0,mac地址为00:aa:00:00:02:01。这条命令后面: –net pcap,vlan=0,ifname=\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
意思是说将创建的这个属于vlan0的网卡桥接到本地网卡中,其中本地网卡的参数为\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
那么深蓝色部分也同样理解:
-net nic,vlan=1,model=i82557b,macaddr=00:aa:00:00:02:02 -net pcap,vlan=1,ifname=2
在asa创建另一个网卡,vlan为1,mac地址为00:aa:00:00:02:02,并将其桥接到网卡号为2的本地网卡上.
这里肯定会有一个疑问:
ifname=\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
ifname=2
这是两个参数主要是用来桥接到本地网卡,那么它是如何得知?
答案就在下面
Ⅲ. 点击获取网卡参数.
.(注意需要安装winpcap,附件文件夹内已提供)

2008-4-10 22:40
如图:以上就是我的机器中所有可用的网卡,和它的参数
这里同一个网卡参数,可以用两个不同的方法去表示.比如3号,Intel的无线网卡.我们即可以ifname=3 也可以ifname= \Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27} 意思都是将某一个asa中的端口桥接到本地的这个无线网卡上.(这里ifname还可以支持tap接口,因为篇幅问题加上tap接口配置有比较烦琐,不加详细介绍,有兴趣可以邮件讨论)
所以在第一次运行之前请务必需要修改文件中的网卡参数为你主机对应的网卡参数(红下划线部分).

2008-4-10 22:40
提示:当然3.ASA802.bat 文件的批处理只模拟运行一个asa(2个端口),你也可以模拟更多的接口,创建接口:
-net nic,vlan=N,model=i82557b,macaddr=00:aa:00:00:02:01 -net pcap,vlan=N,ifname=XXXX
运行多个asa可以在附件文件夹内复制多个asaemu文件夹,分别运行文件夹内的相应文件

2008-4-10 22:40
Ⅳ.做好一切准备工作后,点击3.ASA802.bat
将看到:

2008-4-10 22:40
之后使用telnet 工具.这里我使用SecureCRT演示

2008-4-10 22:43
创建快速连接,如上图.点击Connect,将会看到一个启动信息:

2008-4-10 22:43
今后将进入shell 命令环境:

2008-4-10 22:43
依次如图键入命令:

2008-4-10 22:43
以上是对Disk进行格式化和挂载分区(使用linux fdisk命令),按照上面操作完毕即可,另外这一步紧在第一次启动时需要操作,以后就不再需要!
依次键入下图命令:

2008-4-10 22:43
上面这一步是加载e100模块和激活网卡(注意在3.ASA802.bat中模拟了几个端口这里就需要up几个网卡,eth0,eth1,….ethN),然后启动lina_monitor程序(asa操作程序),在输入/asa/bin/lina_monitor后回车,之后就可以进入到ciscoasa>界面
可选操作–begin(如果对linux系统不熟悉可以跳过下面步骤):
这一步骤是在每次启动都必须执行的.当然可以这样做,在打包asa linux文件系统之前可以写一个自动的脚本在其中().
首先使用vim编辑一个脚本存放在bin/文件夹内如图:

2008-4-10 22:43

之后编辑etc/init.d/rcS.common文件如图:
2008-4-10 22:46
然后保存,这样每次就可以自动启动相关命令.
可选操作—done
所有的步骤都已经完毕
这样一个虚拟的ciscoasa就呈现在我们眼前:

2008-4-10 22:46
3.我们可以用这个虚拟ASA做什么?
l
可以在没有设备在旁边的时候在自己本本上熟悉ASA的命令,完全可以当作一个去现场前的”练习场”
l
可以通过网络搭配,配合dynamips(cisco IOS 模拟器)来搭建一个实验环境.
l
支持单模式下的ASA所有实验.
l
因为模拟不完全原因,FLASH是有问题的,这样造成不能多模式,另外保存配置需要使用命令:
copy running-config disk0:/.private/startup-config
虽然会报错,但是确实是可以保存。Copy run start 不能生效.
l
这仅仅只是个虚拟化的ASA,请不要对它期望过高.仅做学习之用.
至此完毕,欢迎来到netemu社区
原文地址http://netemu.cn/bbs/thread-8308-1-1.html
文中提到的附件 请到netemu社区下载
高手,强人啊
厉害,太有才了。
我对cisco使用那些开源软件比较感兴趣,可惜
http://www.cisco.com/en/US/products/ps6120/prod_release_note09186a008086944e.html
这个连接没啥东西呀?
能否把cisco使用开源软件的列表发我邮箱里面?