Добавление новой секции PE для кодовой пещеры


2

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

Когда я добавляю новый раздел, смещение не находится в конце файла и на самом деле указывает на существующий код. Если я изменю RawOffset в соответствии с фактическим концом файла 0xAE370, он будет поврежден.

Почему новый раздел не будет добавлен в настоящий конец файла? Кроме того, как я могу добавить новый 1000-байтовый раздел без искажения файла?

Обновление: Отладчик все еще не был идеальным в местоположении нового раздела на карте памяти, но я могу видеть мои новые байты ~ 200h вниз от того, где они указаны. Для того, чтобы заставить его работать, я должен был:

  • Добавить новый раздел с помощью CFF
  • сохранить его и открыть файл в шестнадцатеричном редакторе, чтобы найти истинную RawOffset
  • Затем вручную изменить RawOffset в ФФС для где мои новые байты были фактически размещены ФФС 0xAE378
  • Назад в ФФС правой кнопкой мыши и восстановить заголовок PE и восстановить размер изображения (не уверен, что если восстановление части размера необходимо)
  • Теперь в отладчике перемещаться туда, где он говорит. NewSec и прокрутка вниз несколько сотен байт, а новый i nserted bytes are

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

enter image description here

  0

Обратите внимание: в создании такой пещеры практически нет смысла. Было бы намного проще вводить код «традиционным способом» (выделять память в запущенном процессе). В контексте инжекции процесса обрезка кода представляет собой сложную технику, которая ищет пригодные для использования gargabe/alignment/zero bytes. Часто вам нужно поддерживать использование меньших пещер вместо более крупного. Или вы хотите выполнить _infect_ исполняемый файл для запуска вашего кода при запуске? 29 мар. 172017-03-29 04:58:35

  0

Что касается вопроса «добавить раздел в конце»: вы на самом деле добавляли байты? Есть хороший материал о том, как это сделать. Например, этот: http://resources.infosecinstitute.com/adding-a-section-to-pe-binary/ 29 мар. 172017-03-29 05:00:44

  0

Спасибо за ресурс, я рассмотрю его. И да, я заражаю exe обратной оболочкой и пытаюсь сохранить исходный exe. 29 мар. 172017-03-29 05:05:20

  0

Хм, да, я фактически добавляю байты. Проблема заключается в том, что когда я добавляю новый раздел, необработанное смещение указывает на место, которое все еще является частью данных предыдущих разделов. Я пытался возиться с необработанным смещением и даже добавлял пару больших разделов, чтобы убедиться, что я прохожу мимо предыдущего раздела, но не удастся, чтобы файл был поврежден, или каким-то образом я оказался вне областей RWE. Если это помогает, я использую 32-разрядный портативный Putty.exe для этого примера. 29 мар. 172017-03-29 05:29:02

  0

Вы можете отредактировать новый раздел из CFF 31 мар. 172017-03-31 23:53:14

  0

на основе вашего изображения, вам нужно установить Raw Size на 0x1000, чтобы загрузилось полное содержимое. В противном случае вы получите только байты выравнивания из предыдущего раздела и ничего больше. Кроме того, вы можете сначала увеличить исходный размер предыдущего раздела, пока он не достигнет кратного выравнивания раздела, чтобы ваши данные не отображались в этом разделе. 28 апр. 172017-04-28 18:35:09

5

Добавление разделов в PE файлы не всегда так просто, как редактировать таблицу разделов. Иногда вам придется обрабатывать несколько краевых случаев, таких как манифест, подписи и другие потенциальные дополнительные файлы расширения «extensions».

Хотя LordPE - отличный инструмент, это не лучший инструмент для этой задачи. Он слишком низкоуровневый и не позволяет вам создавать полный новый раздел прозрачно. Это позволит вам редактировать различные поля, необходимые для добавления нового раздела, но вам придется самому все обрабатывать.

Есть более продвинутые редакторы PE, такие как CFF Explorer, которые обеспечивают функциональность для создания разделов с нуля. Это увеличит размер вашего файла и создаст раздел, который вы можете напрямую редактировать из CFF Explorer.

Чтобы добавить новый раздел, откройте файл с помощью CFF Explorer, выберите пункт «Заголовки разделов» в дереве слева и щелкните правой кнопкой мыши по таблице разделов, выберите «Добавить раздел (пустое пространство)», как в следующем картина:

enter image description here

Затем укажите размер нового раздела.

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