6

周末我们的服务器遭到入侵,我正试图追踪入侵者的踪迹。似乎他们运行了一个 perl 脚本,导致调用的 www-data 进程init以 100% 运行。不幸的是,我没有 perl 专业知识,所以我不知道这是在做什么:

 6 my $processo =("atd","sendmail: accepting connections","rpc.idmapd","syslogd -m 0","/sbin/udevd -d","/sbin/init");
# ...
24 use IO::Socket;
25 use Socket;
26 use IO::Select;
27 chdir("/tmp");
28 $servidor="$ARGV[0]" if $ARGV[0];
29 $0="$processo"."\0"x16;;
30 my $pid=fork;
31 exit if $pid;

在我看来,第 29 行中的指令旨在以某种方式隐藏该过程。它究竟是做什么的?

4

2 回答 2

11

perldoc perlvar

在某些(但不是全部)操作系统上,分配给$0修改ps程序看到的参数区域。在某些平台上,您可能必须使用特殊ps选项或其他选项ps才能看到更改。作为一种指示当前程序状态的方式,修改$0比隐藏您正在运行的程序更有用。

所以是的,你的断言是正确的。它正在寻找掩盖它在ps.

于 2013-11-11T15:09:48.183 回答
3

这条线似乎是故意混淆的:

my $processo =("atd","sendmail: accepting connections","rpc.idmapd","syslogd -m 0","/sbin/udevd -d","/sbin/init");

它相当于:

my $processo = "/sbin/init";
于 2013-11-11T16:29:47.520 回答