18

I have read that you can hide processes from the task manager, example here

I've seen a few posts on hidden keyloggers using rootkit but that's it really.

Is there a tool or way to look at processes being run even though they have been hidden?

Arlix
  • 1,459
  • 3
  • 13
  • 22
  • 1
    You can use "tasklist" too. – programings Dec 16 '14 at 14:00
  • 1
    I just watched a Webinar last week on this very subject. Check out: http://vimeo.com/114056600?elq=1d8982ea96044db89ee56237cae0aaaf&elqCampaignId=2117 – k1DBLITZ Dec 16 '14 at 21:14
  • 1
    Most of malware/rootkit or kind of this programs communicate with master over network. If you succesfully analyze the network with [wireshark](https://www.wireshark.org/) you can find this processes. – dgn Dec 22 '14 at 09:27

4 Answers4

15

Sysinternals process explorer is your friend. This will show you more information than you're used to from Task Manager, including invisible tasks.

enter image description here

kalina
  • 3,354
  • 5
  • 20
  • 36
15

This really depends on how the process is hidden. If certain Windows API functions are hooked, then process managers using those functions will not see the process. So it's dependent on the particular piece of software trying to hide as well as the monitoring software trying to find it. Regardless of which monitoring program you use you're not guaranteed to find all processes running. That being said there are a couple of good tools out there.

SysInternals Suite has multiple different monitoring programs. Process Explorer is very nice from a GUI perspective. It also links into VirusTotal to let you know if any currently running processes it sees is known to be malicious. Procmon is awesome for process monitoring. It bases its output off of Windows API file/registry/network function calls. The downside is that the output is massive, and you generally have to know what you're looking for. But if a hidden process is accessing the registry, files, or communicating over the network it would be shown here.

There's an open source monitor called YaProcmon (Yet Another Process Monitor) that has a feature that specifically looks for process hiding mechanisms, and attempts to expose them.

RoraΖ
  • 12,317
  • 4
  • 51
  • 83
  • 1
    Incredible that one has not got the ability to see all the processes by **default**.What about Comodo KillSwitch? It claims to show *all* running processes. – edmz Dec 25 '14 at 22:36
  • @raz, Regarding "feature that specifically looks for process hiding mechanisms" which feature are you talking about? – Pacerier Jun 08 '15 at 17:07
  • [Show Hidden Processes](http://yaprocmon.sourceforge.net/help_static.html#ShowHiddenProcesses) – RoraΖ Jun 08 '15 at 17:12
  • @raz, It says that it is under main menu. But it doesn't seem to have such a feature: http://i.stack.imgur.com/fKIZm.png There is only 'Emergency hotkeys' and 'Change Connection Type'. No 'Show Hidden Process'. – Pacerier Jun 08 '15 at 17:22
  • 2
    @black Suppose there was one that showed all processes by default. And suppose it was popular. Then malware writers would make their malware hide from it, therefore it wouldn't show all processes by default. – user253751 Jan 11 '16 at 01:00
0

I know of a Process, A Game Really that hides itself from any processes that are not x2.exe which is kinda hard as then any processes trying to detect if it is running Via the .NET Framework via image name does not work nor even FindWindow when it takes a minute or two for it to actually "have" a Window. Which makes Image Name Detection the only way, but the issue is bypassing that hiding on a kernel level or something.

So, Long Story short there are methods of hiding your process from things like the Sysinternals tools but not for the Windows Task Manager, the trick is to find a API that bypasses it on a more "kernel" level.

0

The answer is via Volatility.

Process Explorer can only see/find the processes that are in the process list which is a doubly linked list sitting somewhere in memory. Process Explorer knows the location of the first node (or has a pointer to one of the nodes) and from that node, it iterates through the list and finds the "not hidden" processes.

Task scheduler doesn't use this list to schedule tasks, instead it uses another list (it should be thread list).

However, when a process hides itself, it simply removes its links to previous and next node and remain in the memory hidden. Since it just removes itself from the process list and not thread list, it will continue running without being visible.

Each process has a specific class structure like a simple c class with many parameters.

Volatility searches through whole memory and finds process class structures in the memory as well as the doubly linked list (which is the list of processes).

So the output is all the processes in the memory including currect, killed and hidden processes.

Note that I was looking for an easier program for hidden processes but since I couldn't see volatility in the answer, I felt I was bound to answer.

smttsp
  • 366
  • 2
  • 12