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

Последние шесть месяцев я пытался перейти от программиста к охотнику за ошибками (или пентестеру). В основном потому, что я думал, что это будет интересно, но также и потому, что я мог напугать своих друзей. К сожалению, мои усилия не увенчались успехом. Около десяти минут назад я понял, почему…

Сотни, возможно, тысячи людей пытаются попасть в индустрию кибербезопасности, но очень немногим это удается. Даже те, кто тратит на это несколько часов в день. (включая меня.) Я всегда задавался вопросом, почему. Существуют сотни посредственных курсов, отчетов об ошибках и книг, которые все читают/смотрят, но это не лучший способ научиться кибербезопасности. Да, они полезны и отлично подходят для накопления базовых знаний, но только до определенного момента. После того, как вы приобрели базовые знания и попробовали несколько наиболее практичных CTF, вы готовы приступить к взлому. Когда я учился программировать, я сразу же начал кодировать свои собственные проекты. Это помогло мне ускорить мои способности. Что касается хакерства, я был в другой версии «учебного ада» с бесконечными сообщениями об ошибках, бесконечными курсами для начинающих и бесконечными статьями. Эти материалы полезны, но вы должны разработать свои собственные методы.

Хакерство, как и программирование, — очень личная и независимая профессия. Крайне редко массы делают самое эффективное, чтобы учиться. Это потому, что все люди разные и поэтому взламывают/программируют по-разному. Это заставляет большинство людей действовать неправильно. Есть базовые знания, которые должен знать каждый, но это все личные мысли и развитие. Лично я нашел свои методы взлома, но вы должны найти свои собственные.

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

1. Понять технологию

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

2. Создайте свою собственную версию

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

3. Прочтите исходный код

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

4. Сравните свою версию с оригиналом

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

5. Напишите сценарии тестирования

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

6. Промыть и повторить

Вот и все. Подвести итог:

  1. Понять код
  2. Найти уязвимости

3. Автоматизируйте и отправляйте отчеты об уязвимостях

Заключение

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