私のサーバーが破損し、悪意のあるユーザーの開かれたファイルをインポートしようとしていますが、ユーザーにUIDがないため、何も見つからないというメッセージが表示されます。このユーザーが一部のプロセスを実行していることを確認しましたが、開いているファイルをインポートできませんでした。
答え1
ユーザーにUIDがないという
私は確かに同意します。 「サーバー上でタスクを実行する悪意のあるユーザー」はUIDなしでユーザーを定義しますが、これはユーザーが別のUIDを使用してコンピューターでタスクを実行できるためです(今後は「攻撃者」という用語を使用します)。 )。
fork()
したがって、正しいパスは、攻撃者がコンピュータで実行できるプロセスを制御するためにどのパスを使用したかを調べることですexec()
。結局のところ、成功した攻撃はこれを行うことができるプロセス(おそらく非常に洗練された方法)を制御することから始まるので、これは非常に良い場所です。攻撃者がこれを達成する方法は攻撃によって異なります。
言い換えれば、Canonが感染したサーバーを処理する方法について答えます。ある軌道から核兵器に破壊する。これはもはやあなたのコンピュータではなく、攻撃者がどれだけのアクセス権を持っているかを知ることはできません。攻撃者がrootアクセス権を得たら、かつてあなたのサーバーであったサーバー上で実行されている仮想マシンに潜在的に接続する可能性があります。あるいは、ルートキットを扱っている可能性があります。
(注:「Nuke from Orbit」は、ほとんどの人に「新しいインストール」を意味します。)
実際の質問に戻って:
ユーザー名にUIDがないのはなぜですか?
あるいは、より良い方法は質問テキストが意味するものです。
(UIDなしでプロセスをどのように実行できますか?)
UIDなしでプロセスが実行されるという考えはとんでもない。プロセスの存在を維持するカーネル構造(実際にはKSE)には、埋めなければならないUIDフィールドが含まれています(カーネルエラーが発生した場合はガベージで埋められても)。したがって、各プロセスには常にUIDがあります。
あなたが扱う可能性が最も高いのはにリストされていないUIDです/etc/passwd
。プロセスは奇妙ですが、操作を実行することと変わりはありませんtouch leet; chown 1337 leet
(該当するUIDに対するユーザー権限がないと仮定)。ほとんどすべての標準* nixツールは、ユーザー名と同様にUIDを処理できます。つまり
lsof -u username
等しい
lsof -u `id -u username`
そして
find . -user username
また
find . -user `id -u username`
それでは、最初の文に戻り(強調):
それは言うユーザーにUIDがありません
何らかの形でそれ標準 *nix ツールではありません。それとも思ったより都合が悪すぎて逃げているかもしれません。~へ攻撃者が生み出したかなり奇妙な状況。
答え2
システムで所有者のないファイルを見つけるには、次のように実行できます。find / -nouser
実行して、find /sbin -mtime 1
1日以内に変更された/ sbinディレクトリのファイルを見つけることもできます。
答え3
簡単に言えば、ユーザーとバイナリがシステムから削除されたか、ルートがプロセスを開始してUIDを変更した可能性があるため、バイナリが見つからない可能性があります。
この時点では、感染したシステムから起動するのではなく、ライブディストリビューションから起動してファイルシステムを分析します。 Grochmalが述べたように、ルートの脆弱性が存在する場合は、破損したツール/バイナリをインストールする可能性があります。ユーザーに未知のバイナリがあるという事実は、これを強く示唆しています。
つまり、ルートアップグレードや単純なユーザーパスワード違反など、いくつかのシステム侵害を見たことがあります。
答え4
docker
また、コンテナ内のUIDがホストOSのユーザーにマップされていない可能性があるため、これを使用するとこの現象を見たことがあります。