如何阻止gdb附加到多线程程序

时间:2015-07-31 00:22:38

标签: multithreading security gdb

我正在尝试阻止黑客将gdb附加到进程并成功分支ptrace附加到父进程的子进程(然后阻止后续gdb ptrace附加)。问题解决了......

然而对于多线程程序我很难过。我可以让孩子监视新线程的父级,然后在看到时附加到那些;但似乎是一种高开销的方法。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

  

问题解决了......

如果您认为仅仅附加父级将阻止确定的黑客调试您的程序,那么您自己自欺欺人

您的保护仅适用于最不老练的攻击者。更复杂的可以:

  • 杀死您的子进程并附上您的父进程,或
  • 构建一个自定义libc.so,用于实现ptrace 实际附加目标,或
  • 使用LD_PRELOAD注入一个ptrace来做他想做的事,或者
  • 使用自定义内核运行,该内核允许调试器附加到已连接的进程,或
  • 几十种其他方式

对于可以修改操作系统内核的攻击者来说,保护程序的确很少。

对于"如何附加任何新创建的线程",您可以使用sys_clone捕获PTRACE_SYSCALL,并在返回时立即附加克隆过程。另请参阅ptrace man page中的PTRACE_O_TRACECLONE

  

是否有保护代码的最佳做法?

This question有很多建议。