=== Application Level Compromise === When investigating a server it is EXTREMELY important to note the processes running on the device. \\ A lot of application level compromises end up with a perl process masquerading as other processes. \\ \\ The best thing to do is give you an example: # cat /tmp/example.pl #!/usr/bin/perl $0 = "FakeApache"; sleep(60); We could then run this script as a different user: [root@lll-new ~]# sudo -i -u LLL perl /tmp/example.pl & [1] 29923 As you can see from the output below, if we simply named it "apache" instead of "FakeApache", you would be hard presses to notice this being out of place: [root@lll-new ~]# ps aux | grep Fake LLL 29924 0.0 0.0 129712 1840 pts/0 S 12:52 0:00 FakeApache \\ \\ You can check the PID of the process and it's exe location to find out if it's suspicious or not. This "apache" process should have a binary location with apache in the name, NOT perl: [root@lll-new ~]# ll /proc/29923/exe lrwxrwxrwx. 1 LLL LLL 0 Oct 12 12:55 /proc/29923/exe -> /usr/bin/perl [root@lll-new ~]#