
Ideja për të krijuar një instrument të vogël për analizën e rrjeteve WiFi më shtyu .
Faleminderit atyre për idenë. Pikërisht kisha kohë bosh.
I gjithë punimi u krye si hobi me qëllimin për të marrë kënaqësi dhe për të zgjeruar njohuritë e mia në teknologjitë rrjetore. Ngadalë, nga 1..4 orë në javë, që nga fillimi i këtij viti.
Nuk kisha planifikuar një përdorim praktik. Domethënë, ky nuk është një instrument për hakera.
Aktualisht, të gjitha funksionalitetet e menduara funksionojnë. Të gjitha burimet, plotësisht të gatshme për ndërtim, . Po ashtu, aty ka dhe udhëzime për ndërtimin dhe të tjera. Në këtë shënim, nuk do të dublohem informacionin që është publikuar në github. Do të flas vetëm për atë që mendoj se është e nevojshme të përshkruhet veçmas.
Mendimi im mbi "instrumentin universial" dhe arsyeja e zgjedhjes së ESP32
Nuk po pretendoj se kam të vërtetën. Ajo është e ndryshme për çdo njeri. Do përpiqem të justifikoj zgjedhjen time të "harduerit".
një kombinim i Linux (fillimisht Raspberry Pi) + "periferi" në formën e një kontrolluesi (STM32) + CC1110 (nërmarrja 8051) dhe plani për të përfshirë gjithçka që është e mundur (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) më duket i papërshtatshëm për mua. Megjithatë, duket se do të mbetet privat dhe i mbyllur (flipper-zero github "Kjo organizatë s'ka repozita publike.") dhe shkova drejt harduerit jo shumë të zakonshëm.
Ndoshta nuk kam të drejtë, dhe në të ardhmen autorët do të publikojnë kodin e softuerit në një qasje të hapur. Por, nëse jo, atëherë nuk do ta bleja një harduer të tillë pa kodin e burimit.
Kërkesat e mia për "instrumentin"
Kutia duhet të jetë e vogël (sa më e vogël, aq më mirë).
Prandaj:
- Akumulatori i integruar nuk është i nevojshëm. Me një rrymë > 100 mA gjatë funksionimit me Wifi, akumulatori i integruar ose do të jetë shumë i madh, ose do të zgjasë për pak kohë. Prandaj, le të ushqehet "kutia" nga një power bank standard. Në çdo rast, unë gjithmonë kam një power bank në xhep/automjet.
- Të mbaj në brendësi të "kutisë" Linux me instrumente, të shkruar gjatë shumë viteve në të gjitha gjuhët në prani të një ekrani të vogël dhe një seti të kufizuar butonash të kontrollit nuk ka kuptim. Mund të shikohen/përpunohen rezultatet dhe në një laptop normal me një tastierë dhe ekran të plotë.
- Komponentët duhet të jenë të lehtë për t'u gjetur dhe të njohur gjerësisht (SDK të disponueshëm, shumë shembuj dhe dokumentacion).
Si rezultat, pĂ«r mua, zgjedhja ishte e qartĂ« â ESP32.
Për të gjitha detyrat e shpallura në artikull, që më shtynë të veproj, mundësitë e ESP32 janë plotësisht të mjaftueshme. Megjithatë, maksimumi që dua të bëj më shumë është:
- TĂ« luaj me Bluetooth.
- Të luaj me diapazonin 433mHz me harduer më të thjeshtë (vetëm modulimi i amplitudës, që është mjaft i përshtatshëm për nevoja praktike).
Një lugë helmi në ESP32
- SDK (IDF) i ESP32 është disi i pasaktë.
- Disa funksionalitete (stoku WiFi, për shembull) vijnë pa kodin burimor në formën e biblioteka statike të ndërtuara.
- Nuk mbështetet diapazoni 5gHz dhe ka disa kufizime dhe pasaktësi në punën me WiFi.
Por çmimi/madhësia e kompensojnë këto disavantazhe.
Funksionaliteti kryesor i softuerit
Shkurt, do tĂ« pĂ«rshkruaj funksionalitetin dhe mendimin tim pĂ«râŠ
Menaxhimi i cilësimeve dhe ngarkimi i skedarëve nga SD
Të gjitha menaxhimet e jashtme bëhen përmes një faqeje Web të thjeshtë, e cila aktivizohet në një pikë menuje të veçantë. ESP32 aktivizohet në modin WiFi AP dhe jep një faqe me një adresë IP fikse.
Megjithëse bërthamat e ESP32 janë mjaft të shpejta, siç treguan eksperimentet, funksionimi i një shërbimi Web të integruar dhe, për shembull, modit të routerit nuk është shumë i përshtatshëm. Prandaj, menaxhimi dinamik nuk është i mundur dhe në të gjitha modet e tjera faqja nuk është e disponueshme.
Për më tepër, për qëllime kërkimore, menaxhimi dinamik nuk është i nevojshëm.
Modi i punës me paketat Beacon
Modet janë të zakonshme dhe jo shumë interesante. Janë bërë "për shkak se është e mundur". Për të plotësuar.
Shembuj ka në shembujt zyrtarë të Espressif.
Modi i skanimit të listave AP.
Në thelb, çdo smartphone ka këtë aftësi.
Dhe në këtë mod, lista e AP ruhet.
Beacon spammer.
ESP32 fillon si AP me SSID të fshehur dhe MAC të rastësishëm dhe fillon të dërgojë [beacon frame] sipas një liste të përgatitur paraprakisht të SSID-ve (të krijuara manualisht ose të marra më parë gjatë skanimit të listës AP)
Modi i sniffing të paketave WiFi
Zhvilluesit e Espressif shtuan mundësinë që softueri aplikativ të marrë përmes funksionit të callback të gjitha paketat WiFi "që kalojnë në ajër". Në të vërtetë jo të gjitha, pasi mund të vendoset vetëm për një kanal të caktuar.
Për përpunimin e thirrjes së funksionit të callback vendosen kufizime të rrepta kohore. Nëse për modin e mbledhjes së statistikave të thjeshta kjo nuk shkakton probleme, për modin e regjistrimit të skedarit PCAP në SD kartë duhej të merremi me të, organizimi i regjistrimit përmes një rradhe në memorie dhe semaforëve. Me atë karakteristikë, që procesi që thërret callback punon në një bërthamë, ndërsa procesi që kryen regjistrimin në SD është në një tjetër.
Kur në "ekran të zhurmshëm" disa paketat humbasin (nuk ka hapësirë në rend dhe ato hidhen poshtë), por në një "ekran tipik" apartamentesh gjatë mbrëmjes (5..7 AP në përputhje) regjistrimi në PCAP arrin të realizohet pa humbje paketash.
Për më tepër, për monitorimin dhe regjistrimin e PCAP ka një mod të filtrimit sipas listës së MAC në heading e paketave.
PĂ«r shembull, mund tĂ« ndjekĂ«sh paraqitjen e njĂ« personi nĂ« klub/kafe, para se ai tĂ« hyjĂ« ose tĂ« shfaqet nĂ« fushĂ«. Pothuajse askush nuk e ndalon WiFi-nĂ« dhe lidhjet automatike me AP tĂ« njohura. (Tani unĂ« e çâkonekte..)
Të shohësh trafikun e regjistruar në Wireshark është edukative dhe interesante për të kuptuar se si funksionon gjithçka.
ReĆŸimi i punĂ«s me paketat deauth
PĂ«r default, dĂ«rgimi i kĂ«tyre paketave Ă«shtĂ« i ndaluar nĂ« bibliotekĂ«n libnet80211.a, e cila vjen pa burime. Por kjo nuk Ă«shtĂ« e vĂ«shtirĂ« pĂ«r tâu modifikuar, duke ndrequr disa byte. NĂ« fillim dyshoja nĂ«se duhet ta ndaja patch-in. Por pasi vizitova vende tĂ« ndryshme me modin e skanimit tĂ« burimeve tĂ« dĂ«rgimit [deauthentication frame], mendova: "çfarĂ« do tĂ« thoshte". PĂ«r mĂ« tepĂ«r, dĂ«rgimi i kĂ«tyre paketave nĂ« esp8266 nuk Ă«shtĂ« i bllokuar dhe ekzistojnĂ« ndĂ«rtimet nĂ« github pĂ«r esp8266.
Në shumë vende (nuk do të flas për ku) përdoret shtypja e AP-ve të padëshiruar përmes këtij metode. Dhe nuk janë "huliganë"...
Edhe unë isha habitur se pse ndonjëherë ndarja e Internetit me telefonin tim nuk funksiononte...
ReĆŸimi i ndjekjes sĂ« numrit dhe RSSI tĂ« tillave paketash Ă«shtĂ« shumĂ« i dobishĂ«m pĂ«r tĂ« kuptuar "ku nuk i pĂ«lqejnĂ« AP-tĂ« e huaja".
ReĆŸimi router
Kjo funksion është ndoshta më interesante nga të gjitha për hulumtim.
ESP32 mbështet punën e njëkohshme në modin STA + SoftAP. Prandaj, në të mund të implementosh një router klasike NAT.
Për mbështetje të stack-ut rrjetor, Espressif përdor fork (gati pa ndryshime) të bibliotekës lwip.
Megjithatë, për default, në ndërtimin standard, në bibliotekën esp-lwip mes interface netif 'ap' (SoftAP) dhe 'st' (STA) nuk parashikohet përcjellja.
Natyrisht, mund ta bësh edhe pa NAT, por lind problemi i lidhjes së dy ose më shumë STA në interface 'ap' dhe sinkronizimit të adresave IP nga interface rrjetor 'st' në 'ap'. Pra, vështirësitë nuk vlejnë dhe është më e thjeshtë përmes NAT.
Për më tepër, ekziston një fork i esp-lwip nga martin-ger në të cilin është shtuar një implementim i thjeshtë NAT për IP4.
Edhe pse duhej ta modifikoja atë pastaj në mënyrë estetike (sipas mendimit tim, ishte më e lehtë pa fork projektin, por përmes LWIPHOOK funksionet, të cilat përcaktohen gjatë ndërtimit), por dembelizmi mposhti dhe varianti nga martin-ger përdoret siç është.
Në modin router shikohet trafiku IP4 hyjës dhe dalës.
Veçanërisht, prej tij nxirren për t'u shfaqur në ekran dhe mbledhje statistikash në skedarin:
- Emri i pajisjes që u lidh me SoftAP ESP32 (paketat DHCP)
- URL nga kërkesat DNS (UDP port 53) nga pajisja e lidhur me SoftAP ESP32.
Për më tepër, mund të aktivizohet regjistrimi i trafikut në skedarin PCAP.
Ky mod është shumë i dobishëm, për shembull, për të kuptuar se çfarë po dërgon telefoni juaj në rrjet dhe ku po shkon gjatë kësaj.
Mund të mendohet edhe për mënyra të tjera përdorimi të këtij modi duke marrë parasysh mundësinë e menaxhimit të plotë programatik të trafikut hyjës dhe dalës të SoftAP ESP32 në nivelin e interface rrjetor: Ethernet header (destMAC[6]+srcMAC[6]+type[2]) + payload (IP4, IP6, DHCP, etj. type).
Në parim, ESP32 e menaxhon mjaft mirë funksionin WiFi->WiFi router, duke kaluar normalisht trafikun pa vonesa të ndjeshme. Subjektivisht, vonesat në telefonin e lidhur përmes router në ESP32 nuk janë të dukshme.
Fatkeqësisht, në API-në e Espressif nuk ka mundësi të vendosësh një filtrin sipas MAC për ata që lidhen me SoftAP EPS32. Në vend të kësaj, ofrohet të thuash "lamtumirë" (esp_wifi_deauth_sta) STA të lidhur që janë "të padëshiruar".
Filtrimi sipas MAC për ata që lidhen STA duhej bërë përmes thirrjes esp_wifi_deauth_sta()
Në përfundim
Edhe pse nuk kam gjetur asgjĂ« tĂ« re nĂ« kontekstin e punĂ«s me ESP32, ndoshta ndokujt rezultati (burimet) do tâi duket interesant.
Dëshiroj të theksoj se kodin e kam shkruar ekskluzivisht për qëllime edukative. Për "hacking" etj. është qëllimisht bërë jo shumë i lehtë.
Nuk kam bërë një bord shtypi, pasi për të lidhur komponentët e gatshëm me tel, iu deshën rreth 1.5-2 orë.
Dhe nëse po e bëj, duhet të mos e mbledh nga blloqe të gatshme, por nga komponentë të veçantë. Atëherë përmasat do të ishin edhe më të vogla.
Burimi: habr.com
