2015-07-31 3 views
0

Я пытаюсь запретить хакеру подключать gdb к процессу и успешно завершил дочерний процесс, который ptrace подключается к родительскому объекту (который затем предотвращает последующее присоединение gdb ptrace) , Проблема решена ...Как заблокировать привязку gdb к многопоточной программе

Однако для многопоточной программы я в тупике. Я мог бы, чтобы ребенок контролировал родителя для новых потоков, а затем прикреплял к ним, когда видел; но, похоже, высокий накладной подход.

Любые идеи?

+0

Только что узнал о libthread_db и TD_CREATE; думая, что другой процесс может контролировать pid для создания потока, а затем ptrace динамически присоединяться к целевому pid. –

ответ

3

Проблема решена ...

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

Ваша защита будет работать только против наименее изощренных злоумышленников. Более сложный может один:

  • убить дочерний процесс и подключить родителей, или
  • сборки обычай libc.so, который реализует ptrace который не фактически прикрепить мишень, или
  • использование LD_PRELOAD для введите ptrace, который делает то, что он хочет, или
  • запускается с настраиваемым ядром, которое позволяет отладчику присоединяться к уже прикрепленному процессу, или
  • несколько десятков других способов

Для злоумышленника, который может изменять ядро ​​ОС, очень мало вы можете сделать для защиты своей программы.

Что касается «как прикрепить любую недавно созданную нить», вы можете поймать sys_clone с помощью PTRACE_SYSCALL и немедленно приложить процесс клонирования по возвращении. См. Также PTRACE_O_TRACECLONE в ptrace man page.

Есть ли рекомендации по обеспечению безопасности кода?

This question имеет немало предложений.

+0

Итак, помимо отказа от надежды, есть ли какие-либо рекомендации по защите вашего кода (в некоторой степени) - все можно взломать в конце, но какие другие подходы есть, чтобы замедлить атакующего или сбить хакерство промежуточного уровня. Спасибо за указатель sys_clone BTW –

+0

@NeilMcGill Я обновил ответ. –

+0

Спасибо - хорошая ссылка –

Смежные вопросы