我们在周末对我们的服务器进行了入侵,并且我正试图追踪入侵者的踪迹。它们似乎运行了一个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行的说明旨在以某种方式隐藏过程。它到底做了什么?
答案 0 :(得分:11)
在某些(但不是全部)操作系统上,分配给
$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";