Elsajátítandó programozási nyelvek etikus hackerek részére
Ha hackerek akarunk lenni, célszerű pár programozási nyelvet megtanulnunk. Hogy mik ezek? A cikkben rövid összefoglalót kapunk azokból a manapság használatos nyelvekből, amelyekre szükségünk lehet a munkánk során.
Egy karrier indulása
Egy információsbiztonsági karrier beindításához komoly technikai tudással kell rendelkezni, ám ez közel sem űrtudomány. Ez a cikk azoknak az aspiránsoknak és kezdőknek szól, akik az Információs biztonság és az Etikus hackelés területén szeretnének karriert befutni. Ismertetésre kerülnek azon programozási nyelvek, melyek szükségesek a folyamat, az eljárások és a különböző technikák teljes körű megértéséhez az etikus hackelés és a behatolási tesztelés területén.
Milyen nyelvet tanuljunk?
Sok nyílt forráskódú biztonsági alkalmazás C/C++/Python és Perl nyelven van megírva. Ezért is érdemes ezeket a nyelveket elsajátítani, hogy megérthessük a már elérhető eszközök kódjait, és tanulhassunk belőlük. Az olyan dolgok, mint a buffer-túlcsordulás és az alacsony szintű programozás szükségessé teszi az alapfokú assembler/C ismeretek meglétét. Ha egy bizonyos típusú platform feltörését tűztük ki célul, akkor az ehhez szükséges szintaxis ismerete igen fontos (pl. a legtöbb webes alkalmazás feltörése megkíván némi adatbázis/JavaScript/PHP tudást (vagy épp ellenkezőleg ASP/JSP ismeretet)).
Végezetül pedig az általunk választott platform megismerése is fontos, így a Linux-felhasználók a bash scriptingbe ásnák bele magukat, míg a Windows-felhasználók valamiféle batch vagy PowerShell szkriptelést tanulnának.
A Java mindenütt jelen van, így bármely IT-szakembernek, aki bele akarna nyúlni a kódba, rendelkeznie kell némi Java-ismerettel, de ha már a C/C++ elsajátításával fáradoznak, akkor ez nem lesz teljesen ismeretlen terület számukra. Manapság a JavaScript egy igen jó nyelv a tanulás megkezdéséhez. Lehet összetett és egyszerű is. Mindenkinek van böngészője, és így megtanulhatja az erős polimorfizmust (objektum halmozást), vagy csak egyszerű iterációkat. A Ruby egy elég világos, könnyen tanulható, és roppant könnyen kezelhető nyelv. Ehhez még hozzájön az is, hogy gyakori nyelv eszközök megírásakor. Az egésznek az a lényege, hogy tudjuk, mire való az adott nyelv.
Szóval kezdjünk hozzá a tanuláshoz, játsszunk a nyelvekkel, lehetőségekkel, stb. Az elején ez megteszi. De egy biztonsági szakértőknek ennél mélyebbre kell ásnia: mi ennek a funkciónak a feladata, és mi történik, ha sizeof(i++) értéket adom meg, miért rossz a printf(ac[1]), stb.
Ha az a cél, hogy csak bizonyos sebezhetőségeket derítsünk fel, akkor ez rossz gondolatmenet: hiszen a lényeg, hogy számoljunk az ismeretlennel is, mielőtt még bekövetkezne. Akadtak olyan nagyobb programok, mint a Metasploit és az Nmap, melyek megírásához például Lua-t és Ruby-t használtak, de amint megismerünk néhányat a cikkben említett nyelvek közül, ezeknek az „újaknak” az elsajátítása sem lesz probléma. Megfigyelhető, hogy bizonyos nyelvek más és más időben voltak “divatosak”.
A magasabb szintű nyelvek ismerete többé-kevésbé átültethető bármelyik másik nyelvbe (csak figyelni kell az egyes nyelvek saját kódolási trükkjeire). Az assembly-vel és az alacsony szintű programozással viszont munkáról munkára meg kell küzdeni, hacsak nem merülünk bele a hasonló típusú célok folyamatos ismétlésébe.
Végül is mi csak megfigyeljük a kódot ahelyett, hogy saját magunk írnánk meg (eltekintve a szkriptelési gyakorlatoktól), így nem kell ismernünk minden apró trükköt, hiszen a legtöbbre ráismerhetünk a célkód alapján. Továbbá használjuk a Common Criteria (ISO/ICE 15408) szabványt. Ez a minta egyszerűen fogalmazva meghatároz hét IT-biztonsági szintet (EAL1-től egészen EAL7-ig). Az önálló biztonsági tesztelés az EAL2-es szinten lép be, majd a kódvizsgálat az EAL4-es szintjén. Etikus hackelési megbízások esetén ezek nem számítanak tipikus értékeléseknek (több hónapos időszakokra is kiterjednek, és komoly költségekkel járnak), de tartalmazzák az etikus hackelést az egyik komponensük részeként (legalábbis EAL2-től fölfelé).
Összefoglalva
- Python, C++ (ha akarjuk C), Perl és végezetül Java (ebben a sorrendben).
- Egyéb nyelvek, amik szükségesek lehetnek (igényektől függően): HTML/JavaScript/adatbázis (MySQL, PostgreSQL…), és persze PHP és ASP.
- C és assembly a mélyebb ismeretekhez – az assembly ismeretek nem feltétlenül tartalmazzák a buffer / integer / egyéb túlcsordulásos sebezhetőségeket.
- Lua, Ruby, LISP. Különböző eszközök használják ezeket.
- A maradék pedig a bash, batch és PowerShell.
Az elején kezdjünk csak lassan, könnyedén, aztán haladjunk lépésről lépésre.
Szerző: Harish Chaudhary
A szerző
-
Harish Chaudhary egy fiatal, motivált és lendületes szoftverminőség mérnök a QA InfoTech-nél. Elkötelezett a biztonsági és behatolási tesztelés területén, hogy megóvja az adatokat a hackerektől. Egy lelkes szónok, aki nevet szerzett magának a QA InfoTech által szervezett belsős tesztelési konferencián való részvételével. 2008 óta tagja a Codeproject.com-nak és szabadúszó szakértői íróként dolgozik. Néhány cikke még egy szoftvertesztelési magazinban is megjelent – Testing Circus. Harish a számítógépes alkalmazások mestereként végzett a Delhiben található Guru Gobind Singh IndraPrastha egyetem mesterképzésén. Szoftvermérnöki diplomája van, és a Microsoft által elismert SQL 2005 bizonyítvánnyal is rendelkezik.
Az „Adatbiztonság biztosítása behatolási teszteléssel” című kutatása bekerült a Bengalurui QAI által szervezett 11. Nemzetközi szoftvertesztelési konferencia prezentációi közé.