电子邮件基础:投递协议与邮件结构
Alice 要把一份报告交给 Bob 处理。她把 Bob 填在「收件人」里,抄送 Carol 让她知道这件事,再把审计邮箱填进「密送」,留一份归档。Bob 收到后,可以看到 Alice 和 Carol 的地址,也能打开报告附件。审计邮箱同样收到一份,但在 Bob 看到的收件列表里没有显示。 Alice 还给这封信设了一个客服地址。Bob 点「回复」…
Docker 搭建私人邮箱系统
前言 有一台 VPS 和一个域名,就想给自己搭个邮箱。这里使用 Docker Mailserver 收发邮件,先配置客户端使用。网页端可选,后面再用 Docker 部署 Roundcube 和 Nginx。账号只由管理员创建,不开放注册。 这次使用的环境: Ubuntu 20.04.6 LTS,内存约 2.4 GiB,Swap 约 1.2 GiB …
域内 ACL 与 ACE 滥用
用户、计算机、组、OU、GPO 和证书模板等 AD 对象,都通过安全描述符记录访问权限。权限配置不当时,普通账户可能获得修改组成员、重置其他账户密码、写入认证凭据,甚至复制域凭据的能力。 AD 对象的权限模型 安全描述符与 ACL AD 对象的 nTSecurityDescriptor 属性保存安全描述符(Security Descriptor,S…
SharpHound 数据采集原理
SharpHound 从 AD 和 Windows 主机收集对象、权限、组成员及会话数据,输出 JSON 供 BloodHound 导入。目录对象主要来自 LDAP,主机的会话和本地组来自对应的 Windows 接口。 源码分析涉及客户端和公共库两个项目: SharpHound 132eb0d:客户端编排与输出,项目版本为 2.13.0,目标框架为…
NetExec 架构与模块分析
NetExec 把凭据认证、主机枚举和模块调用放在统一的命令行中。主程序展开目标,协议处理器连接各主机并检查权限,然后调用模块。模块也可以借助其他协议完成具体操作。 源码分析对应 NetExec 36acb70。该快照提供 10 个协议处理器;模块目录有 131 个 Python 模板/模块类,其中包括示例模板和已经迁移功能的提示文件。本文的参数与…
Impacket 工具与协议原理
Impacket 中不少工具只需要一行命令,背后访问的接口、使用的身份和权限却差别很大。这里结合源码整理常用工具的调用过程,再看这些工具之间如何衔接。 源码分析对应 Impacket 9a5621d,setup.py 中版本为 0.14.0.dev。源码路径均相对此仓库。 项目结构概览 项目目录 impacket/ ├── impacket/ # …
域环境下的 LDAP 协议
LDAP 与域内信息收集 域内信息收集经常需要向域控发起 LDAP 查询。例如通过 LDAP 枚举 SPN 账户、查找委派配置、读取 nTSecurityDescriptor 分析权限。理解查询结构,也有助于看懂工具实际收集了哪些数据。 域控提供的 LDAP 目录服务 Active Directory 域服务在底层使用 ESE(Extensible…
Windows 域基础
工作组(Workgroup) 工作组(Workgroup)采用分散管理方式,每台计算机分别维护本地身份与配置。 在工作组环境中,每台计算机都是独立的个体,拥有自己的: 本地用户(Local User) 本地用户组(Local Group) 本地安全策略 本地权限配置 例如,有三台计算机: PC01 ├── Administrator ├── Ali…
委派攻击
委派的用途与类型 在实际的企业环境中,服务之间经常需要代表用户去访问另一个服务。 最典型的场景是前端 Web 服务访问后端数据库: 用户 └─► Web 服务器(以用户身份)─► 数据库服务器 用户先通过 Kerberos 认证访问 Web 服务,Web 服务再用该用户的身份向数据库认证。这样数据库可以继续按用户分配访问权限,记录对应用户的操作。 …
NTLM 中继攻击
NTLM 的认证消息(Type 1 / Type 2 / Type 3)可以封装在不同的应用协议中传输。服务端缺少有效的签名、服务绑定或通道绑定保护时,攻击者就可能转发这些消息,以受害者身份完成认证。这就是 NTLM 中继(NTLM Relay)。 简单来说:攻击者截获客户端的 NTLM 认证请求,然后把这个请求"转发"给另一台服务器。目标服务器以…