Trouver Flipper (zéro)

Feb 07 2023
Bonjour camarade Blue Teamer. Avez-vous entendu parler de ces nouveaux gadgets fantaisistes "Flipper" et vous vous demandez de quoi il s'agit ? Votre CISO est-il venu vous voir en panique pour vous demander de savoir si les utilisateurs les connectent à leurs postes de travail ? Eh bien, vous êtes au bon endroit.

Bonjour camarade Blue Teamer. Avez-vous entendu parler de ces nouveaux gadgets fantaisistes "Flipper" et vous vous demandez de quoi il s'agit ? Votre CISO est-il venu vous voir en panique pour vous demander de savoir si les utilisateurs les connectent à leurs postes de travail ? Eh bien, vous êtes au bon endroit.

Découvrez… le Flipper Zero.

Si vous souhaitez en savoir plus sur leurs capacités, je vous suggère de consulter leur site Web . j'en ai un et je l'adore; cependant, je suis sûr qu'en tant que cyber-défenseur, vous vous êtes demandé "Comment puis-je détecter si un utilisateur de notre réseau essaie d'en utiliser un pour pirater la planète?" A cela je dis — n'avez-vous pas mieux à faire ? Non? Eh bien, voici quelques façons de détecter qu'elles sont connectées à un appareil Windows.

Le Flipper Zero a de nombreux modes et modules différents qui peuvent le faire apparaître à Windows comme une variété d'appareils différents. Les deux que nous allons couvrir sont le mode "par défaut", où un batteur est branché sans exécuter de module, et le second est USB Remote AKA mouse jiggle.

Lorsqu'un Flipper Zero est branché via USB sans qu'un module spécifique ne soit exécuté, il laisse derrière lui une signature très unique qui peut être recherchée dans vos journaux. D'après nos tests, les Flippers dans ce mode (au moment d'écrire ces lignes) émuleront un VID STMicroelectronics de 0483 avec un PID de 5740. Il inclura également le numéro de série de l'appareil unique au monde dans le cadre du DeviceID (j'ai brouillé le nôtre dans l'exemple ci-dessous).

Voici un exemple de commande PowerShell pour afficher ces informations :

Get-CimInstance -Class win32_PnpSignedDriver `
| Select-Object Description, DeviceClass, DeviceID, DeviceName, Manufacturer `
| Select-String Flip

      
                

Ces informations sont également écrites dans le registre Windows :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_5740\

      
                

index=main event_platform=Win event_simpleName=DcUsbDevice* 
    DeviceInstanceId="USB\\VID_0483&PID_5740\\flip*"
| table _time
    , event_simpleName
    , ComputerName 
    , DeviceInstanceId 
    , DeviceManufacturer
    , DevicePropertyClassName
    , DevicePropertyDeviceDescription
    , DeviceSerialNumber
| sort 0 -_time

Lorsqu'un Flipper Zero est connecté à Windows émulant une souris (comme le module mouse jiggle), les choses deviennent un peu… moins évidentes.

Options de menu pour connecter un Flipper Zero en tant que souris USB :

Lorsqu'il est branché à Windows à l'aide de ce module, le Flipper émule le VID et le PID d'un récepteur USB Logitech Unifying - AKA l'un de ces mauvais garçons.

Un seul problème : il n'affiche pas de fabricant comme les récepteurs Logitech normaux ! Il ne fournit également qu'une description générique/par défaut. Dans l'exemple ci-dessous, j'ai à la fois un Flipper Zero fonctionnant comme périphérique d'entrée USB et un récepteur USB Logitech branché sur une machine Windows.

((Get-CimInstance -Class win32_PnPSignedDriver) `
| Where-Object {($_.Description -like '*USB*' -and $_.DeviceClass -match 'HIDClass')}) `
| Select-Object Description, DeviceClass, DeviceID, Manufacturer `
| Sort-Object DeviceID

      
                
Pay special attention to the Description and Manufacturer values.

Encore une fois, si vous capturez ces données dans SIEM ou EDR, voici un exemple de requête que nous avons trouvé et qui fonctionne dans CrowdStrike.

index=main event_platform=Win event_simpleName=DcUsbDevice*
    DeviceInstanceId="USB\\VID_046D&PID_C529\\*"
| where isnull(DeviceManufacturer)
| table _time
    , event_simpleName
    , ComputerName
    , DeviceInstanceId
    , DeviceManufacturer
    , DevicePropertyClassName
    , DevicePropertyDeviceDescription
    , DeviceSerialNumber
| sort 0 -_time

Ton geste, espèce de dauphin effronté…