测验依据字符频度检测Powershell混杂

访客5年前黑客工具607

在我从前的文章中,从前描述过运用ObfuscatedEmpire来自动化C2通道中的PowerShell混杂,以躲避杀毒软件的签名,在那篇文章中,我也提到了其他人提出的用于检测歹意PowerShell脚本的技能。该技能开始由微软的李•霍尔姆斯(Lee Holmes)提出的,是为了搜索混杂发作的一些头绪。
例如,Invoke-Obfuscation运用的令牌混杂技巧是将撇号,行将`刺进到函数称号和其他登录凭证中。Invoke-Empire可能会成为iN`v`OK`e-`eM`p`IR`e,不过这些功用在PowerShell中的效果和Invoke-Empire是类似的,但会损坏与文字字符串“Invoke-Empire”匹配的杀软签名。可是,我真的期望脚本中的一半字符是由撇号组成吗? Lee早在2019年11月就对这一类型的检测办法进行过介绍。不过,在这篇文章中,我将首要参阅他最近的一篇文章,该文为咱们供给了一些十分棒的PowerShell功用,并运用Measure-CharacterFrequency和Measure-VectorSimilarity完成一些含糊检测技能。
本文基本上仅仅我重现Lee在他这篇文章中的一些检测技能,其中就包括一个可用于检测含糊化脚本的封装脚本。
这个脚本就是Invoke-ObfuscationDetection,首要的效果就是用作函数的封装器,可用于操作依据字符剖析的混杂检测功用。Invoke-ObfuscationDetection会把PowerShell脚本界说为“正常”字符散布的基线,经过核算给定的PowerShell脚本的字符散布,界说给定脚本有必要满意的字符散布的向量类似度,然后依据回来的布尔值是True或False来判别脚本是否被含糊化。
Invoke-ObfuscationDetection会回来一个“IsObfuscated”这样的布尔成果,给定一个包括脚本的字符串:
PS> Invoke-ObfuscationDetection -Script 'iN`v`OK`e-`eM`p`IR`e'
Obfuscated
----------
      True
Invoke-ObfuscationDetection还承受包括脚本的文件名作为输入的-ScriptPath参数:
PS /opt/ObfuscatedEmpire/data/obfuscated_module_source/> Get-ChildItem -Recurse -Include *.ps1 | Invoke-ObfuscationDetection | % { $_.Obfuscated } | Group-Object
Count Name                      Group
----- ----                      -----
   72 True                      {True, True, True, True...}
    2 False                     {False, False}
该指令显现Invoke-Obfuscation的TokenAll1指令混杂的Empire模块上的Invoke-ObfuscationDetection的成果,我还能够经过Invoke-ObfuscationDetection(启用ScriptBlock日志记载)来供给ScriptBlock日志:
PS> Get-WinEvent -FilterHashtable @{ProviderName="Microsoft-Windows-PowerShell"; Id = 4104} | % { [PSCustomObject] @{ ScriptName = $_.Properties[3].Value; Script = $_.Properties[2].Value } } | Invoke-ObfuscationDetection | Select -First 2
Name                                 Obfuscated
----                                 ----------
2980cef2-ed31-4146-870a-a395b2d3debf       True
431be04f-98a5-47cf-8e47-e565ccf6e520      False
在评论Invoke-ObfuscationDetection的有效性之前,我认为有必要解释一下测验办法, Invoke-ObfuscationDetection在完成时,其更大的应战就是要确认什么才干构成“正常”的PowerShell脚本。能够经过下载poshcode.org上的每个脚本,删去Windows Defender中有意混杂的脚本和辨认为歹意软件的脚本(一共5552个脚本),并运用Measure-CharacterFrequency功用得到均匀字符散布。
接下来的应战就是确认均匀字符散布时可承受的差异,由于并不是每个脚本都完全符合均匀字符散布。尽管我会运用Measure-VectorSimilarity函数来丈量每个脚本与均匀字符散布的差异,但我怎么决议哪些差异是能承受的,哪些是不能承受的?经过测验,我发现仍是运用多年来的经历比较靠谱。我对5552个脚本中的一半进行了测验(以防止过度拟合),发现有一半会经过我供给的Measure-CharacterFrequency来确认均匀字符散布。
检测的有效性验证
现在敞开杀软环境,当我将一个含糊化的脚本供给给Invoke-ObfuscationDetection时,会发作假阴性过错,可是它没有被检测为混杂。当我向Invoke-ObfuscationDetection供给一个没有含糊化的脚本时,会发作假阳性过错,但它被检测为混杂。
在这样的情况下,确认假阳性或假阴性率发作的概率便十分重要,为此运用我多年的测验经历,我在测验过的脚本中确认了一些类似性较高的混杂脚本,以便把假阳性和假阴性的概率降到更低。我会对测验的脚本运用Invoke-Obfuscation的TokenAll1指令进行混杂,而将未混杂的那一半脚本提交给Invoke-ObfuscationDetection以确认假阳性发作的概率,然后我会将这些脚本提交到Invoke-ObfuscationDetection以确认假阴性发作的概率。
下图中,X轴代表类似度要求,Y轴代表发作的概率。

[1] [2]  黑客接单网

相关文章

黑客高手接单 黑客高手联系方式_找黑客查支付宝实名

在JavaScript中,你的方法是运用名为web worker的东西。 这些web worker与你在其他言语中运用的线程略有不同。 默许状况下,它们不同享内存。 2018年8月14日,微软发布了针...

温故知新:寻觅新缝隙,绕过JS沙箱的约束

在参加缝隙赏金方案的过程中,我发现了一个网站,其间包括十分风趣的功用——该网站答应我根据用户操控的表达式过滤掉一些数据。例如,我能够写出相似于book.price > 100这样的条件,并让该网...

黑客组织有谁接单_找黑客帮忙把钱要回来-找黑客解锁网赌账户

「黑客组织有谁接单_找黑客帮忙把钱要回来-找黑客解锁网赌账户」这种查询的成果必定是这种http://tiechemo.com/page.asp?id=1和1=2(由于120大于109)。 咱们接着测验...

查开放-黑客网

脚本转化日志5月· 安全研究人员Jason Rhineland发现Monero带着一个答应从数字钱银买卖所中进行偷盗的缝隙。 这个之前已修正的Monero钱包余额显现bug在买卖所钱包中又呈现了,这可...

CORS(跨域资源共享)错误配置漏洞的高级利用-黑客接单平台

嗨,咱们好!我是来自摩洛哥的安全研讨员Ayoub。本文我将为咱们介绍两种CORS过错装备缝隙运用的状况:第一种状况是根据XSS,第二种状况是根据高档的CORS运用技能。 留意:在开端阅览本文之前,你需...

黑客大牛在线接单真假_找黑客解封qq空间

有(包含脚本内容)在介绍SharedArrayBuffers之前,我需求解说一下并行运转代码和JavaScript。 在网络安全范畴中,猜测网络违法和歹意软件发展趋势好像现已成为了各大网络安全公司的传...