Ethical Hacking Academy · Oppitunti

Pakkauksen purkaminen

Ohittakaa obfuskointi.

Oppitunti 4/413 vaihetta

Pakkauksen purkaminen on ilmainen Ethical Hacking Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Ethical Hacking Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ethical Hacking Academy-kurssilla on yhteensä 4 oppituntia.

Mitä pakkaaminen on?

Pakkaaminen tiivistää tai salaa ohjelman todellisen koodin ja käärii sen pienen tietopaketin purkajan eli stubin sisään. Ajon aikana stub purkaa alkuperäisen koodin muistiin ja suorittaa sen.

Haittaohjelmien tekijät käyttävät pakkaamista allekirjoitusten väistämiseen ja staattisen analyysin vaikeuttamiseen.

Miksi purkaa?

Pakatusta binääritiedostosta löytyy vain vähän merkkijonoja ja tuonteja, ja sen entropia on korkea. Merkityksellinen koodi pysyy piilossa, kunnes stub suoritetaan.

Purkaminen palauttaa alkuperäisen koodin, jotta voitte analysoida sitä staattisesti ja poimia todelliset IOC:t.

Pakkaajan tunnistaminen

Detect It Easy (DIE) ja PEiD -työkalujen kaltaiset ohjelmat tunnistavat tunnettuja pakkaajia allekirjoituksen perusteella. Myös korkea entropia ja pieni tuontitaulu ovat vahvoja vihjeitä.

Yleisiä pakkaajia ovat UPX, ASPack ja Themida.

die sample.exe
# Packer: UPX(3.96)

UPX:n purkaminen

UPX on yleinen, ei-haitallinen pakkaaja, jonka voi purkaa sen omalla työkalulla. -d-valitsin purkaa binääritiedoston takaisin alkuperäiseen muotoonsa.

Monissa tosielämän näytteissä käytetään UPX:ää tai hieman muokattua UPX:ää, joten tämä on usein ensimmäinen kokeiltava menetelmä.

upx -d sample.exe

Manuaalinen purkaminen: perusajatus

Mukautettuja pakkaajia ei voi purkaa yhdellä työkalulla. Sen sijaan stubin annetaan purkaa itsensä muistiin, minkä jälkeen tulos kaapataan.

Suunnitelma on seuraava: suorittakaa näyte virheenkorjaimessa, pysäyttäkää suoritus heti purkamisen valmistuttua ja vedostakaa nyt paljastunut koodi.

OEP:n löytäminen

Alkuperäinen aloituspiste (OEP) on kohta, johon suoritus siirtyy purkamisen päätyttyä. OEP:n saavuttaminen tarkoittaa, että todellinen koodi on nyt muistissa.

Sen voi löytää esimerkiksi seuraamalla stubista ulos suuntautuvaa pitkää hyppäystä tai asettamalla keskeytyspisteen muistiin, johon stub kirjoittaa ja jota se sitten suorittaa.

Keskeytyspisteet purkamista varten

Yleinen keino on asettaa laitteistopohjainen keskeytyspiste pinoon (stub palauttaa usein rekisterit juuri ennen hyppäämistä OEP:hen) tai yleisiin API-kutsuihin, joita purettu koodi käyttää.

Kun keskeytyspiste osuu OEP:ssä, alkuperäinen koodi on dekoodattu kokonaan.

Prosessin vedostaminen

Vedostakaa OEP:ssä prosessin muisti uuteen tiedostoon. Scylla (sisäänrakennettuna x64dbg:hen) ja PE-sieve pystyvät kaappaamaan puretun vedoksen.

Vedos sisältää nyt todelliset käskyt, mutta se ei välttämättä vielä toimi itsenäisesti.

Tuontien uudelleenrakentaminen

Vedostamisen jälkeen tuontiosoitetaulu eli Import Address Table on usein rikkoutunut, koska pakkaaja ratkaisi tuonnit ajonaikaisesti. Scylla voi rakentaa IAT:n uudelleen, jotta vedostettua tiedostoa voidaan analysoida.

Kun tuonnit on korjattu, voitte ladata puhtaan vedoksen Ghidraan tai IDA:an.

Muu obfuskointi

Pakkaamisen lisäksi haittaohjelmissa käytetään muuta obfuskointia: ajon aikana dekoodattuja salattuja merkkijonoja, roskaohjeita, ohjausvuon litistämistä ja virheenkorjauksen vastaisia tarkistuksia.

Nämä torjutaan tapauskohtaisesti, usein yhdistämällä dynaaminen jäljitys kärsivälliseen staattiseen lukemiseen.

Puretun näytteen tarkistaminen

Kun olette vedostaneet prosessin ja rakentaneet tuonnit uudelleen, varmistakaa onnistuminen suorittamalla staattinen analyysi uudelleen: nyt pitäisi näkyä paljon enemmän merkkijonoja ja täytetty tuontitaulu.

Jos entropia on palautunut normaaliksi ja API:t näkyvät, purkaminen onnistui ja todellinen koodi on valmis analysoitavaksi.

Pikakertaus

Palauttakaa mieleenne, mitä OEP tarkoittaa manuaalisen purkamisen aikana.

Kertaus

Ymmärrätte nyt purkamisen:

  • Pakkaaminen piilottaa todellisen koodin; tunnistakaa se DIE/PEiD-työkaluilla, korkean entropian ja vähäisten tuontien avulla.
  • Tunnetut pakkaajat, kuten UPX, puretaan työkalulla (upx -d).
  • Mukautettujen pakkaajien tapauksessa suorittakaa näyte virheenkorjaimessa, etsikää OEP, tehkää vedos Scyllalla ja rakentakaa tuonnit uudelleen.
  • Muu obfuskointi (salatut merkkijonot, virheenkorjauksen esto) käsitellään tapauskohtaisesti.

Olette suorittaneet Haittaohjelmien takaisinmallinnus -kurssin.

Aloita maksutta

Opi Ethical Hacking Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
31
Oppitunnit
111

Usein kysytyt kysymykset

Onko oppitunti ”Pakkauksen purkaminen” ilmainen?

Kyllä – oppitunnin ”Pakkauksen purkaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Ethical Hacking Academy-kurssin, päivitä CoddyKit PROhon. Ethical Hacking Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Pakkauksen purkaminen”?

Ohittakaa obfuskointi. Harjoittelet Ethical Hacking Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Ethical Hacking Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Ethical Hacking Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Pakkauksen purkaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Ethical Hacking Academy-oppitunnilla?

Kyllä. Jokainen Ethical Hacking Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Staattinen analyysi
  2. Dynaaminen analyysi
  3. Purkamisen perusteet
  4. Pakkauksen purkaminen
← Takaisin: Ethical Hacking Academy