Keskeiset oivallukset
1. Hakkerointi on epätavanomaista ongelmanratkaisua
Hakkerointi on pohjimmiltaan sitä, että löydetään säännöille ja ominaisuuksille sellaisia käyttötarkoituksia, joita ei ole alun perin tarkoitettu tai huomattu, ja sovelletaan niitä uusin ja luovin tavoin jonkin ongelman ratkaisemiseksi.
Lain rajojen ulkopuolella. Hakkerointi ei itsessään tarkoita lain rikkomista. Kyse on pikemminkin luovasta ongelmanratkaisusta, jossa olemassa olevia sääntöjä ja ominaisuuksia hyödynnetään aivan uusilla tavoilla. Tämä voi ulottua tietokoneohjelmien optimoinnista vanhojen puhelinlaitteiden virittämiseen uusiin käyttötarkoituksiin. Tärkeintä on ajatella perinteisten menetelmien ulkopuolella ja löytää ainutlaatuisia ratkaisuja.
Hakkerietiikka. MIT:n varhaiset hakkerit arvostivat tiedon vapaata kulkua ja jatkuvaa oppimista, ja he ylittivät perinteiset rajat, kuten syrjinnän. He pitivät logiikkaa taiteenmuotona ja pyrkivät ymmärtämään maailmaa paremmin kiertämällä rajoituksia. Tämä etiikka korostaa tietoa, innovaatiota ja rajojen rikkomista laillisuudesta riippumatta.
Hakkeri vs. kräkkeri. Vaikka termiä ”kräkkeri” käytettiin aikoinaan erottamaan pahantahtoiset hakkerit eettisistä, raja on sittemmin hämärtynyt. Kryptografiaa ja tutkimusta rajoittavat nykyiset lait voivat saada hyväntahtoisenkin hakkerin näyttämään lainrikkojalta. Todellinen hakkerihenki ylittää valtiolliset lait ja keskittyy tiedon soveltamiseen – oli se sitten hyvässä tai pahassa.
2. Ohjelmoinnin tyylikkyys piilee ovelissa ja epäintuitiivisissa ratkaisuissa
Hakkerointi on todellisuudessa vain sitä, että ongelmaan löydetään ovela ja epäintuitiivinen ratkaisu.
Toimivaa koodia syvemmälle. Ohjelmoinnissa ei ole kyse vain toimivan koodin kirjoittamisesta, vaan tehokkaimman ja tyylikkäimmän tavan löytämisestä tehtävän suorittamiseen. Tämä vaatii tietokoneen sääntöjen käyttämistä uusin ja kekseliäin tavoin, mikä johtaa usein pieneen, tehokkaaseen ja siistiin koodiin. Tämä tyylikkyyden tavoittelu on itsessään eräänlaista hakkerointia.
Hakkien arvo. Vaikka nykymaailman bisnes asettaa usein nopeuden ja edullisuuden optimoinnin edelle, ohjelmoinnin tyylikkyyden todellinen arvostus jää harrastajille, haavoittuvuuksien hyödyntäjille ja niille, jotka etsivät parasta mahdollista ratkaisua. Nämä ihmiset näkevät kauneutta tyylikkäässä koodissa ja nerokkuutta ovelissa hakeissa, ja he koettelevat jatkuvasti mahdollisuuksien rajoja.
Ohjelmointi perustana. Ohjelmoinnin ymmärtäminen on välttämätöntä sekä koodin kirjoittamisessa että sen murtamisessa. Kun hakkeri ymmärtää, miten ohjelmat on kirjoitettu, hänen on helpompi löytää ja hyödyntää niiden haavoittuvuuksia. Tämä tieto on välttämätöntä ohjelmoinnin molemmilla puolilla.
3. Ohjelmien haavoittuvuuksien hyödyntäminen paljastaa tietokoneen sääntöjen tahattomat käyttötavat
Ohjelman haavoittuvuuden hyödyntäminen on yksinkertaisesti ovela tapa saada tietokone tekemään se, mitä haluat sen tekevän – silloinkin, kun parhaillaan käynnissä oleva ohjelma on suunniteltu estämään kyseinen toiminto.
Virheiden hyödyntäminen. Ohjelmien haavoittuvuuksien hyödyntämisessä etsitään virheitä tai puutteita ohjelman suunnittelusta tai ympäristöstä ja käytetään niitä hyväksi, jotta tietokone saadaan tekemään jotain sellaista, mihin sitä ei ole tarkoitettu. Tämä tarkoittaa usein turvatoimien ohittamista ja luvattoman pääsyn hankkimista. Tietoturva-aukot ovat todellisuudessa virheitä tai laiminlyöntejä ohjelman suunnittelussa tai siinä ympäristössä, jossa ohjelmaa ajetaan.
Yhdellä ohi -virheet. Yksi yleinen ja hyödynnettävissä oleva ohjelmointivirhe on yhdellä ohi -virhe (off-by-one error), jossa ohjelmoija laskee jonkin arvon yhdellä väärin. Tämä voi johtaa haavoittuvuuksiin, joiden avulla hyökkääjät voivat saada ylläpito-oikeudet tai ohittaa turvarajoituksia. Esimerkiksi OpenSSH-ohjelmistossa ollut yhdellä ohi -virhe mahdollisti sen, että tavalliset käyttäjät saivat täydet ylläpito-oikeudet.
Lain kirjain. Ohjelmat noudattavat ohjeita täsmällisesti, vaikka lopputulos ei olisikaan se, mitä ohjelmoija tarkoitti. Tämä voi johtaa odottamattomiin ja katastrofaalisiin seurauksiin, kuten nähtiin niin sanotussa ”LaMacchia-porsaanreiässä”, jossa opiskelija hyödynsi lain porsaanreikää mahdollistaakseen ohjelmistopiratismin ilman henkilökohtaista taloudellista hyötyä.
4. Puskurin ylivuotot ja muotoilumerkkijonot: Yleiset hyökkäystekniikat
Molemmissa tekniikoissa perimmäisenä tavoitteena on ottaa kohdeohjelman suorituspolku hallintaan ja huijata se ajamaan haitallista koodia, joka voidaan ujuttaa muistiin monin eri tavoin.
Yleiset virheet. Tiettyjä yleisiä ohjelmointivirheitä voidaan hyödyntää tavoilla, jotka eivät aina ole ilmeisiä. Nämä virheet ovat synnyttäneet yleisiä hyökkäystekniikoita, joita voidaan käyttää monissa eri tilanteissa. Kaksi yleisintä tällaista tekniikkaa ovat puskurin ylivuotohyökkäykset (buffer overflow) ja muotoilumerkkijonohyökkäykset (format string).
Puskurin ylivuotot. Puskurin ylivuoto tapahtuu, kun ohjelma yrittää kirjoittaa puskuriin enemmän tietoa kuin siihen mahtuu, jolloin viereiset muistipaikat ylikirjoitetaan. Tätä voidaan käyttää kriittisten tietojen, kuten paluuosoitteiden, ylikirjoittamiseen ja ohjelman suorituspolun ottamiseen hallintaan.
Muotoilumerkkijonohyökkäykset. Muotoilumerkkijonohyökkäyksissä muokataan muotoilumerkkijonoja printf()-tyyppisissä funktioissa, jotta voidaan lukea tai kirjoittaa mielivaltaisia muistipaikkoja. Tätä voidaan käyttää funktio-osoittimien tai muiden kriittisten tietojen ylikirjoittamiseen ja ohjelman suorituspolun hallinnan kaappaamiseen.
5. Muistin segmentointi: Ohjelman suorituspolun ymmärtäminen
Ohjelman muisti on jaettu viiteen segmenttiin: koodisegmentti (text), datasegmentti (data), bss, keko (heap) ja pino (stack).
Muistin rakenne. Ohjelman muisti on jaettu viiteen segmenttiin: koodisegmenttiin (text), datasegmenttiin (data), bss-segmenttiin, kekoon (heap) ja pinoon (stack). Jokaisella segmentillä on oma erityinen tehtävänsä, kuten ohjelman käskyjen, globaalien muuttujien tai väliaikaisen tiedon tallentaminen. Näiden segmenttien rakenteen ymmärtäminen on ratkaisevan tärkeää haavoittuvuuksien hyödyntämisessä.
Pino. Pino on väliaikainen muistialue, jota käytetään kontekstin tallentamiseen funktiokutsujen aikana. Se sisältää parametrit, paikalliset muuttujat ja osoitteet, joita tarvitaan ohjelman tilan palauttamiseen funktion suorituksen päätyttyä. Pinoon kohdistuvat ylivuotot voivat ylikirjoittaa paluuosoitteita ja muuttaa suorituspolkua.
Keko. Kekoaluetta käytetään dynaamiseen muistinvaraukseen, jolloin ohjelmat voivat varata muistia tarpeen mukaan. Kekoon kohdistuvat ylivuotot voivat ylikirjoittaa tärkeitä muuttujia tai funktio-osoittimia, mikä johtaa tietoturvahaavoittuvuuksiin.
6. Monen käyttäjän tiedosto-oikeudet: Root-oikeuksien saavuttaminen
Jos suid root -ohjelman suorituspolkua voidaan muuttaa siten, että se ajaa sinne ujutetun mielivaltaisen koodinpätkän, hyökkääjä voi saada ohjelman tekemään mitä tahansa root-käyttäjänä.
Linuxin tietoturvamalli. Linux on monen käyttäjän käyttöjärjestelmä, jossa täydet järjestelmäoikeudet on annettu ”root”-käyttäjälle. Tiedosto-oikeudet perustuvat käyttäjiin ja ryhmiin, mikä estää tiedostojen luvattoman käytön.
SUID-ohjelmat. SUID-ohjelmat (set user ID) antavat tavallisille käyttäjille mahdollisuuden suorittaa järjestelmätoimintoja, jotka vaativat root-oikeuksia. Kun SUID-ohjelma suoritetaan, käyttäjän tehollinen käyttäjä-ID (EUID) muuttuu ohjelman omistajan ID:ksi, joka on yleensä root.
SUID-ohjelmien hyödyntäminen. Jos SUID root -ohjelman suorituspolkua voidaan muuttaa siten, että se ajaa sinne ujutettua koodia, hyökkääjä voi saada root-oikeudet. Tämä voidaan saavuttaa puskurin ylivuodoilla tai muotoilumerkkijonohyökkäyksillä, jolloin hyökkääjä voi hallita järjestelmää root-käyttäjänä.
7. Tietoverkot tukeutuvat viestinnässä standardoituihin protokolliin
Tietoverkoissa on kyse viestinnästä, ja jotta kaksi tai useampi osapuoli voi viestiä kunnolla, tarvitaan standardeja ja protokollia.
OSI-malli. Verkkoviestintä perustuu standardoituihin protokolliin, jotka on määritelty OSI-viitemallissa (Open Systems Interconnection). Tämä malli koostuu seitsemästä kerroksesta, joista jokainen käsittelee viestinnän eri osa-aluetta fyysisestä yhteydestä sovelluskerrokseen.
Avainkerrokset. Verkkokerros (IP), kuljetuskerros (TCP/UDP) ja siirtoyhteyskerros (Ethernet) ovat erityisen tärkeitä verkon haavoittuvuuksien ymmärtämisessä. Nämä kerrokset huolehtivat osoitteistuksesta, reitityksestä, luotettavasta tiedonsiirrosta ja laiteosoitteista.
Paketit ja kapselointi. Tieto välitetään paketteina, jotka kapseloidaan kunkin kerroksen protokollatiedoilla (otsikoilla). Sen ymmärtäminen, miten nämä otsikot on rakennettu ja miten ne toimivat yhdessä, on ratkaisevan tärkeää verkon haavoittuvuuksien hyödyntämisessä.
8. Verkon kuuntelu paljastaa tiedonsiirron haavoittuvuudet
Ohjelmien haavoittuvuuksien hyödyntäminen on hakkeroinnin peruskauraa.
Promiscuous-tila. Verkon kuuntelu (sniffing) tarkoittaa verkon kautta lähetettävien pakettien kaappaamista. Kytkemättömässä verkossa laitteet voidaan asettaa promiscuous-tilaan, jolloin ne voivat kaapata kaikki paketit vastaanottajan osoitteesta riippumatta.
Kytketyt verkot. Kytketyt verkot rajoittavat liikennettä tiettyihin portteihin MAC-osoitteiden perusteella, mikä tekee kuuntelusta vaikeampaa. Tämän turvatoimen kiertämiseen voidaan kuitenkin käyttää tekniikoita, kuten ARP-väärennystä (ARP redirection).
ARP-väärennys. ARP-väärennyksessä lähetetään väärennettyjä ARP-vastauksia kohdekoneiden ARP-välimuistin myrkyttämiseksi, jolloin niiden liikenne ohjataan kulkemaan hyökkääjän koneen kautta. Tämän ansiosta hyökkääjä voi kuunnella ja mahdollisesti muokata liikennettä.
9. Kryptologia: Turvallisuuden ja käytettävyyden tasapainottelu
Itse tiedossa ei ole mitään hyvää tai pahaa; moraali piilee siinä, miten sitä tietoa sovelletaan.
Kryptografia ja kryptanalyysi. Kryptologia kattaa sekä kryptografian (salakirjoitustaito) että kryptanalyysin (salauksien murtaminen). Vahva kryptografia on välttämätöntä turvalliselle verkkoasioinnille ja arkaluonteisten tietojen suojaamiselle.
Ehdoton vs. laskennallinen turvallisuus. Ehdoton turvallisuus, jollaisen tarjoaa esimerkiksi kertakäyttöinen salausavain (one-time pad), on murtamaton jopa rajattomilla resursseilla. Se on kuitenkin usein käytännössä epäkäytännöllinen. Laskennallinen turvallisuus perustuu siihen, että salauksen murtaminen nykyisellä tekniikalla kohtuullisessa ajassa on erittäin vaikeaa.
Symmetrinen vs. epäsymmetrinen salaus. Symmetriset salausmenetelmät käyttävät samaa avainta sekä salaamiseen että purkamiseen. Ne ovat nopeita, mutta avainten jakaminen on haastavaa. Epäsymmetriset menetelmät käyttävät julkisia ja yksityisiä avaimia, mikä yksinkertaistaa avainten vaihtoa mutta hidastaa toimintaa. Hybridimenetelmät yhdistävät molemmat lähestymistavat optimaalisen turvallisuuden ja tehokkuuden saavuttamiseksi.
10. Langattoman 802.11b-salauksen hyödyntäminen: WEP-hyökkäykset
Ydinfysiikkaa ja biokemiaa voidaan käyttää tappamiseen, mutta ne tarjoavat meille myös merkittävää tieteellistä edistystä ja nykyaikaista lääketiedettä.
WEP-salauksen alkuperäinen tarkoitus. WEP (Wired Equivalent Privacy) suunniteltiin tarjoamaan langalliselle verkolle vastaava tietoturva. Protokollan heikkoudet tekevät siitä kuitenkin haavoittuvaisen erilaisille hyökkäyksille.
WEP-salausprosessi. WEP käyttää RC4-virtasalausta, jossa on 24-bittinen alustusvektori (IV) ja 40- tai 104-bittinen avain. Alustusvektori liitetään avaimen alkuun RC4-algoritmin alustamiseksi, mikä luo avainvirran, joka yhdistetään XOR-operaatiolla selväkieliseen viestiin.
WEP-haavoittuvuudet. WEP on haavoittuvainen offline-tilassa tehtäville raa'an voiman hyökkäyksille, avainvirran uudelleenkäytölle ja alustusvektoriin perustuville sanakirjahyökkäyksille. Näitä haavoittuvuuksia voidaan hyödyntää WEP-avainten murtamiseen ja luvattoman pääsyn saamiseen langattomiin verkkoihin.
Characters
Plot Devices
Analysis
Arvosteluyhteenveto
Hacking: The Art of Exploitation on saanut runsaasti kiitosta hakkerointitekniikoiden syvällisistä teknisistä selityksistä, jotka kattavat muun muassa puskurin ylivuototilanteet, tietoverkot ja kryptografian. Lukijat arvostavat kirjan käytännönläheistä otetta ja sen mukana tulevaa LiveCD-levyä, joka mahdollistaa asioiden kokeilemisen käytännössä. Vaikka jotkut pitävät teosta haastavana ja mahdollisesti vanhentuneena, monet pitävät sitä välttämättömänä resurssina matalan tason haavoittuvuuksien ymmärtämisessä ja ohjelmointitaitojen kehittämisessä. Kirjaa suositellaan tietoturvasta kiinnostuneille, joskin se saattaa olla liian edistynyt aloittelijoille ja keskittyy pääasiassa C-ohjelmointiin sekä Linux-järjestelmiin.
Muut lukivat myös
UKK
What's Hacking: The Art of Exploitation about?
- Introduction to Hacking: The book introduces hacking as a form of creative problem-solving, focusing on finding unconventional solutions.
- Technical Foundation: It provides a comprehensive technical foundation, covering essential hacking techniques often missing in other literature.
- Core Techniques: Readers learn about exploiting buffer overflows, writing shellcode, and understanding networking and cryptology.
Why should I read Hacking: The Art of Exploitation?
- Comprehensive Learning: Ideal for those serious about ethical hacking or understanding system vulnerabilities.
- Hands-On Approach: Encourages experimentation with code examples on a Linux system for practical understanding.
- Mindset Development: Helps develop a hacker mindset, fostering creative problem-solving and security awareness.
What are the key takeaways of Hacking: The Art of Exploitation?
- Understanding Exploits: Gain insights into how exploits work and how to defend against them, including buffer overflows and format string vulnerabilities.
- Hacker Ethic: Discusses the Hacker Ethic, promoting the free flow of information and knowledge pursuit.
- Practical Skills: Equips readers with skills to write hacks and understand security vulnerabilities.
How does Hacking: The Art of Exploitation define hacking?
- Creative Problem Solving: Describes hacking as creating problem-solving methods through unconventional means.
- Beyond Criminality: Emphasizes that hacking is not inherently criminal but a means of innovation and exploration.
- Historical Context: Traces hacking origins to early computer enthusiasts who creatively manipulated systems.
What is the Hacker Ethic mentioned in Hacking: The Art of Exploitation?
- Free Information: Promotes the belief that information should be free and accessible to all.
- Learning and Mastery: Values continuous learning and mastery over technology, encouraging boundary-pushing and innovation.
- Community and Collaboration: Fosters a sense of community among hackers, where knowledge sharing and collaboration are encouraged.
What are some core techniques covered in Hacking: The Art of Exploitation?
- Buffer Overflows: Explains exploiting programs using buffer overflows, a common software vulnerability.
- Shellcode Writing: Teaches writing and injecting shellcode, essential for executing arbitrary code on target systems.
- Network Traffic Manipulation: Covers techniques to redirect network traffic and hijack TCP connections, enhancing network security understanding.
How does Jon Erickson explain buffer overflows in Hacking: The Art of Exploitation?
- Detailed Explanation: Provides a thorough explanation of buffer overflows, including their occurrence and implications.
- Practical Examples: Includes practical examples and code snippets to illustrate buffer overflow exploitation.
- Mitigation Strategies: Discusses strategies for mitigating buffer overflow vulnerabilities, emphasizing secure coding practices.
What is the significance of shellcode in hacking as explained in Hacking: The Art of Exploitation?
- Execution of Arbitrary Code: Shellcode is crucial for executing arbitrary code on a target system, a key component of many exploits.
- Crafting Shellcode: Teaches writing shellcode that is small, efficient, and free of null bytes for successful exploitation.
- Polymorphic Shellcode: Discusses creating polymorphic shellcode to evade detection by security systems.
What are some specific methods discussed in Hacking: The Art of Exploitation?
- Buffer Overflow Exploits: Details how buffer overflows can be exploited to execute arbitrary code by manipulating stack memory.
- Format String Vulnerabilities: Explains exploiting format string vulnerabilities to read or write arbitrary memory locations.
- Network Attacks: Covers network attacks like ARP spoofing and TCP/IP hijacking, demonstrating traffic interception and manipulation.
How does Hacking: The Art of Exploitation approach the topic of network security?
- Comprehensive Coverage: Covers various aspects of network security, including common attacks and vulnerabilities.
- Practical Techniques: Includes techniques for securing networks, such as implementing firewalls and intrusion detection systems.
- Real-World Examples: Uses real-world examples to illustrate the impact of network vulnerabilities, emphasizing the importance of security.
What are the best quotes from Hacking: The Art of Exploitation and what do they mean?
- "Hacking is about understanding the rules of the system.": Emphasizes understanding systems to identify vulnerabilities, highlighting the hacker mindset.
- "The best way to learn is by doing.": Reflects the book's hands-on approach, encouraging practical exercises and real-world application.
- "Vulnerabilities exist in every system.": Reminds readers that no system is completely secure, underscoring the need for continuous security improvement.
How can I apply the knowledge from Hacking: The Art of Exploitation in real life?
- Ethical Hacking: Techniques can be applied in ethical hacking and penetration testing to identify and mitigate system vulnerabilities.
- Improving Security Practices: Understanding hacking techniques helps developers and IT professionals enhance security practices.
- Continuous Learning: Encourages a mindset of continuous learning and curiosity, staying updated on the latest hacking techniques and security measures.
Lataa PDF
Lataa EPUB
.epub digital book format is ideal for reading ebooks on phones, tablets, and e-readers.