UART

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

WhiteIntel je pretraživač pokretan dark-web-om koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici kompromitovani od strane malvera za krađu podataka.

Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.

Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:


Osnovne informacije

UART je serijski protokol, što znači da prenosi podatke između komponenti po jedan bit u isto vreme. Za razliku od toga, paralelni komunikacioni protokoli prenose podatke istovremeno kroz više kanala. Uobičajeni serijski protokoli uključuju RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express i USB.

Općenito, linija se drži visoko (na logičkoj vrednosti 1) dok je UART u stanju mirovanja. Zatim, da bi signalizirao početak prenosa podataka, predajnik šalje start bit prijemniku, tokom kojeg se signal drži nisko (na logičkoj vrednosti 0). Zatim, predajnik šalje pet do osam podatkovnih bitova koji sadrže stvarnu poruku, praćenu opcionalnim bitom parnosti i jednim ili dva stop bita (sa logičkom vrednošću 1), zavisno od konfiguracije. Bit parnosti, koji se koristi za proveru grešaka, retko se viđa u praksi. Stop bit (ili bitovi) označavaju kraj prenosa.

Najčešća konfiguracija naziva se 8N1: osam podatkovnih bitova, bez parnosti i jedan stop bit. Na primer, ako želimo poslati karakter C, ili 0x43 u ASCII, u UART konfiguraciji 8N1, poslali bismo sledeće bitove: 0 (start bit); 0, 1, 0, 0, 0, 0, 1, 1 (vrednost 0x43 u binarnom obliku) i 0 (stop bit).

Hardverski alati za komunikaciju sa UART-om:

  • USB-za-serijski adapter

  • Adapteri sa čipovima CP2102 ili PL2303

  • Višenamenski alat poput: Bus Pirate, Adafruit FT232H, Shikra ili Attify Badge

Identifikacija UART portova

UART ima 4 porta: TX(Prenos), RX(Prijem), Vcc(Napon) i GND(Tlo). Možda ćete moći da pronađete 4 porta sa slovima TX i RX napisanim na PCB-u. Ali ako nema naznake, možda ćete morati sami da ih pronađete koristeći multimetar ili logički analizator.

Sa multimetrom i isključenim uređajem:

  • Da biste identifikovali GND pin koristite režim Test kontinuiteta, postavite zadnju sondi na tlo i testirajte crvenom sondom dok ne čujete zvuk iz multimetra. Na PCB-u se može naći nekoliko GND pinova, pa možda ste pronašli ili niste onaj koji pripada UART-u.

  • Da biste identifikovali VCC port, postavite režim DC napona i postavite ga na 20 V napona. Crna sonda na tlo i crvena sonda na pin. Uključite uređaj. Ako multimeter meri konstantni napon od 3.3 V ili 5 V, pronašli ste Vcc pin. Ako dobijete druge napon, pokušajte sa drugim portovima.

  • Da biste identifikovali TX port, DC režim napona do 20 V napona, crna sonda na tlo, crvena sonda na pin, i uključite uređaj. Ako pronađete da napon fluktuira nekoliko sekundi, a zatim se stabilizuje na vrednosti Vcc, verovatno ste pronašli TX port. To je zato što kada se uključi, šalje neke podatke za debagiranje.

  • RX port bi trebao biti najbliži od druga 3, ima najmanju fluktuaciju napona i najmanju ukupnu vrednost od svih UART pinova.

Možete da pomešate TX i RX portove i ništa se neće desiti, ali ako pomešate GND i VCC port možete da uništite krug.

Na nekim ciljnim uređajima, UART port je onemogućen od strane proizvođača onemogućavanjem RX ili TX ili čak oba. U tom slučaju, može biti korisno pratiti veze na štampanoj ploči i pronaći neku tačku prekida. Jak znak o potvrdi neprepoznavanja UART-a i prekida kola je provera garancije uređaja. Ako je uređaj isporučen sa nekom garancijom, proizvođač ostavlja neke debag interfejse (u ovom slučaju, UART) i stoga, mora da je isključio UART i ponovo ga povezao tokom debagiranja. Ove prekidačke pinove možete povezati lemljenjem ili jumper žicama.

Identifikacija Baud Rate-a UART-a

Najlakši način za identifikaciju ispravnog baud rate-a je da pogledate izlaz TX pina i pokušate da pročitate podatke. Ako podaci koje primate nisu čitljivi, pređite na sledeći mogući baud rate dok podaci ne postanu čitljivi. Možete koristiti USB-za-serijski adapter ili višenamenski uređaj poput Bus Pirate-a za ovo, uparen sa pomoćnim skriptom, poput baudrate.py. Najčešći baud rate-ovi su 9600, 38400, 19200, 57600 i 115200.

Važno je napomenuti da u ovom protokolu morate povezati TX jednog uređaja sa RX drugog!

CP210X UART to TTY Adapter

Čip CP210X se koristi u mnogim prototipnim pločama poput NodeMCU (sa esp8266) za serijsku komunikaciju. Ovi adapteri su relativno jeftini i mogu se koristiti za povezivanje sa UART interfejsom cilja. Uređaj ima 5 pinova: 5V, GND, RXD, TXD, 3.3V. Pazite da povežete napon podržan od strane cilja kako biste izbegli bilo kakvu štetu. Na kraju povežite RXD pin adaptera sa TXD cilja i TXD pin adaptera sa RXD cilja.

U slučaju da adapter nije detektovan, proverite da li su drajveri CP210X instalirani na host sistemu. Kada je adapter detektovan i povezan, mogu se koristiti alati poput picocom, minicom ili screen.

Za listanje uređaja povezanih sa Linux/MacOS sistemima:

ls /dev/

Za osnovnu interakciju sa UART interfejsom, koristite sledeću komandu:

picocom /dev/<adapter> --baud <baudrate>

Za minicom, koristite sledeću komandu za konfiguraciju:

minicom -s

Konfigurišite podešavanja poput brzine prenosa i imena uređaja u opciji Podešavanje serijskog porta.

Nakon konfiguracije, koristite komandu minicom da biste pokrenuli UART konzolu.

UART putem Arduino UNO R3 (Uklonjive Atmel 328p ploče sa čipom)

U slučaju da UART serijski do USB adapteri nisu dostupni, Arduino UNO R3 može se koristiti uz brzi trik. Pošto je Arduino UNO R3 obično dostupan bilo gde, ovo može uštedeti puno vremena.

Arduino UNO R3 ima USB do serijskog adaptera ugrađenog na samoj ploči. Da biste uspostavili UART vezu, jednostavno izvadite Atmel 328p mikrokontroler čip sa ploče. Ovaj trik funkcioniše na varijantama Arduino UNO R3 koje nemaju Atmel 328p zalemljen na ploči (u njoj se koristi SMD verzija). Povežite RX pin Arduina (Digitalni Pin 0) sa TX pinom UART interfejsa i TX pin Arduina (Digitalni Pin 1) sa RX pinom UART interfejsa.

Na kraju, preporučuje se korišćenje Arduino IDE-a za dobijanje serijske konzole. U alatkama u meniju, izaberite opciju Serijska konzola i postavite brzinu prenosa prema UART interfejsu.

Bus Pirate

U ovom scenariju ćemo prisluškivati UART komunikaciju Arduina koji šalje sve ispisane poruke programa na serijski monitor.

# Check the modes
UART>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. KEYB
9. LCD
10. PIC
11. DIO
x. exit(without change)

# Select UART
(1)>3
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
10. BRG raw value

# Select the speed the communication is occurring on (you BF all this until you find readable things)
# Or you could later use the macro (4) to try to find the speed
(1)>5
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE

# From now on pulse enter for default
(1)>
Stop bits:
1. 1 *default
2. 2
(1)>
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1)>
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)

(1)>
Clutch disengaged!!!
To finish setup, start up the power supplies with command 'W'
Ready

# Start
UART>W
POWER SUPPLIES ON
Clutch engaged!!!

# Use macro (2) to read the data of the bus (live monitor)
UART>(2)
Raw UART input
Any key to exit
Escritura inicial completada:
AAA Hi Dreg! AAA
waiting a few secs to repeat....

Dumpovanje Firmware-a pomoću UART konzole

UART konzola pruža odličan način rada sa osnovnim firmware-om u okruženju u realnom vremenu. Međutim, kada je pristup UART konzoli samo za čitanje, to može uvesti mnogo ograničenja. Na mnogim ugrađenim uređajima, firmware je smešten u EEPROM-ima i izvršava se u procesorima koji imaju nestalnu memoriju. Stoga se firmware čuva samo za čitanje jer je originalni firmware tokom proizvodnje unutar samog EEPROM-a i bilo koji novi fajlovi bi se izgubili zbog nestalne memorije. Stoga, dumpovanje firmware-a je vredan napor prilikom rada sa ugrađenim firmware-ima.

Postoji mnogo načina da se to uradi, a odeljak SPI pokriva metode za izvlačenje firmware-a direktno iz EEPROM-a sa različitim uređajima. Iako se preporučuje prvo pokušati dumpovanje firmware-a sa UART-om jer dumpovanje firmware-a sa fizičkim uređajima i spoljnim interakcijama može biti rizično.

Dumpovanje firmware-a sa UART konzole zahteva prvo pristup bootloaderima. Mnogi popularni proizvođači koriste uboot (Universal Bootloader) kao svoj bootloader za učitavanje Linux-a. Stoga, pristup uboot-u je neophodan.

Da biste pristupili bootloaderu, povežite UART port sa računarom i koristite bilo koji alat za serijsku konzolu i držite isključeno napajanje uređaja. Kada je postavka spremna, pritisnite taster Enter i držite ga. Na kraju, povežite napajanje uređaja i pustite ga da se podigne.

Ovim ćete prekinuti uboot učitavanje i dobićete meni. Preporučuje se da razumete uboot komande i koristite meni pomoći da ih izlistate. Ovo bi mogla biti help komanda. Pošto različiti proizvođači koriste različite konfiguracije, neophodno je razumeti svaku od njih posebno.

Obično, komanda za dumpovanje firmware-a je:

md

koji označava "damp memorije". Ovo će izbaciti memoriju (EEPROM sadržaj) na ekran. Preporučuje se beleženje izlaza serijske konzole pre početka postupka kako bi se uhvatilo izbacivanje memorije.

Na kraju, jednostavno uklonite sav nepotreban sadržaj iz datoteke zapisa i sačuvajte datoteku kao ime_datoteke.rom i koristite binwalk za izvlačenje sadržaja:

binwalk -e <filename.rom>

Ovo će izlistati moguće sadržaje iz EEPROM-a prema potpisima pronađenim u hex datoteci.

Međutim, važno je napomenuti da nije uvek slučaj da je uboot otključan čak i ako se koristi. Ako taster Enter ne radi ništa, proverite različite tastere poput tastera Space, itd. Ako je bootloader zaključan i ne može se prekinuti, ovaj metod neće raditi. Da biste proverili da li je uboot bootloader za uređaj, proverite izlaz na UART konzoli prilikom pokretanja uređaja. Moglo bi se pomenuti uboot prilikom pokretanja.

WhiteIntel je pretraživač pokretan dark web-om koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici napadnuti od strane malvera za krađu podataka.

Njihov primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.

Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated