
asadbg उपकरणों का एक ढांचा है जो Cisco ASA डिवाइसों के लाइव डिबगिंग को स्वचालित करने में सहायता करता है।
प्रारंभिक टिप्पणी: हम अनुशंसा करते हैं कि आप इसे asatools के भाग के रूप में उपयोग करें, लेकिन इसे अकेले भी उपयोग किया जा सकता है।
asadbg Cisco ASA डिवाइसों की लाइव डिबगिंग को स्वचालित करने में सहायता के लिए उपकरणों का एक फ्रेमवर्क है, साथ ही दोहराए जाने वाले कार्यों को शीघ्रता से करने के लिए सीरियल/ssh पर Cisco CLI के साथ इंटरैक्शन को स्वचालित करता है।

asadbg.cfg कॉन्फ़िगरेशन फ़ाइल का समर्थन करता हैमुख्य उपकरण asadbg.py है और यह अधिकांश अन्य सहायक स्क्रिप्ट चलाएगा। ध्यान दें कि आपको शुरुआत में asadbg का सर्वोत्तम रूप पाने के लिए asafw का उपयोग करके फर्मवेयर को अनपैक करने की आवश्यकता हो सकती है।
asadbg.py: ASAs को डीबग करने के लिए उपयोग किया जाने वाला मुख्य उपकरणasdbg_hunt.py/asadbg_rename.py: नए टार्गेट्स के लिए सिंबल आयात करने हेतु idahunt के साथ उपयोग की जाने वाली IDA Python स्क्रिप्टनिम्नलिखित को asadbg.py द्वारा स्वचालित रूप से आयात किया जाता है, लेकिन हम आपको बता रहे हैं कि ये किस लिए हैं:
asa_lib*.py: gdb Python स्क्रिप्ट जो libdlmalloc, libptmalloc और libmempool का उपयोग करती हैं।asa_sync.py: gdb Python स्क्रिप्ट जो ret-sync का उपयोग करती हैcomm.py: सीरियल, SSH, टेलनेट पर संचार करने के लिए फ़ंक्शनों का समूहfind_lina_pid.py: SSH कमांड का उपयोग करके lina PID खोजेंtemplate_gdbinit: gdbinit टेम्पलेट जिसे हम जिन भी टार्गेट्स को डीबग करते हैं उनके लिए asadbg.py द्वारा पैच किया जाता हैआपको शुरू में अपने परिवेश से मेल खाने के लिए asadbg/env.sh को संशोधित करना होगा। यह आपको सभी स्क्रिप्ट द्वारा उपयोग किए जाने वाले टूल्स के पथ, साथ ही आपके ASA परिवेश से मेल खाने वाले कुछ वेरिएबल परिभाषित करने की अनुमति देगा। ध्यान दें कि एक समान asafw/env.sh भी है, लेकिन दोनों प्रोजेक्ट्स के लिए केवल एक का उपयोग करना आवश्यक है। हम अनुशंसा करते हैं कि आप इसे अपने ~/.bashrc में जोड़ें:```
source /path/to/asadbg/env.sh
# स्वचालित डिबगिंग
asadbg का उपयोग करने का एक मुख्य लाभ यह है कि आप एमुलेटेड (GNS3) और वास्तविक Cisco ASA डिवाइस दोनों के अपने उपयोग को स्वचालित कर सकते हैं। इसमें सामान्य रूप से विभिन्न फर्मवेयर और कॉन्फ़िगरेशन को बूट करने और चलाने को स्वचालित करना, या विशेष रूप से gdb का उपयोग करके `lina` की डिबगिंग प्रक्रिया को स्वचालित करना शामिल हो सकता है। यह ज्यादातर `asadbg.py` स्क्रिप्ट के माध्यम से किया जाता है। मुख्य विचार ASA डिवाइस पर कुछ फ्लैश को उन फर्मवेयर और कॉन्फ़िगरेशन फ़ाइलों के साथ प्रीलोड करना है जिन्हें आप डिवाइस पर उपयोग करना चाहते हैं। प्रत्येक फर्मवेयर के लिए जिसे आप डीबग करना चाहते हैं, आप `asafw` टूल जैसी किसी चीज़ का उपयोग विभिन्न सिंबल निकालने के लिए कर सकते हैं और फिर उन सिंबल का उपयोग करके स्वचालित रूप से gdbinit फ़ाइलें जनरेट कर सकते हैं। डिफ़ॉल्ट रूप से `asadbg.py` डेटाबेस में मौजूद किसी भी सिंबल का उपयोग करके रनटाइम पर एक संस्करण-विशिष्ट gdbinit फ़ाइल बनाने को स्वचालित करने के लिए `template_gdbinit` फ़ाइल का उपयोग करेगा।
## किसी वास्तविक डिवाइस को तुरंत बूट करें (कोई डिबगिंग नहीं)
आप फर्मवेयर और कॉन्फ़िगरेशन फ़ाइलों को निर्दिष्ट करके किसी दिए गए संस्करण को तुरंत बूट कर सकते हैं, जो पहले से ही CF कार्ड पर मौजूद होनी चाहिए।```
asadbg$ ./asadbg.py --firmware-type normal --serial-port /dev/ttyUSB0 --firmware asa802-k8.bin --config config-802
निम्नलिखित उदाहरण दिखाता है कि आप GNS3 डिवाइस को डिबग करने के लिए कॉन्फ़िगरेशन फ़ाइलें कैसे सेटअप कर सकते हैं। पहले हम नीचे दिए गए समान एक asadbg.cfg कॉन्फ़िगरेशन फ़ाइल परिभाषित करते हैं। इसमें कॉन्फ़िगर किए गए फ़ायरवॉल के लिए GNS3 IP/पोर्ट होता है, जिसे हम GSN3 से ही प्राप्त करते हैं।```ini
[GLOBAL]
gns3_host=192.168.5.1
asadb_file=asadb.json
[asav941200] version=941200 arch=gns3 rootfs_path= /home/user/_asav941-200.qcow2.extracted/rootfs gns3_port=12005 attach_gdb=yes
यह आवश्यक पतों वाली ASA डेटाबेस फ़ाइल `asadb.json` की ओर भी इंगित करता है। यहाँ
महत्वपूर्ण बात यह है कि `asadbg.cfg` में निर्दिष्ट `version=941200` और `arch=gns3`
नीचे `asadb.json` में फ़र्मवेयर से मेल खाने की अनुमति देते हैं। साथ ही हम संकेत देते हैं
कि gdb को अटैच करना चाहते हैं।```json
{
"ASLR": false,
"addresses": {
"clock_interval": 59514112,
"socks_proxy_server_start": 22139744,
"aaa_admin_authenticate": 418288
},
"fw": "asav941-200.qcow2",
"lina_imagebase": 4194304,
"version": "9.4.1.200",
"arch": 64
}
अब हम डिबगिंग शुरू करते हैं और clock_interval स्वचालित रूप से पैच हो जाएगा:```
asadbg$ ./asadbg.py --name asav941200 --asadbg-config asadbg.cfg
[asadbg] Using config file: asadbg.cfg
[asadbg] Found section: 'asav941200' in config
[asadbg] Using gdb: '/usr/bin/gdb'
[asadbg] Using architecture: gns3
[asadbg] Trying lina: /home/user/_asav941-200.qcow2.extracted/rootfs/asa/bin/lina
[asadbg] Going to debug...
[asadbg] Using GNS3 emulator 192.168.5.1:12005
[asadbg] Starting gdb now...
[gdbinit_941200] Configuring paths...
[gdbinit_941200] Disabling pagination...
[gdbinit_941200] Connecting over TCP/IP...
0x0000003655201190 in ?? () from /home/user/_asav941-200.qcow2.extracted/rootfs/lib64/ld-linux-x86-64.so.2
[gdbinit_941200] Connected.
[gdbinit_941200] Watchdog disabled
[gdbinit_941200] heap debugging plugins loaded
[gdbinit_941200] Additional gdb scripts loaded
[gdbinit_941200] Done.
(gdb) c
Continuing.
## कॉन्फ़िग फ़ाइल के साथ एक वास्तविक डिवाइस की डिबगिंग
निम्नलिखित उदाहरण दिखाता है कि आप किसी वास्तविक Cisco ASA डिवाइस को सीरियल कंसोल के माध्यम से
डिबग करने के लिए कॉन्फ़िगरेशन फ़ाइलों को कैसे सेटअप कर सकते हैं।```ini
[GLOBAL]
serial_port=/dev/ttyUSB0
asadb_file=asadb.json
[asa924-gdb]
version=924
arch=32
rootfs_path=/home/user/_asa924-k8.bin.extracted/rootfs
firmware=asa924-k8-debugshell-gdbserver.bin
config=config-924
firmware_type=gdb
attach_gdb=yes
यह भी ध्यान दें कि हमें एक firmware_type निर्दिष्ट करने की आवश्यकता है, जो यह दर्शाता है कि फर्मवेयर अपरिवर्तित है, रूटेड है, सीरियल शेल सक्षम है या बूट पर gdb सक्षम किया गया है। ऐसा इसलिए है क्योंकि हम प्रारूप के आधार पर बूट के समय अलग-अलग कार्य करेंगे। यहाँ हम देख सकते हैं कि हम एक संशोधित फर्मवेयर asa924-k8-debugshell-gdbserver.bin का उपयोग करते हैं, जिसमें बूट पर gdbserver सक्षम होता है और एक डिबग शेल होता है। नीचे हम देखते हैं कि जब bootrom शुरू होता है, asadbg CF कार्ड पर पहले से मौजूद फर्मवेयर और कॉन्फ़िग फ़ाइलों को लोड करने के लिए अनुक्रम को स्वचालित रूप से बाधित करता है।```
asadbg$ ./asadbg.py --name asa924-gdb --asadbg-config asadbg.cfg
[asadbg] Using config file: asadbg.cfg
[asadbg] Found section: 'asa924-gdb' in config
[asadbg] Using gdb: '/usr/bin/gdb'
[asadbg] Using architecture: 32
[asadbg] Trying lina: /home/user/_asa924-k8.bin.extracted/rootfs/asa/bin/lina
[asadbg] Going to debug...
[asadbg] Using serial port: /dev/ttyUSB0
[asadbg] Loading 'asa924-k8-debugshell-gdbserver.bin' with 'config-924'...
[comm] Waiting boot...
[SNIP]
Platform ASA5505
Use BREAK or ESC to interrupt boot. Use SPACE to begin boot immediately. Boot interrupted.
[SNIP] rommon #0> boot asa924-k8-debugshell-gdbserver.bin cfg=config-924 Launching BootLoader... Boot configuration file contains 1 entry.