編集2:
この投稿が非常に注目されている1つの理由があります。侵入者のライブセッション全体をPCで記録できたからです。これは、彼の行動の結果の発見に対処し、それらを是正しようとする日常の経験とは大きく異なります。ここでは、彼が職場にいる、彼がバックドアを確立する際にいくつかの問題を抱えている、彼のステップをたどる、熱心に仕事をしているのが見えるシステム上でマルウェアを実行させることはできません。以下をお読みください)、完全に自己完結した制御手段を展開してみてください。これは、セキュリティ研究者がハニートラップで毎日目撃しているものです。私にとって、これは非常にまれな機会であり、娯楽の源です。
あなたは間違いなくハッキングされています。この証拠は、表示したファイルのスニペットからではありません。これはauth.log
、短い期間(2秒)で発生したログイン試行の失敗を報告するためです。2行目にが表示され、3行Failed password
目にpre-auth
切断が報告されていることがわかります。
証拠は、2つのファイルの内容から、代わりに来て http://222.186.30.209:65534/yjz
とhttp://222.186.30.209:65534/yjz1
、攻撃者がシステムにダウンロード。
このサイトは現在、誰でもダウンロードできるようになっています。私は最初file
にそれらを走らせました:
$ file y*
yjz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
それから、私は持っている64ビットDebian VMにそれらを持ち込みました。strings
コマンドを介したコンテンツの検査により、疑わしいものが多数明らかになりました(さまざまな既知の攻撃、置き換えられるコマンド、新しいサービスのセットアップに明確に使用されたスクリプトなど)。
次に、両方のファイルのMD5ハッシュを作成し、それらをCymruのハッシュデータベースにフィードして、それらがマルウェアの既知のエージェントであるかどうかを確認しました。一方でyjz
はない、yjz1
ある、とCymruは58%のアンチウイルスソフトウェアによる検出の確率を報告します。また、このファイルは3日前に最後に見られたため、かなり最近のものであると述べています。
取得した2つのファイルでclamscan(clamav
パッケージの一部)を実行します。
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
そのため、標準のLinuxソフトウェアで識別できるようになりました。
あなたは何をするべきか?
どちらかと言えば新しいシステムですが、どちらも非常に新しいシステムではありません。たとえば、2015年1月のXorDdosに関する記事を参照してください。そのため、ほとんどの無料パッケージでは削除できます。:あなたは試してみてくださいclamav
、rkhunter
、chkrootkit
。私はグーグルで調べましたが、彼らはそれを見つけることができると主張しているのを見ました。それらを使用して前任者の作業を確認しますが、これらの3つのプログラムを実行した後は準備ができているはずです。
より大きな質問についてはwhat should you do to prevent future infections
、ジャーニーマンの答えが良い第一歩です。それは継続的な闘争であり、私を含めて私たち全員がそれを知らずに失ってしまったかもしれないことを心に留めておいてください。
編集:
Viktor Tothの(間接的な)プロンプトで、いくつかコメントを追加したいと思います。侵入者がいくつかの困難に遭遇したことは確かです。彼は2つの異なるハッキングツールをダウンロードし、許可を数回変更し、数回再起動し、ファイアウォールを無効にしようと何度も試みます。何が起こっているか推測するのは簡単です:彼はハッキングツールが感染したPCの1つに向けて通信チャネルを開くことを期待し(後述)、この新しいチャネルが彼のコントロールGUIに表示されない場合、ハッキングを恐れますツールはファイアウォールでブロックされているため、インストール手順を繰り返します。私は彼の手術のこの特定の段階は期待された成果をもたらさないようであるというViktor Tothに同意しますが、私はあなたを非常に強く奨励したいと思います PCに与えられた損害の範囲を過小評価しないでください。
ここに部分的な出力を提供しますstrings yjz1
:
etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides: %s
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive
これにより、サービス(in /etc/init.d
およびin /etc/rc.d
)、crontab
の履歴ファイルmysql
、、およびproc
へのリンクであるいくつかのファイルbash
(シェルのカスタマイズされた不正バージョンが植えられていることを示唆します)の改ざんの証拠が提供されます。次に、プログラムはHTTPリクエストを生成します(中国語を話すサイト、
Accept-Language: zh-cn
上記のDavid Schwartzのコメントに実質を与えています)、さらに混乱を引き起こす可能性があります。リクエストでは、バイナリ(Content-Type: application/x-www-form-urlencoded
)が攻撃対象のPC(GET)にダウンロードされ、制御マシン(POST)にアップロードされます。攻撃されたPCにダウンロードされるものを確立できませんでしたが、両方yjz
とyjz1
(1.1MBと600kB)のサイズが小さいことを考えると、ルートキットをクローキングするために必要なファイルのほとんど、つまり変更されたバージョンls
、netstat
、ps
、ifconfig
、...、このようにダウンロードされます。そして、これは、このダウンロードを実行しようとする攻撃者の熱心な試みを説明します。
上記がすべての可能性を使い果たすという確実性はありません。トランスクリプトの一部(457行目と481行目)が確かに不足しており、ログアウトは表示されません。さらに、特に気になるのは495-497行です。
cd /tmp; ./yd_cd/make
これはダウンロードされていないファイルを指し、コンパイルの可能性があります。もしそうなら、攻撃者は(最終的に)実行可能ファイルの問題を理解し、修正しようとしていることを意味します。攻撃されたPCは永久に消えてしまいました。[実際、攻撃者がハッキングされたマシン(および私は64ビットDebian VM)にダウンロードしたマルウェアの2つのバージョンは、x86の不適切なアーキテクチャ用であり、ハッキングされたPCの名前だけでは、彼は腕のアーキテクチャを扱っていた]。
私がこの編集を書いた理由は、あなたのシステムをプロの楽器と組み合わせるか、ゼロから再インストールするかをできる限り強く促すためです。
ところで、これが誰にとっても有用であることが判明した場合、これは接続を試みる331個の IPアドレスのリストですyjz
。このリストは非常に大きいので(おそらく、さらに大きくなることになるでしょう)、これがを改ざんする理由だと思いますmysql
。他のバックドアによって提供されたリストは同じですが、私は推測、(私はオープンで、情報の重要な部分を除外した理由であると考え、攻撃者はそう、カーネル形式でそれらを格納するための努力をしたいしませんでした彼はすべてのリストをクリアテキストファイルに入れました。これはおそらく、どのOSでも、バックドアのすべてによって読み込まれます)。
61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98
次のコード
#!/bin/bash
echo 0 > out
while read i; do
whois $i | grep -m 1 -i country >> out
done < filename
cat out | grep -i cn | wc -l
上記のリストでは、合計331の住所のうち302が中国本土にあり、残りの住所は香港、モンゴル、台湾にあることが示されています。これにより、これはほとんどが中国のボットリングであるというDavid Schwartzの主張にさらなるサポートが追加されます。
編集3
@vaidのリクエスト(OPの作成者、以下のコメントを読んでください)で、基本的なLinuxシステムのセキュリティを強化する方法についてコメントを追加します(多くのサービスを提供するシステムの場合、これははるかに複雑なトピックです)。vaid
彼は次のことをしたと述べています。
システムを再インストールします
ルートパスワードを、大文字と小文字、文字と数字が混在する16文字のパスワードに変更しました。
ユーザー名を6文字の長さの混合ユーザー名に変更し、ルートに使用したものと同じパスワードを適用しました
SSHポートを5000以上に変更しました
SSHルートログインをオフにしました。
これは問題ありません(多くの有用なプログラムが10,000未満のポートを使用するため、10,000を超えるポートを使用することを除きます)。しかし、パスワードの代わりにssh loginに暗号鍵を使用する必要性を十分に強調することはできません。個人的な例を挙げましょう。私のVPSesの1つで、sshポートを変更するかどうか不確かでした。22のままにしておきましたが、認証に暗号キーを使用しました。私は1日に何百もの侵入試行を行いましたが、どれも成功しませんでした。誰も成功しなかったことを毎日確認するのに疲れて、最終的にポートを10,000を超えるものに切り替えたとき、侵入試行はゼロになりました。ハッカーが愚かであるというわけではありません(そうではありません!)、彼らは簡単に獲物を追い詰めるだけです。
署名アルゴリズムとしてRSAを使用して暗号キーをアクティブ化するのは簡単です。以下のJan Hudecのコメントを参照してください(ありがとう!):
cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *
今やらなければならないのは、id_rsa
接続したいマシンにファイルをコピーすることです(ディレクトリにあり.ssh
、chmod
700に 'edされています)。それからコマンドを発行します。
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
これが機能することを確認したら、サーバー(=接続するマシン)でファイルを編集し/etc/ssh/sshd_config
、行を変更します
#PasswordAuthentication yes
に
PasswordAuthentication no
ssh
サービスを再起動します(service ssh restart
またはsystemctl restart ssh
、ディストリビューションに応じて、またはこのようなもの)。
これは非常に耐えます。実際、でopenssh v2
使用されてopenssh v2
いるRSAの現在のバージョンに対する既知のエクスプロイトは現在ありません。
最後に、マシンを実際にボルトダウンするには、ファイアウォール(netfilter / iptables)を次のように構成する必要があります。
iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
これは、1)LANとWANの両方からのssh接続を許可します、2)リクエストによって発生したすべての入力を許可します(たとえば、Webページを読み込むとき)、3)入力上の他のすべてをドロップします、4)すべてを許可します出力、および5-6)ループバックインターフェイス上のすべてを許可します。
ニーズが大きくなり、さらに多くのポートを開く必要がある場合は、リストの先頭に次のようなルールを追加することでそれを行うことができます。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
たとえば、ユーザーがWebブラウザにアクセスできるようにします。