IT Security vs GameDev. IGK'8 2011, Siedlce / Poland



Podobne dokumenty
Przepełnienie bufora. Trochę historii Definicja problemu Mechanizm działania Przyczyny Źródła (coś do poczytania)

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Dokumentacja techniczna API systemu SimPay.pl

Wybrane ataki na urządzenia sieciowe Secure Michał Sajdak, Securitum sekurak.pl

Bezpieczeństwo protokołów i inne podatności

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

Wybrane problemy bezpieczeństwa w urządzeniach sieciowych SEConference Michał Sajdak, Securitum sekurak.pl

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Bezpieczeństwo systemów komputerowych

Kiedy od softu zależy ludzkie życie o systemach safety-critical. Maciej Gajdzica

Wykład 8. Temat: Hakerzy, wirusy i inne niebezpieczeństwa. Politechnika Gdańska, Inżynieria Biomedyczna. Przedmiot:

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Szablony funkcji i szablony klas

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie Komponentowe WebAPI

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Drobne błędy w portalach WWW

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Automatyczne testowanie infrastruktury pod kątem bezpieczeństwa. Leszek Miś IT Security Architect RHCA,RHCSS,Sec+ Linux Polska Sp. z o.o.

Inżynieria Wytwarzania Systemów Wbudowanych

Programowanie obiektowe

Visual Basic Debugging and Error Handling

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk

Testy penetracyjne webaplikacji.

DYNAMICZNE PRZYDZIELANIE PAMIECI

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

OWASP. The Open Web Application Security Project. OWASP Top rc1. Dziesięć najbardziej krytycznych zagrożeń w web aplikacjach

Dynamiczny DNS dla usług typu Neostrada przykład konfiguracji

Bezpieczeństwo aplikacji. internetowych. 2. Szkolenie dla administratorów stron internetowych hufców Śląskiej Chorągwi ZHP

Umowa Licencyjna Użytkownika Końcowego End-user licence agreement

z testów penetracyjnych

Audytowane obszary IT

Portal Security - ModSec Enterprise

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Tworzenie aplikacji rozproszonej w Sun RPC

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

2018 Marcin Kukliński. Niesforne bity i bajty

PROGRAMOWANIE w C prolog

Pobieranie argumentów wiersza polecenia

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

HISPASEC. Praktyczne podejście do testowania bezpieczeństwa implementacji obsługi formatów danych. by Gynvael Coldwind

Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Geek's Night / /dev/urandom. gynvael.coldwind//vx, Hispasec

MS Visual Studio 2005 Team Suite - Performance Tool

Platforma Office 2010

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

INSTRUKCJE JAK AKTYWOWAĆ SWOJE KONTO PAYLUTION

Język ludzki kod maszynowy

Warsztat: Infoblox DNS Firewall & DNS Infoblox Threat Analytics. Czyli jak w godzinę ochronić użytkowników.

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Kurs rozszerzony języka Python

Laboratorium - Poznawanie FTP

Konfiguracja klienta Lotus Notes R6 z certyfikatami i kluczami na karcie kryptograficznej lub w pliku.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

Data modyfikacji:

Wprowadzenie do szablonów szablony funkcji

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Podstawy programowania

Programowanie obiektowe

Bezpieczeństwo systemów komputerowych

Krótkie wprowadzenie do korzystania z OpenSSL

Kompilator języka C na procesor 8051 RC51 implementacja

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Wprowadzenie do szablonów szablony funkcji

INFORMATOR TECHNICZNY WONDERWARE

C++ - [1-3] Debugowanie w Qt Creator

Klasy i obiekty cz II

Programowanie poprzez testy z wykorzystaniem JUnit

Wyjątki (exceptions)

Szkolenie Microsoft Lync Grupy Odpowiedzi

Metody ataków sieciowych

Wykład 1

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Podstawy programowania. Wprowadzenie

Sun RPC/XDR. Dariusz Wawrzyniak 1

Wstęp do Reverse engineeringu

Integracja systemu antymalwarowego HP ATA z urządzeniami bezpieczeństwa sieciowego HP NGIPS. Sebastian Mazurczyk Warszawa / 19, 06, 2015

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Komputery przemysłowe i systemy wbudowane

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Aspekty bezpieczeństwa aplikacji internetowych

Transkrypt:

IT Security vs GameDev IGK'8 2011, Siedlce / Poland

/usr/bin/whoami http://gynvael.coldwind.pl/

Plan Część I Różne definicje bezpieczeństwa Część II GameDev vs hacking o czym nie będzie...

Część I Różne definicje bezpieczeństwa Punkt widzenia zależy od punktu siedzenia (autor nieznany)

Wydawca Gra Administrator Security Programista Gracz Hacker*

Wydawca a security J. Hutsch http://commons.wikimedia.org/wiki/file:piratenfahne_0002.jpg DRM Digital rights management (DRM, pol. cyfrowe zarządzanie prawami) - oparty o mechanizmy kryptograficzne lub inne metody ukrywania treści system zabezpieczeń mający przeciwdziałać używaniu danych w formacie elektronicznym w sposób sprzeczny z wolą ich wydawcy. (źródło: Wikipedia)

DRM, your doing it wrong! Dygresja Niepoprawny optymista o DRM: DRM zabezbiecza naszą grę przed piratami... H A ) : E Y HT G I R

DRM, your doing it wrong! Dygresja Realista o DRM: DRM odsuwa w czasie 'piracenie' naszej gry 3 lata W3, PS3 i Linux, next slide

DRM, your doing it wrong! Dygresja Realista o DRM: DRM odsuwa w czasie 'piracenie' naszej gry 45 min 3 lata W3, PS3 i Linux, next slide

DRM, your doing it wrong! Dygresja Realista o DRM: DRM odsuwa w czasie 'piracenie' naszej gry 45 min 3 lata -2 dni W3, PS3 i Linux, next slide

DRM, your doing it wrong! Dygresja Użytkownik (licencjonowany) o DRM: DRM mnie wkurza 3 instalacje 2016 z 2216 * of 5 class action vs EA rootkit most pirated game of 2008-2 DAY Wszyscy jesteście złodziejami?id=299

DRM, your doing it wrong! Dygresja Użytkownik (nielicencjonowany) o DRM: crack.exe<enter> DRM? Hmm? What's that? single player&connection pad serwera = gra w menu emu debuger w tle

Admin a security Cheat'y: wallhack, maphack, teleport hack (C2), aimbot, etc... vs anty-cheety (pasywne / detekcja / prewencja) Privacy & Accounts: dobrze by było, gdyby nikt nam nie ukradł bazy danych

Gracz a security Cheat & Accounts.. I trojany? Pod koniec lipca do komendy policji w Olsztynie zgłosił się 27-letni mężczyzna. Twierdził on, że został okradziony. Ktoś zabrał mu magiczne buty, tarczę, naszyjnik, dwie bransoletki i hełm. Swoje straty wycenił wstępnie na 900 zł. Te przedmioty jednak nigdy nie istniały w realnym świecie. To wyposażenie, jakie posiadał awatar 27-latka w popularnej grze internetowej Tibia. źródło: http://giernik.pl/policja-ukradli... Michał Kowal

Programista a security Wszystko to co chcą poprzednicy + Bezpieczeństwo implementacji

Hacker* a security vs Bezpieczeństwo implementacji

Część II GameDev vs hacking

Bug vs Feature Vulnerability

Bug vs Vulnerability zwiększenie praw / przełamanie separacji The Internets My PC Wersja A: Ring 3 Wersja B: Ring 0

Bug czy Vulnerability? Zadanie! 1. Gdy nacisnę ALT+F9 program się crashuje. 2. Gdy wejdę na stronę www.przyklad.pl przeglądarka się crashuje. 3. Gdy oglądam zdjęcia z wakacji, przeglądarka obrazków się crashuje.

Bug czy Vulnerability? B UG 2. Gdy wejdę na stronę www.przyklad.pl przeglądarka się crashuje. VU LN 1. Gdy nacisnę ALT+F9 program się crashuje. VU LN Zadanie! 3. Gdy oglądam zdjęcia z wakacji, przeglądarka obrazków się crashuje.

Najczęstsze Błędy Najczęstsze Przyczyny Błędów

Buffer Overflow anyone?

Dokumentacja: Pakiet logowania: [INT login_len (max 20)] [CHAR login * max 20] struct LOGIN_ST { int len; char login[20]; }; bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); memcpy(&login.login, data+4, login.len);...

Dokumentacja: Pakiet logowania: [INT login_len (max 20)] [CHAR login * max 20] struct LOGIN_ST { int len; char login[20]; }; 1337 bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); memcpy(&login.login, data+4, login.len);...

Przykładowy Skutek Nadpisanie adresu powrotu znajdującego się na stosie. aka remote arbitrary code execution

Przyczyna 1 Nadmierne ufanie dokumentacji. Ale w dokumentacji tak pisało... See also:?id=179

Dokumentacja: Pakiet logowania: [INT login_len (max 20)] [CHAR login * max 20] struct LOGIN_ST { int len; char login[20]; }; bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); memcpy(&login.login, data+4, login.len);...

Dokumentacja: Pakiet logowania: [INT login_len (max 20)] [CHAR login * max 20] struct LOGIN_ST { int len; char login[20]; }; bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len);...

Dokumentacja: Pakiet logowania: [INT login_len (max 20)] [CHAR login * max 20] struct LOGIN_ST { int len; char login[20]; }; -1337 bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len);...

Dokumentacja: Pakiet logowania: [INT login_len (max 20)] [CHAR login * max 20] struct LOGIN_ST { int len; char login[20]; }; -1337 FFFFFAC7 4294965959 bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len);...

Przykładowy Skutek Program wykonał nieprawidłową operację I zostanie zamknięty... aka remote DoS

Przyczyna 2 Signed/Unsigned mismatch. Wielkość nie może być ujemna.

Skoro rzucany jest wyjątek... to go złapmy! bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); try { if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len); } catch(av) { }...

błąd nadal tu jest! bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); try { if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len); } catch(av) { }...

Przykładowy Skutek Zostaje nadpisany adres SEH na stosie* *nie dotyczy 64-bitów aka remote code execution... again

Przyczyna 3 Ukrywanie błędu.... zamiast jego poprawienia.

A może naprawmy ten pakiet... bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); login.len = abs(login.len); if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len);...

A może naprawmy ten pakiet... bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); login.len = abs(login.len); if(login.len >= 20) throw a fit ; memcpy(&login.login, data+4, login.len);...

Przykładowy Skutek Jeden z poprzednich... aka remote code execution or remote DoS

Przyczyna 4 Próba naprawy uszkodzonego pakietu.... zamiast jego odrzucenia.

struct LOGIN_ST { unsigned int len; char *login; }; bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); // alloc +1 byte for \0 terminator login.login = (char*)malloc(login.len+1); if(!login.login) throw a fit ; memcpy(login.login, data+4, login.len);...

struct LOGIN_ST { unsigned int len; char *login; }; bool HandleLogin(BYTE *data) { LOGIN_ST login; memcpy(&login.len, data, sizeof(int)); // alloc +1 byte for \0 terminator login.login = (char*)malloc(login.len+1); if(!login.login) throw a fit ; memcpy(login.login, data+4, login.len);...

Przykładowy Skutek Jeden z poprzednich... aka remote code execution or remote DoS

Przyczyna 6 Niebezpieczne operacje arytmetyczne. Wyliczanie ilości pamięci do alokacji wymaga używania funkcji które są świadome overflowów. LUB Zmiennych odpowiednich wielkości...

itd. buffer overflow buffer underflow boundary condition error race condition time of check vs time of use double free use after free integer overflow integer underflow format string bug uninitialized variables... local privilege escalation remote code execution denial of service information leak... & itp. XSS HTML injection SQL injection XSRF aka CSRF Local File Inclusion aka LFI Remote File Inclusion aka RFI głębokie ukrycie mixed content JSON hijacking Clickjacking Strokejacking Cursorjacking :)... All this (and more!) is available in the programming language of your choice!

Tips & Trick Nie ufaj SHOULD, MUST, WILL, etc w dokumentacjach. Nie pisz własnych parserów - staraj się korzystać ze sprawdzonych bibliotek. Naucz się myśleć jak atakujący. Dowiedz się jak wyglądają standardowe błędy i jakie mogą być ich skutki. Używaj fuzzerów do testowania kodu - to będzie pierwsze narzędzie które chwyci atakujący. Nie ukrywaj błędów, poprawiaj je! Warningi przy kompilacji po coś są :) Nie używaj assert do testów związanych z bezpieczeństwem. (assert'y istnieją tylko w kompilacji DEBUG)

Dziękuje za uwagę! Czas na pytania :) http://gynvael.coldwind.pl/ gynvael@coldwind.pl