是誰TM天天在凌晨過後的時間去暴力破解我DB的root密碼???

當前的項目,DB不是用阿里雲的RDS,而自搭建的3臺mysql的主從架構。

最近我司的技術經理在查看mysql日誌時, 發現了一個可疑的情況:

幾乎是每天凌晨過後的時間,這個時間還不是固定的,在mysql 的日誌中出現如下記錄:

初一看,明顯象是有人要 嘗試 暴力破解 mysql的root密碼。(注意:這個先入爲主的偏見 直接導致了我後面幾天走了錯誤的方向)

技術經理也 向我反饋說 有人在 暴力破解 mysql的root密碼,我就按這個目標去挖掘了。

第一次:讓技術經理去處理,寫了一個腳本(w、netstat、ps、lsof...)之類的,通過 crontab 設置到 分鐘級啓動監控。

               結果每天沒有發現什麼有用的信息,只是有一個信息證實了前一天的技術經理討論時的一個猜想:

看這個這麼多 TIME_WAIT 可以證實我們的猜想是:這個攻擊是在 本機發起的(本機的某個未知程序去暴力破解本機mysql的root密碼)

這裏說一個這個”攻擊者“的狡猾之處,它只運行不到一分鐘,大約30s左右的時間,更狡猾的地方是這 30s是在同一分鐘內,沒有跨越兩個分鐘,

這直接導致了crontab 按分鐘去啓動監控腳本,這個腳本在 攻擊停止後的下一分鐘啓動時,什麼都抓不到,只有lsof還能看到 一大堆的 TIME_WAIT,因爲這個TIME_WAIT在close後還會保持一點點時間(具體去了解 TCP原理)

第二次:我寫了一個新的腳本,這次我不用 crontab去啓動了,我用了事情去啓動,

               這個事情就是當 mysql日誌出現 [Warning] Access denied for user 'root'@'localhost' (using password: YES) 這樣的記錄時。

#!/bin/bash

MYSQL_LOG=/var/lib/mysql/*.err

# 技巧:管道 加上 -m 1 去構建一個事件觸發器
tail -fn0 $MYSQL_LOG | grep -m 1 "Access denied for user 'root'@'localhost"

LOGFILE=`date +\%Y\%m\%d\%H%M`

ps -ef  >> $LOGFILE

#mysql -e 'show processlist'   >> $LOGFILE

w   >> $LOGFILE
netstat -ntp | grep 19749   >> $LOGFILE
netstat -ntp | grep 29641   >> $LOGFILE
lsof -i :19749   >> $LOGFILE

ps -ef | grep -vE 'UID|root|mysql' | awk -v logfile=${LOGFILE}_trace 'BEGIN {a="timeout 60s strace -o " logfile " -y -q -f -e connect,open,close ";} {a=a " -p "$2} END {print a; system(a)}'

1)shell 中的事件觸發器,這裏我用了一個小小技巧。

2)ps -ef | grep -vE 'UID|root|mysql'  這裏 我直接把 root 用戶的進程也排除了,root用戶在這臺機上可以免密碼連接mysql的,還需要去 破解密碼???這是我的偏見導致的第二個錯誤。

後面最後發現這個”攻擊“程序就是用的root用戶啓動的。

 

當然了,由於我第二個錯誤,在第二天的日誌中還是沒有找到有效的信息。

這時我正在想 用 linux審計工具 去做這個監控時,

突然瞄到了 電腦屏幕上一個 單詞,馬上就感覺的可能就是你了。

沒錯,這就是我一眼瞄到的單詞,secure check,這是攻擊發生時 ps留下的監控信息。

secure check,說得好聽一點就是你是 白帽子,但這一念之間誰知道人是不是黑帽子?

 

------------------------------ 後面開始證實猜想的過程了 ----------------------------------------------

 

這個是二進制程序,但我還是發現了一些和 mysql 字樣的信息。 --mysqlPwdCheck 這個意思已經很明顯了

我現在都興奮到感覺到”攻擊者“就是它了,但還是要最終去證實。

 

按 ps 監控中的信息去 構造這個 命令行,用root用戶,做了如下 兩次實驗:

1)構造的第一個命令

/usr/local/aegis/SecureCheck/AliSecureCheck --hc_db_mysql_linux

在mysql 監控日誌還有以下信息:

2020-02-14 14:23:47 23152251 [Warning] Access denied for user '@localhost'@'localhost' (using password: YES)

2)構造的第二個命令

/usr/local/aegis/SecureCheck/AliSecureCheck --mysqlPwdCheck

在mysql 監控日誌還有以下信息:

2020-02-14 14:24:02 23153176 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:02 23153177 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:02 23153178 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:02 23153179 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:03 23153180 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:03 23153181 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:03 23153182 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:03 23153183 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:03 23153184 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
2020-02-14 14:24:03 23153185 [Warning] Access denied for user 'root'@'localhost' (using password: YES)

這不就是 技術經理反饋給我說的”攻擊“信息麼?

這一次靈光,直接讓我把明天的工作給省了。

 

--------------------------- 後面去了解的一些信息 ------------------------------

小易1246

2019-07-17 20:57:27

題主說的這個對應的 AliSecureCheck 進程爲安騎士的進程,這個進程是並非是常駐的進程的。
只有以下幾點會觸發這個進程運行的。
1、 在安騎士控制檯-安全巡檢點擊 “立即巡檢(立即檢測)”,會運行該程序進行基線檢查;
2、 設置了週期檢測,會在對應的週期進行自動檢測
3、 應急響應:爆發了高危漏洞進行緊急檢測,該檢測只會包含固定的漏洞檢測項,不會檢測其他項目,對系統資源佔用可忽略不計。

@see https://developer.aliyun.com/ask/102105?spm=a2c6h.13159736

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章