• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

ЭКСПЛУАТИРУЕМ УТЕЧКУ ИНФОРМАЦИИ В ЯДРЕ LINUX, ЧТОБЫ ОБОЙТИ KASLR

Дима22

Эксперт
Сообщения
596
Реакции
507
0 руб.
Может тут админчики знаю про
механизм ASLR (BtcMaker) может знает так вот форумчане VLMI ловите уязвимость

изучал каталог /proc в Android, и мое внимание привлекло поле WCHAN. Это канал ожидания (wait channel), там содержится адрес события, которое ожидает конкретный про- цесс. Увидеть его можно при запуске команды ps с опцией -l.

Узнать значение wchan можно из пространства пользователя, прочитав /proc/pid_of_interest/stat. И это довольно странно. Что, если наш про- цесс находится в пространстве ядра? Тогда мы получим адрес ядра?
Скрин-http://joxi.ru/Vm6xRdLsDXMPdA

Значение 18446744071579755915 — это, очевидно, место расположения кода ядра, и в hex выглядит следующим образом:

>>> hex(18446744071579755915)
'0xffffffff810de58bL'
В качестве тестовой ОС я выбрал Ubuntu 14.04, но, так как kASLR там не включен по умолчанию, для успешного воспроизведения следующего примера нужно будет его включить.



Тестовый скрипт очень прост и быстр. Как сказано ранее, в /proc/pid/stat ле- жит код ожидания из пространства ядра, поэтому мы можем:
1. Зафиксировать это место ожидания.
2. Получить с помощью WCHAN значение ASLR.
3. Сравнить утекшее значение с известным «случайным» значением. 4. Вывести смещение.

Для первого пункта мы можем воспользоваться следующим трюком: если фор- кнуть процесс и перевести его в режим сна, то после этого мы сможем прочи- тать его /proc/sleeping-pid/stat, и, пока процесс спит, это будет стабильным значением.

Во втором пункте все ясно, а в третьем известное значение мы можем полу- чить, к примеру, запустив ядро без включенного kASLR, но есть и другие способы.

Вот пример на Python
Пример-http://joxi.ru/823xK56sJXRdBA

Вот как будет выглядеть результат работы.

marco@marco-l:~/Documents$ python infoleak.py
Leaking kernel pointers...
leak: 0xffffffffb70de58b 18446744072485725579
kASLR slide: 0x36000000
 
Сверху Снизу