Техніка та філософія хакерських атак Про що ця книга - Документ - стор
" Ніщо може, виникнути з нічого " Ф. Херберт. "Дюна".
Говорячи конкретно, він відмовився підтримати хоча б інтерпретований мову скриптів або надати мені API (компілятор я і сам міг би написати), додати підтримку двійкового введення в калькулятор, підтримати редагування заголовків РЕ\LЕ\LХ-файлів.
HIEW - це чудовий і надзвичайно потужний інструмент, призначений для аналізу та редагування програм безпосередньо у виконуваному коді.
Всі ці недоліки позбавлені HIEW. Сприятливий, компактний, спритний, в умілих руках він здатний творити дива, при цьому обмежуючись чисто "формальними" вимогами до апаратури.
Через кілька років можливості цієї утиліти помітно зросли. Конкретно: завантажуючи версію 6.03 (останню на момент написання цього посібника), ви купуєте в одному флаконі:
• унікальний засіб пошуку асемблерних команд по масці;
• вбудований асемблер (Pentiun Pro);
• вбудований дизассемблер (Pentiun Pro);
• Інтерпретована крипт-система (Virtual CPU).
Іншими словами, це готовий інструментарій на всі випадки життя. Бракує лише інтерпретованої мови та інтеграції з налагоджувачами.
Перелічені можливості дозволяють повністю відмовитися від інших інструментів та проводити аналіз програм, не використовуючи нічого крім HIEW. При цьому завдання зломщика не набагато ускладниться, а то й навпаки. HIEW відноситься до інтерактивних дизассемблерів, і його міць в деякому відношенні можна порівняти лише з силою IDA.
Тобто. процес дизассемблирования тісно пов'язані з користувачем, який має сам визначити, де код, де дані, як інтерпретується та чи інша інструкція. Останнєособливо актуально з шифрованим кодом, що самодифікується.
Зауважимо, що IDA або Sourcer дизассемблируют весь файл цілком, що потребує тривалого часу, HIEW показує одночасно лише невеликий фрагмент розміром з екран. Звичайно, якщо потрібно отримати добре документований листинг програми, то це здасться вкрай невдалим варіантом: проте в роботі останнього хакера зазвичай не потрібно. Цікаво, що HIEW незамінний при аналізі програм як пару кілобайт (коли марнотратно запускати для них IDA), і у пару мегабайт (коли IDA довше дизассемблировать, ніж хакер зносити захист з допомогою HIEW).
Крім того, HIEW дозволяє з легкістю і комфортом прогулятися LE/PE/NE/LX/NLM-файлами, досліджувати формат і перекроїти, наприклад, таблиці імпорту на свій смак.
Зауважимо, що не так багато популярних дизассемблерів підтримують LE-формат. Але HIEW - підтримує, залишаючись незамінним помічником під час подорожей у нетрях VxD. Використовувати для цієї мети IDA не завжди зручно - часто заздалегідь невідомо, в який саме файл розробник помістив захисний механізм і потрібно окинути поглядом далеко не один драйвер віртуального пристрою. IDA витрачає більше часу на завантаження, аніж хакер на аналіз. Найприкріше, що аналіз-то в більшості випадків і не потрібно-наприклад, в цьому випадку відразу видно, що захист тут і не ночувала:
.00000007: В800000000 ltlOV еах,000000000;
.0000000C: B94AOOOOOO mov есх,00000004A ;
.00000011: 07400400000000 mov d,[eax] [00004],000000000
.00000018: CD2014000A00 VxDcall VDD.Get_DISPLAYIHFO
.0000001E: 66F705020000000009 test W, [000000002], 00800 ;
.00000027: OF85790DOOOO jne .000000DAб ------- (1)
HIEW дозволить заощадитичимало дорогого часу хакера, яке можна витратити на щось корисніше, ніж стомлююче очікування закінчення завантаження файлу.
Існує думка, що аналіз програм безпосередньо в HIEW-e більш складний, ніж у налагоджувачі або повноцінному дизассемблері. Деякі це вважають "вищим пілотажем". Однак це лише поширена помилка. За винятком, можливо IDA, HIEW забезпечує весь сервіс, що надається іншими "повноцінними" дизассемблерами, при цьому володіючи і властивими IDA можливостями - наприклад інтерактивністю. Коли SOURCER може бути легко спантеличений хитрим прийомом розробника захисту, з hiew-om такого не станеться, оскільки він працює в тісній зв'язці з людиною. Неважко обдурити машину, але людину людину перехитрити не може (хіба що ввести в тимчасову оману).
Не будемо більше займатися безглуздим порівнянням конкуруючих утиліт, а перейдемо до опису пакета постачання.
У версії 6.03 входять такі файли:
FILESLST файл опису (на жаль, погано сумісний з DN та ін оболонками)
HEW.EXE власне сам HIEW (одночасно для DOS та OS\2)
I конфігураційний файл
HIEW.HLP файл допомоги
HIEW.ORD символьна інформація ординалів поширених файлів
HIEW.VMM VMMcaU/VxDcall для LE-файлів
HIEW.XLT файл перекодування (Windows-1251 \ KOI-8R)
HIEWR.NNN короткий опис українською мовою
HIEWE.NNN короткий опис англійською мовою
NEDUMP.EXE утиліта для дослідження NE-файлів (не актуальна сьогодні)
LXDUMP.EXE утиліта для дослідження LX\LE-файлів
DEXEM.EXE утиліта для роботи з файлами Duat-EXE (NE/LE/LX/PE)
HIEW.EXE дуже тяжкий. Цілих 284,855 байт, що забирає багато місця, наприклад, на рятувальній дискеті(Він у багатьох завжди на ній: чи мало з якими вірусами воювати доведеться). Насправді це файл DUAL-exe, тобто. два файли для MS-DOS та OS\2 одночасно. Це оригінально, але дуже марнотратно (зауважимо, що такі програми можуть існувати і під Windows).
Перше, що необхідно зробити, - "розрізати" файл на дві половинки та взяти "рідний" для вашої операційної системи. Для цього призначена утиліта dexem.exe.
маска відображення файлів - *
Взагалі навігатор дуже нагадує Norton Commander і спілкування з ним проблем викликати не повинно. Про всяк випадок я все ж опишу призначення клавіш управління:
F2 (Hidden) — відображення прихованих та системних файлів. Кнопка діє як тригер.
F3 (Name) — сортування за іменами файлів.
F4 (Exten) – сортування за розширеннями.
F5 (Time) – сортування за часом створення.
F6 (Size) – сортування за розмірами.
F7 (Unsort) - розташовувати файли в тому порядку, в якому їх знаходить FindNextFile.
F8 (Revers) – звернути умовні сортування. Тобто. за умовчанням (за винятком дати) прийнято сортування за зростанням параметра. Реверс призводить до сортування за спаданням. Діє як тригер.
FIO (Filter) — задати маску файлів, що відображаються. На жаль, не дозволяє ставити більше однієї маски, що може спричинити незручності. Маленький баг якщо видалити маску, то HIEW її не відновить за замовчуванням. Для цього необхідно буде задати явно '*.*', що незручно.
Існує можливість швидкого пошуку необхідного файла. HIEW увібрав у себе всі найкращі рішення від DN і NC та реалізував дуже непогані для простого вбудованого менеджера можливості.
Натискання будь-якої символьної клавіші призводить до появи консольного рядка, в якому можна ввести ім'яфайлу (при цьому курсор переміщатиметься за списком синхронно з введенням).
Є і суто юніксівська можливість доповнення введеного імені до повного, за умови що останнє однозначно визначає файл. Можливо, що це визначення здасться хитромудрим, тому наведу приклад. Допустимо, нам потрібно знайти файл crackme.exe. Якщо в поточній директорії на 'с' є тільки один файл, то логічно, що він може однозначно бути визначений завданням всього однієї літери. Вводимо 'з' і натискаємо . Hiew, здогадуючись, що ми хочемо відкрити crackruc.exe, виводить його ім'я (між іншим, без розширення). А що буде, якщо у пас є два файли crackmel та crackme2? Тоді HIEW, сердито пискнувши, напише тільки 'crackme' і зупиниться, чекаючи на уточнення - який саме з двох файлів нам потрібно відкрити.
Комусь це може здатися незручним. У цьому випадку можна скористатися '*' - безпосереднім аналогом Ctrl-Enter в DN і NC - послідовному переборі відповідних файлів.
Є дуже цінна недокументована можливість завдань списку в квадратних дужках. Наприклад, [cr,h]ack.exe знайде всі crack та hack. Якщо ком опустити, то HIEW інтерпретуватиме рядок як lc, r, h]. Тобто. *.[chl він знайде всі файли з, СРР, h та ін. Це дуже корисна і взагалі унікальна для платформи MS-DOS можливість, яка не існує в жодній іншій аналогічній програмі.
Якщо HIEW запущено з ім'ям неіснуючого файлу, він запропонує створити його. Альтернативним варіантом є кнопка в Навігаторі. Остання можливість просто незамінна, коли нові файли доводиться створювати та відкривати безпосередньо під час роботи. Наприклад, може знадобитися зробити деякі нотатки по ходу роботи, скопіювати фрагмент у новий файл і при цьому відразу відкрити його і, скажімо,розшифрувати (зазначимо, що Навігатор можна викликати будь-якої миті роботи клавішею F9).
Ctrl-'\' забезпечує швидкий перехід у кореневу директорію поточного диска, а FIO - в материнську директорію (ту, з якої було запущено HIEW).
При цьому є корисна можливість швидкого перемикання між чотирма довільно обраними директоріями. Для цього існують клавіші Ctrl-FI, Ctrl-F3, Ctrl-F5, Ctrl-F7, які запам'ятовують поточну директорію та Ctr3-F2, Ctrl-F4, Ctrl-F6, Ctrl-F8, які відповідно переходять у записану. При цьому є можливість збереження поточного стану файлу та його подальшого використання у всіх сеансах. Втім, ця можливість реалізована не найкращим чином. Немає можливості зберегти стан безпосередньо з Навігатора, тому доводиться відкривати файл тільки для того, щоб отримати доступ до клавіші 'Ctrl-FlO' — 'SaveSatus'. До неї ми ще повернемося, а поки відзначимо таку приємну особливість, як ведення історії файлів, що переглядаються (F9).
mode Offset Name
Hex 0000 163С D: KPNC HIEW HIEWR .602
Text 00000452 D: \KPNC\HIEW\DEXEM. EXE
При цьому, крім власне імен, зберігатимуться поточний режим і позиція курсору (що особливо приємно). Останнє дозволяє використовувати HIEW для читання великих текстових файлів (електронних книг, документації); ніколи не доведеться запам'ятовувати, де ви знаходилися перед виходом. (Втім, щоб бути до кінця чесними, відзначимо, що ця можливість притаманна сьогодні практично всім сучасним в'юєрам - QVIEW by AGC, UniversalViewer і MessageViewer by KPNC, та й багатьом іншим.) Дозволю собі також відзначити, що в цьому UniversalViewer обігнав інших. Тоді як HIEW і QVIEW прив'язуються до імені файлу, UV - до хеш-суми заголовкаоколиць поточної позиції курсора. Ім'я файлу ігнорується. Останнє викликає менше конфліктів, хоча працює трохи повільніше. Сподіватимемося, що SEN у найближчих версіях реалізує щось схоже.
Перейдемо тепер до розгляду командного рядка. Більшість нею користується все ж таки набагато частіше, ніж незвичним Навігатором.
У командному рядку можна задавати більше одного файлу, але при цьому буде відкритий тільки перший з них, а решта доступна за Ctrl-F9, що, втім, зручно, так як зменшує час завантаження. Якщо специфікація файлу не буде повною, HIEW знайде всі відповідні файли і додасть їх імена до списку. Це є зручно і нелогічно. Неповна специфікація повинна призводити до виклику Навігатора (принаймні, на мою особисту думку).
Параметр /SAV визначає ім'я файлу SAV, який буде автоматично завантажено. За замовчуванням приймається hiew.sav, але останнє може бути змінено на i:
Sav-файл повністю зберігає поточний стан HIEW-a, включаючи поточну позицію, всі закладки тощо. Зазвичай, щоб скористатися файлом sav, потрібно запустити HIEW без параметрів. Зауважимо, що 'hiew.exe MyFile.exe' не спричинить належного результату. Незручно, звичайно, але доводиться миритись: господар (SEN) — пан.
Цікава особливість: файл конфігурації також можна вказувати в командному рядку після ключа /INI. Це дуже зручно для "корпоративного" використання HIEW відразу кількома людьми. Кожному – налаштування на свій смак.
Якщо ж потрібно показати вміст вкладених директорій, можна використовувати ключ /S із зазначенням шляху і маски. При цьому hiew /s С'.\*.* з великою ймовірністю після тривалого шарудіння диском завершить свою роботу повідомленням:
Це буде залежати від кількості наявних у вас дисківфайлів. Якщо їх відносно небагато, то є шанс, що HIEW запуститься і можна буде вибрати будь-який файл, що сподобався, натиснувши Ctrl-F9.
Після довгих роздумів так і не вдалося вигадати ситуацію, в якій дана можливість була б незамінною. Адже завжди є під рукою вбудований Файловий Навігатор!
Після вибору файлу HIEW автоматично показує його у текстовому режимі. Не дуже вдалий вибір для хакерів, тому вони зазвичай насамперед редагують наступний рядок i
StartMode = Text; Text I Hex I Code
Взагалі рядок статусу може змінюватися залежно від режиму, але це не повинно викликати якихось проблем розуміння. Розглянемо докладніше деякі елементи.
Напрямок пошуку (прямий або зворотний) задається клавішею Alt-7 у будь-який момент або безпосередньо під час виклику вікна пошуку клавішею F2. При цьому
Стан файлу може бути наступним:
(R) ead – відкритий за читанням.
(W)rite - відкритий за записом.
Режим 16/32 визначається автоматично для типів файлів, що підтримуються. Це відрізняє його від QVIEW, де режими доводиться перемикати вручну, інакше коддизассемблируется неправильно, що може призводити до сумних результатів. У режимі 'text', де поняття 16\32 розрядного коду як таке відсутнє, це поле виражає номер самої лівої колонки, що відображається, вважаючи від нуля.
Дуже непогано продумана робота із закладками. Втім, зручно ще не означає звично. Редактор Gold Star встановив стандарт де-факто: Ctrk-K-n запам'ятати стан, Atl-Q-n відновити його. Ця думка не була підтримана SEN, і він задіяв зовсім інші "гарячі" кнопки. Grey-'+' запам'ятати поточний стан. Цей факт миттєво відбивається в індикаторі. Зображення '-' змінюється на порядковийномер закладки (вважаючи з одиниці?!). При цьому HIEW може запам'ятати до восьми закладок. Більшого зазвичай і потрібно. Відновити поточну закладку (яку індикатор зазначає ") можна натисканням Grey-'-'. Вибрати будь-яку іншу закладку допоможе Alt-' 1-8'. При цьому остання автоматично позначається як поточна. Якщо її потрібно видалити, то можна натиснути Alt-'-- '.A 'Alt-0' — видаляє відразу всі закладки без попередження, тому будьте обережні з цією комбінацією!