Skip to content

Archives

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Categories

  • Ei kategorioita
Trend RepositoryArticles and guides
Articles

Mitä on peittely?

On 25 lokakuun, 2021 by admin
  • Mitä on koodin peittely?
  • Miksi käyttää koodin peittäjää?
  • Miten peittäminen toimii?
  • Rename Obfuscation
  • merkkijonojen salaus
  • Control Flow Obfuscation
  • Käskymallien muuntaminen
  • Väärän koodin lisääminen
  • Käyttämättömän koodin ja metatiedon poistaminen
  • Binary Linking/Merging
  • Opaque Predicate Insertion
  • Anti-Tamper
  • Anti-Debug
  • Pitäisikö minun peittää sovellukseni?

Mitä on koodin peittely?

Koodin peittely on prosessi, jossa suoritettavaa tiedostoa muokataan niin, että siitä ei ole enää hyötyä hakkerille, mutta se on edelleen täysin toimiva. Vaikka prosessi voi muuttaa varsinaisia menetelmäohjeita tai metatietoja, se ei muuta ohjelman tulostetta. Selvyyden vuoksi todettakoon, että riittävällä ajalla ja vaivalla lähes kaikki koodi voidaan kääntää. Joillakin alustoilla, kuten Javalla, Androidilla, iOS:llä tai .NET:llä (esim. Xamarin, C#, VB.NET, F#), ilmaisilla dekompilaattoreilla voidaan kuitenkin helposti kääntää lähdekoodi suoritettavasta ohjelmasta tai kirjastosta lähes ilman aikaa ja vaivaa. Automaattinen koodin peittäminen tekee ohjelman käänteisestä analysoinnista vaikeaa ja taloudellisesti mahdotonta.

Miksi käyttää koodin peittäjää?

Tekemällä sovelluksen käänteismuokkauksesta huomattavasti vaikeampaa voit suojautua liikesalaisuuksien (immateriaalioikeuksien) varastamiselta, luvattomalta käytöltä, lisensoinnin tai muiden valvontakeinojen kiertämiseltä ja haavoittuvuuksien löytymiseltä.

Miten peittäminen toimii?

Koodin peittäminen koostuu monista eri tekniikoista, jotka voivat täydentää toisiaan luodakseen kerroksittaisen puolustuksen. Se on tehokkainta kielissä, jotka luovat jonkinlaisia välitason ohjeita, kuten Java tai .NET-kielet, kuten C#, VB.NET, Managed C++, F# jne. Tyypillisiä esimerkkejä peittely- ja sovellusturvatekniikoista ovat:

Rename Obfuscation

Renaming muuttaa metodien ja muuttujien nimiä. Se tekee puretusta lähdekoodista vaikeamman ihmisen ymmärtää, mutta ei muuta ohjelman suoritusta. Uusissa nimissä voidaan käyttää erilaisia skeemoja, kuten ”a”, ”b”, ”c” tai numeroita, tulostamattomia merkkejä tai näkymättömiä merkkejä. Nimiä voidaan myös ylikuormittaa, kunhan niillä on eri laajuus. Nimien peittäminen on perusmuodonmuutos, jota useimmat .NET- (C# jne.), iOS-, Java- ja Android-peittäjät käyttävät.

merkkijonojen salaus

Hallitussa suoritettavassa ohjelmassa kaikki merkkijonot ovat selvästi löydettävissä ja luettavissa. Vaikka metodeja ja muuttujia nimetään uudelleen, merkkijonoja voidaan käyttää kriittisten koodiosioiden paikantamiseen etsimällä merkkijonoviittauksia binäärin sisältä. Tämä koskee myös käyttäjälle näytettäviä viestejä (erityisesti virheilmoituksia). Tämäntyyppisten hyökkäysten estämiseksi merkkijonojen salaus piilottaa merkkijonot suoritettavaan tiedostoon ja palauttaa niiden alkuperäisen arvon vain tarvittaessa. Merkkijonojen salauksen purkamisesta ajonaikana aiheutuu yleensä pieni suorituskyvyn heikkeneminen.

Control Flow Obfuscation

Control flow obfuscation syntetisoi ehdollisia, haarautuvia ja iteratiivisia konstruktioita, jotka tuottavat kelvollisen suoritettavan logiikan, mutta tuottavat dekompiloitaessa ei-deterministisiä semanttisia tuloksia. Yksinkertaisemmin sanottuna se saa puretun koodin näyttämään spagettilogiikalta, jota hakkerin on hyvin vaikea ymmärtää. Nämä tekniikat voivat vaikuttaa menetelmän suoritusaikaiseen suorituskykyyn.

Käskymallien muuntaminen

Muunnetaan kääntäjän luomat yleiset käskyt muiksi, vähemmän ilmeisiksi konstruktioiksi. Nämä ovat täysin laillisia konekielisiä käskyjä, jotka eivät välttämättä sovellu puhtaasti korkean tason kieliin, kuten Java tai C#. Yksi esimerkki on ohimenevien muuttujien välimuistitallennus, joka hyödyntää Java- ja .NET-ajoaikojen pinoihin perustuvaa luonnetta.

Väärän koodin lisääminen

Sisältää suoritettavaan tiedostoon koodia, joka ei vaikuta ohjelman logiikkaan mutta rikkoo dekompilaattorit tai vaikeuttaa käänteisesti analysoitavan koodin analysointia huomattavasti.

Käyttämättömän koodin ja metatiedon poistaminen

Korjaustietojen, ei-tarpeellisen metatiedon ja käytetyn koodin poistaminen sovelluksista tekee niistä pienempiä ja vähentää hyökkääjän käytettävissä olevaa tietoa. Tämä menettely saattaa hieman parantaa ajonaikaista suorituskykyä.

Binary Linking/Merging

Tämä muunnos yhdistää useita syötettyjä suoritettavia ohjelmia/kirjastoja yhdeksi tai useammaksi tulostebinääriksi. Linkittämistä voidaan käyttää sovelluksen pienentämiseen, varsinkin kun sitä käytetään uudelleennimeämisen ja karsimisen kanssa, Se voi yksinkertaistaa käyttöönottoskenaarioita ja se voi vähentää hakkerien saatavilla olevaa tietoa.

Opaque Predicate Insertion

Sumuttaa lisäämällä ehdollisia haaroja, jotka evaluoituvat aina tiedossa oleviin tuloksiin-tuloksiin, joita ei voida helposti määrittää staattisen analyysin avulla. Tämä on tapa lisätä mahdollisesti virheellistä koodia, jota ei koskaan todellisuudessa suoriteta, mutta se hämmentää hyökkääjiä, jotka yrittävät ymmärtää dekompiloitua tulostetta.

Anti-Tamper

Obfuskaattori voi pistää sovelluksen itsesuojauksen koodiin todentaakseen, ettei sovellusta ole peukaloitu millään tavalla. Jos peukalointi havaitaan, se voi sulkea sovelluksen, rajoittaa toiminnallisuutta, kutsua satunnaisia kaatumisia (kaatumissyyn häivyttämiseksi) tai suorittaa minkä tahansa muun mukautetun toiminnon. Se voi myös lähettää palveluun viestin, jossa kerrotaan havaitun peukaloinnin yksityiskohdat.

Anti-Debug

Kun hakkeri yrittää kopioida tai väärentää sovelluksesi, varastaa tietojasi tai muuttaa infrastruktuurin kriittisen ohjelmiston käyttäytymistä, hän aloittaa melkein varmasti käänteisellä suunnittelulla (reverse engineering) ja sovelluksen läpikäymisellä debuggerilla. Obfuscator voi lisätä sovelluksen itsesuojauksen lisäämällä koodia, joka havaitsee, suoritetaanko tuotantosovellusta debuggerin sisällä. Jos virheenkorjaajaa käytetään, se voi korruptoida arkaluonteisia tietoja (suojaten niitä varkaudelta), aiheuttaa satunnaisia kaatumisia (naamioidakseen, että kaato oli virheenkorjaustarkastuksen tulos) tai suorittaa muita mukautettuja toimintoja. Se voi myös lähettää viestin palveluun varoitussignaalin antamiseksi.

Pitäisikö minun peittää sovellukseni?

Harkitse voimakkaasti peittämisen ja ajonaikaisen sovelluksen itsesuojauksen hyödyntämistä, jos julkaiset ohjelmiston, joka toimii epäluotettavassa ympäristössä ja jolla on henkistä omaisuutta, joka tarjoaa pääsyn arkaluonteisiin tietoihin tai jolla on porttitoimintoja. Hämäyksen avulla hyökkääjien on paljon vaikeampi tarkastella koodia ja analysoida sovellusta. Se vaikeuttaa myös hakkereiden virheenkorjausta ja sovelluksen peukalointia. Lopputavoitteena on lisätä suojakerros, jonka avulla sovelluksesta on vaikea poimia tai löytää hyödyllistä tietoa, kuten liikesalaisuuksia (IP), tunnistetietoja tai tietoturva-aukkoja. Sen pitäisi myös vaikeuttaa sovelluslogiikan muuttamista tai sovelluksen uudelleen pakkaamista haitallisella koodilla.

Vastaa Peruuta vastaus

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

Arkistot

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Meta

  • Kirjaudu sisään
  • Sisältösyöte
  • Kommenttisyöte
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress