最近应急响应的活儿越来越多,怎么有效快速地发现威胁,追踪入侵来源,成为评价一个应急响应团队的硬性指标。时间线线索关联分析是常用的排查思路之一。本文以发现失陷主机为例,介绍通过时间线思路在线索扩展与主机检查两个方面的技术方法。通过流量监控发现资产连接iP/恶意域名,如何排查?
终端盘查的思路如下:
拓展线索以获得更多信息;
确认线索的准确性以及可靠性,防止错误和无意义的开始;
上机检查需注意多种情况,有目标地检查失陷痕迹,可高效应急。
详情可看下文,希望对各位有所启发和帮助。1
线索扩展
利用威胁情报扩展线索更多信息,从而核实线索的准确性
当我们初步拿到域名/ip的IOC信息时,可以先通过溯源的方法对IOC信息进行核实和画像补充,利用溯源/搜索到的信息为后续的应急响应做验证。(如,通过google搜索恶意域名可以关联到该域名相关的木马逆向分析报告,为主机取证的恶意样本可以做同类型比对,确认病毒功能;或通过黑IP关联到恶意软件组织,可以根据此组织常用的恶意软件进行上机比对)。可参考下列分类信息及特征进行排查,恶意域名/恶意IP大概分为如下三类:蠕虫病毒木马恶意程序类(常见的威胁情报有:
DDOS木马、钓鱼网站、传播恶意软件、漏洞攻击,ip属性常为网络设备、物联网设备,详细可参考中睿大学-IP溯源课程)
黑客攻击类(常见的威胁情报有:
C2服务器、曾存在钓鱼网站、互联网蜜罐告警、常见漏洞利用等,IP属性常为攻击者购买的VPS或者动态IP)
针对性攻击类(常见的威胁情报有:
关联APT组织的分析报告、开放VPN端口,属于TOR节点等)。
通过威胁情报和IP/域名溯源可以对安全事件有一个大致的定性,比如le suo病毒类的恶意软件常见主机排查方法可用杀软做扫描,如上线C2为VPS,更有可能是攻击者人为操作,建议断网上机详细查询痕迹2
线索确认
2.1 域名可靠性确认
通过威胁情报获取域名扩展信息后,如何对域名的真实性进行排查,确认线索无误,以下几种情况域名可能存在偏差的情况:域前置技术
场景:发现流量包中HOST头为高可信的子域名如何验证
验证恶意域名的解析ip是否是该域名的解析ip,如果不是可能为域前置情况,查找真实ip可参考链接,但一般遇到域前置找到真实ip难度较大,可以返回重新查找线索换个思路进行排查
动态域名
场景:比如PubYun的3322.org域名,花生壳等动态域名供应商如何验证
1) 查询域名威胁情报,看域名标签
2) Google 搜索域名信息,看是否有域名标签
利用高可信域名做命令中转
场景:发现C2域名为百度、今日头条等高可信的子域名,有可能为命令中转类C2参考链接:?__biz=MzU2NTc2MjAyNg==&mid=&idx=1&sn=48ed3c987a3fb29fb0db29241&chksm=fcb783b2cbc00aa49d064f0f83bfd9bc7220c55339ef1d83c91bc7cf8d9601e9a552b&token=&lang=zh_CN#rd如何验证
1)验证主机上实际产生恶意链接的IP是否为域名的解析IP(如果是:可能为上述情况,如果不是可能为域前置技术);
2)上线链接可真实访问;
3)一般为URL链接,访问即可获得指令(可能是加密的)
Nginx反向代理
场景:发现c2为肉鸡或者nginx服务器如何验证
查询威胁情报看该c2是否有威胁标签,一般nginx服务器也为攻击者可控服务器,此类型不好溯源到真实C2服务器IP。
肉鸡C2
场景:发现c2为某个公司或者组织团体的备案域名如何验证
查询威胁情报看该c2是否有威胁标签,或者肉鸡一般存在漏洞,可以尝试漏洞利用拿下权限。
云函数/网站托管
场景:发现子域名的主域名为高可信域名,且C2的域名和云函数/网站托管业务相关如何验证
Google搜索该C2子域名,一般可以找到对应的云函数或者网关托管业务,如果属于该业务的URL,则可以确定。
2.2 恶意IP可靠性确认
(一)由于在实际应急响应过程中,流量中发现的线索和上级检查会有一定时间差(域名上线的情况下,IP可能会发生偏差,因为域名解析可以随时变动),所以流量中发现的IP(如DNS解析IP,实质恶意程序通信)都有可能存在偏差,具体情况如下:如何验证域名上线
通过IP反查存在域名,验证域名是否为上述域名可靠性的情况。
如何处理域名解析变动频繁的情况
上机查找进程时,以IP反查域名的实时解析IP为搜索条件。(用失陷主机nslookup-q=a 反查的恶意域名)
图:解析域名查询
(二)判断告警ip是否为真实发起域名或ip连接资产;(有可能是DNS服务器,路由器)1)通过流量设备查询域名解析记录,排除dns或路由器;图:流量设备查询
2)询问业务管理员,确认ip资产归属是否是dns服务器或路由器;3)查看该ip的域名缓存,ipconfig /displaydns,看是否有该域名额解析;图:域名缓存查询
确认非dns或路由器进行下一步进行上机网络连接排查,如果为DNS或路由器,可查询dns解析日志,查找该域名的解析记录或在流量设备查找对应的网络解析记录。3
上机检查
3.1 恶意程序进程依然存在的情况
3.1.1 排查方法
1)在确认了恶意域名及解析ip和发起连接的资产后,进行上机排查:
a、Netstat -ano(windows)/netstat-antpleu(linux) 通过该命令查询ip连接并记录相应的进程
b、根据定位到的进程查看发起连接的映像名称和服务 tasklist /svc/fi “PID eq pid” (windows)/ ps aux | grep pid(linux)
c、根据定位到的进程查看对应的文件路径wmic process get name,executablepath,processid|findstr PID
2)也可以右击任务栏打开任务管理器,切换到详细信息,找到对应进程右击打开对应文件位置
图:任务管理器
3.1.2 相关工具
1)Tcpview 动态显示网络连接情况使用可参考链接:
图:tcpview网络连接
2)火绒剑安全分析工具下载链接图:火绒剑安全排查工具
3.2 恶意程序进程失效的情况
在上机后无法查询到相关进程可进行下列排查:
a、在无法直接查到解析ip时需要查询该域名历史的解析记录,可以将近一个月的域名解析记录ip进行整理,然后查询流量解析记录。
查询威胁情报网站地址:
https://community.riskiq.com/
https://www.virustotal.com/
https://x.threatbook.cn/
https://ti.qianxin.com/
https://ti.360.cn/
图:解析记录查询
b、如果IP对应的进程已结束,可能恶意程序已不活动,可以安装Sysmon日志,该日志安装后可实时记录所有的进程和网络链接创建,安装后可定期检索Sysmon日志查找发起该IP链接的进程及文件。
具体安装方式可参考:https://www.pianshen.com/article/19991980812/3.3 文件排查
在通过恶意域名或ip确定恶意文件后,需要对该恶意文件进行排查,消除威胁。
3.3.1 文件创建者
确定威胁文件之后首先需要查看文件属性,关注文件创建者,排查入侵路径:
Windows文件属性查看
右击文件选择属性切换到详细信息或者光标定位文件按键 alt +enter
图:文件属性查看
Linux 文件权限及创建者查看
ls -la 文件名
查看文件创建者
可从下面几个方面进行排查:
a、如果是administrator,可以查看是否该资产存在3389爆破日志
b、如果是iis说明为webshell操作
c、如果为 mysql和sqlserver 管理用户则有可能该资产存在注入漏洞,通过注入进来
3.3.2 文件创建时间
关注文件创建时间、修改时间、访问时间,根据文件创建时间或检测到异常情况的时间对该资产在该时间段的新增文件进行排查。
Windows文件属性查看
windows文件查看:图:文件创建时间
查看时间段文件创建可使用everything使用命令:
dm:年/月/日 搜索指定修改日期的文件和文件夹
dr: 年/月/日 搜索指定打开时间的文件和文件夹.
da: 年/月/日 搜索指定访问时间的文件和文件夹.
dc: 年/月/日 搜索指定创建日期的文件和文件夹.
图:指定创建时间文件搜索
时间区间搜索dm:2021/05/01-2021/05/02
linux 文件属性查看
linux文件时间查看:stat 文件名称
Atime=Acess -文件的最近访问时间Mtime=modify – 文件内容最近修改时间Ctime= change –文件属性修改时间查找指定时间段内的文件:
find log/ -name *.log -newermt 2021-05-17 00:00 ! -newermt 2021-05-17 23:00 (查找 在2021年5月17日零点到23点log目录下log后缀的文件)
同样可对指定修改时间段内的文件进行搜索:find /var/log/ -mtime +3 -type f -print (找出1 天”以前”被改动过的文件)3.4 入侵路径行为排查
3.4.1 系统日志
按照告警时间对主机安全日志进行排查,如排查window(4625和4624日志),linux(ssh登录日志)是否通过主机侧入侵。
3.4.2应用日志
排查Web应用日志,如iis日志及apache日志,查看时间期间内是否有爆破、注入、上传可疑文件等攻击行为操作。
3.4.3 主机操作日志
1)浏览器痕迹查询工具browsingHistoryview使用安装可参考链接图:浏览器痕迹
2)通过告警时间线做windows痕迹排查,查看操作记录排查告警时间段的主机操作行为,可以使用工具 lastactivityview ,安装使用方法可参考链接图:lastactivityview工具
3.4.4 物理接触日志
1)Usb插拔记录查询工具 usbdeview安装使用链接图:usb插拔记录
2)按照告警时间对资产负责人排查是否点击邮件、是否下载东西、是否安装某些软件3.4.5 持久化痕迹排查
对启动项进行排查看是否有通过自启动进行执行命令下载恶意文件的情况。windows启动项排查
▲windows目录:按照告警时间线对启动项目录进行排查,windows启动项单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。
▲服务启动项 按照告警事件对启动的服务进行排查,单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的启动项目,选择取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
▲注册表修改默认不记录日志,可通过进行设定或者工具对注册表修改做审计
通过修改系统组策略可对注册表修改行为做监控,具体操作设置可参考链接
可以使用工具Process Monitor 对注册表进行监控 使用安装参考链接
开启注册表审核对命令auditpol进行设置,同样可以监控注册表变动,具体操作步骤可参考
▲组策略启动脚本,按照告警时间线对启动项组策略脚本进行排查,看是否有可疑执行脚本 。组策略,运行gpedit.msc,查看window设置下的脚本(启动/关机)
Linux启动项
▲按照告警时间线排查该目录下的文件 /etc/rc.d/rc.local,/etc/rc.local是/etc/rc.d/rc.local的软连接
▲按照告警时间线排查该目录下的文件 /etc/profile.d/*.sh/etc/profile.d/是bash的全局配置文件可以在开机时启动
▲按照告警时间线排查/etc/rc.d/rcX.d (X代表每个运行级别0-6个级别)一般出问题为2和3级别重点关注在对应目录下使用 ls -l 查看软连接对应的文件
▲按照告警时间线排查/etc/init.d/ 下的启动项文件看是否有可疑文件。
3.4.6 其他安全设备日志
▲按照告警时间对其他安全设备日志以及全流量对ip所属区域的排查;
▲按照告警时间对该区域对业务层面排查(VPN,VPN日志,堡垒机,堡垒机操作日志,Web服务器)看是否有异常操作行为。
4
后续
后续将发布关于本方法的案例,感兴趣可关注“蓝鸟安全”,未来将定期更新技术文章。图文转载自中睿天下蓝鸟安全团队
扩展阅读:
从实战演练看攻防对抗思维的转变
实战分享 | 如何进行「失陷主机取证溯源」
一次对钓鱼邮件攻击者的深度溯源分析
跳出单点思维,从上帝视角感知邮件安全态势