[Translated by Markus Kallatsa (KYBS2001 course assignment at JYU.FI)]
Minut onkin jo esitelty
Nimeni on Stefan Widmann
ja varmaan voin näyttää diaesitykseni?
Hei, diat?
*naurua*
Olen VGA:lla siinä.
*huminaa*
Niin...
[mutinaa]
Okei, sen aikaa kun odottelemme, että diani ilmestyvät jotenkin
Kuka on nähnyt uskomattoman puheen
Ciscon VoIP-puhelimien hakkeroinnista viime vuonna
joko livenä tai videolta?
Okei, jotkut teistä.
Kun mietimme tätä puhetta
Ciscon VoIP-puhelimissa on sulautettu
Linux-käyttöjärjestelmä, mutta niiden ei ainoastaan
tarvitse toimia Linux-käyttöjärjestelmän kanssa, vaan lisäksi
DSP:n laiteohjelmiston kanssa.
Joten haluan kertoa, että siinä ei ole ainoastaan yksi järjestelmä,
vaan useampia järjestelmiä. Useat alijärjestelmät sisältävät laiteohjelmiston
Diat olisivat kivoja, mutta voimme aloittaa ilman niitä.
Joten, mistä puhummekaan tänään?
Ensiksi, puhumme motivaatiosta ja siitä, miksi meidän tulisi analysoida laiteohjelmistoja.
Tämän jälkeen meidän tulisi olla pystyttävä tekemään sitä, joten meidän on tuotava esille joitain edellytyksiä
Sitten syvennymme aiheeseen, yritämme katsoa sitä, miten saamme laiteohjelmiston
miten voimme analysoida sitä ja miten voimme muokata sitä
Hmm. Angel: Olemme pahoillamme pienestä teknisestä ongelmasta, tutkimme sitä. Se on toiselle puheelle. Olen pahoillani.
[puhuu saksaa]
Hmm
Okei, joten voimme mennä ilman dioja, se käy.
Aloitetaan motivaatiosta, miksi haluamme tehdä laiteohjelmistoanalyysiä.
Kun puhuin asianajajani kanssa, ymmärsin, että minun täytyy siivota 90 % motivaatiodioistani.
Ja se mitä jää jäljelle, voi tehdä yhteentoimivuuden saavuttamiseksi.
*naurua*
Voit tehdä sen, jos haluat eroon virheistä, ja valmistaja
ei halua tai ei kykene. Ja eräs mielenkiintoinen seikka
keskustelussa on se, liittyen forensiikkaan, tuhansien laitteiden tutkiminen
päivittäisessä elämässä. Tekevätkö he vain sen, mitä täytyy tehdä?
Herald: Kyllä, mutta silti haemme videoenkelin korjaamaan ongelman. Meillä pitäisi
olla semmoinen täällä yhden minuutin sisällä. Edelleen, pahoittelut.
Meillä on nyt sertifioitu Powerpoint-asiantuntijamme Nick Farr lavalla
*aplodit*
Se kestää vain minuutteja nyt
Ehkä voimme jatkaa. Joten, kerron mitä edellytyksiä tulisi
olla, kun analysoinnissa lähtee liikkeelle. Sinulla tulisi vähintään olla hyvä tietämys
sulautettujen järjestelmien arkkitehtuurista. Sinun olisi pitänyt käsitellä oheislaitteita,
väyläliitäntöjä ja niin edelleen. Sinun pitäisi pystyä lukemaan
ja kirjoittamaan Assembler-koodia. Jotkut saattavat sanoa:
minulla on todellä hyvä purkuohjelma, mikä on hyvä,
jos se sopii sinulle, mutta, älä luota siihen, että saatavana on purkuohjelma,
joka sopii juuri kyseiseen arkkitehtuuriin, jonka parissa työskentelet
Erityisesti, jos työskentelet matalalla tasolla rekisteriasioiden parissa
Ja mielestäni, purkuohjelman tuotos hämmentää sinua enemmän kuin auttaa
Tulet purkamaan ehkä, C:n ajonaikaisia kirjastoja, jotka on optimoitu olemaan mahdollisimman pieniä
jotka voivat olla todella haastavia purkuohjelman tuotoksessa.
Jos haluat oppia käytännössä miten sulautetut järjestelmät toimivat, voi olla hyvä idea hommata
Arduino tai mikä vaan. Kirjoitat hieman C-koodia, työskentelet laitteistotasolla
Sitten vaan käännät sen ja katsot, miltä purettu näyttää.
On hyvä olla laitelukija tai ohjelmoija, kuten galib. Ongelma on siinä, että ne ovat kalliita.
Jos luulet, että teemme laiteohjelmistoanalyysiä, se voi olla arvokas sijoitus hakkeritilallesi
Ja viimeisenä mutta ei vähäisimpänä, mitä tarvitse eniten, on aikaa.
Aika, aika, aika. Se voi viedä tunteja, päiviä ilman edistystä, joten olkaa kärsivällisiä
*naurua*
Ketään vapaaehtoisia tekemään dioja tähän?
Vannon, että se toimi täydellisesti ulkoisella monitorillani
Joo?
Joten joudun hakemaan USB-tikkuni, odottakaa hetki.
Ei hätää, olemme joustavia [viheltää]
Onko täällä ketään, jolla olisi tietokonetta lähettyvillä?
Herald: Sillä välin kun selvitämme tätä, on hyvä hetki muistuttaa teitä kaikkia
että etsimme vieläkin joitain enkeleitä. Voisit olla videoenkeli, joille
on kova kysyntä juuri nyt. Tai voisit tehdä haluamiasi töitä.
Voit työskennellä yhdessä tai kahdessa vuorossa. Olisi arvostettavaa
koska tarvitsemme vapaaehtoisia tämän tapahtuman järjestämiseen. Myös, jos toit joitain juomia tänne,
voisi olla hienoa, jos voisit viedä ne pois mukanasi. Ja laittaa ne pieneen
säilytyskoteloon, joita on eri puolilla rakennusta. Luota minuun kun saatte valmiiksi,
voit tehdä tämän tiedotuksen. Onko kaikki kunnossa? Ei oikeastaan.
*naurua*
Näyttää hyvältä kannettavalla tietokoneella
Haluatko pitää lyhyen esittelyn uudesta Ubuntun työpöytäversiosta?
Koska en hommat tuota ollenkaan.
Joo, peilinäytöt
Neljästä kolmeen diaa
Nyt edistymme
*aplodit*
Nauttikaa puheesta!
Loistavaa, nyt diojen kanssa.
Pieni tiedotus, puheen lopuksi on 5 lisäminuuttia puhetta.
Tehdään niin. Unohtakaa keltaiset palkit.
*naurua*
Ei oikeasti.
Korkean tason laitteet. Paljon monimutkaisuutta. Kyllä!
Täydellistä, kiitos, ilman keltaisia palkkeja, kiitos.
Okei. Joten puhuimme ennakkotiedoista, joten syvennymme aiheisiin
Ensiksi, meidän täytyy hankkia laiteohjelmisto. Menemme ei-invasiivisesta invasiiviseen.
Koska ensimmäinen asia, jota haluamme yrittää, on päästä laiteohjelmistoon käsiksi avaamatta laitetta.
Yritämme ensiksi ladata puhtaan binäärin valmistajalta.
Tai joltakulta muulta, joka on purkanut binäärin ja laittanut sen internettiin.
Voit yrittää ladata käynnistyslevyn, USB, CD-ROM, käynnistysmuistitiedoston tai mitä vaan mitä valmistaja tarjoaa
ja purkaa sen, esimerkiksi, WinRARilla Windowsilla tai vaan liittää Linuxiin.
Hae tiedostoja nimeltä .bin, .hex, .s19, .mot kuten Motorola, .rom tai .raw.
Useimmiten binääri, joka tarkoittaa .bin, .rom
Ei-binääritiedostot tulisi muuntaa bin-tiedostoiksi, esimerkiksi muuntimien, kuten hex2bin avulla.
Jos tämä ei toimi, voimme ehkä saada päivitysohjelman valmistajalta
Tavallisesti ne ovat Windowsille tehtyjä .exe-tiedostoja.
On olemassa erilaisia päivitysohjelmiston tyyppejä. Ensinnäkin itsepurkavia arkistoja.
Se voi olla asennusohjelma myös, kuten Installshield tai mikä vain
Se olla päivitysohjelma, yksinkertainen .exe-tiedosto ilman asennuksia, ainoastaan sisältäen levykuvan.
Se saatta olla päivitysohjelma, joka lataa levykuvan tai se saattaa olli jokin muista
mutta pakattu suoritettavalla paketoijalla, kuten UPX tai PECompact.
Mennään hieman yksityiskohtiin.
Joten, jos se on itsepurkautuva arkistohaku allekirjoitukselle, kuten RARSFX tai PK.
Voit purkaa ne, esimerkiksi uudelleennimeämällä PK:n, joka sisältää .zip-tiedoston, jonka voit purkaa.
Jos se on asennusohjelma, kuten Installshield, on olemassa erikoispurkutyökaluja, mutta ongelma on siinä
että ne ovat vaikeakäyttöisiä ja erityisesti versiokohtaisia. Se saattaa toimia tai olla toimimatta.
Paras tapa on vain antaa sen asentaa ja hakea asennetuista tiedostoista
puhdasta levykuvaa tai päivitysohjelmaa. Jos se on päivitysohjelma, joka sisältää laiteohjelmiston levykuvan,
voimme hakea levykuvaa suoritettavasta tiedostosta käyttäen mieleistä heksaeditoriasi.
Ehkä päivitysohjelma kirjoittaa dataa tiedostoon, väliaikaiseen tiedostoon useimmiten ja poistaa
sen käytön jälkeen. Voit käyttää ProcessMonitoria, joka on kuten Strace, mutta Windowsilla.
ja voit katsoa mitä tiedostoja levyllä on kirjoitettu ja yrittää kaapata niitä
ennen kuin ne poistuvat. Ehkä päivitysohjelma vain tarkistaa laitettasi, joten se on
vain pieni latausohjelma. Tarkistamalla laitetyyppisi, vilkaise valmistajan ftp-sivua
ja lataako se levykuvaa, jos sellainen on saatavilla.
Jos se lataa levykuvaa tiedostoon, käytä ProcessMonitoria uudelleen.
Jos se lataa RAM-muistiin, sinun täytyy käyttää debuggeria ja dumpata se muistista.
Jos sinulla on pakattu päivitysohjelma, joka tietenkin on tehty säästämään tilaa.
Jos se on standardi UPX, voit ladata UPX:n ja käyttää "UPX -d":tä purkaaksesi sen.
Joskus valmistaja rikkoo UPX:n lisenssiä ja muokkaa UPX:ää poistamalla
olennaista tietoa tiedostosta, jotta siitä saadaan pakkauskelvoton. Joten sinun tarvitsee käyttää erityistä purkajaa.
Muut suoritettavat pakkaajat ovat useimmiten suunniteltu kompressoimattomiksi.
Tällöin tarvitse erikoispurkajaa myöskin.
Eräs haaste voi tulla siinä, jos päivitysohjelma sisältää kompressoituja levykuvia.
Ne ovat tavallaisesti purettu ennen kuin levykuva on kirjoitettu laitteelle, joten voimme vain katsoa
prosessimuistia debuggerin avulla ja dumpata sen.
Haasteellisempaa on se, kun laiteohjelmisto lähetetään kompressoitavaksi laitteelle
Joten täytyy käyttää invasiivisia tekniikoita, joista puhun myöhemmin
On hyvä laitaa nuuskija valmiiksi, kun ensimmäisen kerran yhdistät laitteen PC-tietokoneeseesi.
Ehkä laitteen mukana tuleva lempi-bloatware haluaa päivittää sen välittömästi
Mitä voit tehdä nuuskiaksesi siirtoja? Windows XP:llä, pahoittelut vain XP:llä,
on TraceSPTI, fantastinen työkalu SPTI SCSI PassThrough Interfacen jäljittämiseen.
Mietit SCSI:tä? Minulla ei ole pelkästään SCSI-laitteita, mutta kommunikoinnista suurin osa on tehty käyttäen
tätä prokollaa Windowsilla. Tunnistaaksesi S/ATA USB -laitteita, etenkin, jos ne ovat ATAPI,
Linux-puolella voit käyttää Wiresharkia jäljittääksesi kommunikaation, koska Wireshark
Linuxilla voi jäljittää ja nuuskia USBia. On myös muita työkaluja, kuten Bushound ja niin edelleen
katsoaaksesi väylien kommunikaatiota. Ongelma on siinä, että ne ovat tavallisesti erittäin kalliita.
Ongelma nuuskiessasi päivityssiirtoa ja rekonstruktoroidessa levykuvaa on se,
että se on kuin pulmapeli. Et tiedä miten levykuva buildataan ja miten se tehdään oikein.
Jos sinulla ei ole laiteohjelmistoa vielä, se voi mennä invasiiviseksi nyt.
Etsimme sarjaliitäntöjä, joskus niihin pääsee käsiksi laitetta avaamatta,
joskus ei. Onko meillä sulautettu Linux-järjestelmä? Kyllä, voimme etsiä sarjakonsolia.
Ehkä meidän täytyy käyttää JTAGia. 27C3:ssa oli hyvä puhe JTAGista, sarjamuotoisesta flashista ja niin edelleen,
joten laitan linkin tähän.
Ei siis vieläkään laiteohjelmistoa? Hae ruuvimeisseli, mitätöidään takuut.
Avaamme laitteen ja etsimme muistilaitteita PCB:stä.
Jos sinulla on todella vanha laite, kohtaat ehkä EPROMseja tai jopa PROMseja, 27-kymppisiä
Jos se on vähän uudempi, saatat nähdä EEPROMseja ja flashia. 28, 29, 39, 49 jotain ja
isoja 48-pinnisiä flash-laitteita, esimerkiksi useille eri nimillä
Mukava nähdä, että sarjamuistit, ne 8-pinniset laitteet 25..., joskus 24...
ovat hiljattain tulossa standardiksi. Niistä on helppo poistaa juotos ja uudelleenjuottaa
ja saatavilla on todella halpoja lukijoita ja ohjelmoijia. Mutta pyydän, vaikka jotkut sanovat, että voimme
tehdä sen järjestelmässä ilman sirun juottamista, älkää tehkö niin. Se voi johtaa todella suuriin ongelmiin.
Jotta asia olisi hieman vaikemapi, laiteohjelmisto voi olla sisällytettynä sirun sisäisiin muisteihin.
Voit käyttää omaa ohjelmointirajapintoja laiteohjelmiston lukemiseen, JTAGIa totta kai.
Joissain laitteissa käynnistyslatausohjelmat ovat naamioidussa ROM-muistissa. Voit yrittää käyttää niitä.
Jos mikään näistä lähestymistavoista ei onnistu, voit yrittää mikroluotausta.
Viime vuoden kongressissa oli puhe matalakustanteisten sirujen mikroluotauksesta, olen
liittänyt linkin tähän. Joten ihan vain siksi, että täydellisyyden vuoksi olen maininnut CPLD:t ja FPGA:t.
Tiedätte, että CPLD:t on rakennettu käyttäen sisäisiä EEPROMeja
FPGA:t, kenttäohjelmoitavilla porttiryhmillä on sisäinen SRAM ja ulkoinen sarjakonfiguraatio-flash.
Joitain vuosia sitten niitä markkinoitiin takaisinmallinnus-kestävinä. Ehkä.
Huomenna on puhe, samaan aikaan uskoisin Saal 2:ssa, FPGA:iden lähemmästä tarkastelusta.
Onneksi olkoon, olemme tehneet sen, meillä on laiteohjelmistomme, täydellistä.
Mitä sitten seuraavaksi, meidän täytyy analysoida se.
Ongelma on siinä, mitä prosessoria käytetään. Emme tiedä mitä purkuohjelmaa käytämme.
Meidän täytyy etsiä netistä tietolehtisiä, jotta saisimme mitä tahansa tietoa.
Voimmeko selvittää mikä prosessori on käytössä? Ongelma usein on, ettei tietolehtisiä löydy.
Valmistaja sanoo, että jost ostat miljoona laitetta vuodessa ja allekirjoitat NDA:n, niin saat tietolehtiset.
Tällöin sinun täytyy olla todella kärsivällinen. Nyt se menee kokeilemiseksi ja erehtymiseksi eri purkuohjelmien kokeilussa.
Voit käyttää tiettyjä purkuohjelmia, mutta ne on rakennettu ainoastaan yhdelle arkkitehtuurille.
Voit käyttää hyvää työkalua, Interactive Disassembleria, IDAa. Siitä on olemassa freeware-versio.
Lisäsin linkin mukaan tämän puheen linkkiosioon, mutta freeware sisältää ainoastaan pienen joukon arkkitehtuureja.
Jos haluat kokonaisen paketin, se tulee todella kalliiksi. Mutta on myös toinen työkalu, josta itse todella pidän.
Se on ODA, the Online Disassembler, tukee noin kolmeakymmentä arkkitehtuuria, ja se on ilmainen.
Voit ladata binääritiedostoja, ladata koodia ja kokeilla eri arkkitehtuureja,
ja selvittää, mikä voisi olla se oikea, ja teemme sen nyt.
Olen valmistellut jotain binäärikoodia.
Tiedän mille arkkitehtuurille se on kirjoitettu, koska tein itse sen.
Laitan koodin Online Disassembleriin ja valitsen eri arkkitehtuureja,
ja katsotaan miltä purku näyttää.
Aloitetaan entisestä Hitachista, nykyinen Renesas, H8S. Toivottavasti pystytte lukemaan tätä.
Ottakaa aikaa ja nostakaa kätenne ylös, jos luulette, että se on kelvollinen purku ja
olemme löytäneet arkkitehtuurimme.
Näen yhden käden.
Okei, valitettavasti joudun tuottamaan pettymyksen, se ei ole kelvollinen purku. Näemme sen toiselta riviltä.
Purkuohjelma ei kyennyt purkamaan dataa ja se on vain määrittelemätön käsky.
Koodissa on useita .word-sanoja. Se ei ole H8S.
Yritetään MIPSiä. Taas ottakaa aikaa ja nostakaa käsi ylös, jos luulette, että se on kelvollinen.
*naurua* taas?
Se on kelvoton myöskin. Näemme sen toiselta riviltä, koska siellä on dword, jota ei ole purettu.
Miten Panasonic MN103 perhe? Sama käsi taas? Oi, näen toisenkin käden.
Ok, useita käsiä nyt. OK, kiitos.
Ongelma on, ettei se ole validi. Joudun tuottamaan teille pettymyksen.
Tässä tapauksessa ongelma on siinä, että se näyttää todella hyvältä, mutta joudutte kaivamaan syvemmälle.
Teidän täytyy katsoa, ovatko kaikki aliohjelmat oikein. Onko niissä mitään järkeä?
Onko aliohjelmakutsuja ollenkaan ja niin edelleen.
Tulette huomaamaan jotain todella outoa. Viimeinen yritys.
Miten Texas Instruments MSP430?
Ja taas, nostakaa kätenne ylös.
Okei? Joo, tällä kertaa se on MSP430!
Löysimme arkkitehtuurimme, täydellistä, heureka, bingo, meillä on se.
Mitä seuraavaksi? Tiedoston siirtymä, ladatun ohjelmistotiedoston arvo
ei usein ole osoiteavaruuden siirtymä. Tää ei ole ongelma, kun arkkitehtuuri
käyttää suhteellista osoitteistoa. Suhteellinen osoitteisto tarkoittaa, että meillä on rekisterisisältöä ja mitä vain
haluamme käyttää perustuu jonkin rekisterin sisältöön. Sijainnista riippumaton koodi.
Mutta ongelmana on nyt absoluuttisen osoitteiston käyttäminen, ja jopa arkkitehtuurit,
jotka tukevat suhteellista osoitteistoa sisältää jonkin verran absoluuttista osoitteistoa jossain osassa osoitteita.
Emme tiedä, missä on sisäänkäynti. Mistä meidän tulisi aloittaa?
Keskeytysvektorit saatetaan dekoodata kokonaan väärin, aliohjelmakutsuissa ei ole mitään järkeä.
Ne osoittavat meidän laiteohjelmistomme ulkopuolelle, esimerkiksi tai keskelle käskyjä.
Joten kuorman siirto on siis löydettävä.
Näytän teille metodin, jota kutsun "kutsun etäisyyshauksi".
Valitsemelle lähellä olevia aliohjelmaosoitteita ja päätämme, käytämmekö niistä
edeltäviä palautuskäskyjä aliohjelmien edessä vai funktion alussa olevaa
syöttöjärjestystä. Rakennamme hakumerkkijonon sisältäen villikortin, ja sitten haemme
Teemme sen yhdessä, olen valmistellut esimerkin
Tämä on 8051 koodi. 8051:n ydin on todella vanha, se on 8-bittinen ohjain, mutta laajalti käytetty kentällä,
koska se on halpa ja voit tehdä sillä mitä haluat.
Vasemmassa sarakkeessa näemme esimerkkimme osoitteet, 0x00:sta 0x13:een heksaan.
Näemme neljä aliohjelmaa, ensimmäinen juurialiohjelmana kutsuen kolmea muuta aliohjelmaa.
Näemme, että ensimmäinen kutsu 0x100:aan on esimerkkimme ulkopuolella, meillä ei ole 0x100:aa tässä esimerkissä.
Joten otamme kolme aliohjelmaosoitetta ja lajittelemme ne järjestykseen.
Näin ollen, meillä on 0x100, 0x103 ja 0x107. Laskemme erotuksen saadaksemme selville aliohjelmien pituuden.
Saamme 3 tavua ja 4 tavua. Nyt katsomme, miten aliohjelmat on rakennettu tässä tiettyssä arkkitehtuurissa.
x86:lla usein löydätte sen, ei 64-bittisillä alustoilla, mutta 32- ja 16-bittisillä alustoilla.
Löydätte pinokehyksen syöttöjärjestyksen jokaisesta funktiosta, kuten "push bp" tai "push ebp 0x55"
Voitte siis laukaista sen.
8051:llä se ei ole mahdollista. Katsokaa osoitetta 0x0A. Se on 0xE0.
Katsokaa osoitetta 0x0D, se on 44, ja 0x11 on 7B.
Ne eivät vastaa toisiaan, se ei auta meitä.
Tarkastellaan siis edellisiä palautuksia ja kyllä, edessä on palautuksia
jokaisessa aliohjelmassa. Joten otamme 0x22:n [ret] ankkuriksemme.
Hakumerkkijonomme näyttää tältä; Aloitamme 0x22:sta, meillä on
aliohjelma, jonka pituus on kolme tavua, joten meillä on 0x22 [ret], kaksi villikorttia ja
uudelleen palautus. Toinen osa hakumerkkijonosta koodaa toisen
aliohjelman neljällä tavulla. Joten meillä on villikortti, villikortti, villikortti ja uudelleen palautus [0x22]
Tässä yksinkertaisessa esimerkissä saimme vain yhden osuman, täydellistä. Saimme osuman osoitteessa 0x09.
Mutta emme halua palautuksen osoitetta, vaan haluamme aliohjelman osoitteen
joten emme käytä 0x09:ä, vaan käytämme 0x0A:ta
Otamme alkuperäisen kohdeosoitteen 0x0100, puramme 0x0A
ja saamme koodiesimerkkimme perusosoitteen, joka on 0xF6
Jos sovellamme tätä äskettäin havaittua kuorman siirtoa koodiin ja muutamme siirtymää
aloittaen nyt 0x00F6:sta vasemmassa sarakkeessa näemme, että kaikki kolme aliohjelmaa nyt täsmäävät.
Kutsu 0x0100:aan, kutsu 0x0107:aan ja kutsu 0x013:een.
Ok, mielestäni tämä oli vaikea, joten toistetaan se, mitä olemme jo tehneet
Olemme saaneet levykuvamme, olemme onnistuneesti löytäneet prosessoriarkkitehtuurin,
olemme löytäneet purkuohjelman, jolla puramme laiteohjelmiston,
ja toivottavasti löytäneet alkuperäinen kuoram siirtymän. Joten mitä seuraavaksi
Ehkä kysymys herää, onko laitteella lisälaiteohjelmistoa?
Näen hyppyjä ja kutsuja tietämämme laiteohjelmiston ulkopuolelle, vaikka juuri säädimme
kuorman siirtymää. Onko siru sisäinen? Näemme sen kuvasta, ehkä
meillä on ainoastaan laiteohjelmiston osa A. Ja ehkä se käyttää kirjastoa tai sirun sisäistä osaa B.
Joten meidän täytyy katsoa, mitä voimme tehdä käyttäen laiteohjelmiston muutosta.
Nyt kun tämä on tehty, voimme aloittaa koodin normaalin takaisinmallinnuksen.
Haemme merkkijonoja, haemme viittauksia merkkijonoihin,
mutta koska olemme todella matalla sulautetussa järjestelmässä, voimme ehkä hakea hyvin erikoistuneita,
dataviittauksia ja operandeja. Hae USB-kuvauskenttiä, jotka olet poiminut /lib/lsusb-ohjelmalla
Katso USB-magiaa, kuten USBC ja USBS, tiedät, että näitä kahta dwordia käytetään
USB-kommunikoinnissa. Katso IDEa, SATAa ja ATAPI ID merkkijonoja ja sano samalla:
"Olen OCZ SSD -laite" esimerkiksi. Kun olet nuuskinut laitekommunikointia
olet jo löytänyt joitain tyypillisiä tietolohkoja. Voit yrittää etsiä niitä [binääristä]
Viimeisenä, muttei vähäisimpänä, laite on ehkä antanut joitain virhekoodeja, ja voit etsiä merkkijonoja
tai operandeja opkoodeissa.
On todella mielenkiintoista löytää piilotettuja laiteohjelmistopäivitysjonoja, koska
ne voivat sallia ei-invasiivisen muokkaamisen. Esimerkiksi hae sirun pyyhkimis- ja
ohjelmointikomentoja, voit poimia asianmukaisia komentoja tietolehtisestä
jos käytettävissä on jokin ulkoinen muistilaite. Olemme tehneet analyysin ja olemme
oppineet paljon laitteesta. Nyt aiomme mukauttaa sitä.
Ensiksi, meidän täytyy miettiä. Jos aiomme muuttaa laiteohjelmistoa, meidän pitää
valmistautua muuraamaan laitteemme.
Valmistajat toteuttavat useita eheystarkistuksia, ja miksi he tekevät niin?
Sen takia, koska laiteohjelmisto tallennetaan flashiin, joka on altis vanhenemiselle, varsinkin, jos siihen liittyy lämpöä.
He tekevät tarkistussummia. On olemassa ohjelmistopohjaisia tarkissumman laskentamenetelmiä, CRC esimerkiksi.
On olemassa jopa laitteistopohjaisia tarkistussumia, joissa jokin HW-oheislaite tekee työn puolestamme.
Koodissa näkyy siis alku- ja loppusiirtymä, sekä polynomi, jos olet onnekas.
Se voi myös olla kovakoodattuna oheislaitteeseen, jotta en näkisi mitään.
Se voi olla yhdistelmä molempia, pelkästään käynnistyksen yhteidessä tai syklisesti taustalla.
Mitä meidän on tehtävä muuttaaksemme laiteohjelmistoa? Joko korjata nämä tarkistussummat,
tai korjata ne tarkistussumma-algoritmit, jotta ne eivät käynnisty.
Mitkä ovat muutostyömme tavoitteet, tietysti kuulimme sen motivaatio-osassa.
Olemme korjaamassa virheitä, ja ehkäpä virheet sisältyvät sirun toiseen osaan, jota meillä ei
ole tällä hetkellä. Ehkä meidän täytyy dumpata lisämuistialueita.
Sitä he tekivät Cisco VoIP -hakkeroinnissa. He yrittivät löytää memcpy-rutiinin ja käyttää sitä.
Jos et löydä memcpy-rutiinia, voit ehkä totetuttaa oman version. Miksei?
Voitte dumpata koodia toisilta muistialueilta ulostulopuskureille.
Jos sinulla ei ole tilaa ulkoisella muistilaitteella, mikset ohjelmoisi sitä laitteelle
ja lukisi sitä laitteelta. Se voi olla todella mielenkiintoista kerätä lisää laitteen sisäistä tietoa.
Esimerkiksi RAM-dumpin kanssa, koska staattista analyysiä tehdessä, mietit aina
mitä RAMissa on tässä ja tuossa osoitetteessa. Nyt kun olemme mukauttaneet laiteohjelmistoa,
voimme pistää sen takaisin laitteeseen. Esimerkiksi käyttämällä alkuperäistä päivitysohjelmistoa.
Se saattaa sisältää jotain tarkistussumman tarkastuksia, ken tietää.
Voimme yrittää uudelleenohjelmoida sen mahdollisesti saatavilla olevaan muistilaitteeseen, tai prosessoriin.
Tämä voi olla tehty käyttäen sarjaliitäntää, joko JTAGia tai oheislaitteita.
Siinäpä se. Kiitos paljon.
*aplodit*
Angel: Jos teillä on kysymyksiä, järjestäytykää tilassa olevien mikrofonien eteen, täällä on neljä niitä.
Onko mitään kysymyksiä? Mikrofoni 1 kiitos;
Kysymys: Ei ole kysymys, vaan vinkki. Jos tarvitset jotain binääridumppia tai vastaavaa tiedostoylijäämää Windowsille
voit kieltää poisto-oikeuden, joten asennus- tai päivitysohjelmisto ei pysty poistamaan sen väliaikaisia tiedostoja.
Joten ne jäävät laitteelle uudelleenohjelmoinnin jälkeen.
A: Onko sinulla vinkkiä, mitä käyttää siinä tapauksessa?
Q: Anteeksi?
A: Onko sinulla vinkkiä siitä, onko tähän olemassa erikoistyökalua?
Q: Se ei ole välttämätön, se on Windowsissa sisäänrakennettuna valmiiksi.
A: OK
Q: Ja en tiedä sanaa.
A: OK
Q: Mutta voit peruuttaa oikeudet kokonaan hakemistosta, poistamiseen on olemassa oma erikoisoikeus.
A: OK, kiitos.
Angel: Onko enää lisää kysymyksiä?
Angel: Ei näytä siltä. Antakaa lämpimät suosionosoitukset puhujallemme Stefan Widmannille.
*aplodit* A: Päällä [mikrofoni 2]
Angel: On vielä yksi kysymys... Ei?
A: OK
Angel: Kun poistutte, ottakaa...
[Translated by Markus Kallatsa (KYBS2001 course assignment at JYU.FI)]