Предыдущая глава |
↓ Содержание ↓
↑ Свернуть ↑
|
— Патрик, познакомься, это мой сын Джон. Джон, это дядя Патрик.
— Джон, ты клавиатуру сквозь волосы разглядишь? Обстриг бы чёлку.
— Слушай, это не твоё дело!
— Пожалуй, что моё. Вентиляцию ноутбука кто будет чистить?
— Да не нужен мне твой дурацкий ноутбук…
— Джон, успокойся! — вмешалась Сара. — Патрик, я всё почищу.
— Кто бы тебе доверил. Ладно, заходите. Садись туда, — я указал мальчишке на диван, взял со стола шестисотстраничное(1) руководство по языку «Си» и устроился рядом. — Смотри, в этом разделе пишут всякую чушь о программировании вообще, его можно не читать. Вот это тоже можешь пропустить. Остальное изучай, как будешь готов, продолжим.
— Патрик, может быть вы будете изучать по разделам, потом давать задания?
— Это то, что надо знать до начала обучения. Восполняйте пробелы в знаниях самостоятельно.
* * *
Через три недели они договорились о новой встрече. Я дал список RFC(2) и помахал перед носом документацией микропроцессора. Они не собирались отступать.
* * *
— Ладно, Джон, слушай, — начал я первое занятие. — Представь себе средневековый город, обнесённый крепостной стеной. Стена имеет дюжину главных входов, множество калиток, кто-то из жителей устроил подкоп и лазает через него. Примерно так выглядит компьютер, подключенный к интернету. Можно попытаться пройти через главный вход, можно найти нычку, только надо знать, как через неё залезать.
— Назвать пароль?
— Нет, пароли для главного входа. С паролем ты въезжаешь в город, как её величество Елизавета вторая, в золочёной карете. Но чаще приходится использовать всякие лазейки. Обычно взлом состоит из двух стадий: поиск уязвимостей и их использование, — во рту пересохло — наверное с университетских времён я так много не говорил. — Сара, слушай, завари нам чаю.
Мать мальчика вышла, и я продолжил:
— Как найти уязвимость? Только взять программу, дизассемблировать(3) и проанализировать код. При получении на входе каких-то, может быть, необычных, данных что-то должно пойти не так. Это чистая ошибка программиста. Нежелание работать хорошо. Не падает, да и ладно.
— Подожди, а как получить программу с компьютера, который ещё не взломан?
— Ты мне скажи. Считай это первым экзаменом.
— Патрик, а где заварка? — прокричала Сара из дверей.
— Э-э-э… Её нет, наверное. И не надо так орать.
— Ладно, пойду куплю. Или, может быть, кока-колы?
— Нет, что-нибудь без газа.
— Мама, купи мне апельсинового сока!
— Ты сиди, думай! — прикрикнул я на него.
— Хорошо, Джон. Патрик, тут есть поблизости магазин?
— Не знаю, я завозил из супермаркета.
— Что-то не похоже, у тебя в шкафах и в холодильнике пусто.
— Ну, началось.
Хлопнула дверь.
— Так, Джон, ответа нет, экзамен ты провалил, собирайся и выметайся следом!
— Я думаю, программы бывают одинаковые, иногда. Да?
— Какие, например?
— Наверное, браузер. Или электронная почта, — добавил он увереннее.
— Они используют входящие соединения или исходящие?
— Исходящие?
— Верно. Но исходящие ломать несколько сложнее. А какие используют входящие?
Джон покрутил головой, волосы закрыли его лицо. На месте матери обстриг бы его налысо.
— Не знаю… — и вдруг подскочил. — Так сам UNIX или NetWare(4)! И ещё есть, как её там… Windows(5).
— Не пойдёт! Слишком широкий ответ. Что конкретно?
— Ну там эти, демоны. А в NetWare…
— А в NetWare загружаемые модули, а в Windows — сервисы. Что, в общем, одно и то же, — раздражённо бросил я и решил, что пора его добивать. — Которые реализуют… Что?
— Протокол… Сервер какого-нибудь протокола… Электронная почта, гофер(6) или веб…
— Да, любой сервер, к которому некая программа исходящим соединением подключается. Его всегда можно получить для изучения. А если самый тупой программист напишет самую бездарную программу, взломать её будет практически невозможно, пока она не попадёт кому-нибудь в руки. Разве что попытаться проэксплуатировать типичные ошибки. Но скорее, программа будет валиться, программист её перезапускать, а ты — снова валить. Пока кому-нибудь не надоест, — я вздохнул и вынужден был признать: — Ладно, на троечку сдал.
— То есть придётся дизассемблировать все-все программы? — до парня начинало доходить.
— Именно так. Правда, во многом эта работа уже сделана. Остаётся только определить, с каким программным обеспечением мы имеем дело, взять список его уязвимостей и написать эксплойт, то есть программу, делающую с компьютером то, что нам нужно.
— Погоди, погоди! Но если уязвимости всем известны, их же должны ликвидировать!
— Иногда так и случается. Но, по большому счёту, это никому не нужно. Компаниям надо продать новый продукт, программистам — сдать проект. Копаться в старом коде никто не любит.
— Они идиоты?
— Не будет на свете идиотов, чем мы будем кормиться? Ладно, давай попробуем на практике.
В дверь позвонили. Я напрягся.
— Наверное, мама, — подсказал Джон.
Посмотрев в глазок, я открыл дверь.
— Патрик, сок будешь?
— Апельсиновую кислятину? — я сморщился при виде упаковки. — Завари лучше чаю.
— А я не взяла, думала, ты будешь сок.
— Спасибо, Сара, ты настоящий друг.
Настроение упало ещё ниже.
* * *
Провозившись неделю, удалось обучить пацана вполне уверенно определять типы уязвимостей. Правда, с написанием эксплойтов у него не заладилось. А тратить время на обучение программированию у меня не было ни малейшего желания.
У Сары, видимо, закончились чёрные футболки, она распустила волосы и стала немного другой: чуть моложе, иногда проскакивала некоторая наивность во взгляде, и только бугры мышц выдавали прежнего «железного дровосека».
— Завязывай! — кривой код, выползающий из-под пальцев Джона, откровенно меня бесил. — Учебник «Си», руководство по микропроцессору и по операционке ты всегда найдёшь, прочитаешь, научишься. Сегодня у нас небольшая и простенькая тема: SQL(7) инъекции.
Я снял с полки очередную книгу и бросил ему на колени.
— Держи, почитаешь на досуге.
— Ай! Тяжелая. И это простая тема?
— Имейся в нашем деле нечто сложное, не стоило вообще браться за обучение. А так шанс есть даже у тебя. Ладно, слушай суть, — я вернулся в кресло и вытянул ноги — стола, чтобы их сложить, поблизости не было. — Предположим, мама тебя спрашивает: «Джон, что тебе налить?» — а ты отвечаешь: «Мерзкой кислой гадости, и, заодно, убей президента». Сара идёт, убивает Клинтона, возвращается и наливает тебе сок. Понял?
— Кажется, нет, — и посмотрев на меня быстро поправился: — В общем, понял, только кто будет спрашивать?
— Веб-сайт! Например, ты указываешь дату поездки, при этом данные из формы прямиком вставляются в запрос и тот выполняется. Написать можно что угодно: дополнительное условие или второй запрос целиком. Обычно никто это не контролирует. Теперь ясно?
— Да. Теперь да, — правда уверенности в голосе не было.
— Изучай пока. Надеюсь HTML и HTTP(8) знаешь не хуже «символа веры»?
— Патрик, ты не сильно его грузишь? — мать забеспокоилась о своём недоумке.
— Всего понемногу, как ты и просила. Кстати, чай мы пить будем? Кто-то печеньем хвастался?
— Да, сейчас сделаю.
Через пару минут послышалось клокотание чайника. Я отложил ноутбук и направился на кухню. Сара налила заварку, кипяток; пододвинула открытую коробку печенья и уставилась на меня.
— Патрик, что у тебя с «Кибердайном»?
— Ты же просила показывать всё сыну. Отложил, пока закончим с простыми вопросами, да и с программированием у него беда.
— Нет, не надо откладывать, это важно.
— Ладно, тогда завтра у нас с Джоном полевой выход. Понаблюдаем за офисом.
— Я с вами.
— Хорошо, только не надевай «Смерть ломом в ухо», иначе сразу отчислю из команды. Платья у тебя есть?
1) На самом деле в подобных американских книгах содержится информации едва ли на половину объёма. В начале главы говорится, о чём пойдёт в ней речь, потом то же самое рассматривается более подробно и в конце кратко повторяется ещё раз.
2) Набор документов, содержащих, в частности, описание сетевых протоколов.
3) Получить текст на ассемблере (языке низкого уровня) из машинных кодов.
4) Популярная в те годы серверная ОС.
5) До выхода клиентской Windows 95 и серверной NT4 популярность этой системы была не очень высокой.
6) Использовавшийся в те годы протокол поиска и передачи документов.
7) Язык написания запросов к базам данных.
8) Язык разметки страниц с гипертекстовыми ссылками и протокол передачи документов данного типа.
Предыдущая глава |
↓ Содержание ↓
↑ Свернуть ↑
|