24
Generarea de erori PERSISTENTE in BIOS

Generarea de erori persistente in BIOS

  • Upload
    defcamp

  • View
    514

  • Download
    9

Embed Size (px)

DESCRIPTION

 

Citation preview

Generarea de erori PERSISTENTE in BIOS

INTRODUCERE

 Metode practice de injectare de cod in BIOS

 Persistenta adevarata

 Comportamentul fluxului de date ROOTKIT

 Independenta fata de OS

PUTINA ISTORIE

• Cele mai folosite metode de a obtine persistenta sunt……..

• BACKDOOR-ul prin USER• BACKDOOR-ul prin KERNEL

• Cum putem eficientiza aceste metode???

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…

BIOS-ul este…..

UN VIRUS DE TIP BACKDOOR

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

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..

Exemplu de elemente procesate

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.

Schema Logica A BIOS-ului

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

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

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

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

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

Diagrama logica pentru un pseudocod

DEMO PE O MASINA VIRTUALA

DEMO PE O MASINA REALA

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.

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

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

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.

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.

SI…CAM ATAT

• INTREBARI??