SuperDllHijack
SuperDllHijack copied to clipboard
思路新颖 但是隐藏性不好
被劫持程序在自己模块里通过比对模块,就很容易发现有劫持。
原来的那个方法,是在调用函数时再去load原始的dll,调完就释放,这样被劫持的程序里只有一份dll
反复load反而容易被发现。 只需要在DllMain里面做个模块去链,一般情况就看不到dll了。
反复load反而容易被发现。 只需要在DllMain里面做个模块去链,一般情况就看不到dll了。
ZwQuerySystemInformation 可以找到
最好的方法是隐藏自己而不是不加载原dll。因为自己的dll毕竟没有正确的签名,文件路径也不对。一般检查的时候签名和路径肯定是首先检查的。
或者换一种思路,dll进去以后用自己编写的loadlibrary加载真正的Inject代码,然后自己再把自己FreeLibrary了,这样就完全查不出来了。
把真正的inject代码编译成binary然后存到注册表的某个驱动键下面,需要的时候从注册表里load。先加载一个该进程绝对不会用到的系统dll,然后直接把注册表Inject代码覆盖上去,然后Hook掉一个常用API,让这个API跳转到Inject代码执行。 这样做 没有dll/没有可以线程/甚至都找不到可疑代码。
是的 只有shellcode