Debian 8 VM Webサーバ上のDDoSウイルス感染(unixサービスとして)


13

私は、バーチャルマシンのオンラインサービスで学生チーム用の(完全に更新された)Wordpressを数年間維持しています。今日、ヘルプデスク担当者は、私がDDoS攻撃を行っていることを私に知らせました。もちろん、私はそうではありません(このサービスには学業資格が関連付けられています)。彼らが機械を吊り下げてメールシステムを燃やした後、何が起こったのかを見つけようとしました。

まず第一に、私は実行します ps -ej 実行中のものをチェックアウトするには:

root@snf-25181:~# ps -ej
1545 1545 1545 ? 00:00:00 console-kit-dae
1618 1057 1057 ? 00:00:00 gdm-session-wor
1632 1632 1632 ? 00:01:40 rghuoywvrf
1767 1767 1767 ? 00:00:00 sshd
1769 1769 1769 ? 00:00:00 systemd
1770 1769 1769 ? 00:00:00 (sd-pam)
1775 1767 1767 ? 00:00:00 sshd
1776 1776 1776 pts/0 00:00:00 bash
1849 1849 1776 pts/0 00:00:00 su
1870 1870 1776 pts/0 00:00:00 bash
2246 0 0 ? 00:00:00 kworker/0:0
2797 839 839 ? 00:00:00 apache2
3158 3158 3158 ? 00:00:00 bvxktwwnsb
3162 3162 3162 ? 00:00:00 bvxktwwnsb
3163 3163 3163 ? 00:00:00 bvxktwwnsb
3164 3164 3164 ? 00:00:00 bvxktwwnsb
3165 3165 1776 pts/0 00:00:00 ps

bvxktwwnsbとrguoywvrfに注目してください。

それから私はしました ps aux サービスを受けるには(やはりテール):

Debian-+  1629  0.0  0.0 178300  4444 ?        Sl   16:53   0:00 /usr/lib/dconf/dconf-service
root      1667  0.0  0.0  30744  4436 ?        Ss   16:53   0:00 /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
root      1670  0.0  0.1 299588  9884 ?        Ssl  16:53   0:00 /usr/lib/packagekit/packagekitd
root      1674  0.0  0.1 1055004 6168 ?        Ssl  16:53   0:00 /usr/sbin/console-kit-daemon --no-daemon
www-data  1923  0.0  0.1 240964  8112 ?        S    16:53   0:00 /usr/sbin/apache2 -k start
pankgeo+  5656  0.0  0.0  27416  3424 ?        Ss   17:03   0:00 /lib/systemd/systemd --user
pankgeo+  5657  0.0  0.0 143108  2408 ?        S    17:03   0:00 (sd-pam)   
root      5893  0.0  0.1 102420  6428 ?        Ss   17:04   0:00 sshd: pankgeorg [priv]
pankgeo+  5904  0.1  0.0 102560  4128 ?        S    17:04   0:02 sshd: pankgeorg@pts/0
pankgeo+  5905  0.2  0.1  16816  6388 pts/0    Ss+  17:04   0:04 -bash      
root      7443  0.0  0.1 102420  6496 ?        Ss   17:07   0:00 sshd: pankgeorg [priv]
pankgeo+  7448  0.0  0.0 102552  4160 ?        S    17:07   0:00 sshd: pankgeorg@pts/1
pankgeo+  7449  0.0  0.1  16468  6228 pts/1    Ss+  17:07   0:01 -bash      
root     17351  0.0  0.0      0     0 ?        S    17:15   0:00 [kworker/0:0]
root     18446  0.0  0.0      0     0 ?        S    17:18   0:00 [kworker/0:2]
root     18488  0.1  0.0      0     0 ?        S    17:18   0:01 [kworker/1:1]
root     22680  1.5  0.0      0     0 ?        S    17:28   0:08 [kworker/1:0]
root     24173  0.0  0.1 102420  6416 ?        Ss   17:31   0:00 sshd: pankgeorg [priv]
pankgeo+ 24181  0.3  0.0 102420  3360 ?        S    17:31   0:01 sshd: pankgeorg@pts/2
pankgeo+ 24182  0.0  0.0  16480  6112 pts/2    Ss   17:31   0:00 -bash      
root     25316  2.3  0.0      0     0 ?        S    17:33   0:06 [kworker/1:2]
root     26777  0.0  0.0      0     0 ?        S    17:35   0:00 [kworker/0:1]
root     26778  0.0  0.0      0     0 ?        S    17:35   0:00 [kworker/0:3]
root     27300  0.0  0.0   1424  1040 ?        Ss   17:38   0:00 cat resolv.conf  #note                        
root     27306  0.0  0.0   1424  1036 ?        Ss   17:38   0:00 gnome-terminal   #from                     
root     27307  0.0  0.0   1424  1036 ?        Ss   17:38   0:00 ifconfig eth0    #here                    
root     27308  0.0  0.0   1424  1040 ?        Ss   17:38   0:00 id               #(DDOS?)         
root     27309  0.0  0.0   1424  1040 ?        Ss   17:38   0:00 ifconfig                        
pankgeo+ 27315  0.0  0.0  11136  2044 pts/2    R+   17:38   0:00 ps aux     

項目[-4:-1]に注意してください。それから私はについてオンラインで見つけました chkconfig --list だから私はそれを実行し、これが飛び出しました:

root@snf-25181:/home/pankgeorg# chkconfig --list
acdnfhruvx 0:off 1:off 2:off 3:off 4:off 5:off 6:off
flyymwddwn 0:off 1:off 2:off 3:off 4:off 5:off 6:off

1〜5 on しかし私はそれらを回した off。それから私は再起動し、それは名前を変更しました。その後私は locateacdnfhruvx そしてこれは飛び出した:

root@snf-25181:~# locate acdnfhruvx
/etc/init.d/acdnfhruvx
/etc/rc1.d/S01acdnfhruvx
/etc/rc2.d/S01acdnfhruvx
/etc/rc3.d/S01acdnfhruvx
/etc/rc4.d/S01acdnfhruvx
/etc/rc5.d/S01acdnfhruvx

それらのうちの1つの内容(それらはすべて同じです):     root @ snf-25181:〜#cat /etc/init.d/acdnfhruvx     #!/ bin / sh

chkconfig: 12345 90 90
description: acdnfhruvx
BEGIN INIT INFO
Provides: acdnfhruvx
Required-Start:
Required-Stop:
Default-Start: 1 2 3 4 5
Default-Stop:
Short-Description: acdnfhruvx
END INIT INFO
case $1 in
start)
/bin/acdnfhruvx
;;
stop)
;;
*)
/bin/acdnfhruvx   
;;
esac    

これは再起動後に発見されたので /bin/acdnfhruvx どこにもなかった。後でexes(ELF Formatted)を見つけました。 /usr/bin (あなたの間に勇敢な人がいれば私はそれを共有できると思います)

出所を知らずに実行していたマシンのコマンドの広範囲なリスト ps -ejps aux es:

root     27755  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 ifconfig                        
root     27759  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 who                        
root     27760  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 echo "find"                        
root     27761  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 top                        
root     27762  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 id                        
root     27805  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 gnome-terminal                        
root     27809  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 ifconfig                        
root     27810  0.0  0.0   1424  1044 ?        Ss   17:40   0:00 sh                        
root     27811  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 sleep 1                        
root     27822  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 netstat -an                        
root     27826  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 top                        
root     27829  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 bash                        
root     27833  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 cd /etc                        
root     27834  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 whoami                        
root     27822  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 netstat -an                        
root     27826  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 top                        
root     27829  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 bash                        
root     27833  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 cd /etc                        
root     27834  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 whoami                        

pkill ingは無意味です、なぜならそれは常にフォークし、そこからファイルを削除するからです。 /etc/init.d/ そして /{usr/,}bin 再起動後に実行可能ファイルの新しい(同一の)バージョンがあるので、これも無意味です。 これらすべての情報の後に、2つ質問があります。自分がどのように感染したのかを知ることはできますか?これを取り除くことができますか? 前もって感謝します!


あなたのサーバーが危険にさらされていると、侵入者がログファイルを管理したり削除したりするのは簡単なので、どのように感染したのか、そして何が行われたのかを知ることは非常に困難です。ベストプラクティスはログファイルを別の場所に保存することです。マシンが危険にさらされている場合は、少なくともログが侵入につながることになります。最終的に私はあなたが再インストールする必要があると思います - きれいな感染していないシステムを確実にする唯一の方法。

回答:


23

我々はおそらくSuseでSuseに同様の感染をした SSHブルートフォースログイン

クリーニングする手順は次のとおりです。

  1. ファイルを確認してください /etc/crontab。あなたはおそらく3分ごとにウイルスを呼び出すためのエントリを持っています

    */3 * * * * root /etc/cron.hourly/cron.sh
    

    この行を削除してください。

  2. ウイルスの親プロセスを特定します。の rguoywvrf あなたの中に ps -ej。他のプロセスは継続的に作成され殺されます。
  3. それを止めて、殺さないで、 kill -STOP 1632
  4. 別のものと確認してください ps -ej 親だけが住んでいる、子供たちはすぐに死ぬべきである
  5. これで、ファイルを削除できます /usr/bin そして /etc/init.d。また使用するウイルスの亜種があります /boot または /bin。つかいます ls -lt | head 最近変更されたファイルを探すため。
  6. でスクリプトをチェックインする /etc/cron.hourly/cron.sh。私達のサーバーではそれは上のウイルスの別のコピーを呼んでいました /lib/libgcc.so。両方のファイルを削除してください。
  7. 今、あなたは間違いなく殺すことができます rguoywvrf プロセス。

1
/etc/rc6.d/に悪いスクリプトがいくつかあります、それらはK90で始まります
mazgalici

1
する find / -name "*rguoywvrf*" 他のファイルを見つけるには、 rguoywvrf あなたのファイルが命名されたものは何でも
Mohamed Hafez

1
このリンクを確認してください。 garasiku.web.id/web/joomla/index.php/security/…
DarckBlezzer

3

あなたの質問に答えるには:

  1. 必要な予防措置(オフサイトのsyslog、IDS、ログ監視など)がないと、おそらく何が起こったのかわかりません。
  2. 私はマットに同意しなければならないでしょう。あなたはあなたが本当に信用することは決してないだろうマシンを稼働させるために時間を費やすでしょう。私の意見では、最善の解決策はデータをサイト外に移動することです。マシンをやり直します。

もちろん、それが価値があるもののために、これは私の意見です。ただし、マシンをやり直すときは、必要な予防措置を講じることができます。将来自分自身をよりよく守ります。


1

これはDDOS攻撃を開始し、ポート80で外部サーバーへの何千もの接続を生成するため、多くの問題を引き起こす脅威です。 DDOS攻撃ルール

さて、どうやってこの脅威を取り除くことができますか?

  1. あなたの脅威を見つけて、使ってください

チェントス/ redhat

ps -ely 

Debian

ps -ej

あなたは見るでしょう:

3158 3158 3158 ? 00:00:00 bvxktwwnsb
3162 3162 3162 ? 00:00:00 bvxktwwnsb
3163 3163 3163 ? 00:00:00 bvxktwwnsb
3164 3164 3164 ? 00:00:00 bvxktwwnsb

「」 bvxktwwnsb 「あなたの目標は

  1. それから、Linuxサーバをシングルユーザモードで起動する必要があります。マルチユーザモードでの変更は無意味です。通常、次のコマンドで切り替えることができます。

    telinit S

  2. その後、起動時に実行されたファイルを削除する必要があります

Centos / Redhatでは手順は

ステップa)

cd /etc/init.d          
ll -tr 

最後のコマンドでファイルを逆順に並べ替えます。最後に最後の1つまたは2つのファイルがlikeという名前で表示されます。

acdnfhruvx
kmrkuwbrng
gqpjiestmf
bvxktwwnsb

内容を見る必要があります

cat /etc/init.d/gqpjiestmf

通常、同じ名前の/ binまたは/ usr / sbinにあるファイルが実行されます。

両方のファイルを削除する必要があります。

ステップb)

cd /etc/
ll -tr 

あなたのcrontabファイルが最近変更されたかどうか確認し、その内容を見て、行を検索してください。

*/3 * * * * root /etc/cron.hourly/udev.sh

または

*/3 * * * * root /etc/cron.hourly/crontab.sh 

ファイルを編集してその行を削除する必要があります。

の内容をチェック udev.sh または crontab.sh そして、あなたはこのような何かを見るでしょう

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp /lib/libgcc4.so /lib/libgcc4.4.so
/lib/libgcc4.4.so

あなたは "libgcc4.4.so"ファイルかそこに言及された他のものを削除する必要があります(例えば、パーミッションを変更することはうまくいくでしょう chmod a-x libgcc.so

サーバーを再起動すればすべてうまくいくはずです。

debian / ubuntuや親戚には:

locate bvxktwwnsb

/ etcと/ binにあるファイルを削除します。

これが多くの人に役立つことを願っています。


あなたの答えは正しくフォーマットされていないように見えるので読むのは難しいかもしれません。助けが必要な場合は、 ヘルプセンター 投稿の適切な書式設定に関する詳細情報があります。
bwDraco

0

私は何かを見つけました!

/ etc / crontabを探してください

私のサーバーでは、何かを実行するために3分ごとにcrontabがあります。

*/3 * * * * root /etc/cron.hourly/cron.sh

cat cron.sh

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libgcc.so /lib/libgcc.so.bak
/lib/libgcc.so.bak

私の解決策:

  1. 以下の権限を無効にします(rwx 000)。    /etc/init.d/    {/ usr} / bin /    /lib/libgcc.so
  2. / etc / crontab内のcrontabエントリを削除します。
  3. /etc/cron.hourly/cron.shからcronスクリプトを削除します。
  4. サーバーを再起動します

注:ファイルの場所は異なる場合があります


0

Serhiiソリューションを補足する追加のトリック。これがネットワークとcpuをスパムさせるので、すべてのプロセスを停止することは難しいかもしれません。したがって、この行をあなたの /etc/crontab 厄介なすべてのプロセスを自動的に停止する(3分ごとに名前に10文字を含むすべてのプロセスを停止する)

*/3 * * * * root pstree -ap | grep -E -- '-[a-z]{10},' | cut -d, -f2 | xargs kill -STOP 2>/dev/null

これは、クリーンアップ後にプロセスが戻らないようにするために行うべき良いことです。あなたの箱がきれいであると確信するまでしばらくそれを実行してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.