轉自http://www.netemu.cn/bbs/thread-8308-1-2.html(鍋巴頭)
工作前的準備:
①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.
1:
進入Linux系統,從cisco官方下載 asa802-k8.bin,驗證其MD5值.
命令:
# md5sum asa802-k8.bin
a94c3eff8c6d12d6ae6d1be9ba2ea529
asa802-k8.bin
與Cisco 官方網站MD5一致;
2:
使用hexdump輸出asa802-k8.bin 十六進位數據流,將其輸入到一個指定文件中.
命令:
# hexdump -C asa802-k8.bin > asa802-k8.hd
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
4:
①
首先獲取asa802-k8.bin文件的大小,然後使用10進位的文件大小數減去16進位頭
001228b0,得到N bytes 數(10進位).
得到asa802-k8.bin文件大小為14524416 位元組.
下面我們可以使用linux下非常實用的腳本語言Perl來幫助計算145244160-0x001228b0
命令:
# perl -e '$x=14524416-0x001228b0;print "$xn"' (單引號)
13334352
這樣我們就得到了偏移量 13334352
5:
使用tail 獲取asa802-k8.bin 中CPIO鏡像文件(一種linux文件系統壓縮格式)
#gzip -d asa802-k8.gz
這時我們發現文件夾內已經包含一個asa802-k8的CPIO鏡像文件.接下來使用cpio命令解壓該文件.
7:
使用cpio解壓
命令:
cpio -i --make-directories --no-absolute-filenames < asa802-k8
OK,下面可以看到當前文件夾內出現了一個標準的文件系統,可以使用ls查看:
下面需要做的是一些編輯相關文件,之後在將這個文件系統打包,然後使用Qemu這個虛擬機來引導它.
8:編輯相關文件(etc/init.d/rcS 注意此文件並非linux根下的/etc,而是解壓asa802-k8所得的文件系統內的/etc),打包文件系統.
命令:
# vim etc/init.d/rcS
看的內容為上面,那麼我們應該使用vim來編輯它,編輯后的內容如下:
保存退出
注意拷貝出vmlinuz內核文件(模擬需要它來引導)
下面進行打包ASA文件系統工作.
打包命令:
# find . | cpio -o -H newc | gzip -9 > ./asa802.gz
到這裡asa802-k8.bin這個二進位文件已經完全的被破解出來,我們可以很清晰的發現,Cisco ASA的操作系統就是個Linux系統,唯一的只是在asa文件夾內的兩個asa的操作程序,lina和lina_ monitor (後面關於模擬部分會執行lina_ monitor這個程序).
[root@rhe5 ~]# cd /asa802/
[root@rhe5 asa802]# ls
asa802-k8.bin
[root@rhe5 asa802]#
[root@rhe5 asa802]# ls
asa802-k8.bin
[root@rhe5 asa802]# hexdump -C asa802-k8.bin > asa802-k8.hd
[root@rhe5 asa802]#
[root@rhe5 asa802]# grep "1f 8b 08 00 1d" asa802-k8.hd
gzip: asa802-k8.gz: decompression OK, trailing garbage ignored
[root@rhe5 asa802]#
[root@rhe5 asa802]# ls -l
total 114568
-rw-r--r-- 1 root root 31251968 Feb 6 05:18 asa802-k8
-rw-rw-rw- 1 root root 14524416 Jul 9 2007 asa802-k8.bin
-rw-r--r-- 1 root root 71393157 Feb 6 05:15 asa802-k8.hd
[root@rhe5 asa802]#
[root@rhe5 asa802]# cpio -i --make-directories --no-absolute-filenames < asa802-k8
cpio: Removing leading `/' from member names
……
cpio: Removing leading `/' from member names
61039 blocks
[root@rhe5 asa802]#
[root@rhe5 asa802]# ls -la
total 116312
drwxr-xr-x 12 root root 4096 Feb 6 05:19 .
drwxr-xr-x 26 root root 4096 Feb 6 05:08 ..
[root@rhe5 init.d]# cd /asa802
[root@rhe5 asa802]# ls
asa asa802-k8.bin bin etc lib mnt sbin System.map vmlinuz
asa802-k8 asa802-k8.hd dev init linuxrc proc sys usr
[root@rhe5 asa802]# cd etc
[root@rhe5 etc]# ls
init.d inittab mtab
[root@rhe5 etc]# cd init.d
[root@rhe5 init.d]# ls
rcS rcS.common
[root@rhe5 init.d]# more rcS
#!/bin/sh
#------------------------------------------------------------------
# Copyright (c) 2006, 2007 by Cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------
export MOUNT_OPTS=umask=0000,noatime,check=s,posix,shortname=mixed
/bin/sh -c /etc/init.d/rcS.common
export LD_LIBRARY_PATH=/mnt/disk0/lib:/mnt/disk0/lib
# launch our user space processes
/asa/bin/lina_monitor (改為/bin/sh)
[root@rhe5 init.d]#
[root@rhe5 asa802]# find . | cpio -o -H newc | gzip -9 > asa802.gz
cpio: File ./asa802.gz grew, 14319616 new bytes not copied
317854 blocks
[root@rhe5 asa802]# ls
asa asa802-k8 asa802-k8.hd dev init linuxrc proc sys usr
asa802.gz asa802-k8.bin bin etc lib mnt sbin System.map vmlinuz
[root@rhe5 asa802]#
將asa802.gz和vmlinuz拷貝出來
模擬ASA
1.
利用Qemu引導(模擬)Cisco ASA Linux 文件系統.
準備工作:
①
Qemu 程序
②
破解出來的ASA Linux文件系統asa802.gz
③
內核:vmlinuz
下面模擬在windows系統進行(從http://www.netemu.cn/bbs/thread-8308-1-2.html下載解壓而得)
打開文件夾:
看到內容如上圖,之後打開asaemu:
asa802-k8是我們通過上面的步驟破解出來的asa文件系統.
這裡需要說明一下:破解的步驟不能在windows環境中進行,雖然像cpio這樣的程序都有一個windows的移植版,但是無法創建linux下的鏈接文件!
Ⅰ.點擊創建Disk.cmd 文件.
之後該文件夾內將會生成一個asa802.vmdk 大小為64.0 KB的文件.
Ⅱ.編輯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 –net pcap,vlan=0,ifname=DeviceNPF_{E93E58F7-430F-45F7-9565-0CEED2108E27} -net nic,vlan=1,model=i82557b,macaddr=00:aa:00:00:02:02 -net pcap,vlan=1,ifname=2 -serial telnet::1007,server,nowait
注意上面的命令是為一行,下面解釋一下部分的意思:
–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=DeviceNPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
意思是說將創建的這個屬於vlan0的網卡橋接到本地網卡中,其中本地網卡的參數為DeviceNPF_{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=DeviceNPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
ifname=2
這是兩個參數主要是用來橋接到本地網卡,那麼它是如何得知?
答案就在下面
Ⅲ. 點擊獲取網卡參數.
.(注意需要安裝winpcap,附件文件夾內已提供)
2008-4-10 22:40
如圖:以上就是我的機器中所有可用的網卡,和它的參數
這裡同一個網卡參數,可以用兩個不同的方法去表示.比如3號,英特爾的無線網卡.我們即可以ifname=3 也可以ifname= DeviceNPF_{E93E58F7-430F-45F7-9565-0CEED2108E27} 意思都是將某一個asa中的埠橋接到本地的這個無線網卡上.(這裡ifname還可以支持tap介面,篇幅問題加上tap介面配置有比較煩瑣,不加詳細介紹,有興趣可以郵件討論)
在第一次運行之前請務必需要修改文件中的網卡參數為你主機對應的網卡參數
提示:當然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文件夾,分別運行文件夾內的相應文件
Ⅳ.做好一切準備工作后,點擊3.ASA802.bat
將看到:
之後使用telnet 連接上去了,將會看到一個啟動信息:
進入shell 命令環境
依次如圖鍵入命令:
以上是對Disk進行格式化和掛載分區(使用linux fdisk命令),按照上面操作完畢即可,另外這一步只在第一次啟動時需要操作,以後就不再需要!
依次鍵入下圖命令:
上面這一步是載入e100模塊和激活網卡(注意在3.ASA802.bat中模擬了幾個埠這裡就需要up幾個網卡,eth0,eth1,….ethN),然後啟動lina_monitor程序(asa操作程序),在輸入/asa/bin/lina_monitor后回車,之後就可以進入到ciscoasa>界面
可選操作--begin(如果對linux系統不熟悉可以跳過下面步驟):
這一步驟是在每次啟動都必須執行的.
當然可以這樣做,在打包asa linux文件系統之前可以寫一個自動的腳本在其中().
首先使用vi編輯一個腳本存放在bin/文件夾內,如圖:
?
之後編輯etc/init.d/rcS.common文件,如圖:
然後保存,這樣每次就可以自動啟動相關命令.
可選操作—done
所有的步驟都已經完畢
這樣一個虛擬的ciscoasa就呈現在我們眼前
3.我們可以用這個虛擬ASA做什麼?
l
可以在沒有設備在旁邊的時候在自己本本上熟悉ASA的命令,完全可以當作一個去現場前的」練習場」
l
可以通過網路搭配,配合dynamips(cisco IOS 模擬器)來搭建一個實驗環境.
l
支持單模式下的ASA所有實驗.
l
模擬不完全原因,FLASH是有問題的(啟動時提示flash沒有格式化,不能決定防火牆工作模式)
ciscoasa(config-if)# copy run disk0:/.private/start-up
Source filename [running-config]?
Destination filename [/.private/start-up]?
Cryptochecksum: 7c813112 1682dbc4 32338bfe 0842bfe8
%Error copying system:/running-config (Not enough space on device)
ciscoasa(config-if)#
l
這僅僅只是個虛擬化的ASA,請不要對它期望過高.僅做學習之用.
[火星人 ] 破解CISCO ASA操作系統(操作成功)已經有419次圍觀