Generarea de erori persistente in BIOS

830 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
830
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Generarea de erori persistente in BIOS

  1. 1. Generarea de erori PERSISTENTE in BIOS
  2. 2. INTRODUCEREMetode practice de injectare de cod in BIOS Persistenta adevarataComportamentul fluxului de date ROOTKIT Independenta fata de OS
  3. 3. PUTINA ISTORIE• Cele mai folosite metode de a obtine persistenta sunt……..• BACKDOOR-ul prin USER• BACKDOOR-ul prin KERNEL• Cum putem eficientiza aceste metode???
  4. 4. Bios- Soft cu caracteristici ciudate?• Preia controlul inaintea oricarei alte aplicatii• Nu prezinta interes pentru NICI UN SOFT ANTIVIRUS• Independent de OS (Nu tine cont de nimic, si de nici o instructiune a sistemului)• REZULTA…
  5. 5. BIOS-ul este…..UN VIRUS DE TIP BACKDOOR
  6. 6. De fapt ce e BIOS-UL??• BIOS –ul se traduce prin BASIC INPUT OUTPUT SYSTEM• El initializeaza transferul de date(RAM, North Bridge, etc.)• Capacitatea cipului:MINIM 256 Kb• De obicei este stocat in format EEPROM sau flash
  7. 7. STRUCTURA BIOS-ULUI• Este compus din diverse linii de tip LZH Compresate in module de 8 bit (un octet)• Exista si module necompresate..cum ar fi: – Bootblock:Cand incarca afisajul POST poate bloca anumite actiuni, pentru a pastra integritatea sistemului – Boot-area de tip URGENTA:Decompreseaza restul moduleleor pentru a facilita anumite actiuni de tip RECOVERY sau MotherBord FLASH SAFE DISK• Face verificari aleatorii a valorilor nominale ale sistemelor prezente pe masina de calcul..
  8. 8. Exemplu de elemente procesate
  9. 9. CUM FUNCTIONEAZA??• Prima comanda executata de CPU este un cod operational de 16 byte localizat la adresa F000:FFF0• Bootblock POST (Power On Self Test) urmeaza in executie.• Urmeaza decompresia fiecarui modul si se executa.• Se verifica si se executa modulele de tip PCI ROMs.• Se verifica sectoarele de boot de pe HDD si se executa, pornind OS-ul.
  10. 10. Schema Logica A BIOS-ului
  11. 11. Procesul de Update/Flash• BIOS –ul suporta update.• Producatorii ofera update-uri pentru a asigura o cat mai buna functionare• Update-urile se bazeaza, paradoxal pe cipul de South-Bridge si nu pe cipul vizat de update• Interfata CoreBOOT intervine in procesul de update al BIOS-ului
  12. 12. Unde putem face un pach?• BIOS –ul contine cateva linii de verificare a integritatii• Orice modificare in acele linii aduce dupa sine un sistem care nu mai poate porni• Eu folosesc doua technici• 1) Folosesc un soft de generare a fisierului• 2) Aletrez codul original si il codez in pachete de un octet• Cum pot obtine un pach in trei pasi simpli:• 1) Obtin validarea chipului folosind flashrom• 2) Fac un pach cu bypass si il compresez• 3) Re-flash
  13. 13. Unde putem interveni?• Practic oriunde:• f000:fff0: Este prima linie executata INT 0x19: Cheie rulata EXACT inaintea initializarii OS-ului• Inserarea unui modul ROM : Valoarea executata inaintea verificarii POST• Cea mai practica metoda gasita de mine: Nu compresati liniile care ar trebui compresate! (overload memory)• Nu va chinuiti sa gasiti cheile in sistem, toti le pun in acelasi loc• Solicitati aceleasi date de mai multe ori in timpul aceluiasi proces
  14. 14. Ce putem face de fapt?• Depinde. Ce resurse avem la dispozitie? Acces standard la HDD(Int 13h) Memory Manager (PMM)• network access ,modem sau alta piesa(Trebuie driver)• Eu am o metoda pt a altera datele de pe HDD:• 1) Modific fisierele de tip shadow (unix)• 2) Injectie de cod in datele binare ale Windows-ului
  15. 15. Codurile Shell• Aceste coduri sunt toate create in 16 biti• Partea proasta este ca folosim sistemul bios-ul mereu, si aceste coduri actioneaza fara a le putea controla.• Usor de decompresat: BIOS-ul executa un mediu de lucru care poate fi emulat cu fisiere COM sub DOS• Pseudocod-uri:• 1) Verifica semnalele de READY/STOP• 2) Verifica initializarea codurilor de sistem• 3) Ruleaza codul
  16. 16. Diagrama logica pentru un pseudocod
  17. 17. DEMO PE O MASINA VIRTUALA
  18. 18. DEMO PE O MASINA REALA
  19. 19. Ce putem imbunatati?• Putem folosi vulnerabilitatile sistemului BIOS pentru a insera comenzi si parametrii proprii.• Folosind o metoda proprie si cu ajutorul unui HEX editor,am modificat cipul, pentru a obtine o facilitate pe care o doream de mult• CONTROLUL PROPRIULUI PC, DE LA DISTANTA, CU TELEFONUL MOBIL.
  20. 20. CE CONTINE UN FISIER ROM??• Fisierul de update al bios-ului, este cu extensia ROM sau WPH (mai sunt si altele, dar acestea doua sunt cele mai intalnite)• In realitate fisierul nostru de update este O ARHIVA.• CAM ASA ARATA DACA O DECOMPRIMAM
  21. 21. CE CONTIE O “ARHIVA” ROM? 1.FN 2.FNT ACPI0.AML ACPI1.BIN ACPI2.ROM BB.ROM BB.ROM BIOSCODE0.ROM BIOSCODE1.ROM BIOSCODE2.ROM BIOSCODE3.ROM DECOMPC0.ROM DISPLAY0.ROM LOGO0.PGX LOGO1.PGX MISER0.ROM MOD_2A00.ROM OLD1.RLS ROBOEX32.DLL ROM.LOG ROM.SCR ROMEXEC0.ROM ROMEXEC1.ROM SETUPS0.ROM STRINGS0.ROM TEMP.ROM TEMPLAT0.ROM UPDATE0.ROM
  22. 22. Pe ce lucram in definitiv????• BIOSCODE0(1,2,3).ROM-aceste fisiere contin “inima” bios- ului. Aici vom defini si implementa functiiile• SETUPS0.ROM- aici vom edita modul in care bios-ul isi face setup-ul. Acest fisier este executat defapt cand facem update• STRINGS0.ROM –Aici confirmam valabilitatea si aranjamentul de string-uri, tot aici adaugam informatiile despre noile meniuri (Menu+Submenu)• TEMPLAT0.ROM- Aici avem pratea grafica. Aici definim textul, pozitia si help-ul noului meniu• UPDATE0.ROM- Acest fisier ajuta la RESTORE. Modificam data din el DATA si versiunea de release. Il comprimam in cadrul unei arhive functionale, si facem update.
  23. 23. Pe ce lucram in definitiv????• LOGO0.PGX- acest fisier contine brogress bar-ul de boot (prezent DOAR in anumite cazuri. NU este obilgatoriu sa existe)• LOGO1.PGX- ACEASTA este IMAGINEA care apare pe ecran.O editem, si punem ce poza vrem noi, cu conditia sa pastram proprietatile pozei originale• ROBOEX32.DLL – Acest fisier stie sa “spuna” sistemului de operare ca are un nou BIOS, cu noi parametri. ESTE OBLIGATORIU corelat cu UPDATE0.ROM.
  24. 24. SI…CAM ATAT• INTREBARI??

×