office2015优化设置

2013-07-11 15:55:00 weixin_34092455 阅读数 150
  • 2015年下半年上午真题28-31

    1.了解嵌入式项目开发方法流程 2.掌握基本的嵌入式项目开发能力 3.串口服务项目实践 4.嵌入式WEB服务器移植 5.数据采集控制系统实践

    455人学习 任铄
    免费试看

昨天不知道怎么地,每次打开Excel都会出现"正在配置Office"的设置向导,并且修复、重置用户均无法解决。

在网上搜索了一下,找到了一个解决方法:把"C:\Program Files\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe"给改个名字即可(这里使用改名而不是删除,是为了后续恢复)这样就找不到启动向导的执行程序了,就没有这个框了,貌似启动速度也快了。

 

2015-03-21 22:10:56 bcbobo21cn 阅读数 8891
  • 2015年下半年上午真题28-31

    1.了解嵌入式项目开发方法流程 2.掌握基本的嵌入式项目开发能力 3.串口服务项目实践 4.嵌入式WEB服务器移植 5.数据采集控制系统实践

    455人学习 任铄
    免费试看

一 创建Office项目

    新建项目,出现 “新建项目”对话框。
在对话框顶部的组合框中,选择 “.NET Framework 3.5”或 “.NET Framework 4”。 
在“模板”窗格中想要使用的语言节点下,展开 “Office”。
选择 “2010”或 “2007”节点。
在项目模板的列表中,出现各种Office模板;可根据需要选择,如下图;



二 创建一个 Excel 文档级自定义项

    在项目模板列表中,选择 “Excel 2007 工作簿”或 “Excel 2010 工作簿”;出现下图;输入文档名称;



出现下图,点确定;



可以通过修改在设计器中打开的工作表来设计自定义项的用户界面 (UI)。例如,可以向单元格添加文本、应用公式或添加 Excel 控件;如下图;



以编程方式向工作表中添加文本
用下面的代码替换 Sheet1_Startup 事件处理程序。 Sheet1 打开后,此代码便会向此工作表中添加第二行文本。
private void Sheet1_Startup(object sender, System.EventArgs e)
{
    Microsoft.Office.Tools.Excel.NamedRange nr =
        this.Controls.AddNamedRange(this.Range["A2", missing], "NamedRange1");
    nr.Value2 = "此文本由代码添加";
}

运行程序,自动打开Excel并显示如下内容;



    清理项目;完成项目的开发后,应移除生成输出文件夹中的文件和生成过程创建的安全设置。
在 Visual Studio 的 “生成”菜单中,单击 “清理解决方案”。


三 创建一个 Excel 应用程序级外接程序

新建项目,在项目模板列表中,选择 “Excel 2007 外接程序”或 “Excel 2010 外接程序”。


编写用于向保存的工作簿中添加文本的代码


在 ThisAddIn 代码文件中,将下面的代码添加到 ThisAddIn 类中。 
void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
{
    Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
    Excel.Range firstRow = activeWorksheet.get_Range("A1", missing);
    firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown, System.Type.Missing);
    Excel.Range newFirstRow = activeWorksheet.get_Range("A1", missing);
    newFirstRow.Value2 = "Excel是个好东西";
}


以下代码添加到 ThisAddIn_Startup 事件处理程序中。
this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave);


运行,结果如下图;单击 保存 按钮时,在程序中添加的文本出现在Excel中。



四 在运行时在应用程序级项目中向工作表中添加控件

在 “项目”菜单上,单击 “添加新项”;
在 “添加新项”对话框中,选择 “功能区(可视化设计器)”,再单击 “添加”;
名为 Ribbon1.cs 的文件将在功能区设计器中打开,并显示一个默认选项卡和组;
从 “工具箱”的 “Office 功能区控件”选项卡中将 CheckBox 控件拖到 “group1”上;如此添加三个CheckBox;
并把其名称和Text属性改为:Button,Button;NamedRange,NamedRange;ListObject,ListObject

并把其名称和Text属性分别改为:Button,Button;NamedRange,NamedRange;ListObject,ListObject

操作过程如下三图所示;








为Button控件添加如下代码,其他两个CheckBox类似;

private void Button_Click(object sender, RibbonControlEventArgs e)
{
    Worksheet worksheet = Globals.Factory.GetVstoObject(
        Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);


    string buttonName = "MyButton";


    if (((RibbonCheckBox)sender).Checked)
    {
        Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;
        if (selection != null)
        {
            Microsoft.Office.Tools.Excel.Controls.Button button =
                new Microsoft.Office.Tools.Excel.Controls.Button();
            worksheet.Controls.AddControl(button, selection, buttonName);
        }
    }
    else
    {
        worksheet.Controls.Remove(buttonName);
    }
}

引用如下的命名空间;

using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Tools.Excel.Extensions;


如果 using Microsoft.Office.Tools.Excel.Extensions;
出错;

手动添加引用:
C:\Program Files\Reference Assemblies\Microsoft\VSTO40\v4.0.Framework\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll

将下面的方法添加到 ThisAddIn 类中。
void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook workbook, 
    bool SaveAsUI, ref bool Cancel)
{
    Excel.Worksheet worksheet =
        workbook.Worksheets[1] as Excel.Worksheet;


    if (Globals.Factory.HasVstoObject(worksheet) && 
        Globals.Factory.GetVstoObject(worksheet).Controls.Count > 0)
    {
        Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(worksheet);


        while (vstoWorksheet.Controls.Count > 0)
        {
            object vstoControl = vstoWorksheet.Controls[0];
            vstoWorksheet.Controls.Remove(vstoControl);
        }


    }
}


用下面的代码替换 ThisAddIn_Startup 方法。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.WorkbookBeforeSave += 
        new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler
            (Application_WorkbookBeforeSave);
}


运行,结果如下图;

选择 Sheet1 中的任何单元格;单击 选择 加载项 选项卡;
在 “group1”组中,单击 “Button”,一个按钮显示在所选单元格中;
选择 Sheet1 中的另一个单元格,在 “group1”组中,单击 “NamedRange”,将为所选单元格定义一个命名区域;
选择 Sheet1 中的一系列单元格,在 “group1”组中,单击 “ListObject”,将为所选单元格添加一个列表对象。



五 创建一个 PowerPoint 应用程序级外接程序

新建项目,在项目模板列表中,选择 “PowerPoint 2007 外接程序”或 “PowerPoint 2010 外接程序”。


编写向每张新幻灯片中添加文本的代码
将下面的代码添加到 ThisAddIn 类中。
当用户将新幻灯片添加到活动演示文稿时,此事件处理程序会将文本框添加到新幻灯片的顶部,然后向文本框中添加一些文本。


void Application_PresentationNewSlide(PowerPoint.Slide Sld)
{
    PowerPoint.Shape textBox = Sld.Shapes.AddTextbox(
        Office.MsoTextOrientation.msoTextOrientationHorizontal, 0, 0, 500, 50);
    textBox.TextFrame.TextRange.InsertAfter("此文本由代码生成.");
}


将以下代码添加到 ThisAddIn_Startup 事件处理程序中。
this.Application.PresentationNewSlide += 
    new PowerPoint.EApplication_PresentationNewSlideEventHandler(
    Application_PresentationNewSlide);


运行程序,文本添加到幻灯片顶部的新文本框中,如下图;



六 创建一个 Word 文档级自定义项
新建项目,选择 “Word 2007 文档”或 “Word 2010 文档”,或 Word 2010 模板;

可以通过修改在设计器中打开的文档来设计自定义项的用户界面 (UI)。例如,可以添加文本、表或 Word 控件;

以编程方式向文档中添加文本

用下面的代码替换 ThisDocument_Startup 事件处理程序;
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
    this.Paragraphs[1].Range.InsertParagraphAfter();
    this.Paragraphs[2].Range.Text = "此文本由代码生成";
}

运行程序,文档中出现由代码添加的文本,如下图;



七 运行时在应用程序级外接程序中向文档添加控件
首先创建 Word 外接程序项目;

提供用于向文档添加控件的 UI;
在 “项目”菜单上,单击 “添加新项”;
在 “添加新项”对话框中,选择 “功能区(可视化设计器)”;单击 “添加”;
在功能区设计器中,单击 “group1”组;
将 “group1”的 “Label”属性更改为“添加控件”;
从 “工具箱”的 “Office 功能区控件”选项卡中将 “CheckBox”控件拖到 “group1”上,更改其名称和Text属性为addButtonComboBox和 添加按钮 ;
向 “group1”再添加一个复选框,更改其名称和Text属性为addRichTextCheckBox和添加多格式文本控件;

将下面的代码添加到 ThisAddIn 类中;
private Microsoft.Office.Tools.Word.Controls.Button button = null;
private RichTextContentControl richTextControl = null;

将下面的方法添加到 ThisAddIn 类中;
internal void ToggleButtonOnDocument()
{
    Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);

    string name = "MyButton";

    if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked)
    {
        Word.Selection selection = this.Application.Selection;
        if (selection != null && selection.Range != null)
        {
            button = vstoDocument.Controls.AddButton(
                selection.Range, 100, 30, name);
        }
    }
    else
    {
        vstoDocument.Controls.Remove(name);
    }
}

将下面的方法添加到 ThisAddIn 类中;当用户单击功能区中的“添加多格式文本控件”复选框时,如果选中了该复选框,此方法会向文档中的当前选定内容中添加一个 RichTextContentControl;如果清除了该复选框,此方法会移除 RichTextContentControl;
internal void ToggleRichTextControlOnDocument()
{
    Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);

    string name = "MyRichTextBoxControl";
    if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked)
    {
        Word.Selection selection = this.Application.Selection;
        if (selection != null && selection.Range != null)
        {
            richTextControl = vstoDocument.Controls.AddRichTextContentControl(
                selection.Range, name);
        }
    }
    else
    {
        vstoDocument.Controls.Remove(name);
    }
}

在 ThisAddIn.cs 中,将下面的方法添加到 ThisAddIn 类中
private void Application_DocumentBeforeSave(Word.Document Doc, 
    ref bool SaveAsUI, ref bool Cancel)
{
    bool isExtended = Globals.Factory.HasVstoObject(Doc);

    if (isExtended)
    {
        Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc);

        if (vstoDocument.Controls.Contains(button))
        {
            vstoDocument.Controls.Remove(button);
            Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false;
        }
    }
}


将下面的代码添加到 ThisAddIn_Startup 事件处理程序中;
this.Application.DocumentBeforeSave += 
    new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(
    Application_DocumentBeforeSave);

在Ribbon.cs 或 MyRibbon.vb 代码文件中,将生成的 addButtonCheckBox_Click 和 addRichTextCheckBox_Click 事件处理程序替换为下面的代码;
private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e)
{
    Globals.ThisAddIn.ToggleButtonOnDocument();
}

private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e)
{
    Globals.ThisAddIn.ToggleRichTextControlOnDocument();
}

运行程序;在Word文档中,多次按 Enter 以向文档添加新的空段落;
选择一个段落;选择 加载项 选项卡;
在 “添加控件”组中,单击 “添加按钮”,一个按钮随即显示在第一个段落中;
选择最后一个段落,在 “添加控件”组中,单击 “添加多格式文本控件”;一个多格式文本内容控件随即添加到最后一个段落中;
如下图所示;



以上项目的源码下载:

http://pan.baidu.com/s/1eQy9RPK

需要安装VS2010和Office 2010,才能运行;若装的是Office 2007,按上述步骤操作,把模板类型改为Office 2007类型;


2015-05-25 13:44:00 chengxue875242 阅读数 282
  • 2015年下半年上午真题28-31

    1.了解嵌入式项目开发方法流程 2.掌握基本的嵌入式项目开发能力 3.串口服务项目实践 4.嵌入式WEB服务器移植 5.数据采集控制系统实践

    455人学习 任铄
    免费试看

标签页变得越来越流行的现在,微软却迟迟没有跟上时代脚步,却费尽心思弄了个吃力不讨好的Ribbon界面。

实际上国产软件已经走在了前头。最新的金山WPS已经支持了Tab页功能,这也是我试用了一段时间之后最为满意的地方。

其实很早就应该把Office Tab放上来了,只是我用Office的频度,不足以让我赶紧去把Office Tab下载到我的硬盘上来。

废话不多说,Office Tab支持Office2003-Office2010的所有版本,免费版支持为Word、Excel、Powerpoint增加Tab页功能,同时也有多语言支持。

其他的也不用多介绍了,我觉得这就已经非常足够安装一个。

官网地址:http://www.extendoffice.com/

另,官网上还有一个小工具Classic Menu For Office 2010,相信是不少反感Ribbon界面的办公室众喜欢的。

转载于:https://my.oschina.net/u/2304110/blog/419531

2019-11-28 21:51:03 m1m2m3mmm 阅读数 98
  • 2015年下半年上午真题28-31

    1.了解嵌入式项目开发方法流程 2.掌握基本的嵌入式项目开发能力 3.串口服务项目实践 4.嵌入式WEB服务器移植 5.数据采集控制系统实践

    455人学习 任铄
    免费试看

目录

1 问题描述

2 两种处理方法

2.1 选项设置法

2.2 模板替换法

3 总结


1 问题描述

在使用office时,需要用到公式编辑工具Mathtype,但是原始的模板加载Mathtype后,与CV大法【ctrl+C和ctrl + V】冲突十分不便,本文介绍一种笨办法【选项设置法】和一种一劳永逸的办法【模板替换法】的操作流程

2 两种处理方法

2.1 选项设置法

2.2 模板替换法

在office安装目下找到如下文件:

在Mathtype安装目录下找到如下文件:

复制Mathtype目录下到office的模板目录下,【直接替换】

替换之后,打开office会报如下异常:

还需要将:【注意是32位,我使用64位报错了,32位正常】

复制到:

 

3 总结

方法一需要每次打开office之后都要操作一次,比较麻烦;

方法二一劳永逸,详细简单归纳为:

① 复制替换模板:

用"D:\Program Files (x86)\MathType\Office Support\64\MathType Commands 6 For Word 2016.dotm"替换

"C:\Program Files (x86)\Microsoft Office\root\Office16\STARTUP\MathType Commands 6 For Word 2016.dotm"

② 复制wll文件

将"D:\Program Files (x86)\MathType\MathPage\32\MathPage.wll"文件拷贝到"C:\Users\Administrator\AppData\Roaming\Microsoft\Word\STARTUP"中

 

2019-11-20 19:38:57 NOSEC2019 阅读数 133
  • 2015年下半年上午真题28-31

    1.了解嵌入式项目开发方法流程 2.掌握基本的嵌入式项目开发能力 3.串口服务项目实践 4.嵌入式WEB服务器移植 5.数据采集控制系统实践

    455人学习 任铄
    免费试看

22.png

介绍

我想分享最近发现的一个有趣现象,提前说明,这是我基于最新的Windows 10操作系统以及最新的的MS Office 365所发现的。这也是我在开发网络钓鱼工具PhishAPI时偶然发现的。

大多数用户都知道,在打开文档时,经常会出现“受保护视图”模式。该模式会防御很多以前出现的Office安全问题,导致诸如IP地址、操作时间戳、操作系统/Office版本,甚至NTLMv2等信息被窃取!

背景

在Microsoft Office文档中嵌入隐藏的HTTP和UNC调用并不是一种新技术,正如大多数人所知道的那样,像Word文档(docx)这样的文件实际上是包含xml数据的压缩文件。如要自己确定这点,只需用压缩软件打开docx文件,或者将其重命名为.zip,然后直接打开。

33.png

这些压缩文件往往包含多种资源,例如图像以及引用它们的xml文件。当然也可以使用外部的图像,这就是HTTP调用存在的意义。你可以直接引用一个外部URI,而不是文件内部的物理路径。

你也可以将图像设置为隐藏,这样就不会在文档中看到。红队团队经常使用这种技术配合Netcat设置一个监听端口(类似于nc -lv 0.0.0.0 80),来判断目标是否上钩。

通过PhishAPI,我能为新文档自动创建xml信息,以及为现有文档插入一个钩子。不需要手动更改xml或或Word文档,一切都可以快速轻松地完成。

PhishAPI会生成一个Web服务来监听这些请求,并捕获IP地址、user-agent、凭证(比如Phishery,通过使用basic-auth)等。如果是通过UNC调用发出的SMB请求,还能抓取到hash。

如果你想手工操作,以下就是Word文档中的xml部分:

44.png

为了防御这种威胁,微软在2010版本后的Office文档中增加了一个名为“受保护视图”的功能。你必须点击顶部的“启用”才能更改或运行动态内容。在这种模式下,宏和其他动态/远程内容都不会运行。实际上,当这个文档来自本地之外的某个地方时,就会设置一个标志来启用受保护视图。一旦你手动覆盖它一次,这个标志就会被重置,将不会再次提示。也就是把这个文件标记为安全。

55.png

一般来说,PhishAPI会试图欺骗用户点击“启用编辑”,否则你很难收集到任何信息。

发现

我使用PhishAPI中的默认模板生成了一个新钓鱼文档,就像我以前做过的钓鱼测试一样。当我准备把它发给了另一个同事时,惊讶地发现这个文档已经发回了信息。但这是一个从互联网上下载的文档,本应处于“受保护视图”模式,我也从没打开过!

66.png

我很快意识到这是因为我在Windows 10的文件管理器中使用了“预览窗格”。只是突出显示文档就会导致内部的payload在Windows上运行。因为这只是一个“预览”,所以不受“受保护的视图”影响。这对我来说很有趣,因为我之前一直以为文档的预览不会触发动态或远程内容。

77.png

你可以从上面的图片中看到,尽管这个文件还没有打开,我依然收到了通知。不过当我直接打开它时,仍然会提示“受保护视图”。

好的,HTTP请求的确可以,那么发出SMB请求会导致泄露NTLMv2么?我在本地监听了445/139端口,在测试中也成功收到了我自己的hash!

88.png

为了更全面的测试,我还改造了Excel,往其中插入了宏,但貌似并不可以:

99.png

最后,我注意到另一件事,Office 365(在Web浏览器中处理)也不存在“受保护视图”,会正常触发HTTP请求。因此,如果你的目标正在使用Office 365,那么这是很好的钓鱼方式。不过目前我还无法窃取到hash。

虽然“预览窗格”不可能总是会在目标的机器上启用,但这是一种新的攻击角度。我注意到当上传文件到网站时,主流浏览器(至少包括Firefox和Chrome)默认启用预览。以下截图是我在文件浏览器中禁用预览窗格并通过Firefox和Chrome (Slack)上传文件后的截图,你可以在第二幅图像的背景中看到提示信息。

100.png

110.png

结论

如果日常的钓鱼攻击中,目标可能会在处理恶意文档时会产生一种错误的安全感,认为只要不打开文档就安全,或者打开文件但不点击许可就安全。但是,就像我刚才演示的那样,类似于“浏览”之类的功能有可能会触发payload。只要恶意文档还留在目标的机器中,就一直有中招的可能。这也解释了为什么我的一些钓鱼文档在测试结束后几个月才返回信息。

我已经将该漏洞发送给微软的MSRC团队。但不幸的是,经过一周多的等待,他们认为这是一个计划在未来解决的问题,并不会给我奖励,也不打算给出解决时间。这对我来说真是个坏消息,但对红队的人来说,他们可以长期使用Office文档的这个“特征”了。

我们的团队确定此问题不需立刻修复。不过它将是未来版本中的改进点之一。目前我们不会提供任何安全更新,这个问题的讨论就结束。

微软未将你的报告确认为安全漏洞。尽管所有缺陷都是漏洞,但这并不需要立刻修补。

虽然我的发现没有完全绕过“受保护视图”,但我认为这仍然存在敏感信息泄露的风险。某种程度上它比直接绕过更为严重,因为这甚至不需要打开文件。我希望这篇文章能缩短这个问题的解决时间。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/3195.html
来源:https://medium.com/@curtbraz/getting-malicious-office-documents-to-fire-with-protected-view-4de18668c386

office2016简体中文版

阅读数 3766