powershell命令大全黑客(powershell shell)

http://www.itjxue.com  2023-03-03 21:23  来源:未知  点击次数: 

哪些方法可以绕过PowerShell Execution Policy

默认情况下,PowerShell禁止PowerShell脚本在Windows系统中执行。这会妨碍渗透测试员,系统管理员,和开发人员……在这里我将在没有系统管理员权限的情况下通过15个方法来绕过PowerShell execution policy。

我肯定还有很多的技术漏了(或者我根本不知道),但希望这篇文章将给需要它的人提供一个良好的开端。

什么是PowerShell Execution Policy?

PowerShell execution policy 是用来决定哪些类型的PowerShell脚本可以在系统中运行。默认情况下,它是“ Restricted ”(限制)的。然而,这个设置从来没有算是一种安全控制。相反,它会阻碍管理员操作。这就是为什么我们有这么多绕过它的方法。包括一些微软提供的。更多关于在PowerShell执行政策设置,默认的安全控制的设置。我建议阅读Carlos Perez的 博客 。他提供了一个很好的概述。

为什么要绕过执行政策?

我听到的最多的原因是因为人们希望实现自动化操作,但下面还有一些其他原因致使PowerShell在管理员、渗透测试员、黑客们手中如此流行:

支持Windows

能调用Windows API

能在不写入磁盘的情况下运行命令

能避免病毒的检测

总是被标记为"信任"。是大部分应用程序的白名单一员。

曾写出过许多的开源渗透测试工具包

如何查看Execution Policy

在能够使用所有完美功能的PowerShell之前,攻击者可以绕过“Restricted”(限制)execution

policy。你可以通过PowerShell命令“executionpolicy“看看当前的配置。如果你第一次看它的设置可能设置为

“Restricted”(限制),如下图所示

PS C: Get-ExecutionPolicy

同样值得注意的是execution policy可以在系统中设置不同的级别。要查看他们使用下面的命令列表。更多信息可以点击这里查看微软的“Set-ExecutionPolicy” 。

Get-ExecutionPolicy -List | Format-Table -AutoSize

实验环境说明

在下面的例子中我将使用一个名为runme.ps1的脚本,它将包含以下PowerShell命令来写出一个消息到控制台:

Write-Host "My voice is my passport, verify me."

当我试图在一个带有默认execution policy的系统上执行它时,我得到以下错误:

如果你目前的execution

policy是开放的,你想让它更严格的测试,下面的技巧,然后从管理员PowerShell控制台运行命令“Set-ExecutionPolicy

Restricted”。OK,那我接着BB了,接下来我会通过15种方法来绕过PowerShell execution policy的限制。

绕过PowerShell Execution Policy

1. 把脚本直接粘贴到交互式的PowerShell控制台

复制并粘贴你的PowerShell脚本为一个交互式控制台如下图所示。但是,请记住,你将被当前用户权限限制。这是最基本的例子,当你有一个交互控制台时,可以方便快速地运行脚本。此外,这种技术不会更改配置或需要写入磁盘。

2. Echo脚本并PowerShell的标准输入

简单的ECHO脚本到PowerShell的标准输入。这种技术不会导致配置的更改或要求写入磁盘。

Echo Write-Host "My voice is my passport, verify me." | PowerShell.exe -noprofile -

3. 从文件中读取脚本并通过PowerShell的标准输入

使用Windows的"type"命令或PowerShell的"Get-Content"命令来从磁盘读取你的脚本并输入到标准的

PowerShell中,这种技术不会导致配置文件的更改,但是需要写入磁盘。然而,如果你想试图避免写到磁盘,你可以从网络上读取你的脚本。

例1:Get-Content Powershell命令

Get-Content .runme.ps1 | PowerShell.exe -noprofile -

例2:Type 命令

TYPE .runme.ps1 | PowerShell.exe -noprofile -

4. 从网络上下载脚本并通过IEX执行它

这种技术可以用来从网上下载一个PowerShell脚本并执行它无需写入磁盘。它也不会导致任何配置更改。我已经看到它有许多创造性的使用方法,但最近看到它被引用到一个不错的Matt Graeber的PowerSploit博客上。

powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('')"

5. 使用Command

这种技术和通过复制和粘贴来执行一个脚本是非常相似的,但它可以做没有交互式控制台。这是很好的方式适合执行简单的脚本,但更复杂的脚本通常容易出现错误。这种技术不会导致配置更改或要求写入磁盘。

例1:完整的命令

Powershell -command "Write-Host 'My voice is my passport, verify me.'"

例2:简短的命令

Powershell -c "Write-Host 'My voice is my passport, verify me.'"

6. 使用EncodeCommand

这和使用"Command"命令非常像,但它为所有的脚本提供了一个Unicode /

Base64编码串。通过这种方式加密你的脚本可以帮你绕过所有通过"Command"执行时会遇到的错误。这种技术不会导致配置文件的更改或要求写入磁

盘。下面的示例来自 Posh-SecMod。

例1: 完整的命令

$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

例2: 通过简短的命令使用编码串

powershell.exe -Enc VwByAGkAdABlAC0ASABvAHMAdAAgACcATQB5ACAAdgBvAGkAYwBlACAAaQBzACAAbQB5ACAAcABhAHMAcwBwAG8AcgB0ACwAIAB2AGUAcgBpAGYAeQAgAG0AZQAuACcA

7. 使用Invoke-Command命令

我在obscuresec的博客看到了这种有趣的方法。这是一个典型的通过交互式PowerShell控制台执行的方法。但最酷的是当PowerShell远程处理开启时我可以用它来对远程系统执行命令。这种技术不会导致配置更改或要求写入磁盘。

invoke-command -scriptblock {Write-Host "My voice is my passport, verify me."}

基于obscuresec博客,下面的命令还可以用来抓取从远程计算机的execution policy并将其应用到本地计算机。

invoke-command -computername Server01 -scriptblock {get-executionpolicy} | set-executionpolicy -force

8. 使用Invoke-Expression命令

这是另一个典型的通过交互式PowerShell控制台执行的方法。这种技术不会导致配置更改或要求写入磁盘。下面我列举了一些常用的方法来通过Invoke-Expression绕过execution policy。

例1:使用Get-Content的完整命令

Get-Content .runme.ps1 | Invoke-Expression

例2:使用Get-Content的简短的命令

GC .runme.ps1 | iex

9.使用"Bypass"标记Execution Policy

当你通过脚本文件执行命令的时候这是一个很好的绕过execution policy的方法。当你使用这个标记的时候"没有任何东西被阻止,没有任何警告或提示"。这种技术不会导致配置更改或要求写入磁盘。

PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1

10. 使用"Unrestricted"标记Execution Policy

这类似于"Bypass"标记。当你使用这个标记的时候,它会"加载所有的配置文件并运行所有的脚本。如果你运行从网上下载的一个未被签名的脚本,它会提示你需要权限",这种技术不会导致配置的更改或要求写入磁盘。

PowerShell.exe -ExecutionPolicy UnRestricted -File .runme.ps1

11. 使用 "Remote-Signed"标记Execution Policy

创建你的脚本,然后按照教程的操作。最后,使用下面的命令运行它:

PowerShell.exe -ExecutionPolicy Remote-signed -File .runme.ps1

12. 通过交换AuthorizationManager禁用ExecutionPolicy

这真是一个我碰到的来自的创意。下面的函数可以通过一个交互式的PowerShell来执行。一旦函数

被调用"AuthorizationManager"就会被替换成空。最终结果是,接下来的会话基本上不受execution

policy的限制。然而,它的变化将被应用于会话的持续时间。

function Disable-ExecutionPolicy {($ctx = $executioncontext.gettype().getfield("_context","nonpublic,instance").getvalue( $executioncontext)).gettype().getfield("_authorizationManager","nonpublic,instance").setvalue($ctx, (new-object System.Management.Automation.AuthorizationManager "Microsoft.PowerShell"))} Disable-ExecutionPolicy .runme.ps1

13. 把ExcutionPolicy设置成Process Scope

正如我们在引言中所看到的,执行策略可以应用于多层次的。这包括你控制的过程。使用这种技术,执行策略可以被设置为您的会话的持续时间不受限制。此外,它不会导致在配置更改,或需要写入到磁盘。我最初发现这种技术来自r007break博客。

Set-ExecutionPolicy Bypass -Scope Process

14. 通过命令设置ExcutionPolicy为CurrentUser Scope

这种方法和上面那种类似。但是这种方法通过修改注册表将当前用户环境的设置应用到当前用户的环境中。此外,它不会导致在配置更改,或需要写入到磁盘。我最初发现这种技术来自r007break博客。

Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted

15. 通过注册表设置ExcutionPolicy为CurrentUser Scope

在这个例子中,我展示了如何通过修改注册表项来改变当前用户的环境的执行策略。

HKEY_CURRENT_USER\Software\MicrosoftPowerShell\1\ShellIds\Microsoft.PowerShell

总结

我觉得这里的主题是:使用的execution policy不一定是开发商,管理员,或者。微软从来没有打算将它成为一个安全控制。这就是为什么有这么多选择绕过它。微软很好地提供了一些本地选项和安全社区也拿出一些真正有趣的把戏。

PowerShell 基本语法及常用命令

PowerShell常用命令:

一 Get类

1.Get-Command : 得到所有PowerShell命令,获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的基本信息。 包括Cmdlet、Alias、Function。

2.Get-Process : 获取所有进程

3.Get-Help : 显示有关 Windows PowerShell 命令和概念的信息

4.Get-History : 获取在当前会话中输入的命令的列表

5.Get-Job : 获取在当前会话中运行的 Windows PowerShell 后台作业

6.Get-FormatData : 获取当前会话中的格式数据

7.Get-Event : 获取事件队列中的事件

8.Get-Alias : 获取当前会话的别名

9.Get-Culture :获取操作系统中设置的当前区域性

12.Get-Member : 获取对象的属性和方法。

13.Get-Random : 从集合中获取随机数或随机选择对象

14.Get-UICulture : 获取操作系统中当前用户界面 (UI) 区域性设置

15.Get-Unique : 从排序列表返回唯一项目

16.Get-Variable :获取当前控制台中的变量

17.Get-EventLog : 获取本地或远程计算机上的事件日志或事件日志列表中的事件

18.Get-ChildItem : 获取一个或多个指定位置中的项和子项

19.Get-Content : 获取指定位置的项的内容

20.Get-ItemProperty :获取指定项的属性

21.Get-WmiObject : 获取 Windows Management Instrumentation (WMI) 类的实例或可用类的相关信息

22.Get-Location :获取当前工作位置的相关信息(如:F:\Users\TaoMin )

23.Get-PSDrive:获取当前会话中的 Windows PowerShell 驱动器

24.Get-Item:获取位于指定位置的项

25.Get-Process :获取在本地计算机或远程计算机上运行的进程

26.Get-Service : 获取本地或远程计算机上的服务

27.Get-Transaction :获取当前(活动)事务

28.Get-ExecutionPolicy :获取当前会话中的执行策略

二.Set类 (set类命令一般都含有参数)

1.Set-Alias : 在当前 Windows PowerShell 会话中为 cmdlet 或其他命令元素创建或更改别名(替代名称)

2.Set-PSDebug :打开和关闭脚本调试功能,设置跟踪级别并切换 strict 模式

3.Set-StrictMode :建立和强制执行表达式、脚本和脚本块中的编码规则

4.Set-Date :将计算机上的系统时间更改为指定的时间

5.Set-Variable :设置变量的值,如果该变量还不存在,则创建该变量

6.Set-PSBreakpoint :在行、命令或者变量上设置断点

7.Set-Location :将当前工作位置设置为指定的位置

8.Set-Item :将项的值更改为命令中指定的值

9.Set-Service :启动、停止和挂起服务并更改服务的属性

10.Set-Content :在项中写入内容或用新内容替换其中的内容

11.Set-ItemProperty :创建或更改某一项的属性值

12.Set-WmiInstance :创建或更新现有 Windows Management Instrumentation (WMI) 类的实例

13.Set-ExecutionPolicy :更改 Windows PowerShell 执行策略的用户首选项。

三.Write类

1.Write-Host : 将自定义输出内容写入主机。类似于.net的 write()或者writeline()功能

2.Write-Progress :在 Windows PowerShell 命令窗口内显示进度栏

3.Write-Debug :将调试消息写入控制台

4.Write-Verbose:将文本写入详细消息流

5.Write-Warning :写入警告消息

6.Write-Error : 将对象写入错误流

7.Write-Output : 将指定对象发送到管道中的下一个命令;如果该命令是管道中的最后一个命令,则在控制台上显示这些对象

8.Write-EventLog :将事件写入事件日志

PowerShell变量、常量、数组:

一、变量

PowerShell的变量无需预定义,可直接使用。当使用一个变量时,该变量被自动声明。

变量以 $ 符号开头。如: $a

PowerShell普通变量:

1.给变量赋值:

方式一:

$a = "This is a string"

$b = 123

$c = 0.125

方式二:

Set-Variable var 100

Set-Variable var1 ”test“

Set-Variable va2 800

2.获取变量值

get-variable var #获取单个变量值

get-variable var* #获取多个变量值

3.清空变量值

clear-variable var

4.删除变量

remove-variable var

5.连接两个字符串变量

$a = "This is the 1st string"

$b = "This is the 2nd string"

a + " and " + $b

$c

结果:This is the 1st string and This is the 2nd string

6.变量的方法

$date = Get-Date #获取当前时间

$date.AddDays(3) #当前时间加三天

PowerShell特殊变量:

强制指定变量类型:

一般不需要为PowerShell的变量指定类型。但是也可以强制指定变量类型。

如:[int] $b = 5

常见变量类型如下:

二、常量

三、数组

PowerShell注释用法:

PowerShell运算符用法:

运算符如下:

1.算术二元运算符:

2.赋值运算符

3.逻辑运算符

PowerShell函数用法:

用法一如下:(函数中改变变量值并不影响实际值)

执行结果:

用法二如下:(函数中变量值的改变要用$Script:var的形式)

执行结果:

PowerShell条件控制的用法:

一、循环类

1.foreach的用法

用法一如下:

执行结果:

用法二如下:直接获取管道数据

执行结果:

2.while的用法

用法一如下:

n -le 5) #当 n

$n++

}

执行结果:

用法一如下:

n

n -ne 3) #当$n3时进行循环操作

执行结果:

用法一如下:

n

n -gt 3) #当$n3时停止操作

执行结果:

二、分支类

1.if用法

if语法结构如下:

用法如下:

执行结果:

2.switch用法

switch语法结构如下:

用法一如下: switch(表达式)

执行结果:

用法二如下:switch -casesensitive (表达式)表示区分大小写

执行结果: It's Monday

用法三如下:switch -regex(表达式)表示正则表达式匹配

执行结果:字母+数字,匹配为:day6

用法四如下:switch -regex(表达式)表示正则表达式匹配 表达式可为数组

执行结果:字母+数字,匹配为:day5

用法五如下:switch -wildcard (表达式)表示通配符匹配

执行结果:day2,匹配为:day2

三、跳转类

1.break用法:break语句出现在foreach、for、while、switch等结构中时,break语句将使windows powershell立即退出整个循环。

用法如下:

执行结果:

2.continue用法:continue语句出现在foreach、for、while等循环结构中时,continue语句将使windows powershell立即退出某一次轮循环,并继续下一轮循环。

用法如下:

执行结果:

PowerShell抛出异常的Throw用法:

用法如下:

返回结果:danger 及详细错误信息

PowerShell获取出错信息的用法:

用法如下:

function one

{

get-process -ea stop #-ea定义错误发生以后该如何继续执行,意同-ErrorAction

get-childitem ada -ErrorAction stop #此处有错误 路径ada不存在

get-process -ErrorAction stop

}

返回结果:报出错误信息

PowerShell单步调试的用法:

用法如下:

执行结果:会出现逐步调试的对话框

本文转自

又一新型恶意Win 11升级网站被发现

又一新型恶意Win 11升级网站被发现

又一新型恶意Win 11升级网站被发现,根据研究人员的分析,这是一种新型恶意软件,当受害者下载后,会获得一个包含恶意软件的ISO文件,又一新型恶意Win 11升级网站被发现。

又一新型恶意Win 11升级网站被发现1

自 Windows 11 系统 2021 年 6 月发布以来,不断有各种活动欺骗用户下载恶意的 Windows 11 安装程序。虽然这种情况在过去一段时间里有所遏制,但现在又卷土重来,而且破坏力明显升级。

网络安全公司 CloudSEK 近日发现了一个新型恶意软件活动,看起来非常像是微软的官方网站。由于使用了 Inno Setup Windows 安装程序,它分发的文件包含研究人员所说的“Inno Stealer”恶意软件。

恶意网站的URL是“windows11-upgrade11[.com]”,看来 Inno Stealer 活动的威胁者从几个月前的另一个类似的恶意软件活动中吸取了经验,该活动使用同样的伎俩来欺骗潜在的受害者。

CloudSEK说,在下载受感染的ISO后,多个进程在后台运行,以中和受感染用户的系统。它创建了Windows命令脚本,以禁用注册表安全,添加 Defender 例外,卸载安全产品,并删除阴影卷。

最后,一个.SCR文件被创建,这是一个实际传递恶意有效载荷的文件,在这种情况下,新颖的 Inno Stealer 恶意软件在被感染系统的以下目录中。恶意软件有效载荷文件的名称是"Windows11InstallationAssistant.scr"。

又一新型恶意Win 11升级网站被发现2

据Bleeping Computer网站消息,研究人员又发现黑客利用伪造的Windows 11系统升级来传播恶意软件的攻击事件,目标是窃取用户的浏览器数据甚至虚拟货币钱包。

Microsoft官方在提供Windows 11升级时会为用户提供升级工具,以检查其设备是否具备升级条件。但黑客利用了部分用户懒于确认自身设备的硬件信息,通过炮制一个看似官方的升级页面,放置“立即下载”按钮诱导用户不加思索地上钩。

伪造的WIndows 11升级网站

根据CloudSEK的威胁研究人员的分析,这是一种新型恶意软件,因使用了 Inno Setup Windows 安装程序,而被称为“Inno Stealer”。研究人员表示,Inno Stealer 与目前其他信息窃取程序代码没有任何相似之处,也没有发现该恶意软件被上传到 Virus Total 平台。

当受害者下载后,会获得一个包含恶意软件的ISO文件,Inno Stealer通过 ISO 中包含的“Windows 11 setup”可执行文件进行加载,使用 CreateProcess Windows API 生成一个新进程,并植入4个恶意脚本以删除注册表安全、绕过Defender防护、卸载相关安全软件。

至于Inno Stealer的功能,则包括收集 Web 浏览器 cookie 和存储的凭证、虚拟货币钱包中的'数据以及文件系统中的数据。研究人员列出了可被针对的WEB浏览器35款,虚拟货币钱包39款。

此外,研究人员还发现了Inno Stealer 的一个有趣特性:网络管理和数据窃取功能是多线程的,所有被盗数据通过 PowerShell 命令复制到用户的临时目录并加密,然后发送受黑客控制的C2服务器.。

近来,通过伪造Windows 11升级来窃取信息的恶意软件已多次出现,比较典型的是今年2月,RedLine 恶意软件就曾通过虚假的Windows 11升级网页来传播有效载荷,以窃取用户的敏感数据。

又一新型恶意Win 11升级网站被发现3

据 Neowin 报道,自从 Windows 11 于 2021 年 6 月首次发布以来,已经有许多活动旨在诱使人们下载虚假的恶意 Windows 11 安装程序。虽然这种活动平息了一段时间,但似乎现在又卷土重来,这一次,情况可能更加致命。如今 Windows 11 已经普遍可用,使其成为当今的危险场景。

CloudSEK 网络安全公司发现了一个类似性质的新恶意软件,新的冒名顶替网站看起来像微软官方网站,但实际上,由于使用 Inno Setup Windows,分发的文件包含了“Inno Stealer”恶意软件安装程序。这是一种新颖的窃取信息恶意软件,在 Virus Total 上没有发现类似的样本。

恶意网站的 URL 是“windows11-upgrade11 [.] com”,似乎 Inno Stealer 活动策划者几个月前从另一个类似恶意软件活动中获取了页面,使用相同的技巧来欺骗潜在的受害者。

CloudSEK 表示,下载受感染的 ISO 后,会在后台运行多个进程以感染用户的系统。它创建 Windows 命令脚本以禁用注册表安全性、添加排除 Defender 、卸载安全产品并删除 shadow volumes。

最后,会创建一个 .SCR 文件,该文件是实际传递恶意负载的文件,在这种情况下,受感染系统出现以下目录中的新型 Inno Stealer 恶意软件:

C:Users\AppDataRoamingWindows11InstallationAssistant

恶意软件负载文件的名称是“Windows11InstallationAssistant.scr”。

以下是用图表解释的整个过程:

CloudSEK 已确定 Inno 信息窃取恶意软件所追求的目标,包括浏览器和加密钱包。

如何使用Windows Power Shell

Windows Power Shell 是微软新推出的一个替代cmd命令行的工具,具体的功能和作用小编这里就不详细介绍了,项了解更多信息可以百度搜索,或者在百度百科中查看详细的介绍,在win7系统中默认自带这个工具,小编下面来分享下如何使用Windows PowerShell这个工具

首先第一步和第二步我们来说下如何打开powershell工具

点击系统的“开始”图标,然后在打开菜单中,选择“运行”,在打开的运行对话框中输入powershell回车就可以打开

powershell工具打开后如下图所示,第一眼给我们感觉就是CMD命令提示行嘛,请仔细看下,其实这不是CMD命令工具,在下面第三步中,小编将powershell和cmd命令工具做个简单对比

这里同时打开了一个cmd命令工具和一个powershell工具,下面小编就来简单的分析一下它们的区别

1、首先看标题栏最前面的执行文件的图标不一样

2、继续看标题栏,它们的标题栏不一样,最后面的执行文件是不一样的,一个是cmd.exe一个是powershell.exe

3、打开的窗口中的第一行的提示信息不一样,表示两个不同的工具

4、在powershell命令操作最前面有大写的PS,但是cmd命令行工具最前面是没有的

如何查看powershell的帮助信息

输入以下命令中的任何一个都可以查看帮助信息:

man、help、get-help

这里使用的是命令man,帮助信息做的还算比较人性化,也有中文的帮助信息,比较难得

如何查看 powershell 已经定义的一些别名(别名:把原本是比较长的字符命令,通过定义成比较简单的几个字符,以后输入重新定义的简单的字符命令并执行,也可以执行原来的命令,目的是简单、方便、省时)

输入alias或者gal或者get-alias都可以查看系统已经定义好的别名,目前小编使用的powershell有137个别名,很多的别名和linux系统中的命令类似,如:ls、cp、mv、rm、rmdir、ps等

powershell里面很多的命令都和linux里面的命令类似,同时powershell也可以使用以前cmd命令工具里面的命令,下面给出一个简单的示例:用ls和dir都可以查看当前目录的文件信息,查看的信息默认以列表的形式查看

并不是所有的cmd命令工具都可以直接在powershell工具中使用,有的是稍微做一些修改的,小编这里也举一个简单的例子来说明:

查看网络信息的命令ipconfig/all 和 ipconfig /all?这两个命令都可以在cmd命令工具中使用,但是只有ipconfig /all才能在powershell

如何退出powershell

直接输入命令exit就可以退出powershell,当然直接点右上方的 X 也是可以退出的。

用Powershell框架Empire进行内网域渗透(一)

自从powershell在windows开始预装之后,就成为Windows内网渗透的好帮手,好处多多:天生免杀、无文件落地、 无日志(雾) 。

于是老外开发了 empire 框架,毕竟 cobalt strike 要收费的不是?

功能模块丰富,老外把内网[域]渗透中能用到的都整合进去了:内网探测,提权,凭据获取,横向移动,权限维持。模块那么多,不懂就 searchmodule 或者[tab]两下。

基于 debian 系的,如kali或者ubuntu都可以安装。

git clone

在执行安装脚本之前,建议修改软件源和 pip 源,避免因为网络问题安装失败。

sudo ./setup/install.sh

安装好后执行 ./empire 后就可以用了。

先查看可用的 Listener 有哪些?[tab]两下就出来了所有可用的。

通过 info 查看指定模块的配置信息

这里还是先使用http的监听,通过 set Port 8080 修改监听的端口, 2.x版必须同时设置 Host ,然后 execute 启动监听。

通过list命令查看正在运行的监听

可以通过usestager来生成文件,引诱对方运行,可以看到支持linux、Windows、osx。

这里我们选用launcher_bat,通过 info 查看可以配置的参数。

这里需要注意的是Listener的Name,必须跟前面启用的Listener的一致。

生成的文件内容是这样子的

其中那么一大段的powershell命令,跟 (Empire: listeners) launcher powershell test 的执行结果是一样的。这里先不关心怎么让其在别的机子上运行,那是另外的技术活。

用win7的cmd执行了那一串命令后,进程中可以看到有powershell.exe

执行 agents 命令查看回连的机子,然后 interact BNR1T9ZC 来与之进行交互。

通过 help 命令可以查看到在agent上可以执行很多命令。这里挑些重要的讲。

bypassuac ,顾名思义就是绕过uac的。除非你是本机的administrator,否则普通管理员都需要右键某个程序,然后选择 run as administrator 才能运行,这都是uac作的怪。

因为这里是用普通域用户权限执行的,连本机的普通管理员都不算,所以失败了。

sc,屏幕截图命令,可以通过这个了解机子上的人正在做什么。

我们看看usemodule还有哪些可用的模块?(有些模块需要对应权限才能成功运行)

输入 help agentcmds 可以看到可供使用的常用命令

执行 ipconfig 查看网卡信息(如果不在help列表中,那么会自动执行远程主机上的可用命令)

可以看到dns的ip是1.1.1.10,既是域控的ip

当你获得一个会话之后,又想要派生更多会话,怎么办?

使用 invoke_shellcode 来注入 meterpreter 的shellcode

metasploit先要设置一个 listener

然后empire执行

成功获取meterpreter会话(才怪, empire2.5 版本)

在session1建立到1.1.1.0/24网段的路由跳转

run autoroute -s 1.1.1.0/24

通过sesesion1打通网段后,可以看到域控服务器1.1.1.10开放的端口

使用ms17010成功获取meterpreter会话。

至此,域控拿下,可以开始漫游内网。(还是得靠metasploit,单一个empire做的事情很有限)

获取域管理员的明文凭据

用后渗透模块 credential_collector 收集可用的凭据

empire 可以直接使用 mimikatz 来获取凭据。 注意,此时客户端上powershell进程占用的cpu可达90%,会引起卡顿

creds 查看获取的凭据

利用pth来传递hash,用这个hash创建一个新的进程,可以看到新的进程id是3032

然后 credentials/tokens 查看不同用户的进程id

对指定进程steal_token之后,再去与agent交互就是域用户user的权限了。

用revtoself再切换回原来的权限(普通域用户权限太低做不了什么)

到这里尝试了好几个 situational_awareness/network/powerview 的模块返回的都是空结果,看来是需要域管理员才能执行成功。

碰巧域管理员也登陆这台机子,那么就能用他的权限做很多事情了。

也可以使用 usemodule management/psinject 进行切换,设置好ProcessId即可

现在我们又获得了一次域管理员权限,可以开始横向移动了。

先内网探测下可用的机子有哪些,使用了 situational_awareness 中的三个模块:

find_localadmin_access user_hunter get_domain_controller

又一次可以确定1.1.1.10就是域控所在了。用 lateral_movement/invoke_psexec 移动到域控服务器上面。

终于又回到了域控服务器,接下来要考虑的是如何导出域控上面的所有hash,并且维持权限。

(责任编辑:IT教学网)

更多

推荐微信营销文章