This is taken from the Rubber Ducky description page:
The USB Rubber Ducky injects keystrokes at superhuman speeds, violating the inherent trust computers have in humans by posing as a keyboard.
This is taken from the Bash Bunny description page:
Simultaneously mimic multiple trusted devices to trick targets into divulging sensitive information without triggering defenses.
While Bash Bunny is arguably more ambiguous in what it actually does, it is a far more capable device. Aside from emulating a keyboard, it can also be one of the following:
- Serial Device
- Ethernet Device
- USB Mass Storage
- HID (Human Interface Device)
You can find more information about possible attack vectors of the Bash Bunny in the Bash Bunny Payload Development Documentation.
To answer your follow-up question: It depends on the payload you write. For example, this payload launches a reverse shell, simply by starting a new hidden PowerShell instance, and then creating a reverse shell. It should be rather quick (read, under a minute) before you have a reverse connection. You don't need to keep the Bash Bunny plugged in after a connection has been established.