zoukankan      html  css  js  c++  java
  • 20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现

    20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现

    一、本节摘要

    • 简介:每个应用程序内部都有一定的空间(因为文件对齐余留的00字段)可以被利用,这样就可以保证被插入的程序“原封不动”,显然更具有迷惑性和欺骗性。先对windows可执行文件PE结构进行分析,接下来可以实现用Ollydbg对PE文件进行恶意代码注入。
    • 目标:
      1. 用汇编语言编写一个简单的对话框,并将其写入PE文件的预留字段中
      2. 将入口地址的语句修改为跳转语句。
      3. 跳转执行完对话框后再实现语句回溯,跳回原本的正常程序,不影响正常程序执行。
    • 工作环境:
      • Windows 7
    • 最终成果:已全部实现目标,但OllyDbg无法导出修改后的EXE程序。

    二、实现过程

    实现最最毒辣的一种方法,为了保证我们文件捆绑之后注入的隐蔽性。就是要保证文件修改前后的大小一样。因此选择PE文件注入的方法。下面用OllyDbg进行简单的注入,并在其后实现病毒的注入:

    打开OllyDbg调试器。装入我们的目标程序,游戏的EXE。

    根据我们上面的PE知识准备,可以知道,每个PE文件在其末尾都会有一波空白的代码部分。拉动滚动条,找到最后:

    这个部分就是空白部分。

    首先我们实现一下简单的例子,比如说注入一个对话框。

    先写上内容。

    选中一波空白部分,右键编辑,输入我们需要的字段zkj5314haha

    点击ctrl+A 重新分析一下代码

    发现红色的就是刚添加的部分。

    接下来需要我们编写一波汇编代码,实现上面这个字段的使用

    PUSH 0 ; BUTTONS =
    PUSH XXXXX ; CAPTION = 标题文字,定位到刚才的第一个字符串
    PUSH XXXXX ; MESSAGE = 信息文字,定位到第二个字符串
    PUSH 0 ; ICON = 按钮
    CALL MessageBoxA; 用 MessageBoxA 跑起上面的所有代码

    按行输入汇编后,就出现了这一波代码。如果你现在保存它并运行它,你将看不到任何的效果,为什么呢?因为这段代码并没有被调用。

    接下来记住 77625F00 这个是我们开始执行程序代码的地方。

    右击PUSH 0 转到 EIP

    选择几行代码复制,

    777501C8 . 895C24 08 MOV DWORD PTR SS:[ESP+8],EBX
    777501CC . E9 E9960200 JMP ntdll.777798BA
    777501D1 . 8DA424 000000>LEA ESP,DWORD PTR SS:[ESP]
    777501D8 . 8DA424 000000>LEA ESP,DWORD PTR SS:[ESP]
    777501DF . 90 NOP

    选择第一条,输入JMP 刚才的地址。使程序在刚进来时就可以跳转到我们的恶意代码部分

    会发现刚才的那一部分都被覆盖了,这时候我们就应该把覆盖的这一部分代码给补到最后的恶意代码上。

    还得记录下跳转回去的地址777501CC,这个值需要加在我们补充完代码之后。使程序在跳转完成后还可以回到原点正常执行。

    因此,在补充完代码之后,加上JMP 777501CC

    接下来就可以run程序。

    成功出现弹窗。

    弹窗取消后,程序会等很久才打开,应该是OllyDbg的问题,运行起来特别慢,最后也没办法导出修改后的exe文件。很是痛苦。不过已经实现了PE文件的病毒化,入口地址的修改和跳转。

  • 相关阅读:
    day 46
    day 45 JavaScript 下 函数
    day 42 css 样式
    44 JavaScript
    41 前端
    40 协程 i/0多路复用
    39 线程池 同一进程间的队列
    38 线程 锁 事件 信号量 利用线程实现socket 定时器
    37 生产者消费者模型 管道 进程间的数据共享 进程池
    演示使用string对象
  • 原文地址:https://www.cnblogs.com/5314zkj/p/7029296.html
Copyright © 2011-2022 走看看