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 に答える