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. BZOJ 2143 飞飞侠(分层最短路)

    飞飞国是一个N×M的矩形方阵,每个格子代表一个街区.然而飞飞国是没有交通工具的.飞飞侠完全靠地面的弹射装置来移动.每个街区都装有弹射装置.使用弹射装置是需要支付一定费用的.而且每个弹射装置都有自己的弹 ...

  2. P1503 鬼子进村

    题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. 题目描述 描述 县城里 ...

  3. STL Deque 容器

    STL Deque 容器 Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双 端的,而vector是单端的.         ...

  4. Python画统计图

    https://blog.csdn.net/jenyzhang/article/details/52046372

  5. 【python】vscode python环境配置

    安装python插件:ext install python 配置flake8:pip install flake8 配置yapf:pip install yapf(在VScode中按Alt+Shift ...

  6. 模板:CDQ分治

    UPD:18.06.15修正一些错误,感谢评论区巨佬orz CDQ分治不是一个顾名思义的东西,CDQ分治是为了纪念神犇陈丹琦而命名的一种算法. 那么CDQ分治能干什么?CDQ分治主要是用来解决一类”操 ...

  7. metasploit出错信息:can't allocate memory

    出现不能分配内存的原因: 1.postgresql服务未启动 启动服务 service postgresql start 2.虚拟机内存分配过小,如:512M 将kali虚拟机的内存扩展到1G 出错图 ...

  8. 【AGC010F】Tree Game

    Description 有一棵\(n\)个节点的树(\(n \le 3000\)),第\(i\)条边连接\(a_i,b_i\),每个节点\(i\)上有\(A_i\)个石子,高桥君和青木君将在树上玩游戏 ...

  9. gitlab相关

    1.gitlab的概述 1.gitlab是什么 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 基础功能免费,高级功能收费 2.为什么要使用gitla ...

  10. CentOS 6.6搭建LNMP环境

    一.安装前 1.关闭linux的安全机制 vim /etc/selinux/config SELINUX=enforcing  改为  SELINUX=disabled 2.关闭iptables防火墙 ...