Forwarding USB Communication like a USB sniffer (Device <-> Host)

Hello,

I'm looking for some general ideas on how to approach the following scenario: I basically want to use an Arduino as a USB Host and Device at the same time.

So I would need two USB ports (most likely by adding the usb host shield). Then I would like to connect a USB device (in this case a game controller) to it and connect the arduino with the actual host like a PC or console. Then I would like my system to basically just forward all the data as if my device doesn't exist. So that the actual Host and Device can comunicate freely.

However since all the communication goes through this system I should be able to play around with the data a little bit, like alter it, as if buttons have been pressed on the controller even though they haven't actually been pressed.

My general questions would be first, is using an arduino for something like this even the right approach? If it is, what would you say is the right approach to even achive something like that? I'm pretty new to USB, so I don't know if there would be way to much knowledge required to get anything working to begin with.

Or even better is there possibly a project out there that does something like this already that I could use or use as a starting point?

I feel like it should be quite possible to do it, I just don't know yet how to start.
Any suggestions would be greatly appreciated.

p.s. I know there are plenty of projects on how to basically make a virtual game controller out of an arduino but in this case I specifically want to interface with an actual controller and its' host as if they are connected directly.

EDIT: I would like to add: My goal is not to create a general system to pass through all sorts of USB traffic. I want to do this only with devices which I know. Like what endpoints, how the data looks like etc. I've already looked at the data from a game controller hooked up to its' host console using a commercial USB sniffer.

I'm looking for some general ideas on how to approach the following scenario: I basically want to use an Arduino as a USB Host and Device at the same time.

One alternative to the USB host shield is the Teensy 3.6 which has one device port and one host port. A USB sniffer is probably required for this project.

Then I would like to connect a USB device (in this case a game controller) to it and connect the arduino with the actual host like a PC or console.

There are retail devices such as Xim and Cronus. The open source project GIMX (https://blog.gimx.fr) does something similar using a PC running Windows or Linux and a 32u4 (Pro Micro).