Хакинг с нуля с чего начать
Как стать хакером: гайд по основам для новичков
Чтобы стать хакером, необходимы глубокие знания языков программирования, методов взлома, поиска уязвимостей, устройства сетей, операционных систем и проч. Также у вас должен быть творческий тип мышления. Вы должны быстро адаптироваться под ситуацию, находить нестандартные решения, проявлять креативность.
Если описанные выше навыки можно развить со временем, то чтобы понять, например, устройство MySQL или научиться работать с PGP-шифрованием, придется много учиться. И долго.
Чтобы стать хакером, вам нужно:
Изучить и использовать UNIX-систему, например, Ubuntu или MacOS
Для пользователей Windows
Если вы используете Windows, для вас есть хорошая новость: не надо удалять текущую систему и форматировать диск. Есть несколько вариантов работы с Linux:
Изучить язык разметки HTML
Если вы ещё не знакомы с программированием, тогда я вообще не понимаю, что вы делаете на этом сайте тогда у вас есть отличная возможность начать свой путь с изучения Hyper Text Mark-Up Language. Независимо от того, что вы видите на сайте, знайте, что всё это HTML.
Чтобы сделать форму отправки для этого файла, нужно знать HTML. Отправив файл, который, к примеру, вытаскивает все пароли или даёт доступ к базе данных, вы вольны делать с веб-сервисом всё, что вам угодно.
Итак, знание HTML нужно для того, чтобы:
Изучить несколько языков программирования
Как мы все знаем, чтобы нарушать правила, нужно для начала знать их. Этот же принцип работает для программирования: чтобы взломать чей-то код, вы должны знать, как работают языки программирования, и самому уметь программировать. Некоторые из наиболее рекомендуемых ЯП для изучения:
Изучить устройства сетей
Вы должны чётко понимать устройства сетей и принципы их работы, если хотите стать хакером. Важно понять, как создаются сети, понять различие между протоколами TCP/IP и UDP и проч. Узнайте, какой сетью пользуетесь вы. Научитесь настраивать её. Выясняйте возможные векторы атаки.
Имея глубокие знания о различных сетях, вы сможете использовать их уязвимости. Также вам необходимо понять устройство и принцип работы веб-сервера и веб-сайта.
Изучить криптографию
Это неотъемлемая часть обучения. Необходимо понимать алгоритмы различных шифров, например, SHA-512, алгоритм OpenSSL и проч. Также нужно разобраться с хешированием. Криптография используется везде: пароли, банковские карты, криптовалюты, торговые площадки и проч.
Kali Linux: некоторый полезный софт
Заключение
В этой статье мы разобрались в основах, без которых вы вряд ли сможете стать хакером. К слову о трудоустройстве. Как правило, люди, занимающиеся информационной безопасностью либо работают фрилансерами, выполняя заказы частных лиц, либо работают на компанию, обеспечивая безопасность хранящихся данных, выполняют работу системного администратора, etc.
Как стать хакером – пошаговые советы и видео материалы
Многие пользователи интернета интересуются тем, как стать хакером с нуля и с чего начать. Обычно ценители этого хобби – молодые парни, средний возраст которых 16-20 лет.
Молодые люди придерживаются мнения, что хакер – компьютерный взломщик, однако это заблуждение. Вот почему, прежде чем освоить эту профессию, рекомендую разобраться, что собой представляет хакер.
Хакер – программист высочайшего класса, который работает с готовым программным обеспечением и с помощью языков программирования реализует свою фантазию.
Для некоторых людей работа – образ жизни. Такого рода задатки чаще всего закладываются еще в детстве. В большей мере касается это именно профессиональных хакеров. Как стать одним из них, узнаете ниже.
Вы получили первое представление о том, как стать хакером. Если намереваетесь построить карьеру, не помешает изучить и несколько иностранных языков. Эксперты рекомендуют уделить особое внимание английскому языку, так как в сети он применяется очень широко.
Подводя итоги, отмечу, что упорство вместе с пониманием цели и умением реализовывать идеи позволит стать успешным хакером. Правда, работать лучше в рамках закона, так как зловредное хакерство уголовно наказуемо.
Как стать хакером с нуля
Работа профессионального хакера очень интересна. Взломы сайтов, хищение важной информации, похищение денег, проникновение, разглашение секретов. Возможности настоящего хакера безграничны. Что касается его имени, оно тщательно скрывается.
Молодых людей влечет активная деятельность по хищению информации и взлому сайтов. Но, они не учитывают, что за такие поступки часто приходится отвечать перед законом.
Работа не всегда предусматривает нелегальную деятельность, и это факт. Если желаете работать в компьютерной области, вашими услугами будут пользоваться крупные компании. И неудивительно, ведь хакер – первоклассный IT-специалист.
Как показывает практика, корпорации и крупные банки желают видеть профессионального хакера в своем штате. Организации защищают важную информацию с помощью компьютерных технологий, а специалист способен обнаружить в защите лазейки и предотвратить хищение данных.
Обрести профессию поможет только саморазвитие. Я поделюсь несколькими советами, а вы с их помощью приблизитесь к мечте, возможно, и реализуете ее.
Пошаговый план действий
Четыре изложенных пункта помогут овладеть базовыми навыками. Справившись с задачей, приступайте к изучению профессиональных вопросов и тонкостей хакерства. Благо, интернет переполнен информацией, касающейся сегодняшней темы.
Обратите внимание на рекомендациях, которыми я поделюсь. Поверьте, они помогут обрести профессионализм, дисциплину, настойчивость и усердие.
Быстро достигните цели, если команда ваших союзников пополнится усидчивостью и свободным временем. Каждый день придется осваивать новую информацию, что принесет опыт.
О компьютерных играх лучше позабыть. Свободное время тратьте на получение знаний, которые пригодятся в будущем. Обязательно прочтите Уголовный кодекс, чтобы избежать неприятной ситуации.
Как стать хакером с чего начать
Продолжая тему сегодняшней статьи, рассмотрим главные этапы обучения, чтобы подробно узнать, с чего начать, чтобы стать хакером.
В художественных фильмах хакеры взламывают платежные системы, сайты государственных учреждений, крупные организации и промышленные объекты. Основной целью взломов выступает важная информация или денежные средства. В реальности не все так просто.
Хакер – обычный программист, который способен взломать программный код. При этом у него другие цели. Он не стремится заполучить важные данные и продать их за большие деньги на «черном рынке». Во время взломов специалист знакомится с принципом работы той или иной программы, изучает код, чтобы найти дыры, создать аналог или схожую программу.
Многие считают хакеров преступниками, которые взламывают и разрушают, поэтому появляются «специалисты», которые хакерами не являются, но пытаются вести подобный образ жизни. Даже начинающий способен навредить сайту или компьютеру, если использует вредоносный скрипт, который маскируется под программу и размещается на сайтах.
В реальной жизни встретить настоящего профессионала в этой области проблематично. Опытный хакер никогда не расскажет, чем занимается. Он работает один, поскольку знает, что подобная деятельность наказуема.
Приготовьтесь к тому, что обучение в домашних условиях будет продолжительным и потребует максимум усилий. Только так покорите вершины и сломаете стереотипы. Помните, действовать нужно в рамках закона.
Надеюсь, рассказ поможет, а вы, ознакомившись с материалом, быстро добьетесь успеха.
Не забывайте, что создание или изменение программ, которые приводят к незаконному копированию, блокированию или уничтожению важной информации, наказуемое преступление. За такие действия могут лишить свободы на 3 года и оштрафовать на кругленькую сумму.
Если действия станут причиной серьезных последствий, наказание будет более суровым. Поэтому, прежде чем возьметесь за работу, обязательно подумайте, сможете ли удержаться от соблазна и не переступить черту закона. Удачи и до новых встреч!
23 сайта для практики хакинга
Авторизуйтесь
23 сайта для практики хакинга
Для новичков, которые не знают с чего начать, мы представляем подборку сайтов, на которых можно приобрести и улучшить навыки хакинга.
Прим. перев. Приведённые ниже площадки доступны только на английском языке.
1.picoCTF
picoCTF — это площадка для изучения кибербезопасности. На ней будущие этичные хакеры могут обучаться и соревноваться в навыках взлома.
2.OVERTHEWIRE
OverTheWire подойдёт всем желающим изучить теорию информационной безопасности и применить её на практике независимо от своего опыта. Новичкам следует начать с задач уровня Bandit, поскольку они необходимы для дальнейшего решения других задач.
3.HACKING-LAB
Hacking-Lab предоставляют задачи CTF для European Cyber Security Challenge, но они также проводят на своей платформе регулярные соревнования, в которых может участвовать каждый. Просто зарегистрируйтесь, настройте vpn и выберите себе задачу по вкусу.
4.PWNABLE.KR
Данная площадка фокусируется на pwn-задачах, подобных CTF, суть которых заключается в поиске, чтении и отправке файлов-флагов, которые есть в каждой задаче. Для доступа к содержимому файлов вы должны использовать навыки программирования, реверс-инжиниринга или эксплуатации уязвимостей, прежде чем сможете отправить решение.
Задачи делятся на 4 уровня сложности: лёгкий — для новичков, средний, сложный и хардкор, где задачи требуют нестандартных подходов для решения.
IO — это варгейм от создателей netgarage.org, сообщества, в котором единомышленники делятся знаниями о безопасности, искусственном интеллекте, VR и многом другом. Было создано 3 версии варгейма: IO, IO64 и IOarm, из них всех IO является наиболее зрелой. Подключайтесь к IO через SSH и можете приниматься за работу.
6.SMASHTHESTACK
SmashTheStack состоит из 7 различных варгеймов: Amateria, Apfel (в настоящее время офлайн), Blackbox, Blowfish, CTF (в настоящее время офлайн), Logic и Tux. Каждый варгейм содержит множество задач, начиная от стандартных уязвимостей и заканчивая задачами на реверс-инжиниринг.
7.MICROCORRUPTION
Microcorruption представляет собой CTF, в котором вам нужно «зареверсить» вымышленные электронные блокирующие устройства Lockitall. Устройства Lockitall защищают облигации, размещённые на складах, принадлежащих вымышленной компании Cy Yombinator. На пути к краже облигаций вы познакомитесь с ассемблером, узнаете, как использовать отладчик, пошагово выполнять код, устанавливать точки останова и исследовать память.
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
RingZer0 Team Online CTF предлагает более 200 задач, которые позволят вам проверить навыки взлома по нескольким направлениям — от криптографии, анализа вредоносных программ до SQL-инъекции, шеллкодинга и многого другого. После того, как вы нашли решение задачи, вы можете отправить его RingZer0 Team. Если ваше решение будет принято, вы получите RingZer0Gold, которое можно обменять на подсказки во время решения задач.
14.HELLBOUND HACKERS
На Hellbound Hackers можно найти традиционные задачи с эксплойтами и такие форматы задач, которых нет на других ресурсах. Например, патчинг приложений и задачи, ограниченные по времени. В задачах с патчингом вам даётся уязвимый фрагмент кода и вам нужно предложить исправление этой уязвимости.
15.HACKINGLOOPS
HACKINGLOOPS — это сайт на котором вы найдёте множество туториалов по различным видам хакинга: от мобильных телефонов, до веб-сайтов. Также на сайте есть возможность пройти тесты для подготовки к сертификациям Security+.
16.HACK.ME
Hack.me представляет собой большую коллекцию уязвимых веб-приложений для применения навыков взлома на практике. Все приложения предоставляются сообществом и каждое из них можно запустить «на лету» в безопасной, изолированной песочнице.
17.HACKTHIS!!
HackThis!! состоит из 50+ задач разного уровня, за решение каждой из которых вы получаете определённое количество очков в зависимости от уровня сложности. Подобно Hack This Site, у 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
PentesterLab — это простой и удобный способ изучения пентестинга. Площадка предоставляет уязвимые системы, которые могут использоваться для тестирования и изучения уязвимостей. Вы на практике можете работать с реальными уязвимостями как онлайн, так и офлайн. Тем не менее онлайн-доступ открыт только тем, у кого есть подписка PentesterLab Pro, стоимость которой составляет 19.99$ в месяц или 199,99$ в год.
Фундаментальные основы хакерства. Проверка аутентичности и базовый взлом защиты
Содержание статьи
Ссылки на другие статьи из этого цикла ищи на странице автора.
Проверка аутентичности
Проверка аутентичности (от греч. authentikos — подлинный) — «сердце» подавляющего большинства защитных механизмов. Должны же мы удостовериться, то ли лицо, за которое оно себя выдает, работает с программой и разрешено ли этому лицу работать с программой вообще!
В качестве «лица» может выступать не только пользователь, но и его компьютер или носитель информации, хранящий лицензионную копию программы. Таким образом, все защитные механизмы можно разделить на две основные категории:
Xakep #235. Возрождение эксплоит-китов
Если защита базируется на одном лишь предположении, что ее код не будет изучен и/или изменен, — это плохая защита. Отсутствие исходных текстов отнюдь не служит непреодолимым препятствием для изучения и модификации приложения. Современные технологии обратного проектирования позволяют автоматически распознавать библиотечные функции, локальные переменные, стековые аргументы, типы данных, ветвления, циклы и прочее. А в недалеком будущем дизассемблеры, вероятно, вообще научатся генерировать листинги, близкие по внешнему виду к языкам высокого уровня.
Но даже сегодня анализ двоичного кода не настолько трудоемок, чтобы надолго остановить злоумышленников. Огромное количество постоянно совершаемых взломов — лучшее тому подтверждение. В идеальном случае знание алгоритма работы защиты не должно влиять на ее стойкость, но это достижимо далеко не всегда. Например, если разработчик серверной программы решит установить в демонстрационной версии ограничение на количество одновременно обрабатываемых соединений (как часто и случается), злоумышленнику достаточно найти инструкцию процессора, выполняющую такую проверку, и удалить ее. Модификации программы можно воспрепятствовать постоянной проверкой ее целостности, но опять-таки код, проверяющий целостность, может быть найден и удален.
Шаг первый. Разминочный
Алгоритм простейшего механизма аутентификации состоит в посимвольном сравнении введенного пользователем пароля с эталонным значением, хранящимся либо в самой программе (как часто и бывает), либо вне ее, например в конфигурационном файле или реестре (что встречается реже).
Достоинство такой защиты — крайне простая программная реализация. Ее ядро состоит фактически из одной строки, которую на языке С можно записать так:
Давайте дополним этот код процедурами запроса пароля и вывода результатов сравнения, а затем испытаем полученную программу на прочность, то есть на стойкость к взлому:
Листинг 1. Пример простейшей системы аутентификации
В популярных кинофильмах крутые хакеры легко проникают в любые жутко защищенные системы, каким-то непостижимым образом угадывая искомый пароль с нескольких попыток. Почему бы не попробовать пойти их путем?
Не так уж редко пароли представляют собой осмысленные слова наподобие Ferrari, QWERTY, имена любимых хомячков или названия географических пунктов. Угадывание пароля сродни гаданию на кофейной гуще — никаких гарантий на успех нет, остается рассчитывать на одно лишь везение. А удача, как известно, птица гордая — палец в рот ей не клади. Нет ли более надежного способа взлома?
Что ж, пусть это будет секция данных! Остается только найти удобный инструмент для просмотра двоичного файла. Можно, конечно, нажать клавишу F3 в своей любимой оболочке (FAR, например) и, придавив кирпичом клавишу Page Down, любоваться бегущими цифирьками до тех пор, пока не надоест.
Можно воспользоваться любым hex-редактором (QView, Hiew. ) — кому какой по вкусу, — но в статье, по соображениям наглядности, приведен результат работы утилиты DUMPBIN из штатной поставки Microsoft Visual Studio. DUMPBIN запускается из Developer Command Prompt.
Натравим утилиту на исполняемый файл нашей программы, в котором лежит пароль, и попросим ее распечатать содержащую инициализированные только для чтения данные секцию rdata (ключ /SECTION:.rdata ) в «сыром» виде (ключ /RAWDATA:BYTES ), указав значок > для перенаправления вывода в файл (ответ программы занимает много места, и на экране помещается один лишь «хвост»).
Листинг 2
Среди всего прочего тут есть одна строка, до боли похожая на эталонный пароль (в тексте она выделена жирным шрифтом). Испытаем ее? Впрочем, какой смысл — судя по исходному тексту программы, это действительно искомый пароль, открывающий защиту, словно золотой ключик. Слишком уж видное место выбрал компилятор для его хранения — пароль не мешало бы запрятать и получше.
В листинг 1 перед функцией main добавим новую секцию, в которой будем хранить наш пароль:
Внутри функции main проинициализируем массив:
Немного изменилось условие сравнения строк в цикле:
Натравим утилиту DUMPBIN на новый исполняемый файл:
Ага, теперь в секции данных пароля нет и хакеры «отдыхают»! Но не спешите с выводами. Давайте сначала выведем на экран список всех секций, имеющихся в файле:
Вот он, пароль! Спрятали, называется… Можно, конечно, извратиться и засунуть секретные данные в секцию неинициализированных данных (.bss) или даже секцию кода (.text) — не все там догадаются поискать, а работоспособность программы такое размещение не нарушит. Но не стоит забывать о возможности автоматизированного поиска текстовых строк в двоичном файле. В какой бы секции ни содержался эталонный пароль, фильтр без труда его найдет (единственная проблема — определить, какая из множества текстовых строк представляет собой искомый ключ; возможно, потребуется перебрать с десяток-другой потенциальных «кандидатов»).
Шаг второй. Знакомство с дизассемблером
О’кей, пароль мы узнали. Но как же утомительно вводить его каждый раз с клавиатуры перед запуском программы! Хорошо бы ее хакнуть так, чтобы никакой пароль вообще не запрашивался или любой введенный пароль программа воспринимала бы как правильный.
Хакнуть, говорите? Что ж, это несложно! Куда проблематичнее определиться, чем именно ее хакать. Инструментарий хакеров чрезвычайно разнообразен, чего тут только нет: и дизассемблеры, и отладчики, и API-, и message-шпионы, и мониторы обращений к файлам (портам, реестру), и распаковщики исполняемых файлов, и… Сложновато начинающему кодокопателю со всем этим хозяйством разобраться!
Итак, дизассемблер применим для исследования откомпилированных программ и частично пригоден для анализа псевдокомпилированного кода. Раз так, он должен подойти для вскрытия парольной защиты passCompare1.exe. Весь вопрос в том, какой дизассемблер выбрать.
Не все дизассемблеры одинаковы. Есть среди них и «интеллектуалы», автоматически распознающие многие конструкции, как то: прологи и эпилоги функций, локальные переменные, перекрестные ссылки, а есть и «простаки», чьи способности ограничены одним лишь переводом машинных команд в ассемблерные инструкции.
Логичнее всего воспользоваться услугами дизассемблера-интеллектуала (если он есть), но… давайте не будем спешить, а попробуем выполнить весь анализ вручную. Техника, понятное дело, штука хорошая, да вот не всегда она оказывается под рукой, и неплохо бы заранее научиться работе в полевых условиях. К тому же общение с плохим дизассемблером как нельзя лучше подчеркивает «вкусности» хорошего.
Заглянем еще раз в секцию данных (или в другую — в зависимости от того, где хранится пароль): см. листинг 2.
Смотрите, центральная часть этого листинга отвечает за сравнение значений регистров EAX и ECX. В последний, как мы видим, в первой строке листинга записывается эталонный пароль, следовательно, в первом — введенный пользователем. Затем происходит сравнение и выполняются переходы почти в одну и ту же точку: 0x4010A2 и 0x40109E. Заглянем, что там:
а следом — вызов функции с говорящим названием:
Значит, ненулевое значение EAX свидетельствует о ложном пароле, а ноль — об истинном.
О’кей, тогда переходим к анализу валидной ветви программы, что делается после прыжка на 0x40110E. А тут притаилась инструкция, которая помещает строку Password OK на вершину стека, после чего вызывается процедура _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.
Ага, как раз то, что нам надо! Нажмем клавишу F3 для перевода Hiew в режим правки, подведем курсор к команде TEST EAX,EAX и, нажав клавишу Enter, заменим ее на XOR EAX,EAX.
Hiew в режиме правки ассемблерной команды
С удовлетворением заметив, что новая команда в аккурат вписалась в предыдущую, нажмем клавишу F9 для сохранения изменений на диске, а затем выйдем из Hiew и попробуем запустить программу, вводя первый пришедший на ум пароль:
Получилось! Защита пала! Хорошо, а как бы мы действовали, не умей Hiew «переваривать» PE-файлы? Тогда пришлось бы прибегнуть к контекстному поиску. Обратим свой взор на шестнадцатеричный дамп, расположенный дизассемблером слева от ассемблерных команд. Конечно, если пытаться найти последовательность 85 C0 — код команды TEST EAX,EAX, ничего хорошего из этого не выйдет — этих самых TEST’ов в программе может быть несколько сотен, а то и больше. А вот адрес перехода, скорее всего, во всех ветках программы различен, и подстрока TEST EAX,EAX/JE 0040110E имеет хорошие шансы на уникальность. Попробуем найти в файле соответствующий ей код: 85 C0 74 63 (в Hiew для этого достаточно нажать клавишу F7).
Hiew в режиме правки шестнадцатеричного кода
Работает? В смысле защита свихнулась окончательно — не признает истинные пароли, зато радостно приветствует остальные. Замечательно!
Взломанная программа принимает любые пароли
Продолжение следует?
Итак, ты прочел (прочел ведь?) начальный отрывок классической книги Криса Касперски «Фундаментальные основы хакерства» в современном переосмыслении. Получилось ли у нас обновить эти знания до актуального уровня? Стоит ли продолжать? Поделись своим мнением в комментариях.
Крис Касперски
Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».