内容简介:SilkETW是一款针对ETW(Event Tracing for Windows)的自定义C#封装工具,该工具可以通过抽象化的方式简化ETW的复杂性,并帮助分析人员对目标应用进行内部架构以及运行机制方面的研究。虽然SilkETW是一款防御端应用程序,但是它目前所处的阶段仍只是研究工具。为了方便大家使用,输出数据被序列化成了JSON格式。JSON数据可以直接在本地使用PowerShell进行加载和分析,也可以转移到类似
SilkETW
SilkETW是一款针对ETW(Event Tracing for Windows)的自定义C#封装工具,该 工具 可以通过抽象化的方式简化ETW的复杂性,并帮助分析人员对目标应用进行内部架构以及运行机制方面的研究。虽然SilkETW是一款防御端应用程序,但是它目前所处的阶段仍只是研究工具。
为了方便大家使用,输出数据被序列化成了JSON格式。JSON数据可以直接在本地使用PowerShell进行加载和分析,也可以转移到类似 Elasticsearch 这样的第三方平台进行分析。
工具实现细节
代码库
SilkETW基于.NET v4.5开发,并使用了大量 第三方库 :
ModuleId VersionLicenseUrl
-------- -----------------
McMaster.Extensions.CommandLineUtils 2.3.2 https://licenses.nuget.org/Apache-2.0
Microsoft.Diagnostics.Tracing.TraceEvent2.0.36 https://github.com/Microsoft/perfview/blob/master/LICENSE.TXT
Newtonsoft.Json 12.0.1 https://licenses.nuget.org/MIT
System.ValueTuple 4.4.0 https://github.com/dotnet/corefx/blob/master/LICENSE.TXT
YaraSharp 1.3.1 https://github.com/stellarbear/YaraSharp/blob/master/LICENSE
命令行参数&选项
命令行的使用方式比较简单,用户在输入数据后即可获取验证结果:
JSON输出结构
JSON输出在进行序列化处理之前,会按照下列C#结构进行格式化:
public struct EventRecordStruct
public Guid ProviderGuid;
public List<String> YaraMatch;
public string ProviderName;
public string EventName;
public TraceEventOpcode Opcode;
public string OpcodeName;
public DateTime TimeStamp;
public int ThreadID;
public int ProcessID;
public string ProcessName;
public int PointerSize;
public int EventDataLength;
public Hashtable XmlEventData;
}
请注意,根据不同的服务提供方以及事件类型,程序会在XmlEventData哈希表中存储不同的变量数据,下面给出的是针对”Microsoft-Windows-Kernel-Process”-> “ThreadStop/Stop”的JSON输出样本:
"ProviderGuid":"22fb2cd6-0e7b-422b-a0c7-2fad1fd0e716",
"YaraMatch":[
],
"ProviderName":"Microsoft-Windows-Kernel-Process",
"EventName":"ThreadStop/Stop",
"Opcode":2,
"OpcodeName":"Stop",
"TimeStamp":"2019-03-03T17:58:14.2862348+00:00",
"ThreadID":11996,
"ProcessID":8416,
"ProcessName":"",
"PointerSize":8,
"EventDataLength":76,
"XmlEventData":{
"FormattedMessage":"Thread11,996 (in Process 8,416) stopped. ",
"StartAddr":"0x7fffe299a110",
"ThreadID":"11,996",
"UserStackLimit":"0x3d632000",
"StackLimit":"0xfffff38632d39000",
"MSec":"560.5709",
"TebBase":"0x91c000",
"CycleTime":"4,266,270",
"ProcessID":"8,416",
"PID":"8416",
"StackBase":"0xfffff38632d40000",
"SubProcessTag":"0",
"TID":"11996",
"ProviderName":"Microsoft-Windows-Kernel-Process",
"PName":"",
"UserStackBase":"0x3d640000",
"EventName":"ThreadStop/Stop",
"Win32StartAddr":"0x7fffe299a110"
}
}
工具使用
在PowerShell中过滤数据
在PowerShell的帮助下,你可以直接从SilkETW中导入JSON输出:
function Get-SilkData {
param($Path)
$JSONObject = @()
Get-Content $Path | ForEach-Object {
$JSONObject += $_ |ConvertFrom-Json
}
$JSONObject
}
在下面的样例中,我们将从内核收集进程的事件数据,并通过加载图片来验证Mimikatz的执行。我们可以使用下列命令收集到我们想要的数据:
SilkETW.exe -t kernel -kk ImageLoad -ot file -p C:\Users\b33f\Desktop\mimikatz.json
获取到数据之后,我们就可以根据属性来对数据进行 排序 、搜索和过滤了:
Yara
SilkETW提供了Yara功能来过滤数据或标记事件数据。虽然Yara规则普遍适用于防御端,但我们也可以在这里可以将其用于ETW研究。
在下面这个样例中,我们使用了Yara规则来检测内存中的Seatbelt执行:
rule Seatbelt_GetTokenInformation
strings:
$s1 ="ManagedInteropMethodName=GetTokenInformation" ascii wide nocase
$s2 ="TOKEN_INFORMATION_CLASS" ascii wide nocase
$s3 = /bool\(native int,valuetype\w+\.\w+\/\w+,native int,int32,int32&/
$s4 = "locals(int32,int64,int64,int64,int64,int32& pinned,bool,int32)" ascii widenocase
condition:
all of ($s*)
}
我们可以使用下列命令收集.NET ETW数据,“-yo”参数表明我们只能将Yara匹配写入磁盘:
SilkETW.exe -t user -pn Microsoft-Windows-DotNETRuntime -uk 0x2038 -l verbose -yC:\Users\b33f\Desktop\yara -yo matches -ot file -pC:\Users\b33f\Desktop\yara.json
我们可以看到Yara规则的运行时匹配情况:
SilkETW获取&构建
我们可以直接下载SilkETW源码并在Visual Studio中进行编译。
下载地址:【 点我下载预构建版本 】
项目地址
SilkETW:【 GitHub传送门 】
* 参考来源: fireeye ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 自定义MVC框架-封装模型层
- 封装自己的自定义转场组件
- 自定义MVC框架 -封装控制器层
- 详解自定义ajax支持跨域组件封装
- 自定义MVC框架-封装控制器基类
- Python+Selenium中级篇之8-Python自定义封装一个简单的Log类
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
服务设计与创新实践
宝莱恩 (Andy Polaine)、乐维亚 (Lavrans Lovlie)、里森 (Ben Reason) / 王国胜、张盈盈、付美平、赵芳 / 清华大学出版社 / 2015-6-1 / CNY 69.00
产品经济的时代渐行渐远,在以服务为主导的新经济时代,在强调体验和价值的互联网时代,如何才能做到提前想用户之所想?如何比用户想得更周到?如何设计可用、好用和体贴的服务?这些都可以从本书中找到答案。本书撷取以保险业为代表的金融服务、医疗服务、租车及其他种种服务案例,从概念到实践,有理有据地阐述了如何对服务进行重新设计?如何将用户体验和价值提前与产品设计融合在一起? 《服务设计与创新实践》适合产品......一起来看看 《服务设计与创新实践》 这本书的介绍吧!