前言
昨天封面图太阴间了,吓到各位好哥哥了,错了错了,下次不敢了,特献上福利图一张。
在某些渗透测试过程中,我们需要在目标机器上获取重要内容,比如Office的Word、Excel文件,大多数我们都是直接下载到本地进行查看,且这类行为不是高危行为一般不会拦截,但这个操作我们也可以使用C#实现,然后使用如CobaltStrike之类的C2进行C#加载读取文件。
读取Word
首先,我们要知道的是word文件的本质还是一个zip压缩文件,比如之前说过的word模板文件钓鱼,也是通过解压缩之后编辑xml文件来实现远程模板加载,其文件结构如下:
而文件内容则保存在worddocument.xml中
到C#中,其实也很简单,首先使用zip打开文件
ZipFile.OpenRead(docPath)
然后获取文件内的xml文件
archive.GetEntry(@"word/document.xml")
然后就是读取xml文件了
using (var stream = xmlFile.Open())
{
using (var reader = new StreamReader(stream))
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(stream);
XmlNodeList plaintext = xmldoc.GetElementsByTagName("w:t");
DateTime date = DateTime.Now;
Console.WriteLine("n" + date + ": " + "Reading Document: " + docPath + "nn");
for (int i=0; i < plaintext.Count; i++)
{
Console.WriteLine(plaintext[i].InnerText);
}
System.Environment.Exit(0);
}
}
最终效果:
读取Excel
因为excel的特殊性,我们在读取时一般依赖现成的库文件,即Microsoft Excel XX.X Object Library,微软地址如下:
http://msdn.microsoft.com/en-us/library/dd264733.aspx
有了现成的库就好办了,首先调用库
using Excel = Microsoft.Office.Interop.Excel;
然后创建com的引用
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"sandbox_test.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
最后for循环遍历打印,最后效果如下
参考文章:https://github.com/OG-Sadpanda/SharpSword
本文始发于微信公众号(鸿鹄实验室):渗透技巧 ----- 使用C#读取office内容
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论