Reverse engineering, Реверс-инжиниринг

#1 Реверс-инжиниринг. Подготовка к реверсу.

Здравствуйте, дорогие друзья.

В этом разделе мы познакомим Вас с реверс-инжинирингом и объясним, для чего он нужен. Мы начнем с обсуждения некоторых идей, которые уже применяются в различных аспектах, и которые помогут читателю понять, что такое реверс-инжиниринг. В этом разделе мы кратко расскажем о процессе и типах инструментов, используемых при реверс-инжиниринге программного обеспечения. Здесь приведены советы по правильному обращению с вредоносными программами. В последнем разделе будет показано, насколько просто настроить нашу первоначальную среду анализа с помощью инструментов, которые легко доступны для скачивания. Будут рассмотрены следующие темы:
• Что такое реверс-инжиниринг
• Типы инструментов, используемых в руководстве по реверс-инжинирингу для борьбы с вредоносными программами
• Настройка среды реверс-инжиниринга

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


Однако обратная инженерия влечет за собой этические проблемы и до сих пор является предметом постоянных дискуссий. Как и в случае с Франкенштейном, существуют проблемы, которые противоречат законам природы, что неприемлемо для человечества. Сегодня простой редизайн может привести к нарушению авторских прав, если его тщательно не продумать. В некоторых странах и штатах действуют законы, запрещающие реверс-инжиниринг. Однако в индустрии безопасности программного обеспечения реверс-инжиниринг является обязательным и широко распространенным явлением.


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

Любой, кто хочет стать реверс-инженером или аналитиком, должен обладать находчивостью. Поиск в Интернете — это часть реверс-инжиниринга. Аналитик не стал бы полностью полагаться на инструменты и информацию, которые мы приводим в этой книге. Бывают случаи, когда для проведения анализа даже требуется обратный инжиниринг для разработки собственных инструментов.


Для аудита программного обеспечения может потребоваться обратный инжиниринг. Помимо высокоуровневых процессов проверки кода, некоторые проверки качества программного обеспечения также включают в себя внедрение обратного инжиниринга. Цель этих тестовых мероприятий — обеспечить обнаружение и устранение уязвимостей. Существует множество факторов, которые не принимаются во внимание при проектировании и разработке программного обеспечения. Большинство из них — это случайные входные данные и внешние факторы, которые могут вызвать утечки, приводящие к уязвимостям. Эти уязвимости могут быть использованы злоумышленниками, которые не только нарушают работу программного обеспечения, но и могут нанести ущерб системной среде, в которой оно установлено. При тестировании программного обеспечения обычно используются средства мониторинга системы и фаззинга. Современные операционные системы имеют более эффективные средства защиты от сбоев. Операционные системы обычно сообщают о любых обнаруженных несоответствиях, таких как повреждение памяти или файла. Также предоставляется дополнительная информация, например, аварийные дампы. Исходя из этой информации, специалист по реинжинирингу сможет точно определить, где именно в программном обеспечении ему необходимо провести проверку.


В индустрии безопасности программного обеспечения одним из основных навыков, необходимых для работы, является обратный инжиниринг. Каждая атака, обычно в виде вредоносного ПО, выявляется и анализируется. Первое, что обычно требуется, — это очистить сеть и системы от компрометации. Аналитик определяет, каким образом вредоносное ПО установилось и стало устойчивым. Затем разрабатываются шаги по удалению вредоносного ПО. На этапе защиты от вредоносных программ эти шаги используются для разработки процедуры очистки, как только продукт защиты от вредоносных программ сможет обнаружить, что система была взломана.
Анализ предоставляет информацию о том, как вредоносная программа смогла скомпрометировать систему. Используя эту информацию, сетевые администраторы могут применять политики для предотвращения атаки. Если вредоносная программа смогла проникнуть в систему из-за того, что пользователь открыл вложение электронной почты, содержащее код JavaScript, сетевой администратор осуществил бы блокировку электронных писем, содержащих вложение JavaScript.


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


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

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


Технические требования
Мы будем работать в среде, в которой будет использоваться программное обеспечение для виртуализации. Рекомендуется, чтобы у нас была физическая машина с включенной виртуализацией и процессор минимум с четырьмя ядрами, 4 ГБ оперативной памяти и 250 ГБ дискового пространства. Предварительно установите на этот физический компьютер операционную систему Windows или Linux.
В нашей программе установки мы будем использовать VirtualBox. Версия операционной системы Windows или Linux для хостинга будет зависеть от требований VirtualBox. Ознакомьтесь с последней версией VirtualBox по адресу https://www.virtualbox.org/ и найдите рекомендуемые требования.
Возможно, вам потребуется загрузить виртуальные машины от Microsoft заранее, так как их загрузка может занять некоторое время. Смотрите страницу разработчиков по адресу https://developer.microsoft.com/ ru-us/microsoft-edge/tools/vms/. Windows 10 можно загрузить по следующей ссылке: https://www.microsoft.com/en-us/software-download/windows10

На этом все. Всем хорошего дня!