这个perl恶意软件对更改“$ 0”有什么作用?

时间:2013-11-11 15:03:34

标签: perl cracking

我们在周末对我们的服务器进行了入侵,并且我正试图追踪入侵者的踪迹。它们似乎运行了一个perl脚本,导致名为init的www数据进程以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行的说明旨在以某种方式隐藏过程。它到底做了什么?

2 个答案:

答案 0 :(得分:11)

来自perldoc perlvar

  

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

所以是的,你的断言是正确的。它希望掩盖它在ps中的显示方式。

答案 1 :(得分:3)

这一行似乎是故意混淆的:

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

相当于:

my $processo = "/sbin/init";