发布时间:2023-04-28 09:30
整个HW中,大家的处理流程应该都差不多吧,第一次参与大型攻防演练,简单梳理一下思路备忘:
监控告警-----事件分析-----事件处置------溯源反制
监控告警环节:1、保证监控设备的可用性和有效性;2、做简单识别,并进行上报;3、除了单纯的设备告警,进行大数据数据分析、聚合统计也是很有用的
事件分析环节:1、识别真实攻击,剔除噪音和干扰;2、分析攻击手法、入侵手段、提权C2等。
事件处置环节:1、及时隔离止损,防止攻击扩散;2、根据分析结果,排查影响范围,识别同类攻击。
反制溯源环节:1、打击黑产菠菜等,得分为主;2、溯源攻击者,防守得分。
事件分析就是要弄清楚:谁做了什么事?这个事是正常行为还是攻击行为?攻击是否成功?
1、基本信息:一般事件最先拿到的就是四元组( 源IP地址、目的IP地址、源端口、目的端口)或其中部分信息。即使是其他类型的事件或告警,一般也需要拿到相应信息。
2、分清敌我:从主机层、网络层信息定位到相关人员信息。内网的攻击IP,直接找对应用户或者对应的业务负责人;外网的攻击IP,要确认是否业务关联IP、合作方IP、公司出口IP等。
3、理清事件:如果源头IP能联系到对应人员,直接进行沟通询问,是快速理清事件的方式。如果联系不到人,又是我方可控资产,直接进行快速隔离,上机排查处置。
3、攻击确认:在确认是外部攻击行为后,需要确定攻击是否有效。如果是大量扫描等行为,封禁即可;如果尝试高危漏洞利用,在需要确定对应业务系统是否存在相应漏洞,判断漏洞是否攻击成功。
4、移交处置:确认是有效攻击后,需要对相关来源设备(来自内部的攻击需要,比如中毒机器)或目标设备执行上机应急处置流程。杀毒、网络隔离、日志分析、网络流量分析等等。
当怀疑某个主机被入侵了,从哪些方面进行排查呢?我想是:【文件--->进程--->内存---流量】的核心思路,前两者都可能被攻击者修改或消除,而内存和网络行为这个具有必然性!!!
应当形成主要攻击场景的排查重点和思路,然后形成自动化脚本、应急处置工具包。
有些防御方案,它防了攻击者,但同时也束缚了自己的手脚
在流量中发现攻击,最有效的是WAF和NET APT这类设备,但是他们都无法处理https,如果攻击者攻击这类网站,反而不容易被检测,可能是最大的防御缺陷。如果以后搞建设,一定要建议将证书放在Nginx服务器,后端明文流量转发,这样有利于在其后端部署WAF或其他流量检测设备,否则自己被自己的方案搞死了。
当然,WAF也可以做证书拆卸从而检测HTTPS流量,但是对性能是很大的一个考验。
1、公司用了某大厂的一套“无边界办公”解决方案,最初的目的是为了保证终端接入的安全。如果不安装该软件,设备将无法访问内部网络。用了一段时间后发现其本质是 【杀软+VPN】。HW中看到的很多告警事件,来源IP都是VPN网关,不能直接获取源IP和其对应的用户。必须去查询网络连接日志找出真实源IP,从而找出IP所对应的用户。
2、之前为了防护DDoS,将一部分业务接入云环境,外部流量先通过云环境,再转发到业务地址。然而它的转发没有带X-Forwarded-For字段。无法获悉真实攻击者的地址,也无法执行IP封禁,导致大量告警,增大了人员的处理压力。
3、“核心交换机异常登录事件”:Syslog收集日志时,经过多次转发,最原始参数日志的IP地址丢失导致误判。
4、“IOA服务器扫描事件”:海外IOA通过加速节点,转发到国内,当海外扫描IOA时,看到的攻击IP其实是加速节点的IP,而非原始攻击IP导致误判。差点封禁导致UIOC。
这些事件虽然最后都能分析出来,但是都花费了大量的精力和时间,都充分说明“真实来源IP”在事件分析中的重要性,在安全建设过程中需要注意。为了能够开始进行事件调查分析,打通整个网络请求路径是很有必要的,尤其涉及各种转发,代理的时候。
本次HW才接触到HIDS,只能说个大致,如有错误请指出。
接触后,处理了2个问题:
1、hids反弹shell规则的白名单存在问题,可能直接反弹外网的记录都被加白了。
2、通过console 比如bash 执行的可疑命令操作记录功能失效,无任何记录。
1、公司以前的实现方式,通过一个logger的程序,通过命令行实现日志上报,有2个问题:A、上报的命令行会再次触发以前的报警。B、上报程序需要登录后才会执行!时间延迟严重。
2、后续采用HIDS的命令行审计功能,它的基本原理是修改bash程序,让bash程序实现命令历史记录上报。
遇到2个有意思的case:
1、通过漏洞直接执行危险命令(whoami、cat /etc/passwd、ifconfig等)没有被检测出来,反而是反弹shell的base64编码行为被检测到。
2、另外一次检测出webshell,不是因为包含了危险函数,反而是因为这个文件进行了全文Unicode编码。
这个检测思路,虽说简单粗暴,还真有用。
1、检测的基本思路类似于静态源码扫描,查的是关键函数和关键命令等。绕过思路当然就是尽量避免 start().getInputStream 等关键词的出现,进行一些变形处理。
2、webshell要执行系统命令,必然要调用linux shell,如上所言,原理是替换了shell程序实现审计的。那么我们的绕过思路也就明晰了,常用调用其他不同的shell
Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) ......
3、HW中发现的一个问题,现在还没弄明白。webshell调用sh shell执行系统命令,没有被记录。安装厂商的说法,如果/bin/sh是/bin/bash的软链接,应该是可以被记录的,但实际上确实没有被记录。截止写这个文章的时候,还没有弄明白。
1、梭子鱼沙箱检测,附件压缩包加密码可以绕过梭子鱼的检测,中招的一次攻击就采用这个手法。
2、收件人检测,如果目标收件人中存在一定比例的不存在用户,即可认为是钓鱼邮件,比如有20%不存在。
3、发件人规则,如果之前未见过这个发件人,也可以进行报警。
4、钓鱼邮件、攻击者的思路也可以扩展。先发钓鱼邮件,然后发“反钓鱼”主题的钓鱼邮件。这种可能更容易中招---来自大佬们的思路。
外部的信息收集,一般难以判断邮箱是否存在,所以这个规则其实是很有用的。作为防守方,可以故意散播一些特定的邮箱地址并且进行记录,一旦收件人中存在这些邮箱地址即可报警。这些邮箱收到的垃圾邮件、钓鱼邮件,还可以作为分析样板进行分析记录。妥妥的一个“邮件蜜罐系统”。
这次HW中,chrome的RCE是影响挺大,微信存相同问题,内部通讯工具也存相同问题,这是二进制的天地;钓鱼邮件中附件的分析也需要二进制的功底,光靠在线沙箱是不够的,攻击者也在进步,会有防沙箱,防反汇编的措施出现。可以预见,如果HW持续开展,以后二进制的需求会有比较大的增加。
之前了解到的案例,和这次演练中的案例,都告诉我们,攻击者需要尽量少地暴露自己的信息
1、不要使用自己的vps、xss平台、dnslog平台、博客服务器去做任何攻击
2、自己的扫描攻击和脚本不要包含自己的ID
3、最好能够在进行攻击之前,使用可靠的社工库查一查自己的信息,做到心里有数
4、最好能利用威胁情报平台,完成一次自己对自己的“溯源”。
漏洞发现应尽量避免带有攻击性payload,减少探测被发现的可能
1、首先考虑流量分析、组件版本分析、错误信息分析等
2、其次考虑URL类型的探测
3、最后考虑PoC、EXP类型的探测
漏洞利用工具应该具备:
1、代理功能,便于观察攻击请求进行debug;
2、最好有一定的绕waf、换动态代理服务器等隐藏攻击行为的能力
3、图形化操作
4、要能感知到waf拦截行为,封IP行为
5、攻击payload如果能加密进行加密、能对常规payload进行变换的进行变幻
1、梳理各个组件的漏洞、最好能明晰版本、利用条件等
1、我目前使用dnslog的方法是,将目标站点的ip或域名作为了dnslog的子域名。
2、这种方式如果被防守方获取到所有的dns流量,那么成功的攻击行为将被完全暴露。
3、改进方式:使用随机子域名,但是自己要建立 随机串和目标和域名之间的管理关系
前面讲到了来源IP对于事件分析和防御的重要性,作为攻击者,我们可以尝试利用这一点。比如伪造X-Forwarded-For字段,用于迷惑流量分析和来源检测。
内网看到的请求,多半都是经过多次转发的,而攻击流量最开始就带有一个假的X-Forwardeded-For记录。如果防御方没有认真分析,那么是有可能逃避真实原地址被封禁的。
当然现在攻击队的基础设施也很强大,这个点可能根本用不上。
80%的事件,查出来是自己人,如果平常能够进行足够的分析和优化,正式HW中就能降低噪音,减少感染!有条件的话,日常运营搞起来。
HW中有2起啼笑皆非的事:网络安全部的同事给公司员工打电话,发消息,被认为是骗子是攻击者;某监控负责人中招钓鱼邮件。
要的不是告诉他们“你要注意别被骗,别点,别接,别相信”。而是要教“如何识别、如何判断”。但是人都有惰性,你教了对方不一定听,听了不一定定听进去了,这还真是个难事~
一个明显的感受,在知道详细原理的情况下,任何的防御都有可能找到缺点。知己知彼,百战不殆,古人诚不欺我!
攻防中的一个悖论:越是大众化的、流行的手法,越容易被检测,避免检测就要有自己独特的方式。但是反过来,越是独特的方式又越容易被定位溯源。