吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4445|回复: 24

[汇编] ShellCode技术研究

  [复制链接]
Mrack 发表于 2015-7-25 20:07 | 显示全部楼层 |阅读模式

本帖最后由 Mrack 于 2015-7-25 20:11 编辑

                                   ShellCode技术研究

这几天在玩Shellcode,即兴就写了篇文章.除了介绍,其他都是我一字一字打出来的.

如有错误请大神们指教.小菜刚刚玩。

排版不好排。、。

介绍:Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。网络上数以万计带着漏洞顽强运行着的服务器给hacker和Vxer丰盛的晚餐。漏洞利用中最关键的是Shellcode的编写。由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握编写技术就显得尤重要。
大概过程:一、获取Kernel32.dll的基地址
二、枚举GetProcAddress
三、用GetProcAddress获取各种函数的地址.调用各种函数
编写ShellCode中用到的知识点:了解PE结构,C或者Asm

详细过程:获取Kernel32.dll的基地址
mov eax,fs:[30]               ;获取PEB结构
mov eax,[eax+c]              ;PEB_LDR_DATA结构
mov eax,[eax+1c]             ;取LDR_DATA_TABLE_ENTRY结构
mov eax,[eax]                ;取下一个(Ntdll.dll)
mov eax,[eax]                ;取下一个(Kernel32.dll)  
mov eax,[eax+8]              ;取DllBase
PEB结构:
typedef struct _PEB {
BYTE                          Reserved1[2];
  BYTE                          BeingDebugged;
  BYTE                          Reserved2[1];
  PVOID                         Reserved3[2];
  PPEB_LDR_DATA                 Ldr;    //指向PEB_LDR_DATA结构
  PRTL_USER_PROCESS_PARAMETERS  ProcessParameters;
  BYTE                          Reserved4[104];
  PVOID                         Reserved5[52];
  PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
  BYTE                          Reserved6[128];
  PVOID                         Reserved7[1];
  ULONG                         SessionId;
} PEB, *PPEB;
PEB_LDR_DATA:
typedef struct _PEB_LDR_DATA {
BYTE       Reserved1[8];
  PVOID      Reserved2[3];
  LIST_ENTRY InMemoryOrderModuleList;     //LDR_DATA_TABLE_ENTRY
} PEB_LDR_DATA, *PPEB_LDR_DATA;
LDR_DATA_TABLE_ENTRY:
typedef struct _LDR_DATA_TABLE_ENTRY {
    PVOID Reserved1[2];
    LIST_ENTRY InMemoryOrderLinks;
    PVOID Reserved2[2];
    PVOID DllBase;//加载的DLL的基址
    PVOID EntryPoint;
    PVOID Reserved3;
    UNICODE_STRING FullDllName;
    BYTE Reserved4[8];
    PVOID Reserved5[3];
    union {
        ULONG CheckSum;
        PVOID Reserved6;
    };
    ULONG TimeDateStamp;
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;

枚举GetProcAddress
首先我们得找到Nt_Header再通过这个获取输出表,枚举AddressOfNames,判断是否是GetProcAddress,然后读取AddressOfFunctions,获取RVA,计算函数地址.
PUSH EAX
MOV EAX,[EAX+3C]        ;Nt_Header
MOV EBX,[ESP]
MOV EBX,[EAX+EBX+78]   ;输出表地址 偏移
POP EAX
LEA EBX,[EAX+EBX]        ;ebx=输出表地址
MOV ECX,[EBX+18]        ;NumberOfNames
MOV EDX,[EBX+20]        ;AddressOfNames
ADD EDX,EAX
MOV EDI,[EBX+10]        ;Base
Start:
MOV ESI,[EDX+EDI*4]      ;枚举函数名地址
ADD ESI,EAX
CMP DWORD PTR [ESI],50746547 ;GetP
JNZ Next
CMP DWORD PTR [ESI+4],41636F72 ;rocA
JNZ Next
CMP DWORD PTR [ESI+8],65726464 ;ddre
JNZ Next
CMP WORD PTR [ESI+C],7373       ;ss
JNZ Next
JMPFinish
Next:
INC EDI
CMP EDI,ECX
JNZStart
Finish:
MOV EDX,[EBX+24]                ;AddressOfNameOrdinals
ADD EDX,EAX
MOV DI,[EDX+EDI*2]              ;读序号表值
MOV EDX,[EBX+1C]                ;AddressOfFunctions
ADD EDX,EAX
MOV ESI,[EDX+EDI*4]             ;函数RVA
ADD ESI,EAX



GetProcAddress获取各种函数的地址.调用各种函数
1.下面用的例子是调用个MessageBoxA
2.首先用GetProcAddress获取GetModuelhandle函数地址
3.再使用GetModuelhandle获取user32.dll的模块基地址
4.然后GetProcAddress获取MessageBoxA


PUSH 0                   ;释放空间,可以使用sub esp
PUSH 0
PUSH 0
PUSH 0
PUSH 0
MOV DWORD PTR [ESP],4D746547  ;填充数据
MOV DWORD PTR [ESP+4],6C75646F
MOV DWORD PTR [ESP+8],6E614865
MOV DWORD PTR [ESP+C],41656C64 ;GetModuelhandle
MOV EDI,EAX
PUSH ESP                        ;lpProcName
PUSH EDI                        ;hModule
CALL ESI                        ;GetProcAddress
ADD ESP,14
PUSH EAX                       ;保存GetModuelhandle
PUSH 0
PUSH 0
PUSH 0
PUSH 0
MOV DWORD PTR [ESP],72657375
MOV DWORD PTR [ESP+4],642E3233
MOV DWORD PTR [ESP+8],6C6C  ;user32.dll
PUSH ESP
CALL [ESP+14]
ADD ESP,10                     ;记得要维护平衡
PUSH 0
PUSH 0
PUSH 0
PUSH 0
MOV DWORD PTR [ESP],7373654D
MOV DWORD PTR [ESP+4],42656761
MOV DWORD PTR [ESP+8],41786F  ;MessageBoxA
PUSH ESP                      ESP做参数的指针用
PUSH EAX                     ;user32.dll hModule
CALL ESI                      ;GetProcAddress
ADD ESP,10
PUSH 0
PUSH 0
PUSH 0
PUSH 0
MOV DWORD PTR [ESP],6361724D   
MOV DWORD PTR [ESP+4],6853206B
MOV DWORD PTR [ESP+8],636C6C65
MOV DWORD PTR [ESP+C],65646F         ;Mrack Shellcode
PUSH 0
LEA EDX,[ESP+4]                        ;由于Push 0 了改变了ESP的值.ESP+4
PUSH EDX
PUSH EDX
PUSH 0
CALL EAX                              ;调用MessageBoxA
ADD ESP,14

易语言/ASM 源码与PDF版:
游客,如果您要查看本帖隐藏内容请回复



评分

参与人数 12威望 +1 HB +45 THX +10 收起 理由
DDK4282 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
消逝的过去 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
agan8888 + 1
playboy + 1
2323816 + 1
VSsavitar + 1 [快捷评语] - 软件带有“学破解论坛网址”,置顶高亮7天7夜!
Shark恒 + 1 + 10 + 1 流畅的思路, Mrack霸气!
Honey丶Crack + 6 + 1 评分=感恩!简单却充满爱!感谢您的作品!
童真丶 + 6 + 1 Mrack 师父好腻害!
虚竹 + 10 + 1 师傅还是这么牛逼!
LCC + 10 + 1 评分=感恩!简单却充满爱!感谢您的作品!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
JuStkK 发表于 2015-7-25 20:12 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
虚竹 发表于 2015-7-25 20:28 | 显示全部楼层

师傅还是这么牛逼!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
童真丶 发表于 2015-7-25 20:29 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
kingone 发表于 2015-7-25 20:29 | 显示全部楼层

  膜拜 学习了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
哎呦呦 发表于 2015-7-25 20:36 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
情人节免费 发表于 2015-7-25 21:05 | 显示全部楼层

传说中的好东西.
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
LYQingYe 发表于 2015-7-25 21:36 | 显示全部楼层

沙发,顺便说一下 什么都看不懂!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
钢棍泄师傅 发表于 2015-7-25 22:15 | 显示全部楼层

干什么用我不知道捏
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
阿卡林 发表于 2015-7-27 20:13 | 显示全部楼层

膜拜M牛
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表