Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

思路新颖 但是隐藏性不好 #5

Open
bigsinger opened this issue May 11, 2020 · 6 comments
Open

思路新颖 但是隐藏性不好 #5

bigsinger opened this issue May 11, 2020 · 6 comments

Comments

@bigsinger
Copy link

被劫持程序在自己模块里通过比对模块,就很容易发现有劫持。

原来的那个方法,是在调用函数时再去load原始的dll,调完就释放,这样被劫持的程序里只有一份dll

@xiaoyao66
Copy link

反复load反而容易被发现。
只需要在DllMain里面做个模块去链,一般情况就看不到dll了。

@bigsinger
Copy link
Author

反复load反而容易被发现。
只需要在DllMain里面做个模块去链,一般情况就看不到dll了。

ZwQuerySystemInformation 可以找到

@xiaoyao66
Copy link

最好的方法是隐藏自己而不是不加载原dll。因为自己的dll毕竟没有正确的签名,文件路径也不对。一般检查的时候签名和路径肯定是首先检查的。

@xiaoyao66
Copy link

或者换一种思路,dll进去以后用自己编写的loadlibrary加载真正的Inject代码,然后自己再把自己FreeLibrary了,这样就完全查不出来了。

@xiaoyao66
Copy link

把真正的inject代码编译成binary然后存到注册表的某个驱动键下面,需要的时候从注册表里load。先加载一个该进程绝对不会用到的系统dll,然后直接把注册表Inject代码覆盖上去,然后Hook掉一个常用API,让这个API跳转到Inject代码执行。
这样做 没有dll/没有可以线程/甚至都找不到可疑代码。

@bigsinger
Copy link
Author

是的 只有shellcode

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants