Video: AMONG US, but HACKER Impostor (November 2024)
Plaats een stel hackers en andere beveiligingsbewuste mensen op dezelfde plek en een beetje goedaardige concurrentie en hacken is onvermijdelijk.
De Kaspersky Lab Security Analyst Summit van vorige week zat vol met interessante sessies en werd bijgewoond door enkele van de beste geesten in informatiebeveiliging, maar dat was niet alles. Deelnemers konden ook deelnemen aan de "Crypto-challenge", waarbij ze hun hackvaardigheden gebruiken om een reeks puzzels op te lossen. Ik behoorde tot de handjevol die de uitdaging had voltooid en leerde onderweg iets meer over cryptografie, verduistering en reverse engineering.
Ik heb vooral geleerd dat hacken is als het oplossen van puzzels; je blijft denken: "Laat me dit ene ding eens proberen" en je voelt je echt opgewonden als je het krijgt.
Cryptografie houdt de sleutel vast
In de kern gaat cryptografie over het nemen van een bericht en het zodanig schrijven dat het lijkt op wartaal voor iedereen die het geheim niet kent. Het lijkt een beetje op Pig Latin. Als je de regels van de taal niet kent, heb je geen idee wat "ellohay" betekent. Sommige cijfers zijn heel eenvoudig - zoals het omwisselen van de letter met de volgende letter, zodat a wordt b, b wordt c, enzovoort, totdat "hallo" wordt "ifmmp". Anderen zijn veel wiskundig ingewikkelder en worden gebruikt om onze creditcardnummers en wachtwoordgegevens te beschermen.
Elke deelnemer aan de top ontving na registratie een brief over de crypto-uitdaging. Aan het einde was een reeks letters die nergens op sloeg maar een bekend formaat had. Beginnend met "vhhd: //" en gevolgd door groepen letters gescheiden door een punt (.), Was het duidelijk de URL naar een website. Toen ik me realiseerde dat de eerste paar letters "http: //" waren, wist ik dat dit ROT13 was, een populair (en enorm zwak) cijfer, dat elke letter verruilt voor een letter die 13 plaatsen later in het alfabet komt. Het was niet nodig om de URL handmatig uit te werken, omdat er tonnen ROT13-decoders op internet zijn.
Obfuscated Javascript, Oh My
De resulterende pagina, met een afbeelding en een welkomstbericht, was saai. De bron van de pagina was alles behalve. Het waren regels en regels met meer gebrabbel, ingesloten in tags <script type = "text \ javascript">. Ah, verduisterde Javascript.
Obfuscation is een veel gebruikte techniek waarbij kwaadwillende codeerders aanvalscode zodanig schrijven dat een mens de code niet gemakkelijk kan lezen. Het verschilt van cryptografie omdat het niet vertrouwt op een geheim, maar eerder op ingewikkelde programmeermethoden om moeilijk leesbare code te genereren. De resulterende code is onleesbaar voor het menselijk oog, maar de machine heeft geen probleem deze te begrijpen en uit te voeren.
Zoals het geval was met ROT13, was het niet nodig om te proberen het verduisterde Javascript handmatig te ontleden. In plaats daarvan gebruikte ik de DOM-inspecteur die is ingebouwd in de Chrome-webbrowser en stapte ik door elk pagina-element. Ik zag de code voor het weergeven van de afbeelding en het welkomstbericht verborgen in het gebrabbel, evenals een commentaarregel met code met de volgende aanwijzing.
Obfuscation is ook niet beperkt tot alleen Javascript. Ik moest een Perl-script bewerken om erachter te komen wat dat lelijke stukje code probeerde te zeggen.
Reverse Engineering als een baas
Op een gegeven moment heb ik een uitvoerbaar bestand gedownload (gescand met Kaspersky Antivirus - het doet geen pijn om voorzichtig te zijn!), Waardoor ik werd gevraagd een gebruikersnaam en wachtwoord in te voeren. Het was tijd om het uitvoerbare bestand reverse-engineer te maken.
Het werken op een Linux-laptop hielp op dit moment, omdat ik tekenreeksen kon gebruiken, een Linux-opdrachtregelprogramma dat de inhoud van niet-tekstbestanden afdrukt, en gdb , een debugger waarmee je kunt zien wat er in een bestand gebeurt terwijl het wordt uitgevoerd. snaren was ook handig later in de uitdaging, toen ik.d64-bestanden downloadde. Ik had een Commodore 64-emulator kunnen downloaden - zoals de organisator van de uitdaging voor ogen had - om het bestand uit te voeren, maar ik heb alleen maar getoetst waar ik heen moest gaan.
Ik heb gehoord over het insluiten van geheime berichten in een afbeelding, maar toen ik met zo'n afbeelding werd geconfronteerd, was ik aanvankelijk stomverbaasd. Toen herinnerde ik me dat afbeeldingen lagen hebben en dat aanvallers informatie in verschillende lagen kunnen insluiten zonder de zichtbare laag te verstoren. Ik had elke laag in GIMP kunnen bekijken, een open-source tool vergelijkbaar met Adobe Photoshop die op Linux draait. In plaats daarvan heb ik de afbeelding door strings gehaald, waardoor alle tekst is opgehaald die in de afbeelding is verborgen. Dat is een veelzijdige en handige opdracht.
Opmerking over wachtwoorden
Enkele stappen in de uitdaging vroegen me om een geldig wachtwoord. Hoewel het "wachtwoord" nooit opkwam, was er minstens één keer dat ik willekeurig woorden invoerde die enige relevantie hadden voor de conferentie en het spel totdat ik de juiste tegenkwam. In één stap werd ik overgehaald door kleine letters / hoofdletters, dus ik genereerde gewoon een lijst met alle mogelijke combinaties en werkte me een weg door.
Een aanvaller, gewapend met wat informatie over het slachtoffer, kan gemakkelijk proberen het juiste wachtwoord te raden, of gewoon een lijst met mogelijke woorden doorlopen. Ik bleef maar mompelen: "Ik ga je te slim af", en toen ik het bedacht, dacht ik: "HA! Ik snap het!"
Gewoon puzzelen
Met uitzondering van strings en gdb, hing elk element van de uitdaging af van iets vrij eenvoudigs, of iets dat ik kon leren met een Google-zoekopdracht. Hoewel niet alle hacking zo eenvoudig is, is het belangrijk om te begrijpen dat de vaardigheden op elkaar worden gebouwd. Om te beginnen heb je alleen een beetje nieuwsgierigheid en een bereidheid nodig om door te zetten.
Je hoort over mensen die proberen in te breken in systemen of campagnes online lanceren voor de lol, of gewoon om te bewijzen dat ze dat kunnen. Wat hackers blijft hacken, is die ongrijpbare adrenalinestoot die voortkomt uit het oplossen van een uitdagende puzzel.