- Ја почнал/а темата
- #1
NIKIHACK
Intern
Анализа на Buffer Overflow напад.
Кој е условот за Buffer Overflow нападо?Говорејки општо
buffer overflow се случувасекогаш кога програмата пишува
повеќе информации во buffeot отколку што има обезбедено
во меморијата.Ова му овозможува на напагачот да ги препише
податоците што ја контролираат патеката за егзекуција на
програмата и да ја превземе контролата на програмата за да
го изврши напагачкиот код наместо кодот на процесот.За тие
што сакаат да знаат како овоа работи,ќе објасниме во
продолжение како сево ова работи.
Програмите напишани во C ,каде се дава повеќе фокус на
програмерската вештина и должината на кодот па потоа на
безбедносниот аспект,се најосетливи на овој вид на напади.
Фактички,во програмерските термини,C јазикот се смета за
многу флексибилен и моќен,но изгледа дека истотака оваа
алатка е доста корисна и може да претставува проблем за
многу програмери почетници.Доволно е да споменеме
интикаторски-базиран повик со директно мемориски означен
мод или текстуален стринг метод.Ова покасно имплицира
ситуација која дури и помегу библиотекините (library)
функциите работејќи на текстуалниот стринг,навистина има
такви кои неможат да ја контролираат должината на
вистинскиот buffer со тоа што станува чувствителен на
преоптеретувањето (overflow) на декларираната должина.
Пред да продолжиме со натамошни анализи на механизмот со
кој се прогресира нападот,да се запознаеме подлабоко
со некои технички аспект во врска со извршувањето на
програмата и функциите за менаџмент на меморијата.
Процес Меморија
Кога се извршува програма,многу комплицирани вредности
се означени во меморијата на добро структуиран начин.
Објаснување:
Текстуалните сегменти го содржат примарниот програмски код,
серија од извршувачки програмски инструкции.Наредниот
сегмент е област на меморија која ги содржи и двете
иницијализирачки и неиницијализирачки глобални податоци.
Неговата големина се доделува при преведувањето
(компајлирањето на програмата).Одејќо подлабоку во
мемориските структури има се повисоки адреси,имаме порции
споделени со стакот и heap,што во свртување,се алоцираат
во стартнотниот прериод.Стакот се користи за зачувување на
функциските call-by аргументи,локалните вредности и
вредностите на селектираните регистри.За да ја алоцира
меморијата,heapот ја користи malloc функцијата или нов
оператор...
Пишувано од мене...
Кој е условот за Buffer Overflow нападо?Говорејки општо
buffer overflow се случувасекогаш кога програмата пишува
повеќе информации во buffeot отколку што има обезбедено
во меморијата.Ова му овозможува на напагачот да ги препише
податоците што ја контролираат патеката за егзекуција на
програмата и да ја превземе контролата на програмата за да
го изврши напагачкиот код наместо кодот на процесот.За тие
што сакаат да знаат како овоа работи,ќе објасниме во
продолжение како сево ова работи.
Програмите напишани во C ,каде се дава повеќе фокус на
програмерската вештина и должината на кодот па потоа на
безбедносниот аспект,се најосетливи на овој вид на напади.
Фактички,во програмерските термини,C јазикот се смета за
многу флексибилен и моќен,но изгледа дека истотака оваа
алатка е доста корисна и може да претставува проблем за
многу програмери почетници.Доволно е да споменеме
интикаторски-базиран повик со директно мемориски означен
мод или текстуален стринг метод.Ова покасно имплицира
ситуација која дури и помегу библиотекините (library)
функциите работејќи на текстуалниот стринг,навистина има
такви кои неможат да ја контролираат должината на
вистинскиот buffer со тоа што станува чувствителен на
преоптеретувањето (overflow) на декларираната должина.
Пред да продолжиме со натамошни анализи на механизмот со
кој се прогресира нападот,да се запознаеме подлабоко
со некои технички аспект во врска со извршувањето на
програмата и функциите за менаџмент на меморијата.
Процес Меморија
Кога се извршува програма,многу комплицирани вредности
се означени во меморијата на добро структуиран начин.
Објаснување:
Текстуалните сегменти го содржат примарниот програмски код,
серија од извршувачки програмски инструкции.Наредниот
сегмент е област на меморија која ги содржи и двете
иницијализирачки и неиницијализирачки глобални податоци.
Неговата големина се доделува при преведувањето
(компајлирањето на програмата).Одејќо подлабоку во
мемориските структури има се повисоки адреси,имаме порции
споделени со стакот и heap,што во свртување,се алоцираат
во стартнотниот прериод.Стакот се користи за зачувување на
функциските call-by аргументи,локалните вредности и
вредностите на селектираните регистри.За да ја алоцира
меморијата,heapот ја користи malloc функцијата или нов
оператор...
Пишувано од мене...