An omelet-egg-hunter shellcode for Cisco IOS
This shellcode looks for parts of the second stage shellcode in IP packets within the IO-Memory of Cisco networking equipment and collects them together.
The following parameters should be passed to the shellcode:
r19 - start of the IO-memory region
r21 - size of shellcode
r22 - source ip
r25 - destination address (address to which the shellcode will be copied)
r20 - 0 (cur_size)
r24 - 0 (cur_ip_id)
To build the omelet-egg-hunter you must specify three parameters:
-
SIGNATUREis an unique value, by this value the omelet-egg-hunter determines the first part of the shellcode. You should also place the same value at the beginning of the 2nd stage shellcode; -
IOS_15orIOS_12indicates for whichCisco IOSfamily the shellcode will build (the offset of theIP-headerin aPacket Datastructure depends on this); -
COPYis the address of the functionios_move_handlerthat copies data with invalidation of I-Cache, D-Cache. The address of this function can be found in theCisco IOSimage by the binary pattern7C 00 20 AC.
Build command:
> make iomem_hunter.bin -e IOS=IOS_15 -e SIGNATURE=0xC0DEC0DE -e COPY=0xAABBCCDD