红蓝对抗-红队攻防全流程解析

红队攻防全流程解析

在这里插入图片描述

基础设施架构设计部署

普通架构:红队人员–》teamserver cs–》目标机 缺点:功能未分离、无潜伏通道、回连日志多、灵活性较低

演进架构:DNS/HTTP/HTTPS分离server tips:1~2cpu 2G内存 10G硬盘,回连数不超过5台,潜伏通道(根据实际目标环境优先)

完整架构:域名和IP(VPS)teamserver(CS)前置机(redictor) CS -》teamservers 1/2/3/… 前置层(SMTP/PAYLOAD/C2/隐蔽C2)
在这里插入图片描述

选择域名

在这里插入图片描述
抢注过期域名 expireddomains.net DELETE DOMAIN
tips1: 不要包含世界大厂和杀毒厂商相关的域名,以及和目标相关的域名
tips2:注册目标相关区域常见的域名,记得开隐私保护
其他:www.freshdrop.com www.domcop.com
tips3:检查域名是否被分类,金融、医疗、电商、航空、旅游 great
tips4:去VT、微步检查,域名是否被标黑
tips5:举报滥用规则仔细阅读(freenom 慎用)

  • 培养域名(养号)
    搭建正常域名,提交至各安全厂商给站点分类
    tips1:把域名A记录解析到大厂ip,使用时候再解析到C2,不用时候解析回大厂ip
    tips2:VT 自评, alex 自评
  • 域名解析检测
  • 域名分类检测
    domaincheck:
  • IP检测

外网IP,通过情报站看是否被标黑
使用CDN隐藏真实IP(部分安全厂商会拦截CDN IP)

  • 借鸡生蛋,

subdomain takeover:高信誉域名A解析B -》

高信誉肉鸡做前置转发

  • C2工具

自定义流量特征:DNS/HTTP/HTTPS/SMB和TCP

Payload加载流程:shellcode/Loader/Stageless/beacon

DNS:如果用到dns通道默认参数必须修改(容易被设备检测),不要用DNS做数据通道

HTTP(S):不要在uri中的文件后缀设置js、css等静态文件,效果:付费证书>免费证书>自签名证书 (Let’s Encrypt 免费 3个月过期,开自动续)

CS 3.14

  • Redirector

Office365、Pastebin、Slack、Facebook、Dropbox、Gmail、Twitter…

缺点:需要硬编码到第三方服务

第三方服务用作C2相关资源汇总

https://pentestarmoury.com/2017/07/19/s3-buckets-for-good-and-evil/
https://rhinosecuritylabs.com/aws/hiding-cloudcobalt-strike-beacon-c2-using-amazon-apis/
https://github.com/daniel-infosec/wikipedia-c2
https://unit42.paloaltonetworks.com/aggah-campaign-bit-ly-blogspot-and-pastebin-used-for-c2-in-large-scale-campaign https://www.harmj0y.net/blog/powershell/command-and-control-using-active-directory/
https://blog.netspi.com/databases-and-clouds-sql-server-as-a-c2/
https://outflank.nl/blog/2017/09/17/blogpost-cobalt-strike-over-external-c2-beacon-home-in-the-most-obscure-ways https://labs.mwrinfosecurity.com/blog/tasking-office-365-for-cobalt-strike-c2
https://github.com/maldevel/canisrufus
https://unit42.paloaltonetworks.com/darkhydrus-delivers-new-trojan-that-can-use-google-drive-for-c2-communications https://github.com/byt3bl33d3r/gcat
https://github.com/maldevel/gdog
https://www.welivesecurity.com/wp-content/uploads/2019/05/ESET-LightNeuron.pdf
https://github.com/bkup/SlackShell
https://github.com/j3ssie/c2s
https://github.com/praetorian-code/slack-c2bot
https://github.com/microsoft/skype-dev-bots
https://github.com/PaulSec/twittor
https://blog.talosintelligence.com/2017/04/introducing-rokrat.html
https://www2.fireeye.com/rs/848-DID-242/images/rpt-apt29-hammertoss.pdf
https://github.com/woj-ciech/Social-media-c2

Google App Engine| Amazon |Azure|Aliyun CDN

可见层:DNS、TLS

不可见层:HTTPS

URL(高信誉) SNI(高信誉) HOST(C2)

https://github.com/vysecurity/DomainFrontingLists

代替方案:HTTP pipelining( >http 1.1 )

和 domain fronting 效果相同

利用同一个tcp连接发送不同的host的http包

tips:good domain + bad domain 包一层同时发过去

建议使用多个判断过来请求,拒绝使用默认uri,对抗全网C2扫描

仅允许目标相关IP访问,对抗云沙盒

限定访问时间段,只在某个时间段请求payload

不要把非payload的uri重定向到google等高信誉域名

建议:在www.aaa.com搭建来养域名,使用c2.aaa.com的二级域名做C2

DNS socat|iptables|ssh(tmux和screen选一个)

Apache|Nginx

Tips:

Domain Fronting(隐藏IP、域名的方式)

第三方服务用作C2

  • 邮件钓鱼(SMTP)

域名:同C2域名选择

高信誉的邮件发送者:Mailchimp、Sendgrid

正确配置SPF、DKIM\DMARC

SSL证书

发送时间和频率

一键部署

钓鱼邮件框架:Gophish (https://github.com/gophish/gophish)

  • 隐蔽性和安全性

解决方案:V2ray + Nginx + CLoudflare + Freenom+ Websocket 搭建代理

权限最小化:使用iptalbes限定组件通讯,SSH进行端口转发

Teamserver:限制端口只能本地访问,限制beacon监听端口只能redirector访问

Tips:VPS容易被GFW拦截?

  • 基础设施监控系统

记录完整日志,设置告警

自动化部署 LuWu(https://github.com/QAX-A-Team/LuWu)

日志中心

邮件钓鱼之前期信息收集与侦查

面临的技术挑战:

邮件网关 mail gateway

浏览器

EDR、IDS

Mail Gateway

通过上述结论,探测,fuzzing ANTI-SPAM 引擎规则

稳定触发NDR的办法:

正文大于10M

收件人超过5000个

邮件退信默认开启

MTA默认不开启 Recipient Validation

SPF

DKIM

新注册域名

生僻域名后缀

敏感关键字

ANTI-SPAM

特性:

结论:当我们发送一封钓鱼邮件给一个不存在的邮箱账户时,如果能收到NDR,证明钓鱼邮件通过了邮件网关安全审查(BACKSCATTER ATTACK)

BYPASS ANTI-SPAM

BYPASS ANTI-MALWARE

NDR

  • 总结

在这里插入图片描述

钓鱼样本制作

  • 钓鱼邮件类型

恶意的chm文档:利用easy,但目前比较难过杀软,免杀效果差

带有恶意宏代码的office文档:易于混淆(结合图片模糊之类),但需要手动开宏,进程链可疑

白加黑钓鱼:利用带签名的白程序,通过DLL劫持的方案加载恶意DLL;比较容易过AV,但需要解压执行

LNK文件钓鱼:链接对象是Powershell,进程链完善

PPT钓鱼样本:PPT超链接,弹出“安全声明”,不用启动宏,但必须全屏播放,启用才执行;不推荐使用

漏洞利用的钓鱼邮件:效率高,同样成本也高

  • 写工具自动化生成恶意lnk,关键函数:

IShellLink::SetIconLocation()

IShellLink::SetShowCmd() 窗口显示

IShellLink::SetArguments()

IShellLink::SetPath()

  • LNK钓鱼邮件制作

短文件名 POWERS~1.EXE

代码混淆 参考赛门铁克的paper

安全类进程检测

遍历进程,获取进程对应的版权信息,与黑名单列表比对

优点:升级版本也不变,通用

进程名检测

窗口标题检测

虚拟机-取证工具-杀软检测-调试器

常规手法

新姿势

如何根据PID获取进程的全路径:ProcessExplorer

x86不太可行,x64可以

绕过PCHunter 0RING hook

检测后行为,通知攻击者,及时善后处理

联网下载Word文档

本地释放Word文档

协议内容还原:tcp、http、smtp

文件内容还原:office、pdf、zip

加壳程序还原:upx

加密算法数据还原:base64

(New-Object System.Net.WebClient).DownloadFile(url, file_path);

数据还原引擎

尾部可以追加任意大小的word、PE、PowerShell

select -last 1 定位到最后一个对象,以“\n”划分对象

select -index 1 也可以

ARGUMENT用于LNK中存储命令行参数

StringData结构,CountCharacters

IShellLink::SetArguments()

塞入数据的最大值是 explorer.exe 对命令行参数长度的限制

实测得出 0x7FC2(31KB)

将Word塞到COMMAND_LINE_ARGUMENTS

将Word塞到lnk文件的尾部(推荐使用)

钓鱼简历的编写:内容可选浮夸,让HR打开看完后大概率删除,防止提给技术人员

LNK图标的显示:改成各个系统都能默认显示的通用图标

如何隐藏行为:SetShowCmd() 最小化窗口

Word文档存放:

杀软对抗

内网横向移动

  • 内网侦查

主动扫描

被动搜集

雷区警示

方法对比

设备资产识别

可用服务采集

脚本检测

监听广播消息

风险面:Network ACL封锁、受控主机HIDS、HoneyPot、NIDS

经典主被动内网侦查方式

  • 域内信息侦查 * 类域 * *nix * Windows AD

DNS排查

LDAP(S)& GC(S)

查询LDAP(S)服务

Kerberos

HUNT DOMAIN ADMIN

Scan UDP/53

Query DNS FQDN from DNS

Query Locators from DNS

扫描端口,利用特性筛查域名

匿名读取部分LDAP元数据

读取LDAP证书信息

GC服务 查询 TCP/3268 TCP/3269

防御:可以关闭匿名绑定

ADexplorer:GUI,一些cmdlet

Get-ADUser

Powerview:大量cmdlet

服务票据

Service Ticket

结论:普通域账号申请服务票据后可以对账号离线破解

KERBEROAST攻击(基于上述结论)

Rubeus.exe

PowerView

Session Key,使用用户的NTHASH加密

John/HashCat 可以进行离线破解

KERBEROSUSERENUM(a-team github)

MSF模块

AS-REQ & AS-REP

KDC TGT票据

基于AS协议的用户枚举

ASREPROAST

SPN(Service Principal Name)域对象的属性,对象是机器/用户,必须设置

TGS-REQ & TGS-REP

远程会话枚举

远程用户枚举

远程登录枚举

NetSessionEnum(SMB会话)

NetWkstaUserEnum(交互登录会话)新版本系统需要 admin privilige

场景:一些同域管理账号同名的本地账号可能是同一人创建

SAMR 查询组和成员信息(注:Win 10后没有admin无法枚举)

LSARPC 查询SID相关

交互式登陆:主要指Console和RDP登陆的方式

特定用户登录会话

获取主机权限:Vul RBCD & RPRN

提取遗留的凭据: Powerview Mimikatz

得到用户权限

时间服务器

DNS服务器

域控定位器

net time /domain

w32tm /query

Get-DnsClientServerAddress 查询本机 DNS SERVER 设置

向DNS server 查询 Domain Name A记录对应地址

nltest 提取域控信息的过程

net

dsquery 通过对LDAP进行查询

DC Locator Process

产生DNS查询,沿用DC Locator的机制很安全

Kerberos认证,KDC

GC

查询工具

dsquery/ADSISearcher使用明文的LDAP协议,容易被IDS捕获

定位域控(域内主机)

定位域控(域外主机)

  • 横向移动

概念:是一种让服务有能力以来访用户身份访问其他服务的认证机制

无限制委派:default设置仅域控可以无限制委派

约束委派

基于资源的委派(RBCD) 目前杀伤力最大的委派

S4U2SELF

PRINTER BUG:Printer Spooler服务SSRF

无限制委派+S4U2SELF+PRINTER 任意域控

S4U2PROXY

继承S4U2SELF、S4U2PROXY

WMI:基于DCOM TCP/135 明文传输

PSEXEC:(tips:使用impacket工具 psexec.py 区别在于目标支持SMB3.0默认开启加密)

远程计划任务

DCOM:远程调用的COM组件 TCP/445 + Random port dcomexec.py

MS-RPC

Kerberos委派

  • 域权限维持

SPN

黄金票据

白银票据

受限委派

RBCD

域组策略

LAPS

针对账户进行,参考前面

krbtgt key,修改krbtgt密码两次,分析4769日志

日志分析

IDS规则,过期时间,算法等

用krbtgt加密TGT,TGT加密使用该账户的key作为密钥

使用默认参数创建的金票过期时间很长,mimikatz

DCSync拉取域内账户的hash/key

检测点:

PAC信息验证

SRVS的相关key加密

检测点:

主机权限维持(常见类型,不展开)

域权限维持

文件感染与横向移动

文件感染

修改文件关联

.docm 改为.doc,对抗针对后缀.docm 的检测

修改宏关联文件,对抗依赖文件名or类型检测

.docx .docm(宏文件) 可以改为 .doc

目标:把.docx转换为带恶意宏的.docm或.doc

图标如何保持不变?

恶意代码正常拉起原程序

场景:权限维持、横向移动

IShellLink::SetIconLocation()把exe设置为当前lnk的图标

借助rundll32.exe

TLS回调,反调试;把恶意代码放在TLS,不需要修改OEP

TLS数据结构

TLS感染总体流程:搜寻节间隙 - 修改录数据目 - 构建TLS目录 TLS回调函数 - 重建PE - 恶意文件释放

给exe添加一个导入函数,DllMain中写恶意代码,工具StudyPE

把恶意代码插入到PE中,修改OEP,重建PE

对抗思路

OEP内某处跳转到恶意代码

修改OEP指向恶意代码

DLL加载

OEP jump

利用TLS(线程局部存储)回调

PE感染

LNK感染

Office感染

公司软件库供应链,类似“驱动人生”

感染远程共享文件

外界设备感染,如U盘、移动硬盘

3389挂载盘到服务器

邮件感染,插入恶意宏

流量劫持,感染传输中的文件

意义

场景

方式

常规PE感染

TLS感染

LNK文件

Office文件感染

杀软对抗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫彩@之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值