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

Attachment3 #17

Open
mrexodia opened this issue Oct 26, 2016 · 0 comments
Open

Attachment3 #17

mrexodia opened this issue Oct 26, 2016 · 0 comments

Comments

@mrexodia
Copy link
Owner

Summary:
--------
TitanHide is an open-source driver intended to hide debuggers from certain
processes. The driver hooks various Nt* kernel functions (using SSDT table
hooks) and modifies the return values of the original functions. The below
highlights generic ways the driver's design allows debugger detection.

Location:
---------
Hook functions in TitanHide/Hooks.cpp.

Impact: 
-------
A hostile binary expecting to be debugged under TitanHide can leverage the
driver's design described below in order to achieve debugger detection.

Details:
--------
- Most hooks are vulnerable to race conditions where the debugged process can
  check the return code of the original NT call before TitanHide overwrites it
- The device object (\\Device\\TitanHide by default) and its dos devices link
  can be accessed to detect the presence of TitanHide and to unprotect the 
  current process.
- The hooks check whether the current process (rather than target process) is
  registered by TitanHide as hidden. Executing code outside of process (via
  process or remote thread creation for instance) can be used to get around
  TitanHide's debug detection.

Recommendation:
----------------
- Do not write data back to user mode memory until it has been sanitized.
- While relying on users to rename the device object or link would increase
  attack complexity, a more robust approach could be to filter IO calls to
  TitanHide device object from monitored processes
- Consider using the target process when filtering NT system calls
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

1 participant