Heap spraying у інформаційній безпеці — це атака, що використовує помилки в роботі з пам'яттю програми. Атакуючи за допомогою heap spraying, хакер змушує додаток виділити пам'ять під велику кількість об'єктів, що містять шкідливий код. При цьому підвищується ймовірність успіху експлойта, який переносить потік виконання на деяку позицію всередині купи. Важливо розуміти, що без експлойта, що дозволяє змінювати потік виконання, heap spraying не завдасть якоїсь шкоди. Атака заснована на передбачуваності положення купи в адресному просторі процесу. Крім цього, виділення пам'яті в купі – це детермінована операція, яка і дозволяє з успіхом застосовувати цю техніку. Heap spraying особливо ефективна в браузерах, де хакер може виділяти пам'ять, використовуючи кілька рядків JavaScript на вебсторінці. Важливу роль грає подібність виділення пам'яті в різних операційних системах, що робить цю атаку кросплатформною. В результаті можна внести певну послідовність байт (наприклад, машинну інструкцію) в заздалегідь передбачену адресу в пам'яті цільового процесу.
При створенні процесу в операційній системі під його потреби виділяється адресний простір, в якому розташовані користувальницькі дані, виконуваний код і деяка системна інформація, яка залежить від конкретної операційної системи. Користувальницькі дані розподіляються між купою і стеком в залежності від способу виділення пам'яті під них. Так, у сегменті стека зберігаються змінні з автоматичним класом розміщення, а також інформація, яка зберігається при кожному виклику функції, наприклад, статичні змінні і адреси повернення при виклику функції. Купа — це область оперативної пам'яті, тобто при динамічному виділенні пам'яті місце виділяється в купі. Традиційно купа і стек ростуть назустріч один одному.
Основна концепція
Heap spraying сама по собі не є вразливістю. Однак вона може бути використана для доставки шкідливого коду у виконуваний область пам'яті процесу. Ця техніка використовує детермінованість операції виділення пам'яті в системі. Мається на увазі, що великий обсяг пам'яті часто розташовується з одним і тим же зміщенням в адресному просторі процесу. Проте ця техніка не в змозі створити пролом в самій системі безпеки. Тому для її використання необхідна уразливість, що дозволяє змінити порядок виконання команд (машинних інструкцій).
Використовувати цю техніку важко, оскільки дуже велика кількість факторів, що впливають на виконання процесу (з точки зору хакера). Тим не менш, з допомогою heap spraying можна виконати велику кількість інструкцій, що частково компенсує цю складність та дозволяє підвищити імовірність успішного злому.
Heap spraying може бути реалізована для більшості операційних систем і архітектур. Основна трудність – знаходження уразливості, яка дозволяє перенаправити потік виконання. Динамічне виділення великої кількості пам'яті, як говорилося раніше, — операція, що дозволяє передбачити положення купи в пам'яті (в момент проектування віртуальної пам'яті на фізичну). Кожен раз виконуючи одну і ту ж послідовність звернень до пам'яті, купа буде з великою часткою ймовірності надаватися на одному і тому ж місці.
Однак, щоб підвищити цю ймовірність, необхідно, щоб розмір шматка виділюваної пам'яті був порівнянний з розміром сегменту або сторінки, залежно від способу організації пам'яті.
Основна проблема цієї атаки – зміна потоку виконання. Без можливості перехоплення виконання цей вид атаки не має сенсу. Деякі функції можуть зберігати адресу повернення в купі, тоді хакер може спробувати змінити їх. У цьому випадку при поверненні з такої функції відбудеться переміщення в ділянку пам'яті, зручну для хакера, і, як наслідок, почне виконуватися шкідливий код. Будь-яка функція, що зчитує адресу, що знаходиться в купі, може бути використана як уразливість. Хакер може підмінити цю адресу на адресу модифікованого ним ділянки пам'яті. Це може призвести до спрямування потоку виконання на шкідливий код. Однак це не так просто, як здається.
Коректність адреси (його розмір, зміщення відносно початку сторінки), використовуваного для підміни, сильно залежить від архітектури. Тому на практиці використовують блоки, що складаються в основному з NOPів, дописуючи в кінці необхідний код. Цей прийом дозволяє не замислюватися про точності вираховування адреси і направити потік виконання в приблизне місце в адресному просторі.
Кроки, спрямовані на реалізацію heap spraying:
- Визначення розміру шматка виділюваної пам'яті таким чином, щоб одне виділення відповідало розміру сторінки.
- Виділення декількох шматків, в яких розташовуються NOP і shell-код.
- Використання відомої вразливості для перенаправлення лічильника команд на передбачуване положення шматків, наприклад, за допомогою переповнення стека.
- Виконання виділеної області.
Цей тип атак дуже ефективний в браузерах. Більшість браузерів підтримують виконання скриптів. Хакер може виділити необхідну пам'ять, використовуючи кілька рядків JavaScript або ActionScript на вебсторінці. Важливу роль відіграє схожість виділення пам'яті в різних операційних системах, що робить цю атаку кроссплатформнною. Більш того, адреси на які необхідно здійснити перехід, будуть схожі.
Історія
Перший раз heap spraying використовувалася в 2001 році і стала широко поширеною влітку 2005 року. Після було знайдено велику кількість вразливостей в Internet Explorer. Експлойти були дуже схожі між собою. Кожен такий експлойт складався з heap spraying, метод реалізації якої не змінювався, і перенесення лічильника команд на необхідне місце в пам'яті. Тому новий експлойт виходив зміною кількох рядків HTML і переключенням на нову уразливість.
Реалізація
JavaScript
Найпростіший спосіб виділити місце в пам'яті браузера — декларувати рядкову змінну і ініціалізувати її.
Приклади виділення пам'яті на JavaScript: :
var myvar = "CORELAN!"; var myvar2 = new String("CORELAN!"); var myvar3 = myvar + myvar2; var myvar4 = myvar3.substring(0,8);
Це дуже прості приклади, так як виділені рядки невеликі. Шматок shell-коду значно більше, але все ж менше цілої сторінки пам'яті.
Гіпотетично можна записати необхідний shell-код багато разів у кожен виділений нами блок, але тоді зловмисникові доведеться стежити, на яку конкретно адресу потрапляє покажчик, так як він не повинен потрапити на середину виконуваного коду. Зазвичай надходять по-іншому — виділяють шматки, містять безліч NOP-ів, і в кінці прописують необхідні команди. Тоді в силу лінійності розташування блоків в купі простіше дотриматися лінійності виконання коду і не потрібно прейматися про точності попадання на початок шматка пам'яті.
При правильному виборі розміру шматки пам'яті що виділяються повинні бути дуже близькі до розміру елемента купи. Якщо виділений шматок пам'яті буде менше, то це місце буде вільно. Менеджер пам'яті, в кращому випадку, залишить системне сміття в цьому «незайнятому просторі», а в гіршому покладе об'єкт, відповідний за розміром. У будь-якому випадку це призведе до помилки при спробі виконати дану ділянку пам'яті.
Таким чином, використовується зловмисниками скрипт виглядає так: :
<html> <script > var shellcode = unescape('%u\4141%u\4141'); // це напис CORELAN var bigblock = unescape('%u\9090%u\9090'); //90 - код NOP var headersize = 20; var slackspace = headersize + shellcode.length;// початковий розмір нашого шматка: корисний код + розмір заголовка while (bigblock.length < slackspace) bigblock += bigblock; //заповнення NOP-ами var fillblock = bigblock.substring(0,slackspace);//корисний код - наповнення var block = bigblock.substring(0,bigblock.length - slackspace);//просто NOPы while (block.length + slackspace < 0x40000) block = block + block + fillblock; //заповнення до розміру елемента купи - в даному випадку - це 0x40000 var memory = new Array(); for (i = 0; i < 500; i++){ memory[i] = block + shellcode }// виділення декількох таких елементів. </script> </html>
unescape()
- це функція, що дозволяє покласти байти саме в тому порядку, в якому зазначено в аргументі.
VBscript
VBscript використовують Internet Explorer для створення рядків з допомогою string
. Концептуально не відрізняється від реалізації на JavaScript, тільки назви функцій змінюються.
ActionScript
У липні 2009 були знайдені експлойти, що дозволяють використовувати ActionScript для реалізації heap spraying в Adobe Flash.
HTML5
У вересні 2012 на EuSecWest 2012 була представлена нова реалізація. Федеріко Муттіс (Federico Muttis) і Анібал Сакко (Anibal Sacco) показали, що heap spraying з високим ступенем гранулярності може бути реалізований за допомогою технології HTML5. Вони використовували низькорівневий растровий інтерфейс, наданий canvas API.
Зображення
Існують методи, що використовують завантаження зображень. Зображення складають з NOPів і далі діють, як і в попередніх випадках.
Способи запобігання
Як і при будь-яких переповненнях буфера, є три основні шляхи захисту. Часто простіше запобігти зміні потоку виконання, чим самому використанні буфера. Сучасні операційні системи використовують всі перераховані нижче методи:
- Запобігання виконання шляхом поділу даних і виконуваного коду, зазвичай з використанням архітектурних рішень, наприклад NX bit. Наприклад, вже в більшості ОС впроваджено EP
- Підвищення випадковості розташування даних в пам'яті. Наприклад, щоб наступний виділений елемент купи не мав фіксованого зміщення відносно поточного. Вже впроваджено в більшості ОС: ASLR.
- Збільшення кількості перевірок дотримання меж буфера в менеджері пам'яті.
Проекти, пов'язані з даним типом атаки:
- проект Nozzle від Microsoft Research ставить своєю метою запобігання heap spraying.
- BuBBle — це інший проект, метою якого є мінімізація шкоди від даної атаки.
Див. також
Примітки
- Benjamin Livshits, Paruj Ratanaworabhan, Benjamin Zorn. .
- Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реалізація. — Питер. — С. 78-252.
- Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64х разрядной версии Windows. — Русская Редакция. — С. 68-118,333-418.
- У. Ричард Стивенс, Стивен А. Раго. UNIX. Профессиональное программирование. — Символ-Плюс. — С. 288-351.
- Брайан Керниган, Деннис Ритчи. Язык программирования Си. — Вильямс. — С. 93-123.
- Thomas Toth, Christopher Kruegel. . — .
- Tilo Muller. .
- Марк Руссинович, Дэвид Соломон. Внутреннее устройство Windows. — СПб. : Питер, 2013. — С. 104-681. — 800 с.
- Sotirov A. .
- HwaiGeeng, Chew. .
- Black Hat. .
- Anibal Sacco, Federico Muttis. .
- Francesco Gadaleta, Yves Younan, Wouter Joosen. .
Література
- Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64х разрядной версии Windows. — М. : Русская Редакция, 2008. — С. 68-118,333-418.
- У. Ричард Стивенс, Стивен А. Раго. UNIX. Профессиональное программирование. — СПб. : Символ-Плюс, 2014. — С. 288-351.
- Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реализация. — СПб. : Питер, 2007. — С. 78-252.
- Брайан Керниган, Деннис Ритчи. Язык программирования Си. — Вильямс, 2015. — С. 93-123.
- Марк Руссинович, Дэвид Соломон. Внутреннее устройство Windows. — СПб. : Питер, 2013. — С. 104-681.
Посилання
- . Corelan Team. Архів оригіналу за 25 квітня 2015. Процитовано 12 грудня 2015.
- . MSDN. Архів оригіналу за 22 грудня 2015. Процитовано 12 грудня 2015.
- . OpenNET. Архів оригіналу за 22 грудня 2015. Процитовано 12 грудня 2015.
- . Debian. Архів оригіналу за 22 грудня 2015. Процитовано 12 грудня 2015.
- . Julia Wolf. Архів оригіналу за 22 грудня 2015. Процитовано 12 грудня 2015.
- . EUSecWest 2012. Архів оригіналу за 22 грудня 2015. Процитовано 12 грудня 2015.
- . CISCO. Архів оригіналу за 22 грудня 2015. Процитовано 12 грудня 2015.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Heap spraying u informacijnij bezpeci ce ataka sho vikoristovuye pomilki v roboti z pam yattyu programi Atakuyuchi za dopomogoyu heap spraying haker zmushuye dodatok vidiliti pam yat pid veliku kilkist ob yektiv sho mistyat shkidlivij kod Pri comu pidvishuyetsya jmovirnist uspihu eksplojta yakij perenosit potik vikonannya na deyaku poziciyu vseredini kupi Vazhlivo rozumiti sho bez eksplojta sho dozvolyaye zminyuvati potik vikonannya heap spraying ne zavdast yakoyis shkodi Ataka zasnovana na peredbachuvanosti polozhennya kupi v adresnomu prostori procesu Krim cogo vidilennya pam yati v kupi ce determinovana operaciya yaka i dozvolyaye z uspihom zastosovuvati cyu tehniku Heap spraying osoblivo efektivna v brauzerah de haker mozhe vidilyati pam yat vikoristovuyuchi kilka ryadkiv JavaScript na vebstorinci Vazhlivu rol graye podibnist vidilennya pam yati v riznih operacijnih sistemah sho robit cyu ataku krosplatformnoyu V rezultati mozhna vnesti pevnu poslidovnist bajt napriklad mashinnu instrukciyu v zazdalegid peredbachenu adresu v pam yati cilovogo procesu Roztashuvannya steka i kupi v adresnomu prostori Pri stvorenni procesu v operacijnij sistemi pid jogo potrebi vidilyayetsya adresnij prostir v yakomu roztashovani koristuvalnicki dani vikonuvanij kod i deyaka sistemna informaciya yaka zalezhit vid konkretnoyi operacijnoyi sistemi Koristuvalnicki dani rozpodilyayutsya mizh kupoyu i stekom v zalezhnosti vid sposobu vidilennya pam yati pid nih Tak u segmenti steka zberigayutsya zminni z avtomatichnim klasom rozmishennya a takozh informaciya yaka zberigayetsya pri kozhnomu vikliku funkciyi napriklad statichni zminni i adresi povernennya pri vikliku funkciyi Kupa ce oblast operativnoyi pam yati tobto pri dinamichnomu vidilenni pam yati misce vidilyayetsya v kupi Tradicijno kupa i stek rostut nazustrich odin odnomu Osnovna koncepciyaPam yat Do i Pislya heap spraying Heap spraying sama po sobi ne ye vrazlivistyu Odnak vona mozhe buti vikoristana dlya dostavki shkidlivogo kodu u vikonuvanij oblast pam yati procesu Cya tehnika vikoristovuye determinovanist operaciyi vidilennya pam yati v sistemi Mayetsya na uvazi sho velikij obsyag pam yati chasto roztashovuyetsya z odnim i tim zhe zmishennyam v adresnomu prostori procesu Prote cya tehnika ne v zmozi stvoriti prolom v samij sistemi bezpeki Tomu dlya yiyi vikoristannya neobhidna urazlivist sho dozvolyaye zminiti poryadok vikonannya komand mashinnih instrukcij Vikoristovuvati cyu tehniku vazhko oskilki duzhe velika kilkist faktoriv sho vplivayut na vikonannya procesu z tochki zoru hakera Tim ne mensh z dopomogoyu heap spraying mozhna vikonati veliku kilkist instrukcij sho chastkovo kompensuye cyu skladnist ta dozvolyaye pidvishiti imovirnist uspishnogo zlomu Heap spraying mozhe buti realizovana dlya bilshosti operacijnih sistem i arhitektur Osnovna trudnist znahodzhennya urazlivosti yaka dozvolyaye perenapraviti potik vikonannya Dinamichne vidilennya velikoyi kilkosti pam yati yak govorilosya ranishe operaciya sho dozvolyaye peredbachiti polozhennya kupi v pam yati v moment proektuvannya virtualnoyi pam yati na fizichnu Kozhen raz vikonuyuchi odnu i tu zh poslidovnist zvernen do pam yati kupa bude z velikoyu chastkoyu jmovirnosti nadavatisya na odnomu i tomu zh misci Harakternij viglyad blokiv Odnak shob pidvishiti cyu jmovirnist neobhidno shob rozmir shmatka vidilyuvanoyi pam yati buv porivnyannij z rozmirom segmentu abo storinki zalezhno vid sposobu organizaciyi pam yati Osnovna problema ciyeyi ataki zmina potoku vikonannya Bez mozhlivosti perehoplennya vikonannya cej vid ataki ne maye sensu Deyaki funkciyi mozhut zberigati adresu povernennya v kupi todi haker mozhe sprobuvati zminiti yih U comu vipadku pri povernenni z takoyi funkciyi vidbudetsya peremishennya v dilyanku pam yati zruchnu dlya hakera i yak naslidok pochne vikonuvatisya shkidlivij kod Bud yaka funkciya sho zchituye adresu sho znahoditsya v kupi mozhe buti vikoristana yak urazlivist Haker mozhe pidminiti cyu adresu na adresu modifikovanogo nim dilyanki pam yati Ce mozhe prizvesti do spryamuvannya potoku vikonannya na shkidlivij kod Odnak ce ne tak prosto yak zdayetsya Korektnist adresi jogo rozmir zmishennya vidnosno pochatku storinki vikoristovuvanogo dlya pidmini silno zalezhit vid arhitekturi Tomu na praktici vikoristovuyut bloki sho skladayutsya v osnovnomu z NOPiv dopisuyuchi v kinci neobhidnij kod Cej prijom dozvolyaye ne zamislyuvatisya pro tochnosti virahovuvannya adresi i napraviti potik vikonannya v priblizne misce v adresnomu prostori Kroki spryamovani na realizaciyu heap spraying Viznachennya rozmiru shmatka vidilyuvanoyi pam yati takim chinom shob odne vidilennya vidpovidalo rozmiru storinki Vidilennya dekilkoh shmatkiv v yakih roztashovuyutsya NOP i shell kod Vikoristannya vidomoyi vrazlivosti dlya perenapravlennya lichilnika komand na peredbachuvane polozhennya shmatkiv napriklad za dopomogoyu perepovnennya steka Vikonannya vidilenoyi oblasti Cej tip atak duzhe efektivnij v brauzerah Bilshist brauzeriv pidtrimuyut vikonannya skriptiv Haker mozhe vidiliti neobhidnu pam yat vikoristovuyuchi kilka ryadkiv JavaScript abo ActionScript na vebstorinci Vazhlivu rol vidigraye shozhist vidilennya pam yati v riznih operacijnih sistemah sho robit cyu ataku krossplatformnnoyu Bilsh togo adresi na yaki neobhidno zdijsniti perehid budut shozhi IstoriyaPershij raz heap spraying vikoristovuvalasya v 2001 roci i stala shiroko poshirenoyu vlitku 2005 roku Pislya bulo znajdeno veliku kilkist vrazlivostej v Internet Explorer Eksplojti buli duzhe shozhi mizh soboyu Kozhen takij eksplojt skladavsya z heap spraying metod realizaciyi yakoyi ne zminyuvavsya i perenesennya lichilnika komand na neobhidne misce v pam yati Tomu novij eksplojt vihodiv zminoyu kilkoh ryadkiv HTML i pereklyuchennyam na novu urazlivist RealizaciyaJavaScript Najprostishij sposib vidiliti misce v pam yati brauzera deklaruvati ryadkovu zminnu i inicializuvati yiyi Prikladi vidilennya pam yati na JavaScript var myvar CORELAN var myvar2 new String CORELAN var myvar3 myvar myvar2 var myvar4 myvar3 substring 0 8 Ce duzhe prosti prikladi tak yak vidileni ryadki neveliki Shmatok shell kodu znachno bilshe ale vse zh menshe ciloyi storinki pam yati Gipotetichno mozhna zapisati neobhidnij shell kod bagato raziv u kozhen vidilenij nami blok ale todi zlovmisnikovi dovedetsya stezhiti na yaku konkretno adresu potraplyaye pokazhchik tak yak vin ne povinen potrapiti na seredinu vikonuvanogo kodu Zazvichaj nadhodyat po inshomu vidilyayut shmatki mistyat bezlich NOP iv i v kinci propisuyut neobhidni komandi Todi v silu linijnosti roztashuvannya blokiv v kupi prostishe dotrimatisya linijnosti vikonannya kodu i ne potribno prejmatisya pro tochnosti popadannya na pochatok shmatka pam yati Pri pravilnomu vibori rozmiru shmatki pam yati sho vidilyayutsya povinni buti duzhe blizki do rozmiru elementa kupi Yaksho vidilenij shmatok pam yati bude menshe to ce misce bude vilno Menedzher pam yati v krashomu vipadku zalishit sistemne smittya v comu nezajnyatomu prostori a v girshomu poklade ob yekt vidpovidnij za rozmirom U bud yakomu vipadku ce prizvede do pomilki pri sprobi vikonati danu dilyanku pam yati Takim chinom vikoristovuyetsya zlovmisnikami skript viglyadaye tak lt html gt lt script gt var shellcode unescape u 4141 u 4141 ce napis CORELAN var bigblock unescape u 9090 u 9090 90 kod NOP var headersize 20 var slackspace headersize shellcode length pochatkovij rozmir nashogo shmatka korisnij kod rozmir zagolovka while bigblock length lt slackspace bigblock bigblock zapovnennya NOP ami var fillblock bigblock substring 0 slackspace korisnij kod napovnennya var block bigblock substring 0 bigblock length slackspace prosto NOPy while block length slackspace lt 0x40000 block block block fillblock zapovnennya do rozmiru elementa kupi v danomu vipadku ce 0x40000 var memory new Array for i 0 i lt 500 i memory i block shellcode vidilennya dekilkoh takih elementiv lt script gt lt html gt unescape ce funkciya sho dozvolyaye poklasti bajti same v tomu poryadku v yakomu zaznacheno v argumenti VBscript VBscript vikoristovuyut Internet Explorer dlya stvorennya ryadkiv z dopomogoyu string Konceptualno ne vidriznyayetsya vid realizaciyi na JavaScript tilki nazvi funkcij zminyuyutsya ActionScript U lipni 2009 buli znajdeni eksplojti sho dozvolyayut vikoristovuvati ActionScript dlya realizaciyi heap spraying v Adobe Flash HTML5 U veresni 2012 na EuSecWest 2012 bula predstavlena nova realizaciya Federiko Muttis Federico Muttis i Anibal Sakko Anibal Sacco pokazali sho heap spraying z visokim stupenem granulyarnosti mozhe buti realizovanij za dopomogoyu tehnologiyi HTML5 Voni vikoristovuvali nizkorivnevij rastrovij interfejs nadanij canvas API Zobrazhennya Isnuyut metodi sho vikoristovuyut zavantazhennya zobrazhen Zobrazhennya skladayut z NOPiv i dali diyut yak i v poperednih vipadkah Sposobi zapobigannyaYak i pri bud yakih perepovnennyah bufera ye tri osnovni shlyahi zahistu Chasto prostishe zapobigti zmini potoku vikonannya chim samomu vikoristanni bufera Suchasni operacijni sistemi vikoristovuyut vsi pererahovani nizhche metodi Zapobigannya vikonannya shlyahom podilu danih i vikonuvanogo kodu zazvichaj z vikoristannyam arhitekturnih rishen napriklad NX bit Napriklad vzhe v bilshosti OS vprovadzheno EP Pidvishennya vipadkovosti roztashuvannya danih v pam yati Napriklad shob nastupnij vidilenij element kupi ne mav fiksovanogo zmishennya vidnosno potochnogo Vzhe vprovadzheno v bilshosti OS ASLR Zbilshennya kilkosti perevirok dotrimannya mezh bufera v menedzheri pam yati Proekti pov yazani z danim tipom ataki proekt Nozzle vid Microsoft Research stavit svoyeyu metoyu zapobigannya heap spraying BuBBle ce inshij proekt metoyu yakogo ye minimizaciya shkodi vid danoyi ataki Div takozhPerepovnennya bufera Perepovnennya steka Stek viklikiv Kupa pam yat en PrimitkiBenjamin Livshits Paruj Ratanaworabhan Benjamin Zorn Tanenbaum E Vudhall A Operacionnye sistemy Razrabotka i realizaciya Piter S 78 252 Rihter Dzh Windows dlya professionalov sozdanie effektivnyh Win32 prilozhenij s uchetom specifiki 64h razryadnoj versii Windows Russkaya Redakciya S 68 118 333 418 U Richard Stivens Stiven A Rago UNIX Professionalnoe programmirovanie Simvol Plyus S 288 351 Brajan Kernigan Dennis Ritchi Yazyk programmirovaniya Si Vilyams S 93 123 Thomas Toth Christopher Kruegel ISBN 3 540 00020 8 Tilo Muller Mark Russinovich Devid Solomon Vnutrennee ustrojstvo Windows SPb Piter 2013 S 104 681 800 s Sotirov A HwaiGeeng Chew Black Hat Anibal Sacco Federico Muttis Francesco Gadaleta Yves Younan Wouter Joosen LiteraturaRihter Dzh Windows dlya professionalov sozdanie effektivnyh Win32 prilozhenij s uchetom specifiki 64h razryadnoj versii Windows M Russkaya Redakciya 2008 S 68 118 333 418 U Richard Stivens Stiven A Rago UNIX Professionalnoe programmirovanie SPb Simvol Plyus 2014 S 288 351 Tanenbaum E Vudhall A Operacionnye sistemy Razrabotka i realizaciya SPb Piter 2007 S 78 252 Brajan Kernigan Dennis Ritchi Yazyk programmirovaniya Si Vilyams 2015 S 93 123 Mark Russinovich Devid Solomon Vnutrennee ustrojstvo Windows SPb Piter 2013 S 104 681 Posilannya Corelan Team Arhiv originalu za 25 kvitnya 2015 Procitovano 12 grudnya 2015 MSDN Arhiv originalu za 22 grudnya 2015 Procitovano 12 grudnya 2015 OpenNET Arhiv originalu za 22 grudnya 2015 Procitovano 12 grudnya 2015 Debian Arhiv originalu za 22 grudnya 2015 Procitovano 12 grudnya 2015 Julia Wolf Arhiv originalu za 22 grudnya 2015 Procitovano 12 grudnya 2015 EUSecWest 2012 Arhiv originalu za 22 grudnya 2015 Procitovano 12 grudnya 2015 CISCO Arhiv originalu za 22 grudnya 2015 Procitovano 12 grudnya 2015