Skip to content

Latest commit

 

History

History
309 lines (156 loc) · 12.5 KB

[A9 Team]-2022-2-28-暴力破解排查思路.md

File metadata and controls

309 lines (156 loc) · 12.5 KB

暴力破解排查思路

原创 小宝瓜 A9 Team

A9 Team

微信号 gh_533347fad180

功能介绍 A9 Team 是一个虚拟安全团队,成员来自安信、青藤、观星、梆梆、微步、安全狗等公司。成员能力涉及安全建设、安全运营、安全攻防等领域,致力于持续分享信息安全工作中的思考和实践,期望和朋友们共同进步,守望相助,合作共赢。


__

收录于话题

#应急响应 1 个

#暴力破解 1 个

一、事件起因

某天在下班路上,在关闭好电脑、消息免打扰所有办公IM后,打开了精神鸦片的抖音。

手机短信却没法关掉,于是。。。

此刻心情

当时一线的伙伴以及找了厂商的工程师帮忙看了下没确定出问题,后来二线小伙伴上去大致按下文的一个思路确定了具体攻击行为的工具;于是整理了下分享给刚入门的小伙伴一些排查思路,勿喷~文章若有错误请大家扶正。(本章节针对于服务器RDP和SSH暴力破解,部分思路也可用于其他暴力破解的排查)

二、检测原理

暴力破解为比较常见攻击方式,但是暴力破解的检测原理也分为几种。

1、同个ip对某个用户多次登录失败

 最常见的就是,攻击者使用大量的字典对某个机器或者某个服务不断的尝试登陆破解,;

2、多个ip同时对某个用户低频爆破

 为了绕过第一条告警规则,会有一种使用多个设备对同一台设备进行低频的爆力破解;

3、使用不存在的用户爆破行为

 暴力破解有时SSH也未必一定是ROOT也可能是其他用户,所以爆破时也会对多用户进行爆破,那么对此我们可以对该规则敏感些,只要使用了不存在的用户登陆尝试则立即告警,而不是要达到一定次数(当然也有可能系统管理员手误输错IP)

三、应急思路

 对于安全建设的还可以的公司,有了自己的相关一线、二线人员的话,那么遇到这种告警就有了相对较细的分工了;

  **一线:** 发现告警,初步分析告警,打电话问“喂,是你一直在登陆失败吗?还是你有什么定时任务啥的登录,然后最近改了密码啊?等等...”。

系统负责人:“没有” ,此时压力来到二线;

  **二线:** “上到服务器做进一步的确认,以及告警分析,复查一线给出的初步分析,上工具抓流量、抓行为进行分析”。

 那么对于安全建设只有一个人的公司来说“右键删除告警”OR“封下来源IP,如果是内网机器,重装下来源机器IP”。                                 

 暴力破解总的来说,一般开放互联网的系统更易受到暴力破解攻击,内部系统出现暴力破解攻击相对较少,更多情况为管理员变更密码口令后,自动化程序登陆失败导致的告警。当出现暴力破解告警后,可以依次按下面维度进行排查。

3.1被攻击服务器是否暴露互联网

 运营过程中,当出现暴力破解告警时,我们第一时间需要确认攻击来源,是来自内部还是外部,一般情况下我们可以通过告警的攻击源地址进行确认,但即使攻击源地址为内网地址,也不能完全排除来自外部的可能,比如有负载均衡,攻击实际来自外部,但经过代理转发告警源地址显示为内部地址 ,这个时候可以结合问询服务器管理员和查询服务器的互联网映射进行判断,如果当前服务器有其他端口映射互联网也需要特别关注。

一、被攻击服务器暴露互联网,攻击来外部,此时需要关注攻击是否成功,以及攻击者是否有其他攻击行为;可通过防火墙封禁该攻击者IP,事后加强服务端防护能力,如设定限制用户登陆次数、限制IP登陆次数等;

二、被攻击服务器为对内服务器,攻击来自内部,则需要进一步排查攻击者情况。

1)是否存在代理转发的可能,其实是外部对内的攻击而非内部攻击;

2)联系系统负责人登陆攻击的内网IP,上去抓去进程或者是网络链接(文末分享了部分工具),如果抓取到了相关连接再定位是什么进程、什么文件,判断攻击行为;

3)如果该告警非一直存在,如凌晨才出现,那么也可以通过文末的工具,简单的过下定时任务、服务等;

4)当然也有通过远程临时下发命令的,那么你的服务器上就不会有所谓的定时任务之类的痕迹,那就需要在那个时间段借助工具;

 笔者在排查暴力破解类告警中经常遇到由于脚本程序配置错误导致告警,这些程序往往启动很迅速,发起请求持续时间很短,这个时候拼手速往往很难抓住程序 ,可以使用一些资源监视记录程序,在这里推荐ProcessMonitor,绿色轻便非常好用。

关于就是如果告警在凌晨不定时出现咋整,下面贴个类似场景的一个思路可以编写一些脚本进行定时抓取,定位是什么程序。  

场景:登录服务器查看端口、进程,并未发现发现服务器异常,但是当多次刷新端口连接时,可以查看该连接。有时候一直刷这条命令好十几次才会出现,像这种的短连接极难捕捉到对应的进程和源文件。

下面是修改后的代码。

#!/bin/bash  
ip=xxxxxxx  
i=1  
while :  
do  
   tmp=$(netstat -anplt|grep $ip|awk -F '[/]' '{print $1}'|awk '{print $7}')  
   #echo ${#tmp}输出长度  
   if [ -n “$tmp” ]  
   then  
       ((i=i+1))  
       echo "waiting..."  
   else  
       for pid in $tmp; do  
          echo "Findit!!!"  
          echo "PID: "${pid}  
          result=$(ls -lh /proc/$pid|grep exe)  
          echo "Process: "${result}  
          kill -9 $pid  
       done  
       break  
   fi  
done  
echo "Total number of times: "${i}

如上图就可以抓取到对应的连接进程是什么进程,是什么文件产生的。

3.2攻击者与被攻击者之间的关系

攻击者来自内部,我们需要进一步排查攻击者与被攻击者之间关系。

  • 攻击者为终端,被攻击者为服务器,这种情况比较常见,风险相对较小,可与终端人员进行确认,终端为运维、开发人员可确认是否有修改后忘记密码多次登陆失败情况,或有使用管理控制台、自动化脚本,变更密码忘记同步情况。若终端为业务等其他非IT工作人员,则需要更加重视,在问询之前可先通过防病毒、NDR做进一步了解,确认终端有无异常,比如中病毒,外联恶意地址等情况。

  • 攻击者和被攻击者均为服务器,应先与管理员确认两服务器之间存在的业务关系,同时通过HIDS和NDR确认服务器有无进一步攻击行为,若服务器存在其他攻击行为,则被入侵的可能性非常大,要准备好后续应急响应工作。反之入侵可能性较小,通过确认业务关系再进一步确认有自动化的程序脚本。

3.3攻击开始时间和持续时间

 除上述方式外,还有一个重要的排查维度,攻击的开始时间和持续时间。

  • 攻击开始时间在非工作时间,尤其是深夜、凌晨这些时间段,得更加关注,但也不必过度慌张,可以通过开始的具体时间做辅助判断,比如开始时间为整点整分,则为自动化程序可能性就很高。

  • 攻击的持续时间,是否呈现出较规律性,如每半个小时发起一次,每次持续五分钟,或者每天一点钟出现攻击等等,这些都是比较明显的自动化行为。

    总结来说,在排查暴力破解类告警过程中,我们可以通过被攻击服务器是否暴露互联网、攻击者与被攻击者之间的关系以及攻击开始时间和持续时间等维度对告警做一些先前的预判分析,做到心中有数、有排查思路,但随着排查的逐步深入,也需要运营人员根据新线索及时去调整去修正先前预判和思路。需要注意的是,这些预判分析也仅仅是便于运营人员在面对大量告警时,能对告警做优先级判断,能第一时间处理当前最重要最紧急的告警,并不意味着排除在外的告警不需要排查,相反,这些看似不紧急的告警可能隐藏着更加严重的威胁。

四、常用排查命令:

 下面给大家提供一些常用的检查命令,主要是分享下Linux的一些操作命令,Windows 笔者更多喜欢借助一些工具,一览无遗的扫一边。

1、定位有多少IP在爆破主机的root账号:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

2、定位有哪些IP在爆破:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|20-4|[01]?0-9?).(25[0-5]|20-4|[01]?0-9?).(25[0-5]|20-4|[01]?0-9?).(25[0-5]|20-4|[01]?0-9?)"|uniq -c

3、爆破用户名字典是什么?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

4、登录成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

5、登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

五、文末思考:

 本文只做了简单的一个服务器暴力破解排查思路分享,但是暴力破解其实有很多种。应用系统的爆破、数据库爆破、远程工具密码爆破等很多,想避免被爆破成功,可能最好的办法还是提升密码强度等方法,但是并不是所有都可以配置密码强度策略,那对于一些无法检测又无法配置密码强度策略的工具怎么检测呢?

欢迎大家加入探讨运营上的各种疑难杂症

推荐工具:

Windows:

文章推荐:

应急响应实战笔记:

https://github.com/Bypass007/Emergency-Response-Notes

笔者自行练习的一些带截图实操记录(练习过程有问题也可以探讨)

https://www.yuque.com/docs/share/5d5471e2-6b89-430a-b47a-d56ec76f3ac4?# 《入侵排查学习记录》

预览时标签不可点

收录于话题 #

上一篇 下一篇

阅读

分享 收藏

赞 在看

____已同步到看一看写下你的想法

前往“发现”-“看一看”浏览“朋友在看”

示意图

前往看一看

看一看入口已关闭

在“设置”-“通用”-“发现页管理”打开“看一看”入口

我知道了

__

已发送

取消 __

发送到看一看

发送

暴力破解排查思路

最多200字,当前共字

__

发送中

写留言

微信扫一扫
关注该公众号

知道了

微信扫一扫
使用小程序


取消 允许


取消 允许

: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看