棧欺騙技術的作用是什么?

好的,我們來詳細解釋一下“棧欺騙技術”(Stack Spoofing)的作用。

簡單來說,棧欺騙技術的核心作用是隱藏程序(尤其是惡意軟件或安全工具)的真實調用鏈,使其逃避基于棧回溯(Stack Walk)的安全檢測機制。

下面我們從幾個層面來分解它的作用:

1. 對抗動態安全檢測(EDR/AV)

現代終端安全產品,如EDR(終端檢測與響應)?和高級防病毒(AV)?軟件,會實時監控系統上程序的運行。當它們檢測到一個可疑的API調用(例如,一個進程試圖分配內存或創建遠程線程)時,它們會執行一個名為?“棧回溯”?的操作。

  • 什么是棧回溯?

    • 棧是內存中的一個區域,用于存儲函數調用信息。當一個函數被調用時,它的返回地址、參數和局部變量會被壓入棧中。
    • 當安全產品檢測到一個危險調用時,它會從當前函數開始,沿著棧向上回溯,查看是哪個函數序列(調用鏈)最終導致了這次調用。這就像查看一份“誰命令誰去做這件事”的清單。
  • 一個典型的惡意調用鏈可能是這樣的:

    • 惡意代碼 -> VirtualAllocEx(分配內存) -> WriteProcessMemory(寫入數據) -> CreateRemoteThread(執行代碼)
    • 如果EDR看到這個完整的調用鏈都來自一個已知的惡意模塊,它會立即終止進程并報警。
  • 棧欺騙如何起作用?

    • 棧欺騙技術會人為地清理或修改棧幀,使得在回溯時,危險的API調用看起來像是來自一個合法的、可信的系統模塊(如ntdll.dll),而不是來自惡意的二進制文件。
    • 例如,欺騙后,調用鏈可能看起來像這樣:
      • 合法的系統模塊(如ntdll.dll) -> SomeInternalFunction -> CreateRemoteThread
    • 這樣,EDR進行棧回溯時,看不到惡意軟件的蹤跡,會認為這個危險操作是系統正常行為的一部分,從而繞過檢測

2. 繞過堆棧 Cookie(/GS)保護(歷史背景)

“棧欺騙”這個概念早期也與繞過微軟的?/GS(緩沖區安全檢查)?編譯選項有關。

  • /GS保護:通過在棧上的函數返回地址前放置一個隨機值(Canary/Cookie),并在函數返回前檢查該值是否被改變,來防止棧溢出攻擊。
  • 早期的棧欺騙:指的一種攻擊技術,通過精心構造的漏洞利用,在不觸發Cookie檢查的情況下,欺騙系統執行攻擊代碼。不過,現代對此術語的理解更多集中在對抗EDR上。

3. 具體技術實現方式

棧欺騙通常通過以下幾種方式實現:

  1. 直接系統調用(Syscall)

    • 不通過系統的kernel32.dllntdll.dll提供的標準API函數,而是直接編寫匯編指令,發起系統調用進入內核。
    • 這本身就縮短了調用鏈,避免了在用戶態棧上留下明顯的惡意API痕跡。攻擊者通常會進一步偽造調用幀,讓棧回溯看起來更“干凈”。
  2. 返回地址欺騙(Return Address Spoofing)

    • 手動覆蓋棧上的返回地址,將其指向一個合法模塊(如ntdll.dll)中的地址。當安全軟件回溯時,會誤以為調用源自那個合法模塊。
  3. 線程堆棧欺騙(Thread Stack Spoofing)

    • 創建一個掛起的新線程,將其棧內存完全清空或覆蓋為無意義的數據或合法模塊的地址,然后將其指令指針(EIP/RIP)指向惡意代碼。當這個線程恢復執行并調用敏感API時,其棧上是“干凈”的,沒有指向惡意代碼的指針。

總結:棧欺騙技術的作用

作用層面具體描述
主要目的規避和繞過基于棧回溯的動態安全分析,特別是現代EDR和AV軟件的檢測。
實現方法通過修改、清理或偽造調用棧幀,使危險的系統調用看起來源自可信的系統模塊。
技術手段直接系統調用(Syscall)、返回地址欺騙、線程堆棧欺騙等。
受益者主要被惡意軟件開發者紅隊(Red Team)?人員使用。前者用于隱藏自身,后者用于測試防御體系的強度。
重要性它是現代免殺(Antivirus Evasion)?技術和生活(Living Off The Land)?技術中的關鍵一環,極大地增加了攻擊的隱蔽性。

重要提示:棧欺騙是一種高級的規避技術。理解和研究它對于網絡安全專業人員(藍隊、滲透測試員)至關重要,以便能更好地防御和檢測此類攻擊。但此技術不應被用于非法活動。

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

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

相關文章

Nano-banana 模型對接教程:最懂創作者的 AI 模型,比GPT-4o還強!

Nano-banana 模型對接教程(含 BaseURL) Nano Banana 是谷歌推出的革命性 AI 圖像編輯模型,代表了從"AI繪畫工具"到"AI創意伙伴"的范式轉移。它不再是被動執行指令,而是能深刻理解已有圖像的上下文、光影、物…

CEEMDAN-PSO-CNN-GRU 鋰電池健康狀態預測matlab

代碼說明 這個實現包含以下主要組成部分: 數據準備:加載并預處理鋰電池容量數據,劃分訓練集和測試集 CEEMDAN分解:將原始信號分解為多個本征模態函數(IMF)和一個殘差項 PSO優化:使用粒子群算法優化CNN-GRU網絡的超參數 CNN-GRU模型:構建并訓練卷積神經網絡與門控循環…

MySQL 主從讀寫分離架構

我們首先來詳細、清晰地講解 MySQL 主從讀寫分離架構,然后逐一解答你提出的以及補充的高頻面試問題。第一部分:MySQL 主從讀寫分離架構詳解1. 什么是主從復制與讀寫分離?你可以把它想象成一個 “團隊作戰” 的模式。主數據庫 (Master)&#x…

HTML 中的 CSS 使用說明

CSS 使用說明 1. CSS 概述 CSS (Cascading Style Sheets) 是一種用于描述 HTML 或 XML(包括如 SVG、MathML 等 XML 方言)文檔呈現的樣式表語言。CSS 描述了元素應該如何在屏幕、紙張或其他媒體上顯示。 2. CSS 的基本語法 CSS 規則由兩個主要部分組成…

gitlab推送失敗,內存不足的處理

git提交時報錯: 2025-09-03 20:03:32.583 [info] > git push origin master:master [4866ms]2025-09-03 20:03:32.583 [info] fatal: Out of memory, malloc failed (tried to allocate 1048576000 bytes)看了下服務器內存,空余的只有幾百M了。 用hto…

【FastDDS】Discovery ( 05-Discovery Server Settings)

發現服務器設置 這種機制基于客戶端-服務器發現模式,即元流量(域參與者之間用于識別彼此的消息交換)由一個或多個服務器域參與者管理(左圖),而在簡單發現(右圖)中,元流量通過IP多播協議等消息廣播機制進行交換。有一款發現服務器工具可簡化發現服務器的設置和測試。 …

Xilinx ZYNQ 開發環境中搭建Qt環境

在 Xilinx ZYNQ 開發環境中搭建 Qt 環境,意味著你要開發運行在 ZYNQ 嵌入式 Linux 系統上的 GUI 應用程序。這比在 PC 上搭建 Qt 要復雜一些,因為它涉及交叉編譯:在你的 PC(主機)上編譯出能在 ZYNQ 芯片(目標機)的 ARM Cortex-A9 核心上運行的程序。 整個過程可以分為以…

【數學建模】用代碼搞定無人機煙幕:怎么擋導彈最久?

前言:歡迎各位光臨本博客,這里小編帶你直接手撕**,文章并不復雜,愿諸君耐其心性,忘卻雜塵,道有所長!!!! **🔥個人主頁:IF’Maxue-CSDN…

linux Kbuild詳解關于fixdep、Q、quiet、escsq

linux Kbuild詳解關于if_changed_rule的any-prereq和arg-check原理及info調試關于fixdep沒有展開,這里說下。 文章目錄1. escsq2. Q、quiet2. 1 make V(0、1、2)2. 2 make V(0、1)來控制Q、quiet3. fixdep3. 1 fixdep是什么3. 2 fixdep為什么3.2.1 .conf…

notepad++ 正則表達式

在 Notepad 中,正則表達式(Regular Expressions, Regex) 是一個強大的搜索和替換工具,可以高效地處理文本。以下是 Notepad 正則表達式 的指南:1. 如何在 Notepad 中使用正則表達式打開搜索窗口:快捷鍵 Ctr…

MySQL Cluster核心優缺點

MySQL Cluster 是 MySQL 官方提供的 分布式、內存優先、高可用 的數據庫解決方案(基于 NDB 存儲引擎)。它采用 Share-Nothing 架構,數據自動分片(Sharding)并分布在多個節點上,適用于需要極高可用性和實時性…

訓練+評估流程

訓練評估流程1、要求2、訓練評估(PyTorch TensorBoard )完整代碼(單文件示例)運行方法功能對應表3、pytorch自定義評估要繼承哪個類?4、HF Trainer和SB35、 匯總1. PyTorch Lightning TensorBoard ModelCheckpoint …

【開題答辯全過程】以 基于Android的點餐系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人,語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

【音視頻】Http-FLV 介紹

一、Http-FLV 原理 HTTP-FLV 是基于 HTTP 協議的 FLV(Flash Video)流媒體傳輸方式。它使用 HTTP 協議而不是傳統的 RTMP 協議來傳輸 FLV 格式的視頻流。HTTP-FLV 在 Web 視頻直播場景中得到了廣泛應用,尤其是在不支持或不希望使用 RTMP 協議的…

uniapp vue頁面傳參到webview.nvue頁面的html或者另一vue中

在app內部使用 uni.$emit(collectiones, { data: gx });傳到webview.nvue頁面 在webview.nvue頁面接受 uni.$on(collectiones, (data) > {console.log(接收到的數據:, data.data);});使用evalJS方法 nvue webview通信示例 這塊使用receiveMessageFromNvue方法這樣傳入的 u…

美團大模型“龍貓”登場,能否重塑本地生活新戰局?

美團大模型“龍貓”登場,能否重塑本地生活新戰局? 美團大模型登場:行業投下重磅炸彈 在大模型技術迅猛發展的當下,每一次新模型的發布都如投入湖面的石子,激起層層漣漪。美團推出的龍貓大模型 LongCat-Flash&#xff0…

shell(十三)參數代換

shell參數代換xargs. 產生命令的參數1. cut -d : -f 1 /etc/passwd | head -n 3 | xargs finger2. 執行前詢問用戶cut -d : -f 1 /etc/passwd | head -n 3 | xargs -p finger如果直接按回車就退出3. 指定查閱參數個數cut -d : -f 1 /etc/passwd | xargs -p -n 5 finger4. 指定遇…

Proteus 仿真 + STM32CubeMX 協同開發全教程:從配置到仿真一步到位

為幫助你精準掌握「Proteus 仿真 STM32CubeMXSTM32F103R6」的協同開發流程,本文將聚焦該芯片的特性,從工具適配、分步實操到進階案例,用富文本格式清晰呈現細節,尤其適合新手入門 32 位單片機開發:ProteusSTM32CubeMX…

WIN10+ubuntu22.04.05雙系統裝機教程

最近DIY了一臺5070TI顯卡主機,目的是跑IsaacSim5.0仿真,記錄雙系統裝機過程。 1.Ubuntu22.04.05系統盤制作 參考教程:01_【U盤制作ubuntu22.04啟動盤并為電腦安裝系統記錄】_制作ubuntu22.04安裝u盤-CSDN博客 U盤因為是64G的,而…

構建高可用二級緩存系統

二級緩存機制原理詳解1. 整體架構MyBatis-Plus二級緩存采用裝飾器模式實現,核心組件包括:?Cache接口?:定義緩存基本操作?PerpetualCache?:基礎緩存實現(HashMap)?裝飾器?:如LruCache、Fif…