当前位置:主页 > 查看内容

暴破攻击IP模糊定位工具-Brutehunter(原创-适用linux)

发布时间:2021-05-13 00:00| 位朋友查看

简介:认识暴力破解攻击 brute-force attack: 蛮力攻击 (英语: Brute-force attack ),又称为 穷举攻击 (英语:Exhaustive attack)或 暴力破解 ,是一种密码分析的方法,即将密码进行逐个推算直到找出真正的密码为止。例如:一个已知是四位数并且全部由阿拉……

认识暴力破解攻击 brute-force attack:

蛮力攻击(英语:Brute-force attack),又称为穷举攻击(英语:Exhaustive attack)或暴力破解,是一种密码分析的方法,即将密码进行逐个推算直到找出真正的密码为止。例如:一个已知是四位数并且全部由阿拉伯数字组成的密码,其可能共有10000种组合,因此最多尝试9999次就能找到正确的密码。理论上除了具有完善保密性的密码以外,利用这种方法可以破解任何一种密码,问题只在于如何缩短试误时间。有些人运用计算机来增加效率,有些人透过字典攻击来缩小密码组合的范围。

wiki百科:https://zh.wikipedia.org/wiki/%E8%9B%AE%E5%8A%9B%E6%94%BB%E5%87%BB

穷举服务器用户名,密码的方式入侵

打个比方:你家有一个密码锁防盗门,由0~9数字构成了6位密码。密码锁在没有设置登录失败次数的情况下,小偷可以通过反复通过密码碰撞尝试,最终总会有一次碰到真正的密码,成功打开门锁。

门锁未设置登录失败限制,未限制访问源,总有一次可以被猜解成功

我们作为公有云用户,为什么会被暴破?别人暴破我们干嘛?

原因1:矿马入侵

公有云服务器因为创造灵活,配置灵活等特点,常被黑灰产用为挖矿的洼地。而因为近几年数字货币价值持续走高,让公有云挖矿成为公有云上不可被忽视的安全问题。

推荐云鼎实验室的一篇公有云挖矿态势文章

《云上挖矿大数据:黑客钟爱门罗币》:

https://cloud.tencent.com/developer/article/1384449?from=information.detail.%E4%BA%91%E6%8C%96%E7%9F%BF

公有云矿马入侵的两种常见方式:(1)远程登录暴力破解 (2)组件版本漏洞入侵

原因2:恶意渗透

因为公有云服务器可能存在有价值的信息,如数据库数据,机密文件等。或存在恶性商业竞争,会有攻击人员有针对性地攻击,而暴力破解攻击就是其中一种常见的攻击手段。


如何预防暴破?

云CVM防止被爆破攻击,两步预防:

1.限制安全组登录IP为固定IP:https://cloud.tencent.com/developer/article/1739874

2.设置登录方式为密钥登录:https://cloud.tencent.com/developer/article/1046002

如果每个公有云用户在新建一台cvm的时候,都可以做到以下三点,至少可以杜绝云上95%以上的挖矿木马攻击,勒索病毒攻击:

(1)安全组进行合理配置,限制远程登录IP为固定IP。

(2)设置登录方式为密钥登录。

(3)对cvm上所用到的所有系统组件,应用组件及时更新最新版。

但这个世界就是这样,并不是有了医生就消灭了病患,有了富裕就消灭了贫穷。

依然长期存在因安全配置不当服务器被暴破入侵的情况。思考一下,如何找到暴破攻击者的IP呢?


怎么找到暴破IP?

因此,写了一个对暴力破解攻击IP模糊定位的工具,给它命名:Brutehunter(暴破猎人)

Brutehunter 工具链接:https://github.com/Haixuwan/Brutehunter

讲工具怎么用前,先告诉大家几个点:

1.Brutehunter解决什么问题?

Brutehunter解决同矿马对抗时,agent节点丢失问题,协助排查人员进行主机层暴破日志筛选,找到攻击者IP

2.Brutehunter适用什么场景?

(1) 公有云挖矿木马源攻击IP溯源

(2) 暴破攻击IP定位

3.使用方法:(本文暂不阐述工具逻辑,待后文分享,先教大家怎么用

第一步:下载启动(筛选高可疑暴破源IP)

git clone https://github.com/Haixuwan/Brutehunter   
cd Brutehunter
chmod 777 brutehunter.sh
./brutehunter.sh
Brutehunter 显示界面

三个关键路径:

登录失败IP列表:/tmp/brutehunter/report/ip/F_ip.txt
登录成功IP列表:/tmp/brutehunter/report/ip/S_ip.txt
通过暴力破解入侵高可疑IP地址:/tmp/brutehunter/report/ip/risk_ip.txt

第二步:同自身服务器登录白名单IP比较

Brutehunter筛选出的高可疑地址,同服务器常用登录的白名单IP对比,剩下IP地址的就是可疑的暴破IP了,可进行下一步溯源。


Brutehunter长短板

长板:1.全量暴破IP筛选,不会遗漏IP。

短板:1.Brutehunter是基于既有登录失败又有登录成功的IP逻辑进行筛选,经白名单IP对比后的剩下IP只能是高可疑IP,必须再进行一步人工确认和溯源,但足够筛选人工溯源定位工作量。

附上源码:

# author:Haixuwan
# update 2021.03.12
#!/bin/bash
echo "
------------------------------------------------------------------------------------------------------------------------------------
              ██████╗ ██████╗ ██╗   ██╗████████╗███████╗    ██╗  ██╗██╗   ██╗███╗   ██╗████████╗███████╗██████╗
              ██╔══██╗██╔══██╗██║   ██║╚══██╔══╝██╔════╝    ██║  ██║██║   ██║████╗  ██║╚══██╔══╝██╔════╝██╔══██╗
              ██████╔╝██████╔╝██║   ██║   ██║   █████╗      ███████║██║   ██║██╔██╗ ██║   ██║   █████╗  ██████╔╝
              ██╔══██╗██╔══██╗██║   ██║   ██║   ██╔══╝      ██╔══██║██║   ██║██║╚██╗██║   ██║   ██╔══╝  ██╔══██╗
              ██████╔╝██║  ██║╚██████╔╝   ██║   ███████╗    ██║  ██║╚██████╔╝██║ ╚████║   ██║   ███████╗██║  ██║
              ╚═════╝ ╚═╝  ╚═╝ ╚═════╝    ╚═╝   ╚══════╝    ╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝   ╚═╝   ╚══════╝╚═╝  ╚═╝
                                                   Brutehunter V1.0
                                                   Author:Haixuwan
------------------------------------------------------------------------------------------------------------------------------------
溯源报告:
/tmp/brutehunter/report
溯源高可疑IP地址路径:
/tmp/brutehunter/report/ip
------------------------------------------------------------------------------------------------------------------------------------
以下文件不存在:
"
# 创建报告文件夹: /tmp/brutehunter/report/ip
function mkfile(){
	mkdir /tmp/brutehunter/ >/dev/null 2>&1
	mkdir /tmp/brutehunter/report >/dev/null 2>&1
	mkdir /tmp/brutehunter/report/ip >/dev/null 2>&1
	chmod +x ./tmp/brutehunter >/dev/null 2>&1
	chmod +x ./tmp/brutehunter/report >/dev/null 2>&1
	chmod +x ./tmp/brutehunter/report/ip >/dev/null 2>&1
	dir="/tmp/brutehunter/report/ip"
}

# Flogin_ip() 筛选登录失败IP地址:
function Flogin_ip(){
#(1)登录日志模糊审计: /var/log/*secure*
#                  /var/log/*auth*
# 适用CentOS:(egrep '[0-9]+\.'过滤掉字段,只保留含有数字和.的数据)
	grep "Failed " /var/log/*secure*|awk '{print $13}'|egrep '[0-9]+\.'|sort -u > /tmp/brutehunter/report/ip/F_secure_login_ip.txt  # 查找登录失败的IP地址,将IP列表导为F-slogin_ip.txt(这里IP地址不够全):
  # 适用于Ubuntu:(ubuntu主机访问日志路径/var/log/auth.log,这里IP地址)
	grep "fail" /var/log/*auth*|awk '{print $10}'|sort -u > /tmp/brutehunter/report/ip/F_auth_login_ip.txt                          # 查找登录失败的IP地址,将IP列表导为F-slogin_ip.txt(这里IP地址不够全):
#(2)lastb查看全部登录失败用户的IP地址: /var/log/btmp
	lastb|awk '{print $3}'|egrep '([0-9]+\.)'|sort -u > /tmp/brutehunter/report/ip/F_btmp_login_ip.txt  # 全部用户登录失败的IP地址,存为/report/ip/F-aulogin_ip.txt(全部爆破失败的IP地址,这里的IP地址比较全,可以参考为爆破失败的IP地址)
#(3)审计messages事件日志(从syslog中记录信息): /var/log/*messa*
	grep "Access denied" /var/log/*messa*|awk '{print $13}'|awk -F'@' '{print $NF}'|sed "s|'||g"|egrep '[0-9]+\.'|sort -u > /tmp/brutehunter/report/ip/F_messages_login_ip.txt # messages事件日志登录失败日志
#(4)审计audit.log系统存储日志项: /var/log/*audit*
	grep "fail" /var/log/audit/*audi*|awk '{print $11}'|egrep '[0-9]+\.'|sed 's/addr=//g'|sed 's/hostname=//g'|sort -u > /tmp/brutehunter/report/ip/F_audit_login_ip.txt  # audit系统存储日志中登录失败的IP地址
}

# Slogin_ip() 筛选登录成功的IP地址:
function Slogin_ip(){
#(1)当前登录日志模糊审计: /var/log/*secure*
#                     /var/log/*auth*
  # 适用于CentOS:(redhat类linux系统主机访问日志路径/var/log/secure,这里取IP地址)
	grep "Accept" /var/log/*secure*|awk '{print $11}'|sort -u > /tmp/brutehunter/report/ip/S_secure_login_ip.txt  # 查找登录成功的用户IP,将该IP列表导出为S_login_ip.txt
  # 适用于Ubuntu:(ubuntu主机访问日志路径/var/log/auth.log,这里IP地址)
	grep "Accept" /var/log/*auth*|awk '{print $11}'|sort -u > /tmp/brutehunter/report/ip/S_auth_login_ip.txt   # 查找登录成功的用户IP,将该IP列表导出为S_auth_ip.txt
#(2)登录用户日志审计记录: /var/log/wtmp
  # 查找当前登录用户记录IP地址,将IP列表导出为S_culogin_ip.txt(当前用户的历史登录IP,登录成功的):
	who /var/log/*wtmp*|awk '{print $5}'|sort -u > /tmp/brutehunter/report/ip/S_currentuser_login_ip.txt
	sed -i "s/(//g" /tmp/brutehunter/report/ip/S_currentuser_login_ip.txt #删除S_culogin_ip.txt中的(
	sed -i "s/)//g" /tmp/brutehunter/report/ip/S_currentuser_login_ip.txt #删除S_culogin_ip.txt中的)
#(3)审计audit.log系统存储日志项: /var/log/*audit*
	grep "success" /var/log/audit/*audi*|awk '{print $11}'|egrep '[0-9]+\.'|sed 's/addr=//g'|sed 's/hostname=//g'|sort -u > /tmp/brutehunter/report/ip/S_audit_login_ip.txt # audit系统存储日志中登录成功的IP地址
#(4)用户最后一次登录成功IP地址:
  last|awk '{print $3}'|egrep '([0-9]+\.)'|sort -u > /tmp/brutehunter/report/ip/S_lastlog_ip.txt
}

# Combine_ip():  筛选的ip地址整合
function Combine_ip(){
#(1)将所有登录失败IP地址整合为F_ip.txt
  cd /tmp/brutehunter/report/ip/
  echo "
------------------------------------------------------------------------------------------------------------------------------------
                                                    暴力破解结果
"
  echo "
登录失败IP地址个数:(路径:/tmp/brutehunter/report/ip/F_ip.txt)"
  cat F_secure_login_ip.txt F_auth_login_ip.txt F_btmp_login_ip.txt F_messages_login_ip.txt F_audit_login_ip.txt|sort -u > F_ip.txt # 将四个失败登录IP地址文件汇总,去重,取登录失败IP地址合计总数
  cat F_ip.txt|wc -l
#(2)将所有登录成功IP地址整合为S_ip.txt
  echo "
登录成功IP地址个数:(路径:/tmp/brutehunter/report/ip/S_ip.txt)"
  cat S_secure_login_ip.txt S_auth_login_ip.txt S_currentuser_login_ip.txt S_audit_login_ip.txt S_lastlog_ip.txt|sort -u> S_ip.txt  # 将四个失败登录IP地址文件汇总,去重,取登录成功IP地址合计总数
  cat S_ip.txt|wc -l
#(3)将登录成功IP和失败IP匹配高可以登录地址
  cat F_ip.txt S_ip.txt|sort|uniq -d > risk_ip.txt # 取登录成功IP和登录失败IP集合交集
  echo "
经暴力破解入侵的高可疑IP地址个数:"
  cat risk_ip.txt|wc -l # 显示成功入侵IP地址个数
  echo "
经暴力破解入侵的高可疑IP地址:(路径:/tmp/brutehunter/report/ip/risk_ip.txt)"
  cat risk_ip.txt
}

# 登录最早时间线溯源Time_ip():
function Time_ip(){
  ip=$(cat $dir/risk_ip.txt)
  echo "
------------------------------------------------------------------------------------------------------------------------------------
日志记录信息:"
  for line in $ip
  do
    grep $line /var/log/*secure*|echo "$f" >> $dir/$line.txt
    grep $line /var/log/*auth* >> $dir/$line.txt
    who|grep $line >> $dir/$line.txt
    #grep $line /var/log/audit/*audi* >> $dir/$line.txt >/dev/null 2>&1
    last|grep $line >> $dir/$line.txt
  done
}

# 登录操作行为分析
#function Action_ip(){
#}

mkfile
Flogin_ip
Slogin_ip
Combine_ip
Time_ip

欢迎大家给我的github项目点赞~

持续更新好用的,有意思的工具。


近期大家对这个比较感兴趣,下期分享


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐