
asadbg ist ein Framework von Tools, das die Automatisierung des Live-Debuggings von Cisco-ASA-Geräten unterstützt.
Vorabhinweis: wir empfehlen, dies als Teil von asatools zu verwenden, aber es kann auch eigenständig verwendet werden.
asadbg ist ein Framework von Werkzeugen, um die Automatisierung des Live-Debugging von Cisco-ASA-Geräten zu unterstützen und die Interaktion mit der Cisco-CLI über seriell/ssh zu automatisieren, um sich wiederholende Aufgaben schnell durchzuführen.

asadbg.cfg, um das Debugging verschiedener
Versionen einfach zu ermöglichenDas Hauptwerkzeug ist asadbg.py, und es führt die meisten anderen Hilfsskripte
aus. Beachten Sie, dass Sie möglicherweise zunächst
asafw verwenden müssen, um Firmware zu entpacken und die beste
Variante von asadbg zu erhalten.
asadbg.py: Hauptwerkzeug zum Debuggen von ASAsasdbg_hunt.py/asadbg_rename.py: IDA-Python-Skript zur Verwendung mit idahunt zum Importieren von Symbolen für neue ZieleDie folgenden werden automatisch von asadbg.py importiert, aber wir geben Ihnen einige
Informationen dazu, wofür sie sind:
asa_lib*.py: gdb-Python-Skripte zur Verwendung von
libdlmalloc,
libptmalloc und
libmempool.asa_sync.py: gdb-Python-Skript zur Verwendung von
ret-synccomm.py: Sammlung von Funktionen zur Kommunikation über seriell, SSH, Telnet.find_lina_pid.py: findet die lina-PID mithilfe von SSH-Befehlentemplate_gdbinit: gdbinit-Vorlage, die von asadbg.py für jedes Ziel gepatcht wird,
das wir debuggen.Sie müssen zunächst asadbg/env.sh an Ihre Umgebung anpassen. Es ermöglicht
Ihnen, Pfade zu den von allen Skripten verwendeten Werkzeugen sowie einige
Variablen festzulegen, die zu Ihrer ASA-Umgebung passen. Beachten Sie, dass es eine ähnliche
asafw/env.sh gibt, aber nur eine für beide Projekte verwendet werden muss. Wir
empfehlen, sie zu Ihrer ~/.bashrc hinzuzufügen:```
source /path/to/asadbg/env.sh
# Automatisiertes Debugging
Einer der Hauptvorteile der Verwendung von asadbg ist, dass Sie die Nutzung sowohl emulierter (GNS3) als auch echter Cisco-ASA-Geräte automatisieren können. Dies kann das allgemeine Automatisieren des Bootens und Ausführens verschiedener Firmwares und Konfigurationen umfassen oder speziell das Automatisieren des Debugging-Prozesses von `lina` mit gdb. Dies wird hauptsächlich über das Skript `asadbg.py` durchgeführt. Die Grundidee besteht darin, auf dem ASA-Gerät etwas Flash-Speicher mit Firmware- und Konfigurationsdateien vorzuladen, die Sie auf dem Gerät verwenden möchten. Für jede Firmware, die Sie debuggen möchten, können Sie ein Tool wie `asafw` verwenden, um verschiedene Symbole zu extrahieren, und dann können Sie mit diesen Symbolen automatisch gdbinit-Dateien generieren. Standardmäßig verwendet `asadbg.py` eine Datei `template_gdbinit`, um zur Laufzeit automatisch eine versionsspezifische gdbinit-Datei zu erstellen, wobei alle Symbole verwendet werden, die in der Datenbank vorhanden sind.
## Schnell ein echtes Gerät booten (ohne Debugging)
Sie können eine bestimmte Version schnell booten, indem Sie die Firmware- und Konfigurationsdateien angeben, die sich bereits auf der CF-Karte befinden müssen.```
asadbg$ ./asadbg.py --firmware-type normal --serial-port /dev/ttyUSB0 --firmware asa802-k8.bin --config config-802
Das folgende Beispiel zeigt, wie Sie die Konfigurationsdateien einrichten können, um
ein GNS3-Gerät zu debuggen. Zuerst definieren wir eine asadbg.cfg-Konfigurationsdatei ähnlich
wie unten. Sie enthält die GNS3-IP/den GNS3-Port für die konfigurierte Firewall, die wir
von GNS3 selbst erhalten.```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
Es verweist auch auf die ASA-Datenbankdatei `asadb.json`, die die erforderlichen Adressen enthält. Was
hierbei wichtig ist, ist, dass die in `asadbg.cfg` angegebenen `version=941200` und `arch=gns3` den
Abgleich mit der unten in `asadb.json` aufgeführten Firmware ermöglichen. Außerdem geben wir an,
dass wir gdb anhängen möchten.```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
}
Jetzt beginnen wir mit dem Debugging und clock_interval wird automatisch gepatcht:```
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.
## Debuggen eines realen Geräts mit Konfigurationsdatei
Das folgende Beispiel zeigt, wie Sie die Konfigurationsdateien einrichten können, um
ein reales Cisco-ASA-Gerät über eine serielle Konsole zu debuggen.```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
Beachten Sie außerdem, dass wir eine firmware_type angeben müssen, die angibt, ob die
Firmware unverändert, gerootet, mit aktivierter serieller Shell ist oder ob gdb
beim Booten aktiviert wurde. Dies ist
der Fall, weil wir beim Booten je nach Format unterschiedliche Dinge tun. Hier
sehen wir, dass wir eine modifizierte Firmware asa924-k8-debugshell-gdbserver.bin verwenden,
die beim Booten gdbserver aktiviert hat und eine Debug-Shell enthält.
Wir sehen unten, dass asadbg beim Start des Bootroms automatisch
die Sequenz unterbricht, um die bereits auf der CF-Karte befindlichen Firmware- und Konfigurationsdateien
zu laden.```
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