Может тут админчики знаю про
механизм 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
механизм 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