是谁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

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