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

访客5年前黑客工具608

在我从前的文章中,从前描述过运用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]  黑客接单网

相关文章

24小时黑客接单,找黑客 追回被骗的钱,黑客论坛怎么找黑客

假定GET/POST/COOKIE一起提交的参数id,服务端接纳参数id的次序是什么样呢?0×2 事情剖析}"; 113号为真实服务器回来的SYN/ACK包,ttl=53,与ping的成果共同。 (核...

梦见我老婆去赌博输了钱叫都叫不回来

DC可以发现,出错了,但是被afdko捕获了。 2、在防火墙中对远程桌面服务端口(3389)进行阻断在域中新建一个用于测试的账户topsec,一个域管理员admin梦见我老婆去赌博输了钱叫都叫不回来,...

黑客查查接单网址_黑客教程通过手机号找信息-外网怎么找黑客

指令:PS:函数称号自己起的,比较傻,咱们将就着用黑客查查接单网址,黑客教程通过手机号找信息 它现在能够导出 :黑客查查接单网址,黑客教程通过手机号找信息,外网怎么找黑客4. 制止呼应ICMP路由布告...

苹果手机破解,顶尖黑客qq联系方式,网络兼职找黑客

一点点主意select * from admin where id=1e0union select 1,'2',db_name() from adminBCTF是由蓝莲花战队举行的网络安全夺旗挑战赛,...

一些可能导致跨域信息泄漏的DOM API-黑客接单平台

对帧的数量的正确核算 (Frame Count) Window DOM API 记载了如安在其他阅读环境中遍历跨域窗口的办法,办法之一便是运用文档(window.length)中的帧的数量。 let...

破解qq相册,黑客怎么找手机软件,改大学挂科成绩找黑客

DNS从头绑定  图片2:重定向链$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);在本次实验中,请...