Poistettujen tietojen palauttaminen SQLitestä: Freeblock-ketjussa navigoiminen

Johdanto

SQLite-tietokannat ovat monista sovelluksista löytyvien digitaalisten todisteiden aarreaittoja, chat-viesteistä tapahtumalokeihin. Mutta mitä tapahtuu, kun tietueet poistetaan? Tule mukaan freeblocks-tietokantasivujen sisällä olevat käyttämättömän tilan piilotetut osat, joihin on jäänyt jäänteitä poistetuista tiedoista. Nämä vapaat lukot ovat kultakaivos rikostutkijoille, sillä ne mahdollistavat kriittisten tietueiden palauttamisen ja piilotettujen todisteiden paljastamisen.

Tässä blogissa selvitetään SQLiten vapaasulkujen toiminta, niiden paikantaminen heksanmuokkainten kaltaisilla työkaluilla ja poistettujen tietueiden palauttaminen. Olitpa sitten tutkija tai digitaalisen rikostekniikan harrastaja, tämä opas antaa sinulle keskeiset tekniikat piilotettujen tietojen poimimiseen.

Mitä ovat SQLiten freeblockit?

Vapaat lukot ovat SQLite-tietokantasivun käyttämättömän tilan osia. Kun tietue poistetaan, vastaavaa tilaa ei heti ylikirjoiteta, ellei turvallista poistomekanismia ole otettu käyttöön. Sen sijaan se merkitään freeblock, saatavilla tulevia kirjoituksia varten.

Tässä prosessissa:

  • Poistetun tietueen osoitin poistetaan.
  • Sivun otsikko päivitetään vastaamaan poistoa.
  • Ensimmäiseen vapaaseen lohkoon osoittavaa siirtymää säädetään tarvittaessa.

 

Näissä vapaissa lukoissa on usein jäänteitä alkuperäisistä tiedoista, joten ne ovat kriittinen kohde rikostutkijoille, jotka pyrkivät palauttamaan poistetut tietueet.

Esimerkki:

Alla olevassa kuvakaappauksessa tarkastelemme SQLite-tietokantaa DB Browserin avulla. "messages"-taulussa on kaksi elävää tietuetta, mutta rikostekniset vihjeet viittaavat siihen, että taulussa on muitakin poistettuja tietueita.

Kuinka vapaasulut sopivat SQLite-sivun otsikoihin

Jotta voimme etsiä ja analysoida vapaasulkuja, meidän on ensin ymmärrettävä SQLite-tietokannan sivujen rakenne. Jokainen sivu sisältää otsikon, joka sisältää kriittistä metatietoa, mukaan lukien osoittimet vapaasulkuihin.

Alla olevassa taulukossa esitetään 0D-sivutyypin otsikkorakenne:

Offset Koko Kuvaus
0 1 tavu Sivun tyyppi
1 2 tavua Tavun siirtymä ensimmäiseen vapaaseen lohkoon
3 2 tavua Sivun solujen lukumäärä
5 2 tavua Offset solun sisällön ensimmäiseen tavuun
7 1 tavu Fragmentoituneiden vapaiden tavujen määrä soluissa

Keskeinen asia:

Sivun otsikon siirtymä 1 osoittaa ensimmäiseen vapaaseen lohkoon. Jos tämä arvo on 0x0000, sivulla ei ole ilmaislukkoja.

Hex-editorien käyttäminen freeblockien analysointiin

Ensimmäisen vapaan lukon paikallistamiseksi avaamme tietokannan heksanmuokkausohjelmalla. Sivun otsakkeen siirtymässä 1 oleva kahden tavun arvo kertoo freeblockin sijainnin.

Alla olevassa esimerkissä:

  • Hex-editori korostaa offset 0x03A9 (desimaaliluku 937) punaisella, joka osoittaa ensimmäisen vapaan lohkon sijainnin.

Siirtyminen tähän siirtymään paljastaa vapaan lohkon alun. Seuraavassa tarkastellaan solua, joka sijaitsee kohdassa 937.

Freeblock-otsakkeiden purkaminen

Kukin vapaalohko sisältää neljän tavun otsikon, joka sisältää:

  1. 2 ensimmäistä tavua: Offset seuraavaan vapaaseen lohkoon (0x0000 jos sellaista ei ole).
  2. Toinen 2 tavua: Vapaan lohkon kokonaiskoko, mukaan lukien itse otsikko.

Esimerkki:

Offsetissa 0x03A9, ilmaisee freeblock-otsikko:

  • Seuraava vapaa lohko on offsetissa 0x03EA (desimaaliluku 1002).
  • Vapaan lohkon koko on 0x0024 (36 tavua, otsikko mukaan lukien).

Poistettujen tietueiden palauttaminen käyttämällä freeblockeja

Vapaat lukot sisältävät usein jäänteitä poistetuista tietueista, minkä ansiosta rikostutkijat voivat palauttaa tietoja osittain tai kokonaan. Alla olevassa kuvakaappauksessa poistetun tietueen hyötykuorma on ehjä ja palautettavissa, vaikka sen osoitin on poistettu.

Esimerkki:

  • Poistettu tietue offsetissa 0x03A9 sisältää viestin: "Ei paljon. Mitä kuuluu?"
  • Keskeiset kentät säilyvät ennallaan, mukaan lukien viestin sisältö, vaikka muut metatiedot on korvattu.

Analysoimme myöhempiä vapaasulkuja löytääksemme lisää poistettuja tietueita. Kun offset 0x03EA, paljastaa freeblock-otsikko:

  • Vapaan lohkon koko on 0x0016 (22 tavua).
  • Tämä on ketjun viimeinen vapaa lohko, kuten osoittaa merkintä 0x0000 seuraavaan vapaalohkon osoitinkenttään.

Alla olevassa kuvakaappauksessa korostetaan ketjun toisen vapaan lohkon koko solualuetta, jossa poistettu viesti oli "Hei Andy!".

Poistettujen lisätietueiden tunnistaminen

Tällä sivulla on kuitenkin vielä yksi poistettu tietue, johon ei viitata freeblock-ketjussa. Kun tarkastellaan sivun otsikkoa, sivulla oli vain kaksi tietuetta offsetissa 3 olevan kahden tavun arvon mukaan (0x00002). Ja koska tietueita on vain kaksi, osoitinjoukossa on vain kaksi osoitinta. Nämä kaksi osoitinta osoittavat tietueeseen #2 - "Hei, mitä kuuluu?" ja tietueeseen #4 - "Hei, mietin, onko sinulla Scooby Snaxia". Saatat huomata, että sivulla on toinenkin pitkä viesti, joka sijaitsee ylempänä.

Sivun otsikon offset-arvossa 5 oleva kahden tavun arvo on solun sisältöalueen offset-arvo, joka on periaatteessa paikka, johon seuraava tietue kirjoitetaan, ellei se mahdu johonkin vapaaseen lukitukseen. Tämä arvo on 0x0363 joka on desimaalinen offset 867.

Yllä olevassa kuvakaappauksessa nuoli osoittaa sivupisteeseen 867. Tämä on solun sisällön alku, mikä tarkoittaa, että seuraava tietue lisätään juuri tämän tietueen yläpuolelle. Tämän yläpuolella oleva poistettu tietue sisältää viestin: "Satuin saamaan uuden toimituksen viime yönä. Sinulla on onnea. Kuinka paljon tarvitset?"

Tietokanta pitää tätä tietoa varaamattomana tilana. Se voitaisiin yhtä hyvin täyttää 0x00 koska osoitinjoukossa ei ole osoitinta, joka osoittaisi sitä. 

Jos taulukkoon, johon tämä sivu kuuluu, lisätään tietue, joka on liian suuri mahtuakseen sivun kahteen vapaaseen lukitukseen, se korvaa viestin, joka sattuu olemaan tietue #5. 

Katsotaanpa, miltä tilanne näyttää nyt, kun olemme tunnistaneet kaksi vapaata lukitusta ja kolmannen poistetun tietueen, joka odottaa korvaamista:

Analysoituamme tietokannan raakamuodossaan voimme päätellä, että se sisälsi enemmän kuin vain kaksi "elävää" tietuetta, jotka tietokannan katseluohjelma näytti. 

Tietue #1 oli todennäköisesti viesti "Hei Andy!", kun taas tietue #3 oli todennäköisesti viesti "Ei paljon. Mitä kuuluu?". Tietue #5:n solussa on edelleen sen tietueen numero, joka on tunnistettu viestiksi: "Satuin saamaan uutta tavaraa viime yönä. Sinulla on onnea. Kuinka paljon tarvitset?"

 

Päätelmä

Vapaat lukitukset ovat tehokas työkalu rikosteknisessä tutkimuksessa, sillä ne tarjoavat mahdollisuuden nähdä poistettuja tietueita ja jakamattomia tietoja. Kun tutkijat hallitsevat nämä tekniikat, he voivat paljastaa tietokantojen jättämät digitaaliset jäljet.

Oletko valmis viemään SQLite-tekniset taitosi seuraavalle tasolle? Tutustu edistyneempiin koulutusohjelmiimme tai ota meihin yhteyttä, niin kerromme, miten voimme auttaa sinua kehittymään rikostekniseksi asiantuntijaksi.

Facebook
Twitter
Sähköposti
Tulosta

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *