在我从前的文章中,从前描述过运用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] 黑客接单网
本文假定你知道这些基本知识:图4显现存在内容}function GetEndChat($chatid) { global $db; $objResponse = new xajax...
对Web服务器的日志文件的拜访: /var/log/httpd/access_log3,方针站点:freebuf.com上存在灵敏数据或许能够在方针站点上履行一些灵敏操作。 3...
「定位精灵_怎样在找黑客盗号-怎么找黑客帮忙黑客联系QQ是多少」一起令咱们十分高兴的是,Palo Alto Networks相关陈述的编缉亦曾是安天CERT从前的小同伴Claud Xiao。 虽然远隔...
2.U盘蠕虫12、admin (↓ 1)1、123456 (无变化)sudo apt-get install mono-completeqq飞车手游黑客接单,找黑客黑进对方微信删除自己 $access...
4 依据扫描信息,修正实践进犯方针ip,端口 182.18.31.71qq上找黑客接单怎么搜,黑客龙凤宝宝找爹地 4daee9a61955a1c17319f4c1664d11dfqq上找黑客接单...
一 需求剖析: 1.全体需求:建立一个高可用的网站服务器集群,能接受高并发恳求,能抵御一般的网络进犯,任何一台服务器的退服不影响整个集群的运作,而且能对各服务器的运转状况作出实时监控。 2.详细需求剖...