З чого потрібно починати у хакерстві. Підписка на новини

П'ятнадцять років тому епічний працю Кріса Касперскі «Фундаментальні основи хакерства» був настільною книгою кожного дослідника в галузі комп'ютерної безпеки. Однак час іде, і знання, опубліковані Крісом, втрачають актуальність. Редактори «Хакера» спробували оновити цю об'ємну працю та перенести її з часів Windows 2000 та Visual Studio 6.0 за часів Windows 10 та Visual Studio 2017.

Перевірка автентичності

Перевірка автентичності (від грец. authentikos – справжній) – «серце» переважної більшості захисних механізмів. Повинні ж ми переконатися, чи особа, за яку вона себе видає, працює з програмою і чи дозволено цій особі працювати з програмою взагалі!

Як особа може виступати не тільки користувач, але і його комп'ютер або носій інформації, що зберігає ліцензійну копію програми. Таким чином, усі захисні механізми можна поділити на дві основні категорії:

  • захисту, що ґрунтуються на знанні (паролю, серійного номера);
  • захисту, що базуються на володінні (ключовим диском, документацією).

Якщо захист базується на одному припущенні, що його код не буде вивчений і/або змінений, - це поганий захист. Відсутність вихідних текстів аж ніяк не є непереборною перешкодою для вивчення та модифікації програми. Сучасні технології зворотного проектування дозволяють автоматично розпізнавати бібліотечні функції, локальні змінні, стекові аргументи, типи даних, розгалуження, цикли та інше. А в недалекому майбутньому дизассемблери, ймовірно, взагалі навчаться генерувати лістинги, близькі на вигляд до мов високого рівня.

Але навіть сьогодні аналіз двійкового коду не є настільки трудомістким, щоб надовго зупинити зловмисників. Величезна кількість постійно скоєних зламів - найкраще тому підтвердження. В ідеальному випадку знання алгоритму роботи захисту не повинно впливати на її стійкість, але це можливо далеко не завжди. Наприклад, якщо розробник серверної програми вирішить встановити в демонстраційній версії обмеження на кількість одночасно оброблюваних з'єднань (як часто і трапляється), зловмиснику достатньо знайти інструкцію процесора, яка виконує таку перевірку, та видалити її. Модифікації програми можна перешкодити постійної перевіркою її цілісності, але знов-таки код, що перевіряє цілісність, може бути знайдено та видалено.


Крок перший. Розминальний

Алгоритм найпростішого механізму аутентифікації полягає в посимвольному порівнянні введеного користувачем пароля з еталонним значенням, що зберігається або в самій програмі (як часто і буває), або поза нею, наприклад, у конфігураційному файлі або реєстрі (що рідше зустрічається).

Гідність такого захисту – вкрай проста програмна реалізація. Її ядро ​​складається фактично з одного рядка, який мовою С можна записати так:

If (strcmp(введений пароль, еталонний пароль)) (/* Пароль невірний */) else (/* Пароль ОK*/)

Давайте доповнимо цей код процедурами запиту пароля та виведення результатів порівняння, а потім випробуваємо отриману програму на міцність, тобто на стійкість до злому:

Лістинг 1. Приклад найпростішої системи аутентифікації

#include "stdafx.h" // Найпростіша система аутентифікації // посимвольне порівняння пароля #include #include #define PASSWORD_SIZE 100 #define PASSWORD "myGOODpassword\n" // Цей перенесення потрібен для того, щоб // не викушувати перенесення з рядка, // введеного користувачем int main() ( // Лічильник невдалих спроб аутентифікації int count=0; // Буфер для пароля, введеного користувачем char buff; // Головний цикл аутентифікації for(;;) ( // Запрошуємо і зчитуємо користувач // пароль printf("Enter password:"); fgets(&buff,PASSWORD_SIZE,stdin); // Порівнюємо оригінальний і введений пароль if (strcmp(&buff,PASSWORD)) // Якщо паролі не збігаються - «лаємося» printf("Wrong password\n");// Інакше (якщо паролі ідентичні) // виходимо з циклу аутентифікації else break; // Збільшуємо лічильник невдалих спроб // аутентифікації і, якщо всі спроби // вичерпані, завершуємо програму if (++count>3) return -1;) // Якщо ми тут, то користувач ввів правильний // пароль printf("Password OK\n"); )

У популярних кінофільмах круті хакери легко проникають у будь-які захищені системи, якимось незбагненним чином вгадуючи шуканий пароль з кількох спроб. Чому б не спробувати піти шляхом?

Не так рідко паролі є осмисленими словами на кшталт Ferrari, QWERTY, іменами улюблених хом'ячків або назви географічних пунктів. Вгадування пароля схоже на ворожіння на кавовій гущі - ніяких гарантій на успіх немає, залишається розраховувати на одне лише везіння. А успіх, як відомо, птах гордий - палець у рот їй не клади. Чи немає надійнішого способу злому?

Давайте подумаємо. Якщо еталонний пароль зберігається в тілі програми, то, якщо він не зашифрований якимось хитрим чином, його можна виявити тривіальним переглядом двійкового коду програми. Перебираючи всі текстові рядки, що зустрілися в ній, починаючи з тих, що найбільше скидаються на пароль, ми дуже швидко підберемо потрібний ключ і відкриємо їм програму! Причому область перегляду можна суттєво звузити - у переважній більшості випадків компілятори розміщують усі ініціалізовані змінні в сегменті даних (у PE-файлах він розміщується в секції .data або .rdata). Виняток становлять, мабуть, ранні багдадські (Borland'ові) компілятори з їхнім маніакальним коханням всовувати текстові рядки в сегмент коду - безпосередньо за місцем їхнього виклику. Це спрощує сам компілятор, але породжує багато проблем. Сучасні операційні системи, на відміну бабусі MS-DOS, забороняють модифікацію кодового сегмента, і всі розміщені у ньому змінні доступні лише читання. До того ж на процесорах з роздільною системою кешування вони «засмічують» кодовий кеш, потрапляючи туди при запобіжному читанні, але при першому зверненні до них знову завантажуються з повільної оперативної пам'яті (кеша другого рівня) в кеш даних. В результаті - гальма та падіння продуктивності.

Що ж, хай це буде секція даних! Залишається знайти зручний інструмент для перегляду двійкового файлу. Можна, звичайно, натиснути клавішу F3 у своїй улюбленій оболонці (FAR, наприклад) і, притиснувши цеглою клавішу Page Down, милуватися цифірками, що біжать, до тих пір, поки не набридне.

Можна скористатися будь-яким hex-редактором (QView, Hiew...) - кому який до смаку, - але у статті, з міркувань наочності, наведено результат роботи утиліти DUMPBIN зі штатного постачання Microsoft Visual Studio. DUMPBIN запускається з Developer Command Prompt.

Натравимо утиліту на виконуваний файл нашої програми, в якому лежить пароль, і попросимо її роздрукувати секцію rdata (ключ /SECTION:.rdata), що містить ініціалізовані тільки для читання дані в «сиром» вигляді (ключ /RAWDATA:BYTES), вказавши значок > для перенаправлення виведення у файл (відповідь програми займає багато місця, і на екрані міститься лише «хвіст»).

Лістинг 2

> dumpbin /RAWDATA:BYTES /SECTION:.rdata passCompare1.exe > rdata.txt 004020E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... .. 004020F0: 18 30 40 00 68 30 40 00 45 6E 74 65 72 20 70 61 [email protected]@.Enter pa 00402100: 73 73 77 6F 72 64 3A 00 6D 79 47 4F 4F 44 70 61 ssword:.myGOODpa 00402110: 73 73 77 6F 72 70 70 61 ssword..Wrong pa 00402120 : 73 73 77 6F 72 64 0A 00 50 61 73 73 77 6F 72 64 ssword..Password 00402130: 20 4F 4B 0A 00 00 00 0 0 0 ... 00402140: 00 00 00 00 90 0A C1 5B 00 00 00 00 02 00 00 00 ......A[........ 00402150: 48 00 00 00 24 22 00 00 00 00 00 00 H...$"..$.......

Серед іншого тут є один рядок, дуже схожа на стандартний пароль (у тексті вона виділена жирним шрифтом). Випробуємо її? Втім, який сенс - судячи з вихідного тексту програми, це дійсно шуканий пароль, що відкриває захист, як золотий ключик. Надто вже чільне місце вибрав компілятор для його зберігання - пароль не завадило б заховати і краще.

Один із способів зробити це – насильно помістити еталонний пароль у власноруч вибрану нами секцію. Така можливість не передбачена стандартом, і тому кожен розробник компілятора (строго кажучи, не компілятора, а лінкера, але це не має значення) вільний реалізовувати її по-своєму або не реалізовувати взагалі. У Microsoft Visual C++ для цієї мети передбачена спеціальна прагма data_seg, що вказує, в яку секцію поміщати наступні за нею ініціалізовані змінні. Неініціалізовані змінні за умовчанням розташовуються в секції.bss і управляються прагмою bss_seg відповідно.

У лістинг 1 перед функцією main додамо нову секцію, в якій зберігатимемо наш пароль:

// З цього моменту всі ініціалізовані змінні // розміщуватимуться в секції.kpnc #pragma data_seg(".kpnc") #define PASSWORD_SIZE 100 #define PASSWORD "myGOODpassword\n" char passwd = PASSWORD; #pragma data_seg()

Всередині функції main проініціалізуємо масив:

// Тепер всі ініціалізовані змінні знову будуть розміщуватися в секції за замовчуванням, тобто. rdata char buff = "";

Трохи змінилася умова порівняння рядків у циклі:

If (strcmp(&buff,&passwd))

Нацькуємо утиліту DUMPBIN на новий виконуваний файл:

> dumpbin /RAWDATA:BYTES /SECTION:.rdata passCompare2.exe > rdata.txt 004020C0: D3 17 40 00 00 00 00 00 D8 11 40 00 00 00 00 00 [email protected].@..... 004020D0: 00 00 00 00 2C 11 40 00 D0 11 40 00 00 00 00 00 ....,.@.?.@..... 004020E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 004020F0: 18 30 40 00 68 30 40 00 45 6E 74 65 72 20 70 61 [email protected]@.Enter pa 00402100: 73 73 77 6F 72 64 3A 00 57 72 6F 6E 67 20 70 61 ssword:.Wrong pa 00402110: 73 73 77 6F 7 7 6 72 64 ssword..Password 00402120 : 20 4F 4B 0A 00 00 00 00 00 00 00 00 00 00 00 00 OK............. 00402130: 00 00 00 00 6F CB C4 5B 00 00 00 ...oEA[........ 00402140: 48 00 00 00 14 22 00 00 14 14 00 00 00 00 00 00 H....".......... 00402150: 6F CB C4 5B 00 00 00 00 0C 00 00 00 14 00 00 00 oEA[............

Ага, тепер у секції даних пароля немає і хакери відпочивають! Але не поспішайте з висновками. Давайте спочатку виведемо на екран список усіх секцій, що є у файлі:

> dumpbin passCompare2.exe Summary 1000 .data 1000 .kpnc 1000 .rdata 1000 .reloc 1000 .rsrc 1000 .text

Нестандартна секція.kpnc одразу ж приковує до себе увагу. Ану подивимося, що там у ній?

> dumpbin /SECTION:.kpnc /RAWDATA passCompare2.exe RAW DATA #4 00404000: 6D 79 47 4F 4F 44 70 61 73 73 77 6F 72 64 0A 00 myGOODpassword.

Ось він пароль! Сховали, називається ... Можна, звичайно, перекрутитися і засунути секретні дані до секції неініціалізованих даних (.bss) або навіть секції коду (.text) - не всі там здогадаються пошукати, а працездатність програми таке розміщення не порушить. Але не варто забувати про можливість автоматизованого пошуку текстових рядків у двійковому файлі. У якій би секції не містився еталонний пароль, фільтр без зусиль його знайде (єдина проблема - визначити, який з безлічі текстових рядків є шуканим ключем; можливо, потрібно перебрати з десяток-другий потенційних «кандидатів»).

Крок другий. Знайомство з дизассемблером

О'кей, пароль ми довідалися. Але як же втомлювати його кожного разу з клавіатури перед запуском програми! Добре було б її хакнути так, щоб ніякий пароль взагалі не вимагався або будь-який введений пароль програма сприймала б як правильний.

Хакнути, кажете? Що ж, це просто! Куди більш проблематично визначитися, чим саме її хакати. Інструментарій хакерів надзвичайно різноманітний, чого тут тільки немає: і дизассемблери, і налагоджувачі, і API-, і message-шпигуни, і монітори звернень до файлів (портів, реєстру), і розпакувальники виконуваних файлів, і... Складно початківцю кодокопателю з усім цим господарством розібратися!

Втім, шпигуни, монітори, розпакувальники – другорядні утиліти заднього плану, а основна зброя зломщика – відладчик та дизассемблер.

Отже, дизассемблер застосовується на дослідження відкомпільованих програм і частково придатний аналізу псевдокомпилированного коду. Раз так, він повинен підійти для відкриття парольного захисту passCompare1.exe. Все питання в тому, який дизассемблер вибрати.

Не всі дизассемблери однакові. Є серед них і «інтелектуали», що автоматично розпізнають багато конструкцій, як то: прологи та епілоги функцій, локальні змінні, перехресні посилання, а є й «простаки», чиї здібності обмежені одним лише переведенням машинних команд в асемблерні інструкції.

Логічніше скористатися послугами дизассемблера-інтелектуала (якщо він є), але… давайте не поспішатимемо, а спробуємо виконати весь аналіз вручну. Техніка, зрозуміло, штука хороша, та ось не завжди вона опиняється під рукою, і непогано б заздалегідь навчитися роботі в польових умовах. До того ж спілкування з поганим дизассемблером якнайкраще підкреслює «смачності» хорошого.

Скористаємося вже знайомою нам утилітою DUMPBIN, справжнім «швейцарським ножиком» з багатьма корисними функціями, серед яких причаївся і дизассемблер. Дизассемблируем секцію коду (як ми пам'ятаємо, що носить ім'я.text), перенаправивши виведення у файл, так як на екран він, очевидно, не поміститься:

> dumpbin /SECTION:.text /DISASM passCompare1.exe > code-text.txt

Заглянемо ще раз у секцію даних (або в іншу – залежно від того, де зберігається пароль): див. листинг 2.

Запам'ятаємо знайдений пароль: myGOODpassword. На відміну від Visual C++ 6.0, якою користувався Кріс, Visual C++ 2017 не звертається до ініціалізованих змінних шістнадцятковим зміщенням, а підставляє значення прямо в секцію коду. Таким чином, спробуємо знайти виявлений раніше пароль у дизассембльованому лістингу тривіальним контекстним пошуком за допомогою будь-якого текстового редактора.

0040107D: B9 08 21 40 00 mov ecx,offset ??_C@_0BA@PCMCJPMK@myGOODpassword?6?$AA@ 00401082: 8A 10 mv A jne 004010A2 00401088: 84 D2 test dl,dl 0040108A: 74 12 je 0040109E

Дивіться, центральна частина цього лістингу відповідає за порівняння значень регістрів EAX та ECX. В останній, як бачимо, у першому рядку лістингу записується еталонний пароль, отже, у першому - введений користувачем. Потім відбувається порівняння та виконуються переходи майже в одну і ту ж точку: 0x4010A2 та 0x40109E. Заглянемо, що там:

0040109E: 33 C0 xor eax,eax 004010A0: EB 05 jmp 004010A7 004010A2: 1B C0 sbb eax,eax 004010A4: 83 C8 01 orx eax,0 010A9: 74 63 je 0040110E 004010AB: 0F 1F 44 00 00 nop dword ptr 004010B0: 68 18 21 40 00 push offset _C@_0BA@EHHIHKNJ@Wrong?5password?6?$AA@ 004010B5: E8 56 FF FF FF call _print

Тут центральну роль грає інструкція test eax, eax, розташована по зміщенню 0x4010A7. Якщо eax дорівнює 0, наступна за нею команда JE робить стрибок на 0x40110E. А якщо ні, то на вершину стека виштовхується рядок Wrong password:

Push offset _C@_0BA@EHHIHKNJ@Wrong?5password?6?$AA@

а слідом - виклик функції з назвою:

Call _printf

Значить, ненульове значення EAX свідчить про хибне паролі, а нуль - про справжнє.

О'кей, тоді переходимо до аналізу валідної галузі програми, що робиться після стрибка на 0x40110E. А тут причаїлася інструкція, яка поміщає рядок Password OK на вершину стека, після чого викликається процедура _printf, яка, очевидно, виводить рядок на екран:

0040110E: 68 28 21 40 00 push offset _C@_0N@MBEFNJID@Password?5OK?6?$AA@ 00401113: E8 F8 FE FF FF call _printf

Оперативні міркування такі: якщо замінити команду JE на JNE, то програма відкине дійсний пароль як неправильний, а будь-який неправильний пароль сприйме як дійсний. А якщо замінити TEST EAX, EAX на XOR EAX, EAX, то після виконання цієї команди регістр EAX завжди буде дорівнює нулю, який би пароль не вводився.

Справа за малим - знайти ці самі байтики у файлі, що виконується, і злегка підправити їх.

Крок третій. Хірургічний

Внесення змін безпосередньо до виконуваного файлу - справа серйозна. Стиснутим вже існуючим кодом, нам доводиться задовольнятися лише тим, що є, і ні розсунути команди, ні навіть зрушити їх, викинувши із захисту зайві запчастини, не вийде. Адже це призвело б до зсуву зміщень решти всіх команд, тоді як значення покажчиків і адрес переходів залишилися б без змін і стали б вказувати зовсім не туди, куди потрібно!

Ну, з «викиданням запчастин» впоратися якраз таки просто - досить забити код командами NOP (опкод якої 0x90, а зовсім не 0x0, як чомусь думають багато початківців-кодокопателів), тобто порожньою операцією (взагалі-то NOP - це просто інша форма запису інструкції XCHG EAX, EAX – якщо цікаво). З «розсуванням» куди складніше! На щастя, в PE-файлах завжди присутня безліч «дір», що залишилися від вирівнювання, в них і можна розмістити свій код або свої дані.

Але чи не простіше просто відкомпілювати асембльований файл, попередньо внісши до нього необхідні зміни? Ні, не простіше, і ось чому: якщо асемблер не розпізнає покажчики, що передаються функції (а як ми бачили, наш дизассемблер не зміг відрізнити їх від констант), він, відповідно, не подбає належним чином їх скоригувати, і, звичайно, програма працюватиме не буде.

Доводиться різати програму наживо. Найлегше це робити за допомогою утиліти Hiew, що «перетравлює» PE-формат файлів і тим самим спрощує пошук потрібного фрагмента. Підійде будь-яка версія цього hex-редактора. Наприклад, я використав далеко не найновішу версію 6.86, що чудово уживається з Windows 10. Запустимо її, вказавши ім'я файлу в командному рядку hiew32 passCompare1.exe, подвійним натисканням клавіші Enter, переключимося в режим ассемблера і за допомогою клавіші F5. Як ми пам'ятаємо, команда TEST, яка перевіряє результат на рівність нулю, розташовувалася за адресою 0x4010A7.

Щоб Hiew міг відрізнити адресу від зміщення в самому файлі, передуватимемо символом точки: .4010A7.

004010A7: 85 C0 eax,eax 004010A9: 74 63 je 0040110E

Ага, саме те, що нам треба! Натисніть клавішу F3 для переведення Hiew в режим редагування, підведемо курсор до команди TEST EAX, EAX і, натиснувши клавішу Enter, замінимо її на XOR EAX, EAX.

004010A7: 33 C0 xor eax,eax 004010A9: 74 63 je 0040110E

З задоволенням помітивши, що нова команда акурат вписалася в попередню, натиснемо клавішу F9 для збереження змін на диску, а потім вийдемо з Hiew і спробуємо запустити програму, вводячи перший прийшов на думку пароль:

>passCompare1 Enter password:Привіт, капелюх! Password OK

Вийшло! Захист впав! Добре, а як би ми діяли, чи не вмій Hiew «перетравлювати» PE-файли? Тоді довелося б вдатися до контекстного пошуку. Обернемо свій погляд на шістнадцятковий дамп, розташований дизассемблером ліворуч від асемблерних команд. Звичайно, якщо намагатися знайти послідовність 85 C0 – код команди TEST EAX, EAX, нічого хорошого з цього не вийде – цих самих TEST'ів у програмі може бути кілька сотень, а то й більше. А ось адреса переходу, швидше за все, у всіх гілках програми різна, і підрядок TEST EAX, EAX/JE 0040110E має хороші шанси на унікальність. Спробуємо знайти у файлі відповідний код: 85 C0 74 63 (в Hiew для цього достатньо натиснути клавішу F7).

Опп-с! Знайдено лише одне входження, що нам, власне, потрібно. Давайте спробуємо модифікувати файл безпосередньо в hex-режимі, не переходячи в асемблер. Принагідно візьмемо собі на замітку - інверсія молодшого біта коду команди призводить до зміни умови переходу на протилежне, тобто 74 JE -> 75 JNE.



Чи працює? У сенсі захист з'їхав остаточно - не визнає справжні паролі, зате радісно вітає інші. Чудово!


Далі буде?

Отже, ти прочитав (прочитав?) Початковий уривок класичної книги Кріса Касперскі «Фундаментальні основи хакерства» в сучасному переосмисленні. Чи вийшло у нас оновити ці знання до актуального рівня? Чи варто продовжувати? Поділися своєю думкою в

Ви пентестер-початківець або шукайте підказки з чого почати або як стати хакером з нуля? Ми рекомендуємо вам вивчити та почати працювати з цим списком скануючих програм для вивчення мети та мережі. Ми скрізь шукали посібник для початківців, але ніяк не знайшли щось, що було б все в одному, і вирішили створити цю статтю для початківців. Все буде викладено коротко. Ось наші рекомендації на найпопулярніші та найефективніші програми для злому та сканування. Якщо ви знаєте програми краще прошу залишити у коментарях вашу думку.

1. - Є безкоштовна і платна версія. Цей інструмент має багато призначення, але найголовніше з них є Показники для SQL проникнення і Cross Site scripting.

Вона також має інтегрований аналізатор для скрипту. Цей інструмент безпеки генерує докладні звіти, що ідентифікують уразливість у системі. Багато розробників використовують її виявлення вразливостей своїх програм і систем. Дуже корисний інструмент як для злому, так і для виявлення вразливостей.


2. Aircrack-ng– це повний набір інструментів мережної безпеки, що включає:
  • (використовують для атак на WEP та WPA)
  • (використовують для декриптингу WEP та WPA пакетів, що були упіймані)
  • (Вставляє мережні карти в режимі монітора)
  • (Інжектор для пакетів)
  • (є аналізатор пакетів)
  • (використовується для віртуальних тунельних інтерфейсів)
  • (зберігає та керує ESSID та списки паролів)
  • packetforge-ng (створює зашифровані пакети для ін'єкцій)
  • airdriver-ng (включає методи для нападу на клієнтів)
  • (видаляє WEP клоакінг)
  • airdriver-ng (для керування бездротовими драйверами),
  • (Керує ESSID і може обчислити головний ключ)
  • (дає доступ до бездротової картки з інших комп'ютерів)
  • easside-ng (дозволяє користувачеві запускати програми на віддаленому комп'ютері)
  • easside-ng (засоби спілкування до точки доступу, без ключа WEP)
  • tkiptun-ng (для WPA / атаки TKIP)
  • wesside-ng (для відновлення ключів WEP).

3. Cain & Abelабо просто Каїн. Класний інструмент для тих, хто починає писати скрипти. Його більше використовують як інструмент відновлення паролів. Цей інструмент дозволяє тестеру відновити різні типи паролів прослуховуванням мережевого трафіку, і злому зашифрованих паролів з використанням словника або Brute Force атакою. Інструмент також може записувати VoIP розмови і може декодувати кодовані паролі, виявлення мережевих ключів WiFi і кешованих паролів. При правильній експлуатації тестер також може аналізувати протоколи маршрутизації. Інструмент безпеки за своєю природою не використовує будь-які вразливості у програмному забезпеченні чи отвори, а просто виявляє недоліки безпеки у стандартних протоколах. Студенти які навчаються на IT у сфері безпеки використовують цей інструмент щоб вивчити APR (Arp Poison Routing) Man-in-the-Middle attacks (). Нові версії цієї програми дозволяє зламувати найпопулярніші алгоритми шифрування.
4. - Тут багато слів не треба. Думаю до цього дня це найкрутіша штука для MITM атаки. Воно використовує ARP poisoning для атаки. Дозволяє побачити все, що відбувається в мережі якої ви знаходитесь.
5. John The Ripper- мабуть найкрутіше ім'я для такого роду інструменту. Дуже популярний інструмент безпеки, часто скорочено просто "Джон"використовується для злому паролів. Спочатку створений для операційної системи UNIX, зараз працює на всіх основних операційних системах. Досі цей інструмент є одним з найпопулярніших для тестування паролів та злому програм, які забезпечують безпеку. Інструмент поєднує в собі різні зломщики паролів в одному стиснутому пакеті, який потім може ідентифікувати типи хеш паролів через власну алгоритму крекінгу, що настроюється.
6. – є проектом для безпеки, який надає інформацію про вразливості та допомагає тестування та виявлення вторгнень. Проект з відкритим вихідним кодом – відомий як використовується спеціалістами з безпеки, щоб виконати код на віддаленому цільовому комп'ютері – для тестування на проникнення, звичайно! Але Хакери його дуже люблять, він дозволяє творити чудеса.
7. Nessus- Ще один гігант для сканування вразливостей. Nessus сканує різні типи вразливостей. Ті, які перевіряють хакери на наявність дірок, що можуть експлуатувати, щоб отримати контроль чи доступ до комп'ютерної системи чи мережі. Інструменти також сканує паролі за промовчанням та спільні паролі, які можна використовувати та виконати через Hydra (зовнішній інструмент), та запустити атаку за словником. Інші сканування вразливостей включають атаки проти стека TCP / IP.
8. – ще один масивний гігантський інструмент безпеки, який був навколо завжди, і, ймовірно, найвідоміший. Nmap має ознаки у багатьох фільмів, включаючи Матриця – просто Google, і ви побачите, що ми маємо на увазі. Написана в C, C++, Lua Гордон Lione (Fedor) , Починаючи з 1997 року, Nmap (Network Mapper) є де-факто і найкращий сканер безпеки, який використовується для виявлення вузлів по комп'ютерній мережі. Для виявлення вузлів у мережі Nmap посилає спеціально збудовані пакети на цільовий хост, а потім аналізує відповіді. Програма дуже складна, тому що, на відміну від інших сканерів портів. Він посилає пакети, засновані на мережевих умовах з урахуванням коливань, заторів та багато іншого.
9. Kismet– це бездротовий детектор мережі, аналізатор, та відмінний для виявлення вторгнень інструмент безпеки. З Kismet можна контролювати та слухати 802.11b, 802.11a, 802.11g та 802.11n трафік. Є багато Сніферів, але те, що робить Kismet різним і дуже популярним є той факт, що він працює пасивно – це означає, що програма не надсилає жодних пакетів, при цьому може контролювати бездротові точки доступу та бездротових клієнтів. Воно з відкритим вихідним кодом широко використовується.
10. – була довкола нас протягом століть і є надзвичайно популярною. Wireshark дозволяє пентестеру поставити мережний інтерфейс у нерозбірливий режим і, отже, побачити весь трафік. Цей інструмент має безліч функцій, таких як можливість збору даних від живого підключення до мережі або читати з файлу, збереженого вже перехоплених пакетів. Wireshark здатний зчитувати дані з широкого спектру мереж, з Ethernet, IEEE 802.11, PPP і навіть петлі. Як і більшість інструментів з нашого списку безпеки, захоплені мережеві дані можуть контролюватись та керуватися за допомогою графічного інтерфейсу – який також дозволяє вставляти плагіни та використовувати їх. Wireshark може також захоплювати пакети VoIP (як Каїн) і сирий USB трафік також може бути захоплений.

Якщо ви Професійний пентестер або хакер вже то ви знаєте, як використовувати ці чудові Програми. Інструменти для хакінгу та пентестингу вчити легко та приємно, а також це прикольно. Люди, які створювали їхні геніальні програмери і зробили все дуже зручно у використанні.

Як стати хакером? Що для цього потрібно? Де інструкція? У цій статті ви цього не знайдете. Абсурд? Ні, просто в цій статті не вміститься весь той обсяг знань, який потрібно знати. Матеріал буде присвячений більш життєвим та важливим аспектам, про які в красивих фільмах та глянцевих журналах немає жодного слова. Так що якщо ви чекаєте на щось на кшталт "клацнув тут, хоп і все зламалося", то ця стаття не для вас, як і, ймовірно, хакерство.

Спочатку хотів би звернути вашу увагу до статей 272, 273 і 274, які є обов'язковими до прочитання, оскільки вони є основними в цій стежці.

Наступний момент - це те, що хакери не тільки ті, хто зламує та чинить злочини. Чимало хакерів займаються цілком легальними заняттями. Аудит безпеки, перевірка стійкості, консультування при створенні та проектуванні додатків, створення власних інструментів для підвищення рівня безпеки та інше. Так що хакери це не тільки "погані та волохатие дядьки і тітки".

Примітка: Щоб вміти захиститись мечем від іншого меча, потрібно вміти використовувати цей меч.

Як стати хакером – ближче до реальності

Якщо ви дійсно цікавитеся питанням як стати хакером, то вам варто бути ближчими до реальності. Це означає, що вид "бабах, все блимає, три команди, вау, вау, мишкою клацнув і доступ отриманий" може відповідати реальності тільки після величезного часу до підготовки всього цього. Але почнемо по порядку.

Основні міфи про хакерів:

1. Це кльові хлопці з крутим прикидом. В принципі, і таке може бути, але в більшості випадків дещо інакше. Необхідність проводити досить багато часу за комп'ютером залишає відбиток. Не в образу хакерам, але ви бачили як одягаються затяті онлайн геймери? Комфортний та зручний одяг, а не "текстиль за останньою модою". Крім того, відсутність фізичного навантаження так само позначається.

2. Супер головоломки під мега музику. У фільмах герої малюють кльові схеми, бігають коридорами і взагалі займаються всім чим завгодно, аби зобразити болісну активність. І все це під крутий музичний супровід, що інтригує. Насправді ж більшість справ хакера складається з рутинних завдань. Копання у вихідних кодах, включаючи шістнадцяткові коди бібліотек, відстеження функцій викликів, розміщення даних в оперативній пам'яті та інше. Все це, звичайно, можна робити і під крутий музон, але до тих ефектів із фільмів це не має відношення.

3. Кльові прибамбаси із супер технікою. Безумовно, багато в чому хакерство пов'язане з математикою, а там де математика можуть стати в нагоді великі продуктивні потужності. Але, насправді це не має відношення до прибамбасів і кльових "вісюльок". Це як у стрітрейсінгу. Обважування машини можуть зробити тільки гірше. Ну, не поїде тачка швидше, якщо ви причепите галасливий глушак, тим більше, що через нього взагалі може губитися потужність машини, тому що потік вихлопних газів може утворювати бар'єр, через що зростатиме навантаження двигуна (вище навантаження - менше потужності ).

4. Три рядки коду або п'ять хвилин для злому. Якщо мега систему можна зламати за п'ять хвилин парою рядків коду, таку систему можна сміливо викидати. Не йдеться про ситуації з дурними помилками, які були виявлені випадково або після річних досліджень. Безумовно, існують типові помилки (sql-ін'єкції, переповнення буфера та інше), але їх перевірка займає чимало часу. Так що такий злом можливий тільки у випадках, коли або система вже проаналізована вздовж і впоперек, або коли в ній використовуються відомі або схожі механізми. Пам'ятайте, що при цьому у хакера ще повинні бути всі необхідні інструменти.

5. Можуть зламати все і за будь-яких умов. Через обставини, хакерам необхідно дуже багато знати і це нормально. Однак це не скасовує реальність. Існує багато технічних аспектів, різних обмежень та іншого. Інакше кажучи, яблука як падали вниз, і падають. Приклад з історії – шифрувальна машина Енігма. Вигадана в 1917 році (виданий патент), а скільки через неї було проблем у другу світову. Згодом її злом став можливим, але це згодом і це з урахуванням появи додаткових коштів. У 1917 році її було неможливо зламати.

Та інше. Суть, ймовірно, ви вловили, що реальність хакера це далеко не те, що показують у фільмах або описують у "постиках до бложика".

Як уже говорив, типової інструкції не буде, просто якщо вам дійсно цікаво дізнатися, то ось кілька речей, з чого є сенс почати вивчення.

Необхідні базові знання хакерів:

1. Знання у галузі машинних кодів, включаючи апаратуру.

2. Знання про влаштування операційної системи.

3. Знання про пристрій мережі, застосовувані технології та інше.

4. Знання у галузі криптографії. Шифри, стійкість, методи злому та аналізу.

5. Влаштування антивірусних та інших засобів безпеки. Застосовувані технології.

6. Основні методи і технології злому, що застосовуються. Вразливі місця тощо.

7. І все інше, що так чи інакше може бути пов'язане з об'єктом, що зламується.

При чому все це досить докладно, тому що щоб зламати щось, потрібно досконало розуміти, як воно влаштоване. Тобто. не виду "операційна система надає користувачам", а щось із розряду "як передаються сигнали в ядро, як виділяється пам'ять, у яких регістрах зберігаються дані, що таке колізії та інше".

Тільки думаєш долучитися до кодингу? Втрачаєшся у різноманітті мов та технологій? Радуйся, настав твій день: ми трохи напружилися і всією редакцією викотили для тебе інтерактивний гайд на вибір мови програмування залежно від твоїх потреб. Неважливо, чи хочеш ти писати мобільні ігри, шукати бекдори в прошивках ZTE або просто заробляти кодингом на життя - ми передбачили всі варіанти. Крути схему, відповідай на запитання, вибирай свою технологію... І не забудь потім перерахувати нам відсоток із першої зарплати. Так би мовити, за наведення!

Незалежно про те, який напрямок тобі більше до вподоби - якщо в тебе зовсім немає досвіду програмування, доведеться почати з самих основ. Вивчити терміни, навчитися складати алгоритми та перетворювати їх на код. А допоможе тобі в цьому – онлайновому майданчику, який призначений для навчання програмуванню.

Складається із чотирьох занять і триває два тижні. За цей час ти вивчиш основи програмування, напишеш свою першу програму, а також дізнаєшся, які бувають мови і на чому може спеціалізуватися програміст. А для закріплення тебе забезпечать необхідними матеріалами: у тебе залишаться відеозаписи уроків та методички. Та що там, ти навіть отримаєш сертифікат про пройдене заняття, якщо раптом захочеться перед кимось похвалитися!

Якщо ж освоєння основ позаду, то на ти можеш вибрати одну з професій та пройти повноцінне навчання з кількох курсів.

Веб розробник

https://geekbrains.ru/professions/web_developer

Чи легко бути веб-розробником? Може здатися, що не дуже складно - адже веб-сайт може зробити будь-хто. Однак, щоб стати справжнім фулстек-девелопером, сьогодні потрібно знати набагато більше, ніж HTML і якусь серверну мову. За десять місяців цей набір курсів Geekbrains проведе тебе від освоєння HTML і CSS до вивчення PHP - від початкового рівня і до професійної веб-розробки із застосуванням фреймворку YII2. Крім цього, сюди входять курси вивчення Javascript - як клієнтського, так і серверного (Node.js), а також фреймворків Angular і D3.js.

Мобільний розробник

https://geekbrains.ru/professions/mobile_developer

Хочеш робити мобільні програми для iOS та Android? Цей набір курсів спроектований спеціально для таких, як ти триває 11 місяців. У нього входить два курси з Java (від основ до просунутого ОВП, роботи з мережею і багатопоточністю) і два курси з Android (розробка інтерфейсу, робота з графікою та сенсорами тощо). Друга половина курсів присвячена Objective-C - ця мова необхідна тим, хто планує робити програми для iOS. До нього доданий і курс з Swift - нову мову Apple, яка вже починає використовуватися в розробці софту.

Програміст на Java

https://geekbrains.ru/professions/java_developer

Творці мови Java думали, що вона така гарна, що буде застосовуватися повсюдно. Цього не трапилося: в результаті Java використовується на Android і в серйозній серверній розробці - цією мовою пишуть бекенди високонавантажених додатків і розрахованих на багато користувачів ігор. Звідси висновок: програмістам на Java все ж таки дуже непогано живеться! Стати одним із них допоможе цей шестимісячний набір курсів Geekbrains. Два курси Java в ньому збігаються з планом занять розробників софту для Android, але саме третій курс допоможе стати справжнім гуру Java. Він присвячений базам даних, побудові графічних інтерфейсів, а також складним речам на кшталт багатопоточності, механізму відображення та внутрішніх класів.

Програміст на Python

https://geekbrains.ru/professions/python_developer

Кажуть, що на Python можна почати програмувати без жодного навчання, але при цьому замовчується пара важливих деталей: до ладу це вийде тільки у того, хто вже знає пару мов, та й професіоналом так не станеш. П'ятимісячний курс Geekbrains включає не тільки вивчення Python від основ до тонкощів на кшталт декораторів, але й зачіпає HTML/CSS, Javascript і фреймворк Django. Отже, ти навчишся не просто писати програми на Python, але зможеш робити на ньому повноцінні динамічні сайти.

Програміст на Ruby

https://geekbrains.ru/professions/ruby_developer

Мова Ruby довго вважалася цікавою дивиною, поки не з'явився фреймворк Ruby on Rails. Тепер Ruby – одна з найкращих мов для веб-розробки, а завдяки Rails він допомагає багаторазово прискорити та спростити розробку складних веб-додатків. Цей піврічний курс Geekbrains навчить тебе звертатися з HTML/CSS та клієнтським Javascript, а також навчатиме Ruby саме з метою використання Rails. Контролери та шаблонізатори чекають на тебе, майбутній веб-розробник!

Спецпроект із компанією GeekBrains

Напевно, практично кожен молодий чоловік, якому колись купили комп'ютер ставив за мету стати хакером. Чому саме молоді люди віком від 14 до 20 років хочуть стати хакерами? Через бажання самоствердитися, через свою цікавість або через бажання заробити грошей - не має значення, мова в цій статті не про це. Як важко буває початківцю хакеру розібратися у всіх хитросплетіннях всесвітньої павутини, методах злому і т.д. і т.п.

З чого почати? Де взяти? Що робити? Прочитавши цю статтю, ти дізнаєшся відповіді на ці та багато інших питань. Твій комп'ютер зі звичайного домашнього "тварини" перетвориться на страхітливого злісних адмінів "монстра". Стаття призначена в першу чергу саме для хакера-початківця.

Частина перша, вступна
Я сподіваюся, ти розумієш, що якщо ти вирішив стати хакером, то вже порушив закон РФ. Подумай, а чи треба тобі це? Через дефейс якогось сайту отримати умовний термін? Вперше умовний, і то якщо ти добрий хлопчик. Ти скажеш мене не зловлять – помиляєшся, захочуть зловлять. Питання тільки в часі – коли тебе спіймають. Сидіти в напівтемному приміщенні і дивитися на здорового "бика", який крім хука праворуч по щелепі і ногою в живіт з розвороту нічого більше не знає, не найприємніше проведення часу. Чи все одно вирішив стати хакером? Гаразд, тоді спитай себе для чого? Важке запитання? А ти гадав.

Частина друга, підготовча
1. Ти напевно знаєш вже, що всі сервери стоять або на Юнікс, або на WinNT або на якійсь іншій операційній системі, але тільки не на Win 9x. І, відповідно, практично всі атаки на сервери відбуваються саме з цих двох операційних систем: Unix та WinNT. Саме тому ти маєш поставити собі Unix. Не треба засмучуватися я розумію, що твій тато з Юніксом не впорається, йому зручніше працювати в "Вікнах" - тому рішень цього питання лише два: метод перший - ставимо емулятор Юнікса. Що таке емулятор? Ця програма, яка працює під одну операційну систему, але працює на іншій. Тобто. тобі треба поставити собі на комп'ютер таку програму, яка запускалася б з-під Windows, але обробляла б команди Юнікса.

Сказано зроблено. Найвідоміші емулятори Юнікса під "Вікна" це Cygwin та Uwin. Якщо ти не знайомий з програмуванням і самим Юніксом, ставити CygWin не раджу - не розберешся. Набагато простіше в цьому випадку поставити Uwin. Як це зробити ти зможеш дізнатися, прочитавши статтю в Хакері за вересень 2000 року. Я розумію важко знайти - але не буду я тобі переказувати статтю. А цю адресу, звідки ти можеш завантажити Uwin: http://www.research.att.com/sw/tools/uwin

Заходиш на сайт, давиш пімпу "Download Software", потім завантажиться сторінка, де тебе запитають - мовляв, для яких цілей ти собі Uwin ставиш? Якщо для комерційних, то програма працюватиме лише 90 днів, потім бабки плати за ліцензію. Але нам цього не треба, тому клацаємо на перше посилання – і переходимо на сторінку вибору файлів та заповнення анкети. У полі "Full Name" пиши своє повне ім'я на американський зразок: Vasya V. Pupkin. Далі впиши e-mail та назву своєї компанії: типу BigFood, що завгодно, коротше. Потім вибирай файл – потрібні тобі тільки в перших двох полях, розберешся сам я думаю. Два вибраних тобою файли важать приблизно один 8.7 Мб, другий 3.8, тобто. приблизно 13 Мб, а також тобі знадобиться файл uwin_development.win32.i386.exe – це набір заготовок для Windows-компіляторів. Файли у розширенні exe, завантаживши їх треба просто запустити. Відбудеться розпакування архіву та встановлення Uwin на твій комп'ютер. От і все. До речі, тобі знадобиться компілятор. Компілятор купуй або Borland або Visual Studio.

Метод другий – реєструємось в Arbornet. Другий метод отримання Юнікса полягає в отриманні безкоштовного shell"а на відповідному сервері. Shell - це теж саме, що і емулятор. рядком Юнікса. Метод отримання віддаленого shell"a я поставив на друге місце, тому що можливостей у нього набагато менше, ніж у емулятора встановленого на твоєму комп'ютері. Все залежить від господарів сервака, що вони захочуть дати тобі, а що ні.

Я раджу зареєструватися на Arbornet.org. Пиши у командному рядку Windows telnet m-net.arbornet.org З'явиться вікно, вводь newuser і далі пиши те, що просять. Зокрема твій логін, під яким ти заходитимеш, пароль, твій e-mail та твоє ім'я. Після цього ти одразу зможеш приступати до роботи. Майже всі команди Юнікса тобі будуть доступні, але не всі, але про це пізніше. Єдине, що хочу тут додати, це те, що якщо тобі потрібно закачати на шелл, якийсь файл або файли, наприклад експлоїти, то потрібно запустити будь-який ftp-клієнт, набрати адресу ftp.m-net.arbornet.org, ввести свій логін і пароль відповідно і закачати те, що тобі потрібно. Місце тобі там дають достатньо.

2. Витративши день, ти нарешті скачав і поставив собі емулятор. Що далі? Тепер тобі просто потрібний бойовий софт.

Отже, нам потрібно:
- Сканер:
Сканерів існує величезна кількість. Вони відрізняються лише кількістю функцій, що надаються користувачеві. Є сканери багатофункціональні, а є лише призначені для виконання одного конкретного завдання. Тобі потрібен буде сканер портів, сканер для прослуховування мережі, сканер cgi-уразливостей. Можна також придбати сканер безпеки, що досліджує вузол на наявність дірок у системі безпеки сервера.

Для Юнікса:
Сканер портів:
Netcat - дуже класна утиліта, включає багато функцій і не тільки сканер портів. Адреса:
http://www.l0pht.com/ ~weld/netcat/
Nmap - ця утиліта ще краще, ніж netcat. Потрібно брати обидві ці утиліти, знадобляться. Адреса:
http://www.insecure.org/nmap

Сканер для прослуховування мережі:
HPing або Fping - ці дві утиліти дозволяють тобі визначити IP-адреси комп'ютерів заданого діапазону, які зараз підключені до досліджуваної мережі. Ти звичайно ж можеш використовувати стандартну утиліту ping, але вказані вище утиліти набагато краще, просто тому що включають деякі додаткові функції. Адреса:
http://packetstorm.harvard.edu/

Для Windows всі потрібні тобі сканери ти можеш знайти на нашому сайті. Не забудь про сканер cgi-скриптів, для Windows можу порадити взяти DCS, Void, TwwwScan та Stealth.

Сканер розшарених (відкритих всім) ресурсів: тут вибір невеликий - візьми краще Legion. Адреса:
http://www.rhino9.com

Утиліта Enum: необхідна для дослідження заданого сервера (тільки для серверів NT): отримання списку користувачів, груп, розшарованих ресурсів, зламування пароля (підбір) з використанням словника. Адреса:
http://razor.bindview.com

Зломщик PWL файлів: наприклад PWLTools (цю прогу можна завантажити з дрімпрогсу, використовуйте пошук). Це файли, які містять паролі користувачів
Windows.

Віддалений підбір пароля: програма Brutus. Необхідна для зламування пароля методом віддаленого тику.
Зламування паролів NT: програма LoPhtCrack.
Злам паролів Unix: програма John.

Keylogger: це такі програми, які, будучи встановлені на комп'ютері-жертви, записують всі натискання клавіш у файл і передає його на потрібну електронну адресу.

Сніффер: сніффер - це програма, призначена для перехоплення пакетів наступних від одного вузла (користувач) до іншого вузла (сервер). Після того, як пакет отриманий, сніффер його відсортує за твоїм фільтром, залежно від того, що тобі потрібно, паролі або інша інформація. Сніфферів існує безліч як для Unix"a, NT так і для Windows.