Как сделать себя хакером

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

Как вы живете? Приходите в офис каждый день и работаете до вечера? Или вы можете выбирать время и место для работы?

Я бы хотела выбирать место для работы, но не могу. Технически это возможно, но моя роль в компании требует присутствия на территории заказчиков. Поэтому я всегда в поездках, посещаю разные страны. Чтобы провести внутренний пентест, приходится приезжать к заказчикам. Внешний можно проводить хоть на пляже.

Как вы проводите пентесты (тест защищенности ИТ-систем от несанкционированных проникновений)? Вы выбираете подходящее время для кибератаки? Или вы можете тестировать компании в любое время и в любом месте, и тестирование — исключительно технический вопрос?

В итоге все сводится к технике, но есть нюансы. Например, если клиент не работает ночью, лучше провести тест в это время. Когда мы делаем [дневные] пентесты для компаний из США, то можем работать всю их ночь, находясь в Европе, и это нормально. Но, как правило, предпочитаем обычный рабочий день — так проще и все счастливы. Нам не нравится работать всю ночь, но такое случается.

Часто мы тестируем копию сайта или сервиса. Например, недавно мы делали пентест пользовательских приложений для одного банка. Пришлось работать с копией системы, потому что на сайте был огромный трафик. А если при выполнении теста возникнут проблемы, это негативно повлияет на имидж банка.

У вас есть заказчики, которые просят делать настоящие пентесты в режиме реального времени?

В любом случае, нужно проводить оба теста, внутренний и внешний?

Как стать хакером

Вы начинали с хакерства или всегда были инженером информационной безопасности (ИБ)? Как правильно назвать вашу сферу?

Делала ли я что-то незаконное? Да, но было ли это правонарушением, если никто об этом не знает? А может, ничего такого вообще не было.

Когда у вас появился интерес к этой профессии?

Я всегда работала в сфере безопасности. В технологии я погружалась постепенно. Отвечала за безопасность школьной сети. Тогда мне было 17, я не очень в этом разбиралась, но очень хотела заниматься ИБ. Я искала свой путь. Понимаете, в 17 лет сложно понять, что стоит делать, а что — нет. Есть только то, что хочешь делать: это классно, я хочу этим заниматься. Но хорошо ли это для будущего — я не знала.

И мы не знаем, что с нами будет завтра.

Какую первую операционную систему вы взломали? ОК, протестировали на уязвимость.

Их две было — Windows и Linux.

Какая из ОС лучше и безопаснее: Windows, MacOS, Linux?

В итоге важно, что системы значат для бизнеса. Наиболее используемая операционная система — это Windows, мы все это знаем. Для Mac и Linux тоже существуют программы-вымогатели. Просто они по-другому попадают в систему. Разница есть и в доступности решений. Вопрос в том, есть ли компании и сколько их, которые могут обезопасить вашу систему. Не обязательно создавать реальную угрозу информационной безопасности, но проверка защитной инфраструктуры улучшит эту безопасность и минимизирует риск проникновения в ваши системы.

Что скажете об уровне безопасности B2B-систем в мире? Они готовы к кибератакам?

Абсолютно каждый раз, делая пентест, мы проникаем в систему. Давайте я так это скажу. Взломать можно кого угодно, каждый раз у нас получается их взломать.

И это неудивительно. Потому что есть много вещей, о которых им никто не рассказал. Приемлемого обучения для специалистов по безопасности просто не существует. Разумеется, есть некоторые курсы, тренинги и так далее, но даже если вы платите за университет или обучаетесь бесплатно, как-то еще учитесь, то к кибербезопасности нет прямой дороги. К тому же не все могут позволить себе учиться, а как вы можете стать хорошим специалистом в сфере безопасности, если не можете эту учебу оплатить?

Но никто не будет давать вам образование бесплатно, потому что это очень специфические знания. Это такая естественная ниша. Financial Times предсказывает, что к 2019 году в мире будет потребность в 6 млн специалистов по информационной безопасности, но с современными темпами развития, на рынке будет доступно примерно 4 – 5 млн. Так что для ребят, которые будут на рынке, ситуация замечательная. Все в них нуждаются. И будут нуждаться еще больше, но это, конечно, нездоровый рынок. Есть проблема обучения специалистов по безопасности.

Инженер по кибербезопасности — профессия будущего?

Тогда какой наилучший способ получить ее, если университеты не готовят к ней в должной мере? Онлайн-курсы?

Мы делаем это, потому что у нас есть нехватка сотрудников. Появляется все больше проектов, и мы их откладываем, откладываем, потому что времени нет. Мы нанимаем людей с хорошим подходом к работе. Этого достаточно, чтобы получать потрясающие результаты. Все остальное приложится. Мы тестируем их в разных направлениях, отправляем их к нашим инженерам, часто берем на наши мастер-классы, а затем опять проводим тесты — они должны развиваться. У таких студентов есть возможность путешествовать. Или, например, когда мы проводим пятидневный мастер-класс, новый сотрудник может стать дополнительным участником.

Хороший вариант для молодых людей — устроиться в компанию вроде нашей. Но в сфере безопасности надо сделать серьезные вложения, чтобы потом предоставлять фантастический сервис. Поэтому оплата может выглядеть по-разному, но она должна быть. Мы обучаем на контрактной основе, с гарантийным взносом. Позднее деньги за обучение вам вернутся, но зато у вас будет возможность в течение 2-3 лет работать в хорошей команде, проходить тренинги, получать полезные инструменты, знания, видеть реальные среды, по возможности помогать команде. В то же время, мы берем залог за обучение. И это единственный возможный вариант, на мой взгляд.

Сколько человек сейчас работает в вашей компании?

Это смотря как считать. В штате у нас 20 человек. И 36 контракторов. Но контракторы работают у нас по несколько недель ежемесячно. Так что это практически штатная работа.

А сколько молодых сотрудников?

Около 30 — примерно половина. Этих людей мы обучаем, потому что у некоторых из них совсем нет опыта.

Вы принимаете их на работу сразу после университета?

Да. И это ужасно. Потому что до определенного момента непонятно, с кем вы имеете дело. С виду все хорошо, а потом… Молодое поколение у нас имеет ужасную репутацию, и мы не очень этим довольны. Поэтому выбираем только тех, кто вписывается в команду. Ошибались мы дважды.

У вас есть сотрудники из России?

Пока не было. Но мы сейчас открываем новые рынки, потому что мы видим в этом перспективу. Так что, кто знает, возможно, у нас появится кто-то из России.

Мы почти каждый день слышим о кибератаках с участием российских хакеров. Русские якобы атаковали Трампа, Yahoo, Sony, нет, простите, это Северная Корея нашла уязвимости в инфраструктуре Sony. Действительно ли российские хакеры такие умные и так востребованы в качестве аутсорсеров? Или это просто штампы и заблуждения СМИ?

Нет, это действительно так. У вас высокий уровень знаний в этой области. Многие хакеры действительно из России. Я думаю, но это только мое мнение, что этому способствуют трудности в трудоустройстве для людей, живущих в удаленных городах. Им проще найти удаленную работу, чем офисную: можно быть разработчиком, а можно — пентестером. Эта позиция позволяет вам работать удаленно откуда угодно, ведь безопасность важна для многих. Если у вас есть возможность обучиться в офисе компании, и вы хотите работать консультантом, придется ездить в Москву, Краснодар, Санкт-Петербург и другие города, где находятся компании-заказчики. Но если вы живете в другом месте, это [работа разработчиком или пентестером] станет отличной возможностью.

Такая ситуация во многих странах. Например, в Румынии есть достаточно удаленный город Клуж — это место разработчиков и специалистов по безопасности. В нашей стране есть что-то-подобное. Боже мой! Это фантастика. Работать можно из любой точки мира. В целом, по статистике, у людей из России очень высокий уровень интеллекта и аналитического мышления. Русские — большие молодцы.

Вы — владелец компании. Зачем вы стали участником программы Microsoft MVP? Не накладывает ли это на вас какие-то обязательства? Какие дает преимущества?

Я участвовала в различных общественных проектах — от рассылки презентаций и исследований по итогам конференций до различных мастер-классов и организации мероприятий. Например, я организовывала Woman in Technology Park, сейчас на это у меня уже нет времени. Затем это перешло в выступления на конференциях и подготовку статей для блогов — это можно делать удаленно.

Благодаря статусу MVP (присваивается выдающимся IT-специалистам, которые вносят интеллектуальный вклад в развитие технических сообществ — Forbes) и участию в программах по безопасности, я имею доступ к исходному коду Windows. Речь не о 100% кода, естественно. Я получила его с момента выхода Windows XP, то есть примерно 8 или 9 лет назад. Возможно, это дает моей компании чуть больше преимуществ, потому что мы всегда можем проверить наши гипотезы, тогда как другим специалистам это сделать сложнее. Это самое приятное.

Представьте себе, что все проблемы с безопасностью будут решены. Что вы будете делать?

Буду лежать на пляже. Но если серьезно — интересный вопрос. Какой будет моя вторая профессия? Скорее всего, я продолжу работать в ИТ. Но, если абсолютно все проблемы в ИТ будут решены, я, вероятно, перейду к математике, потому что это аналитическая и строгая наука. Скорее всего, я буду что-то где-то продавать, заниматься транзакциями, потому что мне нравится математика. Где-нибудь на Уолл-стрит.

Хакеры — это обычные программисты, специализирующиеся на компьютерной безопасности. Чтобы освоить эту профессию понадобятся годы. Для начала начните с изучения математики и основ программирования.

Те кто не хочет сразу же попасть в федеральный розыск рекомендуется начать с анонимности. И естественно надо начинать с разбора самых фундаментальных вещей:
Дать себе ответ на вопрос, что такое компьютер и что такое программирование, в таком виде, в котором оно дано.
Эти вопросы состоят из следующих тем:
- Архитектура ЭВМ:
(процессор, память, контроллеры и т.д.)
- Разобраться, как процессор способен воспринимать язык программирования и что такое язык программирования вообще.
Из этого будет вытекать ряд концепций:
- Что такое компилятор;
- Что такое интерпретатор;
- Уровни языков программирования;
- Парадигмы языков программирования.
- Базовые понятия языков программирования:

  1. Ветвления
  2. Циклы
  3. Лямбда выражения
  4. Рекурсия и т.д.

Из этого будут вытекать все новые и новые существительные:
- Системы счисления;
- Различные виды данных;
- Различные типы кодирования данных;
- Теория типов данных и многое другое;

В целом нужно разобраться с тем, что такое компьютер и как этот компьютер можно программировать.
Сюда можно отнести:
- Концепция баз данных;
- Виды бах данных;
- Как там хранится информация;

Следующий шаг – это изучение математики:
Для изучения помогут отличные советские книги и сервисы, которые помогут прокачать ваш скилл в этой науке.

Следующий шаг - Изучение сетей и вообще сетевого программирования.
Нужно изучить модель интернета.
Модель TCP/IP
Модель OSI

Второй фундаментальный момент в программировании это:
- Сокеты.

Модели протоколов и сокеты – это две базовых составляющих сетевого программирования.

Следующий шаг – операционные системы.
Для начала нужно разобраться, что такое операционная система и какие виды операционных систем бывают:
- Windows
- Linux
- Android
- Mac OS
Как операционка работает с железом, представлять процесс загрузки вашего компьютера.
Более углубленно заниматься операционными системами следует тому, кто планирует писать системный софт.

У каждой операционки есть определенный интерфейс. APIs.
К примеру, Win32 Api в Windows.

Следующий шаг – выбор языка программирования.
Нужно определиться с языком программирования и стилем программирования.
Нужно знать определенные концепции.
В этот перечень входит знание:
- Структур данных;
- Алгоритмов;
- Паттернов проектирования;

Вот, собственно, тот необходимый минимум знаний, которые понадобятся для дальнейшего развития.

Для новичков, которые не знают с чего начать, мы представляем подборку сайтов, на которых можно приобрести и улучшить навыки хакинга.

Прим. перев. Приведённые ниже площадки доступны только на английском языке.

1.picoCTF

picoCTF — это площадка для изучения кибербезопасности. На ней будущие этичные хакеры могут обучаться и соревноваться в навыках взлома.

2.OVERTHEWIRE

OverTheWire подойдёт всем желающим изучить теорию информационной безопасности и применить её на практике независимо от своего опыта. Новичкам следует начать с задач уровня Bandit, поскольку они необходимы для дальнейшего решения других задач.

3.HACKING-LAB

Hacking-Lab предоставляют задачи CTF для European Cyber Security Challenge, но они также проводят на своей платформе регулярные соревнования, в которых может участвовать каждый. Просто зарегистрируйтесь, настройте vpn и выберите себе задачу по вкусу.

4.PWNABLE.KR

Задачи делятся на 4 уровня сложности: лёгкий — для новичков, средний, сложный и хардкор, где задачи требуют нестандартных подходов для решения.

6.SMASHTHESTACK

SmashTheStack состоит из 7 различных варгеймов: Amateria, Apfel (в настоящее время офлайн), Blackbox, Blowfish, CTF (в настоящее время офлайн), Logic и Tux. Каждый варгейм содержит множество задач, начиная от стандартных уязвимостей и заканчивая задачами на реверс-инжиниринг.

7.MICROCORRUPTION

8.REVERSING.KR

Здесь вы можете найти 26 задач для проверки ваших навыков взлома и реверс-инжиниринга. Сайт не обновлялся с конца 2014 года, но имеющиеся задачи по-прежнему являются ценными учебными ресурсами.

9.HACK THIS SITE

Hack This Site — бесплатный сайт c варгеймами для проверки и улучшения ваших навыков хакинга. Нам нём можно найти множество хакерских задач в нескольких категориях, включая базовые задачи, реалистичные задачи, приложения, программирование, фрикинг, JavaScript, форензику, стеганографию и т.д. Также сайт может похвастаться активным сообществом с большим каталогом хакерских статей и форумом для обсуждения вопросов, связанных с безопасностью. Недавно было объявлено, что кодовая база сайта будет пересмотрена, поэтому в ближайшие месяцы можно ожидать большие улучшения.

10.W3CHALLS

W3Challs — это обучающая платформа с множеством задач в различных категориях, включая хакинг, варгеймы, форензику, криптографию, стеганографию и программирование. Цель платформы — предоставить реалистичные задачи. В зависимости от сложности решённой задачи вы получаете баллы. Также есть форум, на котором можно обсуждать и решать задачи с другими участниками.

11.Hacker101 CTF

Hacker101 CTF — это игра Capture The Flag, классическая задача для хакеров, когда нужно получить доступ к системе, а затем найти флаг (который обычно является строкой). На сайте есть несколько уровней, а для застрявших существуют подсказки.

12.EXPLOIT EXERCISES

Exploit Exercises предлагает множество виртуальных машин, документацию и задачи, которые пригодятся в изучении повышения привилегий, анализа уязвимостей, разработки эксплойтов, отладки, реверс-инжиниринга и т.д.

13.RINGZER0 TEAM ONLINE CTF

14.HELLBOUND HACKERS

На Hellbound Hackers можно найти традиционные задачи с эксплойтами и такие форматы задач, которых нет на других ресурсах. Например, патчинг приложений и задачи, ограниченные по времени. В задачах с патчингом вам даётся уязвимый фрагмент кода и вам нужно предложить исправление этой уязвимости.

15.HACKINGLOOPS

HACKINGLOOPS — это сайт на котором вы найдёте множество туториалов по различным видам хакинга: от мобильных телефонов, до веб-сайтов. Также на сайте есть возможность пройти тесты для подготовки к сертификациям Security+.

16.HACK.ME

17.HACKTHIS!!

18.ENIGMA GROUP

Enigma Group содержит более 300 задач с акцентом на топ-10 эксплойтов OWASP. Сайт имеет почти 48000 активных участников и проводит еженедельные CTF-соревнования, а также еженедельные и ежемесячные конкурсы.

19.GOOGLE GRUYERE

Google Gruyere показывает, как можно эксплуатировать уязвимости веб-приложений и как от этого защититься. Вы сможете провести реальное тестирование на проникновение и фактически взломать настоящее приложение, используя атаки вроде XSS и XSRF.

20.GAME OF HACKS

Game of Hacks показывает вам набор фрагментов кода в виде викторины с несколькими вариантами выбора, а вы должны определить правильную уязвимость в коде. Этот сайт немного выделяется из этого списка, но тем не менее это хорошая игра для выявления уязвимостей в коде.

21.ROOT ME

Root Me — это сайт для хакинга, который предлагает более 200 задач и более 50 виртуальных сред, позволяющих вам применить на практике свои навыки взлома в различных сценариях. Это определённо один из лучших сайтов в данном списке.

22.CTFTIME

Хотя CTFtime не является хакерским сайтом, как другие в этом списке, это отличный ресурс, чтобы оставаться в курсе CTF-соревнований, происходящих по всему миру. Поэтому, если вы заинтересованы в присоединении к CTF-команде или участии в соревновании, вам стоит сюда заглянуть.

23.PENTESTERLAB


Ссылки на другие статьи из этого цикла ищи на странице автора.

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


Другие статьи в выпуске:

Если защита базируется на одном лишь предположении, что ее код не будет изучен и/или изменен, — это плохая защита. Отсутствие исходных текстов отнюдь не служит непреодолимым препятствием для изучения и модификации приложения. Современные технологии обратного проектирования позволяют автоматически распознавать библиотечные функции, локальные переменные, стековые аргументы, типы данных, ветвления, циклы и прочее. А в недалеком будущем дизассемблеры, вероятно, вообще научатся генерировать листинги, близкие по внешнему виду к языкам высокого уровня.

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



Шаг первый. Разминочный

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

Достоинство такой защиты — крайне простая программная реализация. Ее ядро состоит фактически из одной строки, которую на языке С можно записать так:

Давайте дополним этот код процедурами запроса пароля и вывода результатов сравнения, а затем испытаем полученную программу на прочность, то есть на стойкость к взлому:

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

В популярных кинофильмах крутые хакеры легко проникают в любые жутко защищенные системы, каким-то непостижимым образом угадывая искомый пароль с нескольких попыток. Почему бы не попробовать пойти их путем?

Не так уж редко пароли представляют собой осмысленные слова наподобие Ferrari, QWERTY, имена любимых хомячков или названия географических пунктов. Угадывание пароля сродни гаданию на кофейной гуще — никаких гарантий на успех нет, остается рассчитывать на одно лишь везение. А удача, как известно, птица гордая — палец в рот ей не клади. Нет ли более надежного способа взлома?

Что ж, пусть это будет секция данных! Остается только найти удобный инструмент для просмотра двоичного файла. Можно, конечно, нажать клавишу F3 в своей любимой оболочке (FAR, например) и, придавив кирпичом клавишу Page Down, любоваться бегущими цифирьками до тех пор, пока не надоест.

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

Листинг 2

Среди всего прочего тут есть одна строка, до боли похожая на эталонный пароль (в тексте она выделена жирным шрифтом). Испытаем ее? Впрочем, какой смысл — судя по исходному тексту программы, это действительно искомый пароль, открывающий защиту, словно золотой ключик. Слишком уж видное место выбрал компилятор для его хранения — пароль не мешало бы запрятать и получше.

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

В листинг 1 перед функцией main добавим новую секцию, в которой будем хранить наш пароль:

Внутри функции main проинициализируем массив:

Немного изменилось условие сравнения строк в цикле:

Натравим утилиту DUMPBIN на новый исполняемый файл:

Нестандартная секция .kpnc сразу же приковывает к себе внимание. А ну-ка посмотрим, что там в ней?

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

О’кей, пароль мы узнали. Но как же утомительно вводить его каждый раз с клавиатуры перед запуском программы! Хорошо бы ее хакнуть так, чтобы никакой пароль вообще не запрашивался или любой введенный пароль программа воспринимала бы как правильный.

Хакнуть, говорите? Что ж, это несложно! Куда проблематичнее определиться, чем именно ее хакать. Инструментарий хакеров чрезвычайно разнообразен, чего тут только нет: и дизассемблеры, и отладчики, и API-, и message-шпионы, и мониторы обращений к файлам (портам, реестру), и распаковщики исполняемых файлов, и… Сложновато начинающему кодокопателю со всем этим хозяйством разобраться!

Впрочем, шпионы, мониторы, распаковщики — второстепенные утилиты заднего плана, а основное оружие взломщика — отладчик и дизассемблер.

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

Заглянем еще раз в секцию данных (или в другую — в зависимости от того, где хранится пароль): см. листинг 2.

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

Смотрите, центральная часть этого листинга отвечает за сравнение значений регистров EAX и ECX. В последний, как мы видим, в первой строке листинга записывается эталонный пароль, следовательно, в первом — введенный пользователем. Затем происходит сравнение и выполняются переходы почти в одну и ту же точку: 0x4010A2 и 0x40109E. Заглянем, что там:

Здесь центральную роль играет инструкция test eax,eax , расположенная по смещению 0x4010A7. В случае если eax равен 0, следующая за ней команда JE совершает прыжок на 0x40110E. В противном же случае на вершину стека выталкивается строка Wrong password:

а следом — вызов функции с говорящим названием:

Значит, ненулевое значение EAX свидетельствует о ложном пароле, а ноль — об истинном.

О’кей, тогда переходим к анализу валидной ветви программы, что делается после прыжка на 0x40110E. А тут притаилась инструкция, которая помещает строку Password OK на вершину стека, после чего вызывается процедура _printf, которая, очевидно, выводит строку на экран:

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

Шаг третий. Хирургический

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

Чтобы Hiew мог отличить адрес от смещения в самом файле, предварим его символом точки: .4010A7.

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

Hiew в режиме правки ассемблерной команды

Hiew в режиме правки ассемблерной команды

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

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

Hiew в режиме правки шестнадцатеричного кода

Hiew в режиме правки шестнадцатеричного кода

Работает? В смысле защита свихнулась окончательно — не признает истинные пароли, зато радостно приветствует остальные. Замечательно!

Взломанная программа принимает любые пароли

Взломанная программа принимает любые пароли

Продолжение следует?

Крис Касперски

Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.

Юрий Язев

Читайте также: