Создайте приложение с некоторым раскрытием памяти ядра

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

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

Редактировать: то, что я хотел бы иметь, это своего рода эксплойт, подобный этому: http://inj3ct0r.com/exploits/7837 , где есть X байтов памяти ядра, которые окончательно сбрасываются.

Дело в том, что мне не нужен сокет SCTP или что-то в этом роде, а «только» самый простой способ воссоздать этот дамп конфиденциальной информации.

Чтобы провести параллель с переполнением буфера, я хотел бы создать файл vuln.c, который будет использовать функцию gets(), а затем создать специальную строку, которая выполнит эту работу... В случае раскрытия, Я думаю, что это будет другой файл C.

Я надеюсь в этом есть смысл...

Лучший.


person Toopiboum    schedule 01.07.2010    source источник
comment
Вы же не пытаетесь внедрить троян в ядро ​​Linux?   -  person L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o&#x    schedule 02.07.2010
comment
Простите меня, если я ошибаюсь, но из вашего вопроса следует, что вы думаете, что написание уязвимого приложения пользовательского пространства волшебным образом создаст для вас уязвимость ядра. Это просто неправильно. Если существует уязвимость ядра, вам не нужно использовать собственное приложение для доступа к ней. Просто напишите код для прямого использования уязвимости ядра. Если уязвимости ядра не существует (или, по крайней мере, вы о ней не знаете), то никакой код пользовательского пространства, который вы можете создать, не изменит этого.   -  person R.. GitHub STOP HELPING ICE    schedule 04.07.2010
comment
Ну, я хотел бы сделать это, чтобы доказать, что такие уязвимости могут существовать в моей целевой системе, и лучше понять, как они работают. Я думал, что могу разработать уязвимый модуль ядра, а затем эксплойт пользовательского пространства, так как у меня есть все разрешения в системе. Если это возможно, то еще вопрос: как я могу создать такую ​​​​уязвимость ??? Лучший.   -  person Toopiboum    schedule 05.07.2010


Ответы (2)


Реальность такова, что есть несколько способов действовать в зависимости от того, какой эксплойт вы пытаетесь изучить.

  1. Вы хотите внедрить код через переполнение буфера и изменение указателя возврата?
  2. Есть ли уже вызов copy_to_user, который вы хотите использовать, используя отключение на одну ошибку?
  3. Вы хотите использовать программирование, ориентированное на возврат, вместо внедрения кода?
  4. Многие другие, некоторые из которых перечислены здесь
person torak    schedule 01.07.2010

Предполагая, что вам не нужны внутренности ядра, взгляните на этот вопрос.

person Matt Joiner    schedule 01.07.2010