我的大腦被挖礦代碼搞的不能好好思考了

我被攻擊了

個人服務器去年底最後兩天被攻擊了,因爲一些事情拖着沒來得及處理,今天實在忍不住了,記錄一下被攻擊後發現以及修復的過程。

2019-12-30 23:39:44 雲盾預警訪問惡意IP 178.170.189.5
這一次預警中有一個關鍵字“kdevtmpfsi”

2019-12-31 04:19:19 雲盾預警礦池通信行爲 178.170.189.5
kdevtmpfsi

如何找到根源

kdevtmpfsi 僞裝的挺好,因爲它和一個系統進程的名字非常相似 kdevtmpfs ,一不小心研究的重心就偏移了。我現在的程序是以 docker 運行的,宿主機如果被攻擊了問題就嚴重了。

因爲本身不是專業運維,排雷全靠猜測。雲盾感知的 cms 可能存在安全漏洞,代碼掃描後沒有發現異常,到這裏我感覺問題可能就更嚴重了。

容器存在漏洞?容器也就運行了 nmp,會是哪一個容器出現問題了呢?有些手足無措。cpu 佔用高,docker 查看一下容器的 cpu 佔用呢?

top

使用 top 命名直接可以查看到下圖,kdevtmpfsi 差不多100%的CPU佔用,導致服務器完全被惡意程序佔用,我本身的服務難以正常運行。

container

cpu 被 kdevtmpfsi 挖礦程序佔用 100%。按照上面的定位到容器的問題,使用命令查看容器狀態 docker stats 獲得下圖。

看到是 redis 容器被利用了,使用命令 docker exec -it 容器ID /bin/bash 進入內部看看具體問題呢?CTRL+P+Q

使用命令 ls -lrt 可以看到最早下載的 kinsing 文件是去年30日,與最早告警時間也基本在同一天。通過搜索學習到這個文件是挖礦程序的手續進程,後續需要清理掉。

按照雲盾報警的情況我們看下文件是否存在 /tmp/kdevtmpfsi ,如果存在也需要清理掉才行。文件肯定是存在的,我還幹了一件事情就是 kill -9 ID,CPU 佔用明顯就降下來了 ,然後手動運行了一下這個程序,發現 CPU 直接就飆升了

它是如何做到的

問題找到了,只要殺掉當前進程以及守護進程,問題也就暫時解決了。沒有找到根源,問題還是可能被利用,繼續寫入挖礦程序,我們先思考一下漏洞在哪裏呢?

上面分析出來是因爲 redis 的漏洞導致的?想一下我們的 redis 是如何安裝的,我當初測試一個需要登錄才能使用的應用程序,登錄的方式是關注公衆號,然後獲取授權碼去解鎖使用。就使用 redis 存放了臨時 token ,安裝 redis 的時候直接就是裸奔在空氣中,沒有密碼。

可以使用命令檢測一下,例如我的公網 IP 是 110.110.110.110。 只需要使用命令 redis-cli -h 110.110.110.110 -p 6379 就直接可以連上我的 redis 服務了。

通過雲盾安全預警查看到《【漏洞預警】Redis 4.x/5.x 遠程命令執行高危漏洞》,解決這個問題的關鍵可以設置僅內網訪問 redis,特殊對外的 IP 使用密碼策略。

version: '3'
services:

  # 使用 command 命令設置一下密碼
  redis:
    image: redis:5.0.7
    command: ["redis-server", "--requirepass", "yourpassword"]
    hostname: redis
    networks:
      - redis-net
    volumes:
      - redis-data:/data

networks:
  redis-net:

volumes:
  redis-data:

安全放心上

長呼一口氣之後,想起了《亡羊補牢》的故事。

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