4.2、PowerShell

为了保障木马样本的体积很小利于传播。攻击者会借助宏->WMI->Powershell的方式下载可执行文件恶意代码。最近也经常会遇见利用Powershell通过Windows自带的组件执行系统命令绕过UAC下载文件手法的文章。

  • UAC:用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。

  • PowerShell:Windows PowerShell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的对象,在病毒样本传播与渗透测试场景中用于下载第二阶段的病毒文件和执行文件。

4.2.1 Powershell代码阅读扫盲

(1) 环境介绍
  • 开发工具

开发工具可以使用自带的Windows PowerShell ISE。

PowerShell的运行后缀为.ps1,也可以通过交互式运行。

:Windows下PowerShell默认的权限级别是Restricted,如果在Restricted权限运行PowerShell会提示错误信息:

  • 代码调试

自带的编译器常用快捷键:F9下断点、F5执行、F10单步执行


PS C:\WINDOWS\system32> xx.ps1
有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
+ CategoryInfo : SecurityError: (:) [],ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess

解决方案

将执行权限修改为RemoteSigned或者Unrestricted:


Set-ExecutionPolicy RemoteSigned
(2) Powershell启动命令参数
  • EncodedCommand

使用此参数向PowerShell传递base64编码字符串并运行。

变种使用方法:

方式1:"-enc"
方法2:"-Enc"
方法3:"-EncodedCommand"
方法4:"-encodedcommand"
方法5:"-encodedCommand"
方法6:"-ec"
方法7:"-en"
方法8:"-ENC"
  • WindowStyle Hidden

使用此参数避免PowerShell执行时显示运行窗口。其中“-window hidden”方法使用最多主要与前文提到的Cerber勒索软件有关。

变种使用方法:

方式1 :"-window hidden"
方法2 :"-W Hidden"
方法3 :"-w hidden"
方法4 :"-windowstyle hidden"
方法5 :"-win hidden"
方法6 :"-WindowStyle Hidden"
方法7 :"-win Hidden"
方法8 :"-wind hidden"
方法9 :"-WindowStyle hidden"
方法10:"-WindowStyle hiddeN"
方法11:"-windows hidden"
方法12:"-WindowStyle hiddeN"
方法13:"-windows hidden"
方法14:"-Win Hidden"
方法15:"-win hid"
方法16:"-Windows hidden"
方法17:"-Wind Hidden"
方法18:"-Win hidden"
  • NonInteractive

使用此参数避免显示一个交互对话窗口。此方法与WindowStyle隐藏方法配合使用以隐藏执行痕迹。

其中使用“-noni”的变种中76%是通用型的shellcode注入代码或SET工具,而使用“-NonI”的变种主要是PowerShell Empire工具。

变种使用方法:

方式1 :"-noni"
方法2 :"-Nonl"
方法3 :"-noninteractive"
方法4 :"-Nonlnteractive"
方法5 :"-nonl"
  • NoProfile

使用此参数阻止PowerShell在开机时加载配置文件脚本,以避免载入非预期的命令或设置。与非交互方式类似,“-nop”方法主要由SET和通用型shellcode注入变种采用,而“-NoP”方法主要由PowerShell Empire使用。

变种使用方法:

方式1 :"-nop"
方法2 :"-NoP"
方法3 :"-noprofile"
方法4 :"-NoProfile"
方法5 :"-noP"
  • ExecutionPolicy ByPass

使用此参数绕过默认的PowerShell脚本执行策略(即受限策略),可以执行任何代码。有趣的是,使用EncodedCommand参数执行的代码不受执行策略影响。

变种使用方法:

方式1:	"-ep bypass"
方式2: "-exec bypass"
方式3: "-executionpolicy bypass"
方式4: "-Exec Bypass"
方式5: "-ExecutionPolicy ByPass"
方式6: "-Exec ByPass"
方式7: "-ExecutionPolicy Bypass"
方式8: "-ExecuTionPolicy ByPasS"
方式9: "-exe byPass"
方式10: "-ep Bypass"
方式11: "-ExecutionPolicy BypasS"
方式12: "-Exe ByPass"
  • Sta

使用单线程模式(现在是PowerShell 3.0的默认模式)。此参数基本上是PowerShell Empire在使用。

变种使用方法:

方法1:"-sta"
  • NoExit

使用此参数阻止PowerShell在运行启动命令后退出。这是PowerWorm恶意软件除EncodedCommand参数外使用的唯一参数。

变种使用方法:

方法1:"-noexit"
  • ExecutionPolicy Hidden

这实际上不是一个有效的参数,因此PowerShell会忽略该参数。使用该参数的每个样本我都标记为与“TXT C2”脚本有关,该脚本试图加载一个包含另一段PowerShell脚本的DNS TXT记录,与PowerWorm类似。可能攻击者本来想使用的是ByPass参数,因为他们的后续命令中使用了“-w hidden”参数。

变种使用方法:

方法1:"-ep hidden"
  • NoLogo

避免PowerShell启动时显示版权信息。

变种使用方法:

方式1:	"-Nol"
方式2: "-NoL"
方式3: "-nologo"
方式4: "-nol"
  • ExecutionPolicy Unrestricted

与ByPass类似,但会在运行从Internet下载的未签名脚本前警告用户。使用此参数的脚本在试图执行从Internet下载的脚本时会触发警告信息。

变种使用方法:

方式1:	"-ExecutionPolicy Unrestricted"
  • Command

利用该参数可以执行参数后面的命令,就如同直接在PowerShell提示符下输入命令一样。我只捕捉到一个样本,它直接附加到某个恶意软件中,该恶意软件在FireEye发布的一篇关于绕过基于签名的检测方法的博文中提到过。该PowerShell脚本包含在一个DOCM文件的“Comments“域中,通过Word文档的宏加载执行。以下是该样本的恶意PowerShell代码片段,通过将多条命令组合在一起,可以实现FTP传输和NetCat建连目的。

变种使用方法:

方式1:	"-c"

常见组合示例代码:

方式1:	"-window hidden -enc"
方式2: "-enc"
方式3: "-nop -noni -enc"
方式4: "-NoP -sta -Nonl -W Hidden -Enc"
方式5: "-EncodedCommand"
方式6: "-ep bypass -noni -W Hidden -Enc"
方式7: "-Nop -Nonl -W Hidden -Enc"
方式8: "-nop -win hidden -noni -enc"
方式9: "-executionpolicy bypass -windowstyle hidden -enc"
方式10: "-nop -exec bypass -win Hidden -noni -enc"

测试下载本地计算器示例代码:

1)下载文件:在捕获到的样本中最常用的办法就是使用.net框架下的System.Net.WevClient类的DownloadFile()方法来下载文件。

2)运行文件:运行计算机上的可执行文件或文档,例如.exe或.txt文件。

示例代码:01-PowerShell基本语句.ps1

# 1、下载文件

pOWErsHell.ExE -exEcUTIonPOLICy BYpAsS -nOprOFile -winDOWStyLE HiDden (NEW-objeCt SYSTeM.Net.weBCLIEnT).DOWNloaDfIlE('file://C:\Windows\System32\calc.exe','D:\powershell_calc.EXE');

# 1.1 拆分代码

$client = new-object System.Net.WebClient
$client.DownloadFile(‘file://C:\Windows\System32\calc.exe’, ‘D:\powershell_calc.EXE’) # 2、运行文件 sTArt-PrOCeSS 'D:\powershell_calc.EXE'
(3) 交互式SHELL

与Office Macor的不同,Powershell有许多内置的交互式Shell命令。

    • 01 获取帮助命令
Get-Help
    • 02 查找实现指定任务的命令
Get-Command 

Get-command pwd  # 查看pwd对应的Powershell命令

Get-command ls   # 查看ls对应的Powershell命令  

Get-command cd   # 查看cd对应的Powershell命令
    • 03 将管道输出的结果保存到文件中

通过Out-File命令或者重定向>>操作符将输出结果保存到文件中。


Get-Command | Out-File D:\unicodefile.txt
    • 04 获取进程信息

Get-Process
    • 05 环境变量

dir ENV: # 查看所有环境变量
$ENV:COMPUTERNAME # 查看计算机名
    • 06 获取历史命令

Get-History
  • 07 向文件的结尾处加入信息

Get-Process >> D:\files.txt Get-Process | Out-File -Append D:\files.txt "Hello zzzhhh" >> D:\files.txt
(4) 变量

初始化变量的方式,是在变量后加入$+变量名,其次是除了花括号字符{}和冒号(

脚本病毒分析扫描专题2-Powershell代码阅读扫盲的更多相关文章

  1. 脚本病毒分析扫描专题1-VBA代码阅读扫盲、宏病毒分析

    1.Office Macor MS office宏的编程语言是Visual Basic For Applications(VBA). 微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功 ...

  2. 【病毒分析】对一个vbs脚本病毒的分析

    [病毒分析]对一个vbs脚本病毒的分析 本文来源:i春秋社区-分享你的技术,为安全加点温度 一.前言 病毒课老师丢给我们一份加密过的vbs脚本病毒的代码去尝试分析,这里把分析过程发出来,供大家参考,如 ...

  3. Ramnit蠕虫病毒分析和查杀

    Ramnit是一种蠕虫病毒.拥有多种传播方式,不仅可以通过网页进行传播,还可以通过感染计算机内可执行文件进行传播.该病毒在2010年第一次被安全研究者发现,从网络威胁监控中可以看出目前仍然有大量的主机 ...

  4. VBS脚本病毒特点及如何防范3(转)

    5.Vbs病毒生产机的原理介绍 所谓病毒生产机就是指可以直接根据用户的选择产生病毒源代码的软件.在很多人看来这或许不可思议,其实对脚本病毒而言它的实现非常简单. 脚本语言是解释执行的.不需要编译,程序 ...

  5. 猪懂傻改之《powershell 代码规范》

    猪懂傻改之<powershell 代码规范> 脚本程序员或许都经历过这样的场景:接手别人的代码时,因为没有注释,变量名五花八门,模块之间逻辑关系如麻,弄得满头雾水,一脸茫然,痛定思痛之后不 ...

  6. spo0lsv病毒分析

    1.样本概况 1.1 样本信息 病毒名称:spo0lsv.exe 所属家族:Worm MD5值:512301C535C88255C9A252FDF70B7A03 SHA1值:CA3A1070CFF31 ...

  7. [FreeBuff]Trojan.Miner.gbq挖矿病毒分析报告

    Trojan.Miner.gbq挖矿病毒分析报告 https://www.freebuf.com/articles/network/196594.html 竟然还有端口转发... 这哥们.. 江民安全 ...

  8. 一份通过IPC$和lpk.dll感染方式的病毒分析报告

    样本来自52pojie论坛,从事过两年渗透开始学病毒分析后看到IPC$真是再熟悉不过. 1.样本概况 1.1 样本信息 病毒名称:3601.exe MD5值:96043b8dcc7a977b16a28 ...

  9. 小技巧——病毒分析中关闭ASLR

    原文来自:https://bbs.ichunqiu.com/thread-41359-1-1.html 病毒分析中关闭ASLR 分析病毒的时候,尽可能用自己比较熟悉的平台,这样可以大大地节省时间,像我 ...

随机推荐

  1. centOS基本操作和命令(更新)

    1.文字输入和图形界面切换 CTRL+ALT+(F1~F6)为切换至文字输入,分别对应六个不同输入界面,可用以不同账号:CTRL+ALT+F7为切换至图形界面 2.修改时区 date -R date ...

  2. Mysql索引机制B+Tree

    1.问题引入 有一个用户表,为了查询的效率,需要基于id去构建索引.构建索引我们需要考虑两个方面的问题,1个是查询的效率,1个是索引数据的存储问题.该表的记录需要支持百万.千万.甚至上亿的数据量,如果 ...

  3. 洛谷 P1850 换教室 解题报告

    P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1≤i≤n) ...

  4. 【codeforces 765F】 Souvenirs

    http://codeforces.com/problemset/problem/765/F (题目链接) 题意 给出$n$个数的序列,$m$次询问,每次查询区间$[l,r]$之间相差最小的两个数的差 ...

  5. 安装elasticsearch5.4.1集群和head插件

    这里用的系统版本是CentOS6.6. 192.168.3.56 ES01 192.168.3.49 ES02 192.168.3.57 ES03 1.为三个节点安装java环境 # yum inst ...

  6. Eureka的原理

    http://blog.csdn.net/awschina/article/details/17639191 关于AWS的区域和可用区概念解释: Eureka的原理:Region与Zone. 因为在编 ...

  7. SSH框架搭建问题总结

    1.eclipse中tomcat配置是否正确?能否在网页中访问的到? 如何在eclipse中配置tomcat就不说了,我们看下问题,在网页上访问tomcat的地址,为什么出现404错误呢? 解决办法: ...

  8. (转)Python中的generator详解

    本文转自:http://www.cnblogs.com/xybaby/p/6322376.html 作者:xybaby 注:本文在原文基础上做了一点点修改,仅仅作为个人理解与记忆,建议直接查看原文. ...

  9. java8 新特性 Stream

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  10. "\n" 与"\r" 区别

    关于换行和回车其实平时我们不太在意,所以关于两者的区别也不太清楚,在平时开发时可能会遇到一些文件处理的问题,放到不同的操作系统上出现各种坑.那么回车和换行到底有哪些区别呢?今天咱们就来总结一下. 1. ...