Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up Fuzzing an...
Author: Matthew Bell
17 downloads 2 Views 732KB Size
Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Fuzzing and Debugging Cisco IOS Blackhat Europe 2011

Sebastian Mu˜ niz, Alfredo Ortega Groundworks Technologies

March 18, 2011

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Agenda Cisco IOS Architecture Debugger internals Dynamips modification GDB support IDA Pro support

Shortcomings of self-checking routines Demos: Malware analysis Fuzzing example

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Dynamips emulator Built-in GDB server

cisco IOS architecture

Processes

Packet Buffers

Softw.

Single binary image Shared single address space Cooperative priority-based scheduler

Fast Switch

Kernel

Device Drivers Hardware

Figure: Cisco IOS process memory

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Dynamips emulator Built-in GDB server

Dynamips emulator Created by Christophe Fillot

1

Runs on Windows, Linux and Mac OS X. Equivalent to QEMU/Bochs Implements MIPS/PowerPC architecture and Cisco hardware Supports the following models:

(a) 7200 1

(b) 36XX (c) 2691

(d) 3725

(e) 3745 (f) 26XX (g) 17XX

http://www.ipflow.utc.fr/index.php/Cisco 7200 Simulator Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Dynamips emulator Built-in GDB server

Built-in GDB server Used by Cisco developers and support engineers Works over Telnet, SSH and Serial console Slightly different GDB protocol Examine

Debug

Kernel

Read Registers Write Registers Read Memory Write Memory Freeze OS Remote

Figure: GDB debugging modes Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Virtual Machine Debugger internals

Virtual Machine Debugger internals Dynamips GDB Server

PowerPC

GDB Protocol

MIPS

Special Hard

Memory Controller

FPGA PCI

WIC

CPU/Memory instrumentation No JIT support Supported commands Read/Write CPU Registers Read/Write Memory Set/Unset Breakpoints

Any standard GDB client supported

NM

Figure: GDB Server embedding Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Pros vs Cons Why isolation is good? I don’t need this, I have the verify command Shortcomings of self-checking routines

Pros and Cons of Virtual Machine Debugger Pros: Complete isolation (almost!) Cost-effective Controlled debugging environment Bug-hunter friendly Cons: Not 100% exact emulation Not all models or hardware compatible Findings need double-check with physical device Check Cisco EULA before doing anything crazy. Just in case. Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Pros vs Cons Why isolation is good? I don’t need this, I have the verify command Shortcomings of self-checking routines

Why isolation is good? Analyzing malware

Analyzing malware GDB Client Read_Memory Request

Cisco IOS Malware

Cisco IOS

GDB Client Read_Memory

Malware

Built−In GDB Stub

Expected (fake) Bytes Original memory Mirror

Figure: Using built-in GDB

Malware memory dump

GDB Stub DYNAMIPS

Figure: Dynamips GDB server

Lesson learned: NEVER analyze malware inside an infected host. Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Pros vs Cons Why isolation is good? I don’t need this, I have the verify command Shortcomings of self-checking routines

I don’t need this, I have the verify command Cisco Response on IOS rootkits 2 : Maintain chain of trust when verifying IOS images Verify IOS image in external host, or before booting it Use the MD5 File Validation command “verify” on Loaded image: Using the MD5 File Validation Feature “The MD5 File Validation feature, added in Cisco IOS Software Releases 12.2(4)T and 12.0(22)S, allows network administrators to calculate the MD5 hash of a Cisco IOS software image file that is loaded on a device.” 2

http://www.cisco.com/warp/public/707/cisco-sr-20080516-rootkits.shtml Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Pros vs Cons Why isolation is good? I don’t need this, I have the verify command Shortcomings of self-checking routines

Shortcomings of self-checking routines Malware-affected analysis Cisco IOS

Verify CLI command

Malware MD5 CHK

Clean analyis External Trusted environment MD5 Tool

User expected MD5 chksum (fake)

Login routine

Result Hash

Calculate

Cisco IOS

GDB server

Figure: Using built-in GDB

Figure: Using Dynamips GDB server

Lesson learned (again): NEVER verify code inside an infected host. Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Use cases: IOS malware

Demo: Backdoored IOS installation Not trivial to analyze (Many IOS variations) At least, possible:

Demo!

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Use case: ROMMON debugging

ROMMON: Cisco bootloader

3

Very easy to verify and analyze (less variations) Read-only in some models Contains a basic but privileged debugger ROMMON itself can be debugged by Dynamips

3

Felix ’FX’ Lindner , 25c3, Cisco IOS - Attack & Defense Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Fuzzing requirements Timing diagram Example fuzzer Triggered Vulnerability

Fuzzing requirements

Correct exception handling Reproducible test-cases Logging Desirable: Debugging envirment (for post-analysis)

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Fuzzing requirements Timing diagram Example fuzzer Triggered Vulnerability

Fuzzing timing diagram GDB

Fuzzer

Dynamips

Start Start

Fuzz case N Signal

Exception

Get Regs Registers

Log Restart Restart Fuzz case N+1

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Fuzzing requirements Timing diagram Example fuzzer Triggered Vulnerability

Example fuzzer Start

Connect to FTP

Attack surface via Protocol fuzzer (ftp) Trivial test-case generation (just an example!)

Send: Command + "AAA..." (100 A’s)

Disconnect Yes More CMDs?

No

Crash?

Yes

Save state

No End Groundworks Technologies

Fuzzing and Debugging Cisco IOS

DB

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Fuzzing requirements Timing diagram Example fuzzer Triggered Vulnerability

Fuzzer Demo

Demo!

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Fuzzing requirements Timing diagram Example fuzzer Triggered Vulnerability

Triggered Vulnerability

Cisco Security Advisory: Multiple Vulnerabilities in the IOS FTP Server (cisco-sa-20070509-iosftp) 30 FTP commands, remote code execution on 16: (USER,CWD,DELE,RNFR,STOR,NLST,APPE,MKD, RMD,STOU,RETR,LIST,STAT,MDTM,SIZE, and HELP)

Patched in 2007: Completely remove all FTP server code

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

How secure is this debugger? Very. Can be used in a production environment to analyze malicious code? No Dynamips contains emulation bugs.

Demo!

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Future Development

Honeypots Malware analysis Lab Exploit Dev Duplicate exact memory behaviour (typical VMs problems) Secure host isolation (squash Dynamips bugs)

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

Questions?

Via email: [email protected] [email protected] Please download: http://www.groundworkstech.com/projects/dynamips-gdb-mod Published under the GNU General Public Licence (GPL)

Groundworks Technologies

Fuzzing and Debugging Cisco IOS

Cisco IOS architecture Architecture Analyzing Pros and Cons Use case: IOS malware Use case: ROMMON debugging Use cases: Fuzzer Wrapping up

The End Thanks for listening!

Groundworks Technologies

Fuzzing and Debugging Cisco IOS